完成 谐波监测 稳态统计报表 联调 全局对话框添加可移动属性
This commit is contained in:
@@ -69,11 +69,10 @@ export function addTemplate(data) {
|
||||
})
|
||||
}
|
||||
//模板对应指标替换
|
||||
export function getCustomReport(data) {
|
||||
export function getCustomReport(data: any) {
|
||||
return createAxios({
|
||||
url: '/harmonic-boot/customReport/getCustomReport',
|
||||
method: 'post',
|
||||
resposeType: 'blob',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
BIN
src/assets/img/jss.png
Normal file
BIN
src/assets/img/jss.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 99 KiB |
@@ -395,7 +395,7 @@ const setTime = (flag = 0, e = 0) => {
|
||||
let dd = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'dd')
|
||||
|
||||
let data = ''
|
||||
if (dd < 4 && dd == 0) {
|
||||
if (dd < 4 || dd == 0) {
|
||||
data = window.XEUtils.toDateString(new Date().getTime() - (e + dd) * 3600 * 1000 * 24, 'yyyy-MM-dd')
|
||||
} else {
|
||||
data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd')
|
||||
|
||||
@@ -80,10 +80,6 @@ const loadData = () => {
|
||||
item4.icon = 'fa-solid fa-tower-observation'
|
||||
item4.color = config.getColorVal('elementUiPrimary')
|
||||
item4.children.forEach((item5: anyObj) => {
|
||||
if (!attrs['current-node-key'] && !nodeKey) {
|
||||
nodeKey = item5.id
|
||||
emit('init', item5)
|
||||
}
|
||||
item5.alias = `${item.name}>${item2.name}>${item3.name}>${item4.name}>${item5.name}`
|
||||
item5.icon = 'fa-solid fa-location-dot'
|
||||
item5.color = config.getColorVal('elementUiPrimary')
|
||||
@@ -99,6 +95,10 @@ const loadData = () => {
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
nodeKey = res.data[0].children[0].children[0].children[0].children[0].id
|
||||
emit('init', res.data[0].children[0].children[0].children[0].children[0])
|
||||
|
||||
tree.value = res.data
|
||||
if (nodeKey) {
|
||||
nextTick(() => {
|
||||
|
||||
@@ -1,35 +1,34 @@
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='dialogVisible' :title='title'>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px'>
|
||||
<el-form-item label='用户名称:'>
|
||||
<el-input v-model='form.name' :disabled='true'></el-input>
|
||||
<el-form :inline="false" :model="form" label-width="120px">
|
||||
<el-form-item label="用户名称:">
|
||||
<el-input v-model="form.name" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='登录名称:' class='top'>
|
||||
<el-input v-model='form.loginName' :disabled='true'></el-input>
|
||||
<el-form-item label="登录名称:" class="top">
|
||||
<el-input v-model="form.loginName" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='归属部门名称:' class='top'>
|
||||
<el-input v-model='form.deptName' :disabled='true'></el-input>
|
||||
<el-form-item label="归属部门名称:" class="top">
|
||||
<el-input v-model="form.deptName" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='拥有的角色:' class='top'>
|
||||
<el-input v-model='form.role' :disabled='true'></el-input>
|
||||
<el-form-item label="拥有的角色:" class="top">
|
||||
<el-input v-model="form.role" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='电话号码:' class='top'>
|
||||
<el-input v-model='form.phone' :disabled='true'></el-input>
|
||||
<el-form-item label="电话号码:" class="top">
|
||||
<el-input v-model="form.phone" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='电子邮箱:' class='top'>
|
||||
<el-input v-model='form.email' :disabled='true'></el-input>
|
||||
<el-form-item label="电子邮箱:" class="top">
|
||||
<el-input v-model="form.email" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const title = ref('用户信息')
|
||||
const adminInfo = useAdminInfo()
|
||||
@@ -43,7 +42,6 @@ const form = reactive({
|
||||
loginName: ''
|
||||
})
|
||||
|
||||
|
||||
const open = () => {
|
||||
dialogVisible.value = true
|
||||
for (const key in form) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="校验密码:" prop="password">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="角色名称">
|
||||
|
||||
@@ -95,6 +95,7 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
||||
if (
|
||||
response.data.code === 'A0000' ||
|
||||
response.data.type === 'application/json' ||
|
||||
Array.isArray(response.data) ||
|
||||
response.data.type === 'application/octet-stream' ||
|
||||
response.data.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
|
||||
) {
|
||||
|
||||
@@ -83,6 +83,9 @@ export default class TableStore {
|
||||
this.table.data = []
|
||||
this.table.total = 0
|
||||
}
|
||||
if (Array.isArray(res)) {
|
||||
this.table.data = res
|
||||
}
|
||||
if (this.isWebPaging) {
|
||||
this.table.webPagingData = window.XEUtils.chunk(this.table.data, this.table.params.pageSize)
|
||||
this.table.data = this.table.webPagingData[this.table.params.pageNum - 1]
|
||||
@@ -110,8 +113,8 @@ export default class TableStore {
|
||||
'reset',
|
||||
() => {
|
||||
delete this.initData.pageSize
|
||||
console.log(this.table.params)
|
||||
console.log(this.initData)
|
||||
// console.log(this.table.params)
|
||||
// console.log(this.initData)
|
||||
Object.assign(this.table.params, this.initData)
|
||||
this.index()
|
||||
this.table.resetCallback && this.table.resetCallback()
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<el-dialog v-model="dialogVisible" title="新增干扰源类型" width="70%">
|
||||
<el-dialog draggable v-model="dialogVisible" title="新增干扰源类型" width="70%">
|
||||
<vxe-table v-bind="defaultAttribute" height="400px" ref="xTable" :data="userData">
|
||||
<vxe-column type="checkbox" width="60"></vxe-column>
|
||||
<vxe-column field="userName" title="用户名称"></vxe-column>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog v-model="Views" title="承载能力评估策略" width="1400" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="Views" title="承载能力评估策略" width="1400" :before-close="handleClose">
|
||||
<div style="display: flex; justify-content: end">
|
||||
<el-button icon="el-icon-Refresh" type="primary" @click="restores">一键还原</el-button>
|
||||
</div>
|
||||
@@ -82,7 +82,7 @@
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
<!-- 修改 -->
|
||||
<el-dialog v-model="dialogVisible" title="安全等级配置" width="500">
|
||||
<el-dialog draggable v-model="dialogVisible" title="安全等级配置" width="500">
|
||||
<el-form :model="form" label-width="auto">
|
||||
<el-form-item label="运算符号:">
|
||||
<el-radio-group v-model="form.comparisonOperators" @change="groupChang">
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<template>
|
||||
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" title="设备">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" title="设备">
|
||||
<el-button icon="el-icon-Plus" type="primary" @click="add" class="mb10">新增</el-button>
|
||||
<vxe-table v-bind="defaultAttribute" v-loading="loading" height="auto" ref="xTable" :data="userData">
|
||||
<vxe-column field="devName" title="设备名称"></vxe-column>
|
||||
@@ -19,7 +18,7 @@
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="addShow" width="400px" :title="title" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="addShow" width="400px" :title="title" :before-close="handleClose">
|
||||
<el-form :model="form" ref="formRef" :rules="rules" label-width="auto">
|
||||
<el-form-item label="设备名称" prop="devName">
|
||||
<el-input v-model="form.devName" placeholder="请输入设备名称" />
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<el-dialog v-model="dialogVisible" :title="title" width="600" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="dialogVisible" :title="title" width="600" :before-close="handleClose">
|
||||
<el-form ref="ruleFormRef" :model="form" label-width="180px" :disabled="disabled" :rules="rules">
|
||||
<el-form-item label="用户名称:" prop="userName">
|
||||
<el-input v-model="form.userName" clearable placeholder="请输入用户名称" />
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
</TableHeader>
|
||||
<Table ref="tableRef"></Table>
|
||||
<el-dialog
|
||||
draggable
|
||||
:title="dialogTitle"
|
||||
v-model="dialogFormVisible"
|
||||
:close-on-click-modal="false"
|
||||
@@ -200,7 +201,7 @@ const tableStore = new TableStore({
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
for (let key in tableStore.table.params) {
|
||||
if (tableStore.table.params[key] === '' && key !== 'nodeGrade'&& key !== 'searchState') {
|
||||
if (tableStore.table.params[key] === '' && key !== 'nodeGrade' && key !== 'searchState') {
|
||||
delete tableStore.table.params[key]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,11 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="筛选">
|
||||
<el-input v-model="tableStore.table.params.filterName" @keyup="searchEvent" placeholder="输入关键字筛选" />
|
||||
<el-input
|
||||
v-model="tableStore.table.params.filterName"
|
||||
@keyup="searchEvent"
|
||||
placeholder="输入关键字筛选"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
@@ -70,48 +74,23 @@
|
||||
<vxe-column field="versionDate" title="版本日期"></vxe-column>
|
||||
<vxe-column field="runFlag" title="终端状态">
|
||||
<template #default="{ row }">
|
||||
<el-tag
|
||||
|
||||
v-if="row.runFlag === 0"
|
||||
style="color: #fff; background: #0099cc"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.runFlag === 0" style="color: #fff; background: #0099cc" size="small">
|
||||
投运
|
||||
</el-tag>
|
||||
<el-tag
|
||||
|
||||
v-if="row.runFlag === 1"
|
||||
style="color: #fff; background: #996600"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.runFlag === 1" style="color: #fff; background: #996600" size="small">
|
||||
热备用
|
||||
</el-tag>
|
||||
<el-tag
|
||||
|
||||
v-if="row.runFlag === 2"
|
||||
style="color: #fff; background: #cc0000"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.runFlag === 2" style="color: #fff; background: #cc0000" size="small">
|
||||
停运
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="comFlag" title="通讯状态">
|
||||
<template #default="{ row }">
|
||||
<el-tag
|
||||
|
||||
v-if="row.comFlag === 0"
|
||||
style="color: #fff; background: #cc0000"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.comFlag === 0" style="color: #fff; background: #cc0000" size="small">
|
||||
中断
|
||||
</el-tag>
|
||||
<el-tag
|
||||
|
||||
v-if="row.comFlag === 1"
|
||||
style="color: #fff; background: #2e8b57"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.comFlag === 1" style="color: #fff; background: #2e8b57" size="small">
|
||||
正常
|
||||
</el-tag>
|
||||
</template>
|
||||
@@ -125,13 +104,10 @@
|
||||
<vxe-column field="updateTime" title="最新升级时间"></vxe-column>
|
||||
<vxe-column title="操作" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<el-button v-if="row.level == 4" size="small" link @click="updateprogram(row)">
|
||||
升级
|
||||
</el-button>
|
||||
<el-button v-if="row.level == 4" size="small" link @click="updateprogram(row)">升级</el-button>
|
||||
<el-button
|
||||
v-if="row.level == 4"
|
||||
:disabled="row.state == 1 ? true : false"
|
||||
|
||||
size="small"
|
||||
link
|
||||
@click="queryview(row)"
|
||||
@@ -143,6 +119,7 @@
|
||||
</vxe-table>
|
||||
</div>
|
||||
<el-dialog
|
||||
draggable
|
||||
v-model="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="protitle + '#终端升级日志查看'"
|
||||
@@ -154,32 +131,20 @@
|
||||
<vxe-column field="versionId" align="center" title="版本序号"></vxe-column>
|
||||
<vxe-column field="flag" align="center" title="版本状态" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.flag == true" style="color: #fff; background: #fc0">
|
||||
前期版本
|
||||
</el-tag>
|
||||
<el-tag v-if="row.flag == false" style="color: #fff; background: #0c0">
|
||||
当前版本
|
||||
</el-tag>
|
||||
<el-tag v-if="row.flag == true" style="color: #fff; background: #fc0">前期版本</el-tag>
|
||||
<el-tag v-if="row.flag == false" style="color: #fff; background: #0c0">当前版本</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="result" align="center" title="升级结果" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.result == false" style="color: #fff; background: #f30">
|
||||
升级失败
|
||||
</el-tag>
|
||||
<el-tag v-if="row.result == true" style="color: #fff; background: #093">
|
||||
升级成功
|
||||
</el-tag>
|
||||
<el-tag v-if="row.result == false" style="color: #fff; background: #f30">升级失败</el-tag>
|
||||
<el-tag v-if="row.result == true" style="color: #fff; background: #093">升级成功</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="state" align="center" title="状态" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.state == false" style="color: #fff; background: #f30">
|
||||
删除
|
||||
</el-tag>
|
||||
<el-tag v-if="row.state == true" style="color: #fff; background: #093">
|
||||
正常
|
||||
</el-tag>
|
||||
<el-tag v-if="row.state == false" style="color: #fff; background: #f30">删除</el-tag>
|
||||
<el-tag v-if="row.state == true" style="color: #fff; background: #093">正常</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="createBy" align="center" title="创建用户"></vxe-column>
|
||||
@@ -191,6 +156,7 @@
|
||||
</el-dialog>
|
||||
<!-- 升级 -->
|
||||
<el-dialog
|
||||
draggable
|
||||
v-model="prodialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="protitle + '#终端程序升级'"
|
||||
@@ -283,11 +249,11 @@ const tableStore = new TableStore({
|
||||
}, 0)
|
||||
}
|
||||
})
|
||||
tableStore.table.params.teriminal=''
|
||||
tableStore.table.params.state=''
|
||||
tableStore.table.params.program=''
|
||||
tableStore.table.params.searchEvent=''
|
||||
tableStore.table.params.filterName=''
|
||||
tableStore.table.params.teriminal = ''
|
||||
tableStore.table.params.state = ''
|
||||
tableStore.table.params.program = ''
|
||||
tableStore.table.params.searchEvent = ''
|
||||
tableStore.table.params.filterName = ''
|
||||
provide('tableStore', tableStore)
|
||||
const tree2List = (list: any) => {
|
||||
//存储结果的数组
|
||||
|
||||
@@ -34,7 +34,11 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="筛选">
|
||||
<el-input v-model="tableStore.table.params.filterName" @keyup="searchEvent" placeholder="输入关键字筛选" />
|
||||
<el-input
|
||||
v-model="tableStore.table.params.filterName"
|
||||
@keyup="searchEvent"
|
||||
placeholder="输入关键字筛选"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
@@ -94,48 +98,23 @@
|
||||
</vxe-column>
|
||||
<vxe-column field="runFlag" title="终端状态">
|
||||
<template #default="{ row }">
|
||||
<el-tag
|
||||
|
||||
v-if="row.runFlag === 0"
|
||||
style="color: #fff; background: #0099cc"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.runFlag === 0" style="color: #fff; background: #0099cc" size="small">
|
||||
投运
|
||||
</el-tag>
|
||||
<el-tag
|
||||
|
||||
v-if="row.runFlag === 1"
|
||||
style="color: #fff; background: #996600"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.runFlag === 1" style="color: #fff; background: #996600" size="small">
|
||||
热备用
|
||||
</el-tag>
|
||||
<el-tag
|
||||
|
||||
v-if="row.runFlag === 2"
|
||||
style="color: #fff; background: #cc0000"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.runFlag === 2" style="color: #fff; background: #cc0000" size="small">
|
||||
停运
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="comFlag" title="通讯状态">
|
||||
<template #default="{ row }">
|
||||
<el-tag
|
||||
|
||||
v-if="row.comFlag === 0"
|
||||
style="color: #fff; background: #cc0000"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.comFlag === 0" style="color: #fff; background: #cc0000" size="small">
|
||||
中断
|
||||
</el-tag>
|
||||
<el-tag
|
||||
|
||||
v-if="row.comFlag === 1"
|
||||
style="color: #fff; background: #2e8b57"
|
||||
size="small"
|
||||
>
|
||||
<el-tag v-if="row.comFlag === 1" style="color: #fff; background: #2e8b57" size="small">
|
||||
正常
|
||||
</el-tag>
|
||||
</template>
|
||||
@@ -170,6 +149,7 @@
|
||||
</div>
|
||||
<!-- 终端使用详情 -->
|
||||
<el-dialog
|
||||
draggable
|
||||
v-model="dialogVisiblexq"
|
||||
v-if="dialogVisiblexq"
|
||||
title="终端使用详情"
|
||||
@@ -263,10 +243,10 @@ const tableStore = new TableStore({
|
||||
}, 0)
|
||||
}
|
||||
})
|
||||
tableStore.table.params.devType=''
|
||||
tableStore.table.params.runFlag=''
|
||||
tableStore.table.params.comFlag=''
|
||||
tableStore.table.params.filterName=''
|
||||
tableStore.table.params.devType = ''
|
||||
tableStore.table.params.runFlag = ''
|
||||
tableStore.table.params.comFlag = ''
|
||||
tableStore.table.params.filterName = ''
|
||||
// 处理大数据卡顿
|
||||
const tree2List = (list: any) => {
|
||||
//存储结果的数组
|
||||
|
||||
@@ -1,349 +0,0 @@
|
||||
// import { createCellPos } from './translateNumToLetter'
|
||||
import Excel from 'exceljs'
|
||||
|
||||
import FileSaver from 'file-saver'
|
||||
|
||||
const exportExcel = function(luckysheet, value) {
|
||||
// 参数为luckysheet.getluckysheetfile()获取的对象
|
||||
// 1.创建工作簿,可以为工作簿添加属性
|
||||
const workbook = new Excel.Workbook()
|
||||
// 2.创建表格,第二个参数可以配置创建什么样的工作表
|
||||
if (Object.prototype.toString.call(luckysheet) === '[object Object]') {
|
||||
luckysheet = [luckysheet]
|
||||
}
|
||||
luckysheet.forEach(function(table) {
|
||||
if (table.data.length === 0) return true
|
||||
// ws.getCell('B2').fill = fills.
|
||||
const worksheet = workbook.addWorksheet(table.name)
|
||||
const merge = (table.config && table.config.merge) || {}
|
||||
const borderInfo = (table.config && table.config.borderInfo) || {}
|
||||
// 3.设置单元格合并,设置单元格边框,设置单元格样式,设置值
|
||||
setStyleAndValue(table.data, worksheet)
|
||||
setMerge(merge, worksheet)
|
||||
setBorder(borderInfo, worksheet)
|
||||
return true
|
||||
})
|
||||
|
||||
// return
|
||||
// 4.写入 buffer
|
||||
const buffer = workbook.xlsx.writeBuffer().then(data => {
|
||||
// console.log('data', data)
|
||||
const blob = new Blob([data], {
|
||||
type: 'application/vnd.ms-excel;charset=utf-8'
|
||||
})
|
||||
console.log("导出成功!")
|
||||
FileSaver.saveAs(blob, `${value}.xlsx`)
|
||||
})
|
||||
return buffer
|
||||
}
|
||||
|
||||
var setMerge = function(luckyMerge = {}, worksheet) {
|
||||
const mergearr = Object.values(luckyMerge)
|
||||
mergearr.forEach(function(elem) {
|
||||
// elem格式:{r: 0, c: 0, rs: 1, cs: 2}
|
||||
// 按开始行,开始列,结束行,结束列合并(相当于 K10:M12)
|
||||
worksheet.mergeCells(
|
||||
elem.r + 1,
|
||||
elem.c + 1,
|
||||
elem.r + elem.rs,
|
||||
elem.c + elem.cs
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
var setBorder = function(luckyBorderInfo, worksheet) {
|
||||
if (!Array.isArray(luckyBorderInfo)) return
|
||||
// console.log('luckyBorderInfo', luckyBorderInfo)
|
||||
luckyBorderInfo.forEach(function(elem) {
|
||||
// 现在只兼容到borderType 为range的情况
|
||||
// console.log('ele', elem)
|
||||
if (elem.rangeType === 'range') {
|
||||
let border = borderConvert(elem.borderType, elem.style, elem.color)
|
||||
let rang = elem.range[0]
|
||||
// console.log('range', rang)
|
||||
let row = rang.row
|
||||
let column = rang.column
|
||||
for (let i = row[0] + 1; i < row[1] + 2; i++) {
|
||||
for (let y = column[0] + 1; y < column[1] + 2; y++) {
|
||||
worksheet.getCell(i, y).border = border
|
||||
}
|
||||
}
|
||||
}
|
||||
if (elem.rangeType === 'cell') {
|
||||
// col_index: 2
|
||||
// row_index: 1
|
||||
// b: {
|
||||
// color: '#d0d4e3'
|
||||
// style: 1
|
||||
// }
|
||||
const { col_index, row_index } = elem.value
|
||||
const borderData = Object.assign({}, elem.value)
|
||||
delete borderData.col_index
|
||||
delete borderData.row_index
|
||||
let border = addborderToCell(borderData, row_index, col_index)
|
||||
// console.log('bordre', border, borderData)
|
||||
worksheet.getCell(row_index + 1, col_index + 1).border = border
|
||||
}
|
||||
// console.log(rang.column_focus + 1, rang.row_focus + 1)
|
||||
// worksheet.getCell(rang.row_focus + 1, rang.column_focus + 1).border = border
|
||||
})
|
||||
}
|
||||
var setStyleAndValue = function(cellArr, worksheet) {
|
||||
if (!Array.isArray(cellArr)) return
|
||||
cellArr.forEach(function(row, rowid) {
|
||||
row.every(function(cell, columnid) {
|
||||
if (!cell) return true
|
||||
let fill = fillConvert(cell.bg)
|
||||
|
||||
let font = fontConvert(
|
||||
cell.ff,
|
||||
cell.fc,
|
||||
cell.bl,
|
||||
cell.it,
|
||||
cell.fs,
|
||||
cell.cl,
|
||||
cell.ul
|
||||
)
|
||||
let alignment = alignmentConvert(cell.vt, cell.ht, cell.tb, cell.tr)
|
||||
let value = ''
|
||||
|
||||
if (cell.f) {
|
||||
value = { formula: cell.f, result: cell.v }
|
||||
} else if (!cell.v && cell.ct && cell.ct.s) {
|
||||
// xls转为xlsx之后,内部存在不同的格式,都会进到富文本里,即值不存在与cell.v,而是存在于cell.ct.s之后
|
||||
// value = cell.ct.s[0].v
|
||||
cell.ct.s.forEach(arr => {
|
||||
value += arr.v
|
||||
})
|
||||
} else {
|
||||
value = cell.v
|
||||
}
|
||||
// style 填入到_value中可以实现填充色
|
||||
let letter = createCellPos(columnid)
|
||||
let target = worksheet.getCell(letter + (rowid + 1))
|
||||
// console.log('1233', letter + (rowid + 1))
|
||||
for (const key in fill) {
|
||||
target.fill = fill
|
||||
break
|
||||
}
|
||||
target.font = font
|
||||
target.alignment = alignment
|
||||
target.value = value
|
||||
|
||||
return true
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
var fillConvert = function(bg) {
|
||||
if (!bg) {
|
||||
return {}
|
||||
}
|
||||
// const bgc = bg.replace('#', '')
|
||||
let fill = {
|
||||
type: 'pattern',
|
||||
pattern: 'solid',
|
||||
fgColor: { argb: bg.replace('#', '') }
|
||||
}
|
||||
return fill
|
||||
}
|
||||
|
||||
var fontConvert = function(
|
||||
ff = 0,
|
||||
fc = '#000000',
|
||||
bl = 0,
|
||||
it = 0,
|
||||
fs = 10,
|
||||
cl = 0,
|
||||
ul = 0
|
||||
) {
|
||||
// luckysheet:ff(样式), fc(颜色), bl(粗体), it(斜体), fs(大小), cl(删除线), ul(下划线)
|
||||
const luckyToExcel = {
|
||||
0: '微软雅黑',
|
||||
1: '宋体(Song)',
|
||||
2: '黑体(ST Heiti)',
|
||||
3: '楷体(ST Kaiti)',
|
||||
4: '仿宋(ST FangSong)',
|
||||
5: '新宋体(ST Song)',
|
||||
6: '华文新魏',
|
||||
7: '华文行楷',
|
||||
8: '华文隶书',
|
||||
9: 'Arial',
|
||||
10: 'Times New Roman ',
|
||||
11: 'Tahoma ',
|
||||
12: 'Verdana',
|
||||
num2bl: function(num) {
|
||||
return num === 0 ? false : true
|
||||
}
|
||||
}
|
||||
// 出现Bug,导入的时候ff为luckyToExcel的val
|
||||
|
||||
let font = {
|
||||
name: typeof ff === 'number' ? luckyToExcel[ff] : ff,
|
||||
family: 1,
|
||||
size: fs,
|
||||
color: { argb: fc.replace('#', '') },
|
||||
bold: luckyToExcel.num2bl(bl),
|
||||
italic: luckyToExcel.num2bl(it),
|
||||
underline: luckyToExcel.num2bl(ul),
|
||||
strike: luckyToExcel.num2bl(cl)
|
||||
}
|
||||
|
||||
return font
|
||||
}
|
||||
|
||||
var alignmentConvert = function(
|
||||
vt = 'default',
|
||||
ht = 'default',
|
||||
tb = 'default',
|
||||
tr = 'default'
|
||||
) {
|
||||
// luckysheet:vt(垂直), ht(水平), tb(换行), tr(旋转)
|
||||
const luckyToExcel = {
|
||||
vertical: {
|
||||
0: 'middle',
|
||||
1: 'top',
|
||||
2: 'bottom',
|
||||
default: 'top'
|
||||
},
|
||||
horizontal: {
|
||||
0: 'center',
|
||||
1: 'left',
|
||||
2: 'right',
|
||||
default: 'left'
|
||||
},
|
||||
wrapText: {
|
||||
0: false,
|
||||
1: false,
|
||||
2: true,
|
||||
default: false
|
||||
},
|
||||
textRotation: {
|
||||
0: 0,
|
||||
1: 45,
|
||||
2: -45,
|
||||
3: 'vertical',
|
||||
4: 90,
|
||||
5: -90,
|
||||
default: 0
|
||||
}
|
||||
}
|
||||
|
||||
let alignment = {
|
||||
vertical: luckyToExcel.vertical[vt],
|
||||
horizontal: luckyToExcel.horizontal[ht],
|
||||
wrapText: luckyToExcel.wrapText[tb],
|
||||
textRotation: luckyToExcel.textRotation[tr]
|
||||
}
|
||||
return alignment
|
||||
}
|
||||
|
||||
var borderConvert = function(borderType, style = 1, color = '#000') {
|
||||
// 对应luckysheet的config中borderinfo的的参数
|
||||
if (!borderType) {
|
||||
return {}
|
||||
}
|
||||
const luckyToExcel = {
|
||||
type: {
|
||||
'border-all': 'all',
|
||||
'border-top': 'top',
|
||||
'border-right': 'right',
|
||||
'border-bottom': 'bottom',
|
||||
'border-left': 'left'
|
||||
},
|
||||
style: {
|
||||
0: 'none',
|
||||
1: 'thin',
|
||||
2: 'hair',
|
||||
3: 'dotted',
|
||||
4: 'dashDot', // 'Dashed',
|
||||
5: 'dashDot',
|
||||
6: 'dashDotDot',
|
||||
7: 'double',
|
||||
8: 'medium',
|
||||
9: 'mediumDashed',
|
||||
10: 'mediumDashDot',
|
||||
11: 'mediumDashDotDot',
|
||||
12: 'slantDashDot',
|
||||
13: 'thick'
|
||||
}
|
||||
}
|
||||
let template = {
|
||||
style: luckyToExcel.style[style],
|
||||
color: { argb: color.replace('#', '') }
|
||||
}
|
||||
let border = {}
|
||||
if (luckyToExcel.type[borderType] === 'all') {
|
||||
border['top'] = template
|
||||
border['right'] = template
|
||||
border['bottom'] = template
|
||||
border['left'] = template
|
||||
} else {
|
||||
border[luckyToExcel.type[borderType]] = template
|
||||
}
|
||||
// console.log('border', border)
|
||||
return border
|
||||
}
|
||||
|
||||
function addborderToCell(borders, row_index, col_index) {
|
||||
let border = {}
|
||||
const luckyExcel = {
|
||||
type: {
|
||||
l: 'left',
|
||||
r: 'right',
|
||||
b: 'bottom',
|
||||
t: 'top'
|
||||
},
|
||||
style: {
|
||||
0: 'none',
|
||||
1: 'thin',
|
||||
2: 'hair',
|
||||
3: 'dotted',
|
||||
4: 'dashDot', // 'Dashed',
|
||||
5: 'dashDot',
|
||||
6: 'dashDotDot',
|
||||
7: 'double',
|
||||
8: 'medium',
|
||||
9: 'mediumDashed',
|
||||
10: 'mediumDashDot',
|
||||
11: 'mediumDashDotDot',
|
||||
12: 'slantDashDot',
|
||||
13: 'thick'
|
||||
}
|
||||
}
|
||||
// console.log('borders', borders)
|
||||
for (const bor in borders) {
|
||||
// console.log(bor)
|
||||
if (borders[bor].color.indexOf('rgb') === -1) {
|
||||
border[luckyExcel.type[bor]] = {
|
||||
style: luckyExcel.style[borders[bor].style],
|
||||
color: { argb: borders[bor].color.replace('#', '') }
|
||||
}
|
||||
} else {
|
||||
border[luckyExcel.type[bor]] = {
|
||||
style: luckyExcel.style[borders[bor].style],
|
||||
color: { argb: borders[bor].color }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return border
|
||||
}
|
||||
|
||||
function createCellPos(n) {
|
||||
let ordA = 'A'.charCodeAt(0)
|
||||
|
||||
let ordZ = 'Z'.charCodeAt(0)
|
||||
let len = ordZ - ordA + 1
|
||||
let s = ''
|
||||
while (n >= 0) {
|
||||
s = String.fromCharCode((n % len) + ordA) + s
|
||||
|
||||
n = Math.floor(n / len) - 1
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
export {
|
||||
exportExcel
|
||||
}
|
||||
@@ -1,26 +1,146 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<div id="luckysheet" :style="{ height: height }"></div>
|
||||
<div class="default-main" :style="height">
|
||||
<splitpanes style="height: 100%" class="default-theme" id="navigation-splitpanes">
|
||||
<pane :size="size">
|
||||
<PointTree
|
||||
:default-expand-all="false"
|
||||
@node-click="handleNodeClick"
|
||||
@init="handleNodeClick"
|
||||
></PointTree>
|
||||
</pane>
|
||||
<pane style="background: #fff" :style="height">
|
||||
<TableHeader ref="TableHeaderRef" datePicker>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="模板策略">
|
||||
<el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id">
|
||||
<el-option
|
||||
v-for="item in templatePolicy"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="报表类型:">
|
||||
<el-select
|
||||
:disabled="true"
|
||||
v-model="reportForm"
|
||||
:popper-append-to-body="false"
|
||||
placeholder="请选择报表类型"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in reportFormList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出excel</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<div class="box">
|
||||
<div id="luckysheet" :style="`height: calc(${tableStore.table.height} + 45px)`"></div>
|
||||
</div>
|
||||
</pane>
|
||||
</splitpanes>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import LuckyExcel from 'luckyexcel'
|
||||
import { exportExcel } from './export.js'
|
||||
import { onMounted, ref, provide } from 'vue'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import { Splitpanes, Pane } from 'splitpanes'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import PointTree from '@/components/tree/pqs/pointTree.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { ref, onMounted } from 'vue'
|
||||
const height = mainHeight(20).height
|
||||
const options = ref({
|
||||
container: 'luckysheet',
|
||||
title: '测试Excel', // 表 头名
|
||||
lang: 'zh', // 中文
|
||||
showtoolbar: true, // 是否显示工具栏
|
||||
showinfobar: false, // 是否显示顶部信息栏
|
||||
showsheetbar: true // 是否显示底部sheet按钮
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
import { exportExcel } from '@/views/system/reportForms/export.js'
|
||||
|
||||
defineOptions({
|
||||
name: 'harmonic-boot/xieboReport'
|
||||
})
|
||||
// LuckyExcel.destroy()
|
||||
const height = mainHeight(20)
|
||||
const size = ref(0)
|
||||
const dictData = useDictData()
|
||||
const TableHeaderRef = ref()
|
||||
const dotList: any = ref({})
|
||||
const Template: any = ref({})
|
||||
const reportForm: any = ref('')
|
||||
|
||||
const templatePolicy: any = ref([])
|
||||
const reportFormList: any = ref([
|
||||
{
|
||||
value: '1',
|
||||
label: '分析报表'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '统计报表'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '自定义报表'
|
||||
}
|
||||
])
|
||||
const tableStore = new TableStore({
|
||||
url: '/harmonic-boot/customReport/getCustomReport',
|
||||
method: 'POST',
|
||||
column: [],
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.tempId = Template.value.id
|
||||
tableStore.table.params.lineId = dotList.value.id
|
||||
},
|
||||
loadCallback: () => {
|
||||
console.log(tableStore.table.data)
|
||||
luckysheet.create({
|
||||
container: 'luckysheet',
|
||||
title: '', // 表 头名
|
||||
lang: 'zh', // 中文
|
||||
showtoolbar: false, // 是否显示工具栏
|
||||
showinfobar: false, // 是否显示顶部信息栏
|
||||
showsheetbar: true, // 是否显示底部sheet按钮
|
||||
data: tableStore.table.data
|
||||
})
|
||||
}
|
||||
})
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
luckysheet.create(options.value)
|
||||
const dom = document.getElementById('navigation-splitpanes')
|
||||
if (dom) {
|
||||
size.value = Math.round((180 / dom.offsetHeight) * 100)
|
||||
}
|
||||
})
|
||||
getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
|
||||
templatePolicy.value = res.data
|
||||
Template.value = res.data[0]
|
||||
reportForm.value = res.data[0]?.reportForm
|
||||
})
|
||||
const changetype = (val: any) => {
|
||||
reportForm.value = val.reportForm
|
||||
}
|
||||
|
||||
const handleNodeClick = (data: any, node: any) => {
|
||||
if (data.level == 6) {
|
||||
dotList.value = data
|
||||
tableStore.index()
|
||||
}
|
||||
}
|
||||
|
||||
const exportEvent = () => {
|
||||
exportExcel(luckysheet.getAllSheets(), '统计报表下载')
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
<style lang="scss">
|
||||
.splitpanes.default-theme .splitpanes__pane {
|
||||
background: #eaeef1;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
122
src/views/pqs/harmonicMonitoring/reportForms/word/index.vue
Normal file
122
src/views/pqs/harmonicMonitoring/reportForms/word/index.vue
Normal file
@@ -0,0 +1,122 @@
|
||||
<template>
|
||||
<div class="default-main" :style="height">
|
||||
<splitpanes style="height: 100%" class="default-theme" id="navigation-splitpanes">
|
||||
<pane :size="size">
|
||||
<PointTree
|
||||
:default-expand-all="false"
|
||||
@node-click="handleNodeClick"
|
||||
@init="handleNodeClick"
|
||||
></PointTree>
|
||||
</pane>
|
||||
<pane style="background: #fff" :style="height">
|
||||
<TableHeader ref="TableHeaderRef" datePicker>
|
||||
<template v-slot:select>
|
||||
<el-form-item label="模板策略">
|
||||
<el-select v-model="Template" @change="changetype" placeholder="请选择模版" value-key="id">
|
||||
<el-option
|
||||
v-for="item in templatePolicy"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="报表类型:">
|
||||
<el-select
|
||||
:disabled="true"
|
||||
v-model="reportForm"
|
||||
:popper-append-to-body="false"
|
||||
placeholder="请选择报表类型"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in reportFormList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Download" type="primary" @click="exportEvent">导出excel</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<div class="box">
|
||||
<div id="luckysheet">
|
||||
<img
|
||||
width="100%"
|
||||
:style="`height: calc(${tableStore.table.height} + 40px)`"
|
||||
src="@/assets/img/jss.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</pane>
|
||||
</splitpanes>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, provide } from 'vue'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import { Splitpanes, Pane } from 'splitpanes'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import PointTree from '@/components/tree/pqs/pointTree.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getTemplateByDept } from '@/api/harmonic-boot/luckyexcel'
|
||||
|
||||
defineOptions({
|
||||
name: 'harmonic-boot/xieboReport'
|
||||
})
|
||||
const height = mainHeight(20)
|
||||
const size = ref(0)
|
||||
const dictData = useDictData()
|
||||
const TableHeaderRef = ref()
|
||||
const dotList: any = ref({})
|
||||
const Template: any = ref({})
|
||||
const reportForm: any = ref('')
|
||||
|
||||
const templatePolicy: any = ref([])
|
||||
|
||||
const tableStore = new TableStore({
|
||||
url: '/harmonic-boot/customReport/getCustomReport',
|
||||
method: 'POST',
|
||||
column: [],
|
||||
beforeSearchFun: () => {},
|
||||
loadCallback: () => {}
|
||||
})
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
const dom = document.getElementById('navigation-splitpanes')
|
||||
if (dom) {
|
||||
size.value = Math.round((180 / dom.offsetHeight) * 100)
|
||||
}
|
||||
})
|
||||
getTemplateByDept({ id: dictData.state.area[0].id }).then((res: any) => {
|
||||
templatePolicy.value = res.data
|
||||
Template.value = res.data[0]
|
||||
reportForm.value = res.data[0]?.reportForm
|
||||
})
|
||||
const changetype = (val: any) => {
|
||||
reportForm.value = val.reportForm
|
||||
}
|
||||
|
||||
const handleNodeClick = (data: any, node: any) => {
|
||||
if (data.level == 6) {
|
||||
dotList.value = data
|
||||
tableStore.index()
|
||||
}
|
||||
}
|
||||
|
||||
const exportEvent = () => {}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.splitpanes.default-theme .splitpanes__pane {
|
||||
background: #eaeef1;
|
||||
}
|
||||
|
||||
.box {
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog v-model="add" title="问题新增" width="50%" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="add" title="问题新增" width="50%" :before-close="handleClose">
|
||||
<el-divider content-position="left">第一步 基本信息填报</el-divider>
|
||||
<el-form :inline="true" ref="ruleForm" :rules="rules" :model="addData">
|
||||
<el-form-item label="所属单位">
|
||||
@@ -29,7 +29,7 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 新增第二步(在线监测超标问题新增) -->
|
||||
<el-dialog title="在线监测超标问题新增" v-model="onlineAdd" width="70%" :before-close="handleClose">
|
||||
<el-dialog draggable title="在线监测超标问题新增" v-model="onlineAdd" width="70%" :before-close="handleClose">
|
||||
<el-divider content-position="left">第二步 选择问题测点</el-divider>
|
||||
<el-form :inline="true" class="form">
|
||||
<el-form-item label="告警时间">
|
||||
@@ -55,7 +55,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<!-- 新增第二步(普测超标问题新增) -->
|
||||
<el-dialog title="普测超标问题新增" v-model="ordinaryAdd" width="70%" :before-close="handleClose">
|
||||
<el-dialog draggable title="普测超标问题新增" v-model="ordinaryAdd" width="70%" :before-close="handleClose">
|
||||
<el-divider content-position="left">第二步 选择普测计划及问题类型</el-divider>
|
||||
<el-form :model="ordinaryA" :inline="true" class="form">
|
||||
<el-form-item>
|
||||
@@ -126,7 +126,7 @@
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 新增第二步(运维异常问题新增) -->
|
||||
<el-dialog title="运维异常问题新增" v-model="operationAdd" width="70%" :before-close="handleClose">
|
||||
<el-dialog draggable title="运维异常问题新增" v-model="operationAdd" width="70%" :before-close="handleClose">
|
||||
<el-divider content-position="left">第二步 选择普测计划及问题类型</el-divider>
|
||||
<el-form :model="operationAdddata" ref="operationAddRef" :inline="true" :rules="rules">
|
||||
<el-form-item label="异常设备名称:" prop="abnormalDevName">
|
||||
@@ -182,7 +182,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<!-- 新增第二步(用户投诉问题新增) -->
|
||||
<el-dialog title="用户投诉问题新增" v-model="userAdd" width="70%" :before-close="handleClose">
|
||||
<el-dialog draggable title="用户投诉问题新增" v-model="userAdd" width="70%" :before-close="handleClose">
|
||||
<el-divider content-position="left">第二步 选择投诉用户</el-divider>
|
||||
<el-form :model="userA" :inline="true" :rules="rules">
|
||||
<el-form-item label="用户类型:">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog title="详情" v-model="dialogVisible" width="70%" :before-close="handleClose">
|
||||
<el-dialog draggable title="详情" v-model="dialogVisible" width="70%" :before-close="handleClose">
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题基本信息</el-divider>
|
||||
<el-form :model="addData" :inline="true" disabled label-width="120px">
|
||||
<el-form-item label="所属单位:">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog title="填报" v-model="dialogVisible" width="70%" :before-close="handleClose">
|
||||
<el-dialog draggable title="填报" v-model="dialogVisible" width="70%" :before-close="handleClose">
|
||||
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题基本信息</el-divider>
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="所属单位:">
|
||||
@@ -44,7 +44,14 @@
|
||||
</el-steps>
|
||||
|
||||
<!-- 原因分析 0 -->
|
||||
<el-form :model="causeAnalysisData" v-if="control == 0" :rules="rules" ref="form" label-width="140px" class="form">
|
||||
<el-form
|
||||
:model="causeAnalysisData"
|
||||
v-if="control == 0"
|
||||
:rules="rules"
|
||||
ref="form"
|
||||
label-width="140px"
|
||||
class="form"
|
||||
>
|
||||
<el-form-item label="电网侧原因:" prop="reportProcessContentYyfx">
|
||||
<el-checkbox-group v-model="causeAnalysisData.reportProcessContentYyfx">
|
||||
<el-checkbox v-for="(item, ind) in CauseList" :key="ind" :label="item.code">
|
||||
@@ -150,7 +157,7 @@ const open = (row: any) => {
|
||||
}
|
||||
const step = (e: number) => {
|
||||
if (active.value >= e) {
|
||||
control.value=e
|
||||
control.value = e
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
></vxe-table-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
<el-dialog v-model="dialogVisible" title="年限设置" width="500" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="dialogVisible" title="年限设置" width="500" :before-close="handleClose">
|
||||
<el-input-number v-model="num" :min="0" :max="1000" />
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<!-- 上传弹窗 -->
|
||||
<el-dialog title="上传" v-model="addUpload" width="500px">
|
||||
<el-dialog draggable title="上传" v-model="addUpload" width="500px">
|
||||
<el-upload
|
||||
multiple
|
||||
action=""
|
||||
@@ -35,7 +35,7 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 文件查看 -->
|
||||
<el-dialog title="文件查看" v-model="dataShow" width="600px">
|
||||
<el-dialog draggable title="文件查看" v-model="dataShow" width="600px">
|
||||
<vxe-table height="400" auto-resize :data="uploadList" v-bind="defaultAttribute">
|
||||
<vxe-column field="minFileName" title="文件名称"></vxe-column>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.
|
||||
<template>
|
||||
<el-dialog :title="title" v-model="planAddition" width="950px" :before-close="cancelFn">
|
||||
<el-dialog draggable :title="title" v-model="planAddition" width="950px" :before-close="cancelFn">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="10">
|
||||
<el-divider content-position="left">基本信息</el-divider>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<!-- 上传 -->
|
||||
<el-dialog :title="title" v-model="uploadConclusions" width="800px" :before-close="cancel">
|
||||
<el-dialog draggable :title="title" v-model="uploadConclusions" width="800px" :before-close="cancel">
|
||||
<el-divider content-position="left">基本信息</el-divider>
|
||||
<el-form
|
||||
:inline="true"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<!-- 新增 -->
|
||||
<el-dialog title="未建档干扰用户新增" v-model="userAdd" width="50%" :before-close="cancel">
|
||||
<el-dialog draggable title="未建档干扰用户新增" v-model="userAdd" width="50%" :before-close="cancel">
|
||||
<el-divider content-position="left" style="font-weight: bolder; font-size: 18px">基本信息</el-divider>
|
||||
<el-form :inline="true" ref="formRef" :model="addData" label-width="130px" :rules="rules">
|
||||
<el-form-item label="区域:">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<!-- 上传 -->
|
||||
<el-dialog :title="title" v-model="uploadConclusions" width="70%" :before-close="cancel">
|
||||
<el-dialog draggable :title="title" v-model="uploadConclusions" width="70%" :before-close="cancel">
|
||||
<el-divider content-position="left">基本信息</el-divider>
|
||||
<el-form
|
||||
:inline="true"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog v-model="dialogVisible" :title="title" style="width: 800px" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="dialogVisible" :title="title" style="width: 800px" :before-close="handleClose">
|
||||
<el-form :model="form" :rules="rules" class="form-style" ref="elform" label-width="120px">
|
||||
<el-form-item label="终端编号:" prop="id">
|
||||
<el-input
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
<Table ref="tableRef" />
|
||||
<!-- 上传检测报告 -->
|
||||
<el-dialog
|
||||
draggable
|
||||
title="上传检测报告__支持批量上传"
|
||||
v-model="showBatchUpload"
|
||||
width="30%"
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
<newlyIncreased ref="addRef" @onsubmit="tableStore.index()" />
|
||||
<!-- 上传原始报告 -->
|
||||
<el-dialog
|
||||
draggable
|
||||
title="上传原始报告__支持批量上传"
|
||||
v-model="showBatchUpload"
|
||||
width="30%"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<!-- 分析记录管理 -->
|
||||
<el-dialog v-model="dialogAnalysis" title="分析记录管理" width="60%">
|
||||
<el-dialog draggable v-model="dialogAnalysis" title="分析记录管理" width="60%">
|
||||
<vxe-table height="500" auto-resize :data="AnalysisData" v-bind="defaultAttribute">
|
||||
<vxe-column field="timeId" title="策略名称"></vxe-column>
|
||||
<vxe-column field="timeId" title="操作时间"></vxe-column>
|
||||
@@ -203,8 +203,6 @@ const details = (row: any) => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
const backbxlb = () => {
|
||||
view.value = true
|
||||
view2.value = false
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<!-- 波形分析 -->
|
||||
<el-dialog v-model="dialogAnalysis" title="波形分析" width="70%">
|
||||
<el-dialog draggable v-model="dialogAnalysis" title="波形分析" width="70%">
|
||||
<div class="mb10" style="display: flex; justify-content: space-between">
|
||||
<span>事件关联编号为:{{ AssociationNumber }}</span>
|
||||
<div>
|
||||
@@ -153,7 +153,7 @@ const tableStore = new TableStore({
|
||||
|
||||
loadCallback: () => {}
|
||||
})
|
||||
tableStore.table.params.searchValue=''
|
||||
tableStore.table.params.searchValue = ''
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
@@ -172,8 +172,7 @@ const bxcontrast = () => {
|
||||
message: '请选择数据!',
|
||||
type: 'warning'
|
||||
})
|
||||
}else{
|
||||
|
||||
} else {
|
||||
}
|
||||
}
|
||||
// 波形分析
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<!-- 暂降源定位 -->
|
||||
<el-dialog v-model="dialogAnalysis" title="暂降源定位" width="70%">
|
||||
<el-dialog draggable v-model="dialogAnalysis" title="暂降源定位" width="70%">
|
||||
<div class="mb10" style="display: flex; justify-content: space-between">
|
||||
<span>事件关联编号为:{{ AssociationNumber }}</span>
|
||||
<el-button icon="el-icon-Download" type="primary" @click="positioningexport">导出</el-button>
|
||||
@@ -154,11 +154,9 @@ const tableStore = new TableStore({
|
||||
}
|
||||
],
|
||||
|
||||
loadCallback: () => {
|
||||
|
||||
}
|
||||
loadCallback: () => {}
|
||||
})
|
||||
tableStore.table.params.searchValue=''
|
||||
tableStore.table.params.searchValue = ''
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" title="暂降事件列表">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" title="暂降事件列表">
|
||||
<vxe-table v-loading="loading" height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
||||
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
|
||||
<vxe-column field="startTime" title="发生时间" width="200"></vxe-column>
|
||||
@@ -24,7 +24,7 @@ import { getNoDealEventsByLineId } from '@/api/event-boot/areaInfo'
|
||||
const dialogVisible = ref(false)
|
||||
const tableData = ref([])
|
||||
const loading = ref(true)
|
||||
const open = (params:any) => {
|
||||
const open = (params: any) => {
|
||||
dialogVisible.value = true
|
||||
loading.value = true
|
||||
getNoDealEventsByLineId(params).then(res => {
|
||||
|
||||
@@ -140,6 +140,9 @@ import { mainHeight } from '@/utils/layout'
|
||||
import { getLineExport, getList, selectReleation } from '@/api/event-boot/report'
|
||||
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||
import { ElMessage } from 'element-plus'
|
||||
defineOptions({
|
||||
name: 'TransientReport/monitoringpointReport'
|
||||
})
|
||||
const monitoringPoint = useMonitoringPoint()
|
||||
const height = mainHeight(20)
|
||||
const size = ref(0)
|
||||
|
||||
@@ -191,7 +191,7 @@ const list = ref([
|
||||
])
|
||||
const tableStore = new TableStore({
|
||||
url: '',
|
||||
method: 'post',
|
||||
method: 'POST',
|
||||
column: []
|
||||
})
|
||||
|
||||
|
||||
@@ -1,61 +1,60 @@
|
||||
<!--上传暂降数据-->
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='eventDataUploadVisible' :title='title'
|
||||
style='width: 415px;height: 380px'
|
||||
top='25vh'>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog"
|
||||
v-model="eventDataUploadVisible"
|
||||
:title="title"
|
||||
style="width: 415px; height: 380px"
|
||||
top="25vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' ref='formRef'>
|
||||
<el-form-item label='业务用户'>
|
||||
<el-select v-model='form.userId' filterable @change='changeUser'>
|
||||
<el-form :inline="false" :model="form" label-width="120px" ref="formRef">
|
||||
<el-form-item label="业务用户">
|
||||
<el-select v-model="form.userId" filterable @change="changeUser">
|
||||
<el-option
|
||||
v-for='item in userListData'
|
||||
:key='item.id'
|
||||
:label='item.userName'
|
||||
:value='item.id'
|
||||
v-for="item in userListData"
|
||||
:key="item.id"
|
||||
:label="item.userName"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='生产线'>
|
||||
<el-select v-model='form.productLineId' filterable @change='changeProductLine'>
|
||||
<el-option
|
||||
v-for='item in productLineData'
|
||||
:key='item.id'
|
||||
:label='item.name'
|
||||
:value='item.id'
|
||||
/>
|
||||
<el-form-item label="生产线">
|
||||
<el-select v-model="form.productLineId" filterable @change="changeProductLine">
|
||||
<el-option v-for="item in productLineData" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='进线'>
|
||||
<el-input v-model='form.incomingLineName' readonly />
|
||||
<el-form-item label="进线">
|
||||
<el-input v-model="form.incomingLineName" readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label='暂降数据文件'>
|
||||
<el-form-item label="暂降数据文件">
|
||||
<el-upload
|
||||
v-model:file-list='fileList'
|
||||
ref='uploadEventData'
|
||||
action=''
|
||||
:limit='1'
|
||||
:on-exceed='handleExceed'
|
||||
:auto-upload='false'
|
||||
:on-change='choose'
|
||||
v-model:file-list="fileList"
|
||||
ref="uploadEventData"
|
||||
action=""
|
||||
:limit="1"
|
||||
:on-exceed="handleExceed"
|
||||
:auto-upload="false"
|
||||
:on-change="choose"
|
||||
>
|
||||
<template #trigger>
|
||||
<el-button type='primary'>选择数据文件</el-button>
|
||||
<el-button type="primary">选择数据文件</el-button>
|
||||
</template>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='eventDataUploadVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="eventDataUploadVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive, inject } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { ElMessage } from 'element-plus'
|
||||
@@ -85,7 +84,6 @@ const form = reactive({
|
||||
file: null
|
||||
})
|
||||
|
||||
|
||||
//弹出界面,默认选择用户的第一个生产线的第一条进线进行数据导入
|
||||
const open = async (text: string, userId: string) => {
|
||||
title.value = text
|
||||
@@ -191,7 +189,7 @@ const changeProductLine = () => {
|
||||
const choose = (e: any) => {
|
||||
form.file = e.raw
|
||||
}
|
||||
const handleExceed: UploadProps['onExceed'] = (files) => {
|
||||
const handleExceed: UploadProps['onExceed'] = files => {
|
||||
uploadEventData.value!.clearFiles()
|
||||
const file = files[0] as UploadRawFile
|
||||
file.uid = genFileId()
|
||||
@@ -199,7 +197,6 @@ const handleExceed: UploadProps['onExceed'] = (files) => {
|
||||
fileList.value = [{ name: file.name, url: '' }]
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
@@ -223,7 +220,6 @@ const submit = async () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
} else {
|
||||
@@ -231,9 +227,7 @@ const submit = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -1,36 +1,37 @@
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='incomingDialogVisible' :title='title'
|
||||
style='width: 415px;height: 300px' top='30vh'>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog"
|
||||
v-model="incomingDialogVisible"
|
||||
:title="title"
|
||||
style="width: 415px; height: 300px"
|
||||
top="30vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
|
||||
<el-form-item label='进线名称' prop='name'>
|
||||
<el-input v-model='form.name' placeholder='请输入进线名称'/>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="进线名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入进线名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label='关联监测点' prop='lineId'>
|
||||
<el-select v-model='form.lineId' placeholder='请选择关联监测点' :filterable='true'>
|
||||
<el-option
|
||||
v-for='line in lineList'
|
||||
:key='line.id'
|
||||
:label='line.name'
|
||||
:value='line.id'
|
||||
/>
|
||||
<el-form-item label="关联监测点" prop="lineId">
|
||||
<el-select v-model="form.lineId" placeholder="请选择关联监测点" :filterable="true">
|
||||
<el-option v-for="line in lineList" :key="line.id" :label="line.name" :value="line.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='incomingDialogVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="incomingDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
import { ref, inject, reactive} from 'vue'
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject, reactive } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { addSgIncomingLine,updateSgIncomingLine } from '@/api/advance-boot/sgGroven/incomingLine' // 若不是列表页面弹框可删除
|
||||
import { addSgIncomingLine, updateSgIncomingLine } from '@/api/advance-boot/sgGroven/incomingLine' // 若不是列表页面弹框可删除
|
||||
const incomingDialogVisible = ref(false)
|
||||
const title = ref('')
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
@@ -38,16 +39,16 @@ const formRef = ref()
|
||||
|
||||
const lineList = reactive([
|
||||
{
|
||||
'id': '123456',
|
||||
'name': '测试1号线'
|
||||
id: '123456',
|
||||
name: '测试1号线'
|
||||
},
|
||||
{
|
||||
'id': '01e796a4ffbd8de00c4ee9f34b49d7cb',
|
||||
'name': '测试2号线'
|
||||
id: '01e796a4ffbd8de00c4ee9f34b49d7cb',
|
||||
name: '测试2号线'
|
||||
},
|
||||
{
|
||||
'id': '1223456',
|
||||
'name': '测试3号线'
|
||||
id: '1223456',
|
||||
name: '测试3号线'
|
||||
}
|
||||
])
|
||||
|
||||
@@ -90,7 +91,7 @@ const open = (text: string, data: any) => {
|
||||
}
|
||||
|
||||
const submit = () => {
|
||||
formRef.value.validate(async (valid:any) => {
|
||||
formRef.value.validate(async (valid: any) => {
|
||||
if (valid) {
|
||||
if (form.id) {
|
||||
await updateSgIncomingLine(form)
|
||||
@@ -104,7 +105,6 @@ const submit = () => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,57 +1,51 @@
|
||||
<!--设备的新增编辑弹出框-->
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='machineVisible' :title='title' style='width: 415px;height: 400px'
|
||||
top='30vh'>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog"
|
||||
v-model="machineVisible"
|
||||
:title="title"
|
||||
style="width: 415px; height: 400px"
|
||||
top="30vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
|
||||
<el-form-item label='设备名' prop='name'>
|
||||
<el-input v-model='form.name' placeholder='请输入设备名' clearable />
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="设备名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入设备名" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label='型号'>
|
||||
<el-input v-model='form.type' placeholder='请输入型号' clearable />
|
||||
<el-form-item label="型号">
|
||||
<el-input v-model="form.type" placeholder="请输入型号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label='设备损失' prop='machineLoss'>
|
||||
<el-input
|
||||
v-model='form.machineLoss'
|
||||
placeholder='请输入设备损失'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="设备损失" prop="machineLoss">
|
||||
<el-input v-model="form.machineLoss" placeholder="请输入设备损失" clearable>
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='原料损失' prop='materialLoss'>
|
||||
<el-input
|
||||
v-model='form.materialLoss'
|
||||
placeholder='请输入原料损失'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="原料损失" prop="materialLoss">
|
||||
<el-input v-model="form.materialLoss" placeholder="请输入原料损失" clearable>
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='功率' prop='machinePower'>
|
||||
<el-input
|
||||
v-model='form.machinePower'
|
||||
placeholder='请输入功率'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="功率" prop="machinePower">
|
||||
<el-input v-model="form.machinePower" placeholder="请输入功率" clearable>
|
||||
<template #append>kW</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='machineVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="machineVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, inject } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { addSgMachine,updateSgMachine } from '@/api/advance-boot/sgGroven/sgMachine'
|
||||
import { addSgMachine, updateSgMachine } from '@/api/advance-boot/sgGroven/sgMachine'
|
||||
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
const machineVisible = ref(false)
|
||||
@@ -84,7 +78,7 @@ const rules = {
|
||||
machinePower: [
|
||||
{ required: true, message: '功率不能为空', trigger: 'blur' },
|
||||
{ pattern: regex, message: '请输入有效的数值', trigger: 'blur' }
|
||||
],
|
||||
]
|
||||
}
|
||||
|
||||
const open = (text: string, data?: any) => {
|
||||
@@ -112,7 +106,6 @@ const resetForm = () => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
@@ -133,7 +126,6 @@ const submit = () => {
|
||||
|
||||
/************针对tab切换*************/
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
@@ -145,5 +137,4 @@ defineExpose({ open })
|
||||
.el-select {
|
||||
min-width: 180px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -1,62 +1,64 @@
|
||||
<!--生产线的新增编辑弹出框-->
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='productLineVisible' :title='title' style='width: 415px;height: 380px'
|
||||
top='30vh'>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog"
|
||||
v-model="productLineVisible"
|
||||
:title="title"
|
||||
style="width: 415px; height: 380px"
|
||||
top="30vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
|
||||
<el-form-item label='生产线名' prop='name'>
|
||||
<el-input v-model='form.name' placeholder='请输入生产线名' clearable />
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="生产线名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入生产线名" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label='关联进线' prop='incomingLineId'>
|
||||
<el-select v-model='form.incomingLineId'>
|
||||
<el-form-item label="关联进线" prop="incomingLineId">
|
||||
<el-select v-model="form.incomingLineId">
|
||||
<el-option
|
||||
v-for='item in incomingLineList'
|
||||
:key='item.id'
|
||||
:label='item.name'
|
||||
:value='item.id'
|
||||
v-for="item in incomingLineList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='计算模式' prop='calcMode'>
|
||||
<el-radio-group v-model='form.calcMode'>
|
||||
<el-form-item label="计算模式" prop="calcMode">
|
||||
<el-radio-group v-model="form.calcMode">
|
||||
<el-tooltip
|
||||
class='box-item'
|
||||
effect='light'
|
||||
content='单次中断不计算设备、原料损失'
|
||||
placement='bottom-start'
|
||||
class="box-item"
|
||||
effect="light"
|
||||
content="单次中断不计算设备、原料损失"
|
||||
placement="bottom-start"
|
||||
>
|
||||
<el-radio border label='0'>模式一</el-radio>
|
||||
<el-radio border label="0">模式一</el-radio>
|
||||
</el-tooltip>
|
||||
<el-tooltip
|
||||
class='box-item'
|
||||
effect='light'
|
||||
content='单次中断计算设备、原料损失'
|
||||
placement='bottom-start'
|
||||
class="box-item"
|
||||
effect="light"
|
||||
content="单次中断计算设备、原料损失"
|
||||
placement="bottom-start"
|
||||
>
|
||||
<el-radio border label='1'>模式二</el-radio>
|
||||
<el-radio border label="1">模式二</el-radio>
|
||||
</el-tooltip>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label='产能损失' prop='capacityLoss'>
|
||||
<el-input
|
||||
v-model='form.capacityLoss'
|
||||
placeholder='请输入产能损失'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="产能损失" prop="capacityLoss">
|
||||
<el-input v-model="form.capacityLoss" placeholder="请输入产能损失" clearable>
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='productLineVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="productLineVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, inject } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { querySgIncomingLineByUserId } from '@/api/advance-boot/sgGroven/incomingLine'
|
||||
@@ -84,9 +86,7 @@ const form = reactive({
|
||||
const rules = {
|
||||
name: [{ required: true, message: '生产线名不能为空', trigger: 'blur' }],
|
||||
incomingLineId: [{ required: true, message: '请关联进线', trigger: 'change' }],
|
||||
calcMode: [
|
||||
{ required: true, message: '请选择计算模式', trigger: 'change' }
|
||||
],
|
||||
calcMode: [{ required: true, message: '请选择计算模式', trigger: 'change' }],
|
||||
capacityLoss: [
|
||||
{ required: true, message: '产能损失不能为空', trigger: 'blur' },
|
||||
{ pattern: regex, message: '请输入有效的数值', trigger: 'blur' }
|
||||
@@ -130,7 +130,6 @@ const initIncomingLine = async () => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
@@ -151,7 +150,6 @@ const submit = () => {
|
||||
|
||||
/************针对tab切换*************/
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
@@ -163,5 +161,4 @@ defineExpose({ open })
|
||||
.el-select {
|
||||
min-width: 180px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -1,36 +1,36 @@
|
||||
<!--设备详情页面,包含设备基础信息、元器件列表信息-->
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='machineDetailVisible' :title='title' style='width: 900px;'>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="machineDetailVisible" :title="title" style="width: 900px">
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' ref='formRef'>
|
||||
<el-form-item label='设备名称'>
|
||||
<el-input v-model='form.name' readonly />
|
||||
<el-form :inline="false" :model="form" label-width="120px" ref="formRef">
|
||||
<el-form-item label="设备名称">
|
||||
<el-input v-model="form.name" readonly />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span='12'>
|
||||
<el-form-item label='设备型号'>
|
||||
<el-input v-model='form.type' readonly />
|
||||
<el-col :span="12">
|
||||
<el-form-item label="设备型号">
|
||||
<el-input v-model="form.type" readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span='12'>
|
||||
<el-form-item label='设备损失'>
|
||||
<el-input v-model='form.machineLoss' readonly>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="设备损失">
|
||||
<el-input v-model="form.machineLoss" readonly>
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span='12'>
|
||||
<el-form-item label='原料损失'>
|
||||
<el-input v-model='form.materialLoss' readonly>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="原料损失">
|
||||
<el-input v-model="form.materialLoss" readonly>
|
||||
<template #append>万元</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span='12'>
|
||||
<el-form-item label='功率'>
|
||||
<el-input v-model='form.machinePower' readonly>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="功率">
|
||||
<el-input v-model="form.machinePower" readonly>
|
||||
<template #append>kW</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
@@ -39,16 +39,16 @@
|
||||
</el-form>
|
||||
|
||||
<!--元器件表格-->
|
||||
<unit-table ref='unitTable' />
|
||||
<unit-table ref="unitTable" />
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='machineDetailVisible = false'>关闭</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="machineDetailVisible = false">关闭</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, nextTick } from 'vue'
|
||||
import UnitTable from '@/views/pqs/voltageSags/sagGovern/businessUser/sensitiveUnit/unitTable.vue'
|
||||
|
||||
@@ -82,12 +82,10 @@ const open = (text: string, data?: any) => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
<style scoped>
|
||||
.el-form-item {
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -1,90 +1,78 @@
|
||||
<!--元器件的新增编辑弹出框-->
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='unitVisible' :title='title' style='width: 415px;height: 500px'
|
||||
top='10vh'>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog"
|
||||
v-model="unitVisible"
|
||||
:title="title"
|
||||
style="width: 415px; height: 500px"
|
||||
top="10vh"
|
||||
>
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='135px' :rules='rules' ref='formRef'>
|
||||
<el-form-item label='元器件名' prop='name'>
|
||||
<el-input v-model='form.name' placeholder='请输入元器件名' clearable />
|
||||
<el-form :inline="false" :model="form" label-width="135px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="元器件名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入元器件名" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label='灵敏度' prop='sensitivity'>
|
||||
<el-select v-model='form.sensitivity'>
|
||||
<el-form-item label="灵敏度" prop="sensitivity">
|
||||
<el-select v-model="form.sensitivity">
|
||||
<el-option
|
||||
v-for='item in sensitivityList'
|
||||
:key='item.value'
|
||||
:label='item.name'
|
||||
:value='item.value'
|
||||
v-for="item in sensitivityList"
|
||||
:key="item.value"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='耐受能力是否标准' prop='standardFlag'>
|
||||
<el-radio-group v-model='form.standardFlag'>
|
||||
<el-radio border label='1'>是</el-radio>
|
||||
<el-radio border label='0'>否</el-radio>
|
||||
<el-form-item label="耐受能力是否标准" prop="standardFlag">
|
||||
<el-radio-group v-model="form.standardFlag">
|
||||
<el-radio border label="1">是</el-radio>
|
||||
<el-radio border label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label='上限-持续时间' prop='vtcTimeUpper'>
|
||||
<el-input
|
||||
v-model='form.vtcTimeUpper'
|
||||
placeholder='请输入持续时间'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="上限-持续时间" prop="vtcTimeUpper">
|
||||
<el-input v-model="form.vtcTimeUpper" placeholder="请输入持续时间" clearable>
|
||||
<template #append>ms</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label='上限-暂降幅值' prop='vtcAmpUpper'>
|
||||
<el-input
|
||||
v-model='form.vtcAmpUpper'
|
||||
placeholder='请输入暂降幅值'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="上限-暂降幅值" prop="vtcAmpUpper">
|
||||
<el-input v-model="form.vtcAmpUpper" placeholder="请输入暂降幅值" clearable>
|
||||
<template #append>p.u.</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label='下限-持续时间' prop='vtcTimeLower'>
|
||||
<el-input
|
||||
v-model='form.vtcTimeLower'
|
||||
placeholder='请输入持续时间'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="下限-持续时间" prop="vtcTimeLower">
|
||||
<el-input v-model="form.vtcTimeLower" placeholder="请输入持续时间" clearable>
|
||||
<template #append>ms</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label='下限-暂降幅值' prop='vtcAmpLower'>
|
||||
<el-input
|
||||
v-model='form.vtcAmpLower'
|
||||
placeholder='请输入暂降幅值'
|
||||
clearable
|
||||
>
|
||||
<el-form-item label="下限-暂降幅值" prop="vtcAmpLower">
|
||||
<el-input v-model="form.vtcAmpLower" placeholder="请输入暂降幅值" clearable>
|
||||
<template #append>p.u.</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='unitVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="unitVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, inject } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { addSgSensitiveUnit,updateSgSensitiveUnit } from '@/api/advance-boot/sgGroven/sgSensitiveUnit'
|
||||
|
||||
import { addSgSensitiveUnit, updateSgSensitiveUnit } from '@/api/advance-boot/sgGroven/sgSensitiveUnit'
|
||||
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
const unitVisible = ref(false)
|
||||
const title = ref('')
|
||||
const formRef = ref()
|
||||
const sensitivityList = ref(
|
||||
[
|
||||
const sensitivityList = ref([
|
||||
{
|
||||
name: '平均',
|
||||
value: '0'
|
||||
@@ -101,8 +89,7 @@ const sensitivityList = ref(
|
||||
name: '低',
|
||||
value: '3'
|
||||
}
|
||||
]
|
||||
)
|
||||
])
|
||||
const regex = /^[+]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?$/
|
||||
|
||||
// 注意不要和表单ref的命名冲突
|
||||
@@ -170,7 +157,6 @@ const resetForm = () => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
@@ -189,14 +175,11 @@ const submit = () => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.cn-operate-dialog .el-form {
|
||||
width: calc(100% - 10px)
|
||||
width: calc(100% - 10px);
|
||||
}
|
||||
</style>
|
||||
@@ -1,77 +1,76 @@
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='dialogVisible' :title='title' style='max-width: 750px'>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title" style="max-width: 750px">
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
|
||||
<el-tabs tab-position='left' style='height: 100%' :before-leave='checkUserId' v-model='tab'>
|
||||
<el-tab-pane label='基本信息' name='user'>
|
||||
<el-form-item label='用户名' prop='userName'>
|
||||
<el-input v-model='form.userName' />
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-tabs tab-position="left" style="height: 100%" :before-leave="checkUserId" v-model="tab">
|
||||
<el-tab-pane label="基本信息" name="user">
|
||||
<el-form-item label="用户名" prop="userName">
|
||||
<el-input v-model="form.userName" />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span='12'>
|
||||
<el-form-item label='重点用户'>
|
||||
<el-select v-model='form.keyUser'>
|
||||
<el-option label='重要' value='1' />
|
||||
<el-option label='不重要' value='0' />
|
||||
<el-col :span="12">
|
||||
<el-form-item label="重点用户">
|
||||
<el-select v-model="form.keyUser">
|
||||
<el-option label="重要" value="1" />
|
||||
<el-option label="不重要" value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span='12'>
|
||||
<el-form-item label='所属行业' prop='industry'>
|
||||
<el-input v-model='form.industry' />
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属行业" prop="industry">
|
||||
<el-input v-model="form.industry" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label='所在地区' prop='addr'>
|
||||
<area-cascard
|
||||
v-model='form.addr'
|
||||
@change='reValueAddr'
|
||||
ref='areaRef'
|
||||
/>
|
||||
<el-form-item label="所在地区" prop="addr">
|
||||
<area-cascard v-model="form.addr" @change="reValueAddr" ref="areaRef" />
|
||||
</el-form-item>
|
||||
<el-form-item label='详细地址'>
|
||||
<el-input v-model='form.addrDetail' />
|
||||
<el-form-item label="详细地址">
|
||||
<el-input v-model="form.addrDetail" />
|
||||
</el-form-item>
|
||||
<el-form-item label='联系方式'>
|
||||
<el-input v-model='form.concact' />
|
||||
<el-form-item label="联系方式">
|
||||
<el-input v-model="form.concact" />
|
||||
</el-form-item>
|
||||
<el-form-item label='用户描述'>
|
||||
<el-input v-model='form.remark' :rows='2' type='textarea' placeholder='请输入描述' />
|
||||
<el-form-item label="用户描述">
|
||||
<el-input v-model="form.remark" :rows="2" type="textarea" placeholder="请输入描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label='企业照片'>
|
||||
<el-form-item label="企业照片">
|
||||
<div>
|
||||
<el-image style='width: 200px;height: 200px;' :src='userLogo.url'
|
||||
:preview-src-list='[userLogo.url]' v-if='userLogo.url'></el-image>
|
||||
<el-image
|
||||
style="width: 200px; height: 200px"
|
||||
:src="userLogo.url"
|
||||
:preview-src-list="[userLogo.url]"
|
||||
v-if="userLogo.url"
|
||||
></el-image>
|
||||
<el-upload
|
||||
action=''
|
||||
:show-file-list='false'
|
||||
:auto-upload='false'
|
||||
accept='.png,.jpg'
|
||||
:on-change='chooseImage'
|
||||
action=""
|
||||
:show-file-list="false"
|
||||
:auto-upload="false"
|
||||
accept=".png,.jpg"
|
||||
:on-change="chooseImage"
|
||||
>
|
||||
<el-button type='primary'>上传图片</el-button>
|
||||
<el-button type="primary">上传图片</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label='进线' name='incomingLine'>
|
||||
<IncomingTable ref='incomingTable'></IncomingTable>
|
||||
<el-tab-pane label="进线" name="incomingLine">
|
||||
<IncomingTable ref="incomingTable"></IncomingTable>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
|
||||
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='dialogVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject, reactive, nextTick } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import type { UploadProps, UploadUserFile } from 'element-plus'
|
||||
@@ -123,7 +122,6 @@ const resetForm = () => {
|
||||
if (formRef.value) {
|
||||
formRef.value.resetFields()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const open = (text: string, data?: anyObj) => {
|
||||
@@ -154,10 +152,8 @@ const open = (text: string, data?: anyObj) => {
|
||||
}
|
||||
form.keyUser = '1'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 将联级选择的区域数组转为字符串
|
||||
*/
|
||||
@@ -172,7 +168,6 @@ const reValueAddr = () => {
|
||||
*/
|
||||
const chooseImage = (e: any) => {
|
||||
uploadFile(e.raw, 'sgGovern/').then(res => {
|
||||
|
||||
userLogo.name = res.data.name
|
||||
userLogo.url = res.data.url
|
||||
form.userLogo = res.data.name
|
||||
@@ -180,7 +175,6 @@ const chooseImage = (e: any) => {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除文件操作,此操作应在提交表单的时候操作,删除的图片可能有多张
|
||||
*/
|
||||
@@ -199,7 +193,6 @@ const handlePictureCardPreview = () => {
|
||||
dialogVisibleLogo.value = true
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交用户表单数据
|
||||
*/
|
||||
@@ -236,7 +229,6 @@ const checkUserId = (tab: any, event: any) => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,51 +1,44 @@
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='dialogVisible' :title='title'>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
|
||||
<el-form-item label='名称:' class='top' prop='name'>
|
||||
<el-input v-model='form.name'></el-input>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="名称:" class="top" prop="name">
|
||||
<el-input v-model="form.name"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='计算值:' class='top'>
|
||||
<el-input v-model='form.value'></el-input>
|
||||
<el-form-item label="计算值:" class="top">
|
||||
<el-input v-model="form.value"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class='top' label='对应算法:' prop='algoDescribe' v-if='form.openDescribe == 1'>
|
||||
<el-input v-model='form.algoDescribe' placeholder='请输入数字'></el-input>
|
||||
<el-form-item class="top" label="对应算法:" prop="algoDescribe" v-if="form.openDescribe == 1">
|
||||
<el-input v-model="form.algoDescribe" placeholder="请输入数字"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class='top'
|
||||
label='编码:'
|
||||
prop='code'
|
||||
>
|
||||
<el-input v-model='form.code'></el-input>
|
||||
<el-form-item class="top" label="编码:" prop="code">
|
||||
<el-input v-model="form.code"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='排序:' prop='sort' class='top'>
|
||||
<el-input-number v-model='form.sort' :min='0' />
|
||||
<el-form-item label="排序:" prop="sort" class="top">
|
||||
<el-input-number v-model="form.sort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if='form.openLevel === 1'
|
||||
label='事件等级:'
|
||||
>
|
||||
<el-select v-model='form.level' placeholder='选择开启等级'>
|
||||
<el-form-item v-if="form.openLevel === 1" label="事件等级:">
|
||||
<el-select v-model="form.level" placeholder="选择开启等级">
|
||||
<el-option
|
||||
v-for='item in EventOpenLevel'
|
||||
:key='item.value'
|
||||
:label='item.label'
|
||||
:value='item.value'
|
||||
>
|
||||
</el-option>
|
||||
v-for="item in EventOpenLevel"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='dialogVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
@@ -88,15 +81,9 @@ const rules = {
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
code: [
|
||||
{ required: true, message: '编码不能为空', trigger: 'blur' }
|
||||
],
|
||||
sort: [
|
||||
{ required: true, message: '排序不能为空', trigger: 'blur' }
|
||||
]
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
code: [{ required: true, message: '编码不能为空', trigger: 'blur' }],
|
||||
sort: [{ required: true, message: '排序不能为空', trigger: 'blur' }]
|
||||
}
|
||||
const dialogVisible = ref(false)
|
||||
const title = ref('新增')
|
||||
|
||||
@@ -1,64 +1,52 @@
|
||||
<template>
|
||||
<el-dialog class='cn-operate-dialog' v-model='dialogVisible' :title='title'>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline='false' :model='form' label-width='120px' :rules='rules' ref='formRef'>
|
||||
<el-form-item label='名称' prop='name'>
|
||||
<el-input v-model='form.name'></el-input>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="form.name"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label='编码' class='top' prop='code'>
|
||||
<el-input v-model='form.code'></el-input>
|
||||
<el-form-item label="编码" class="top" prop="code">
|
||||
<el-input v-model="form.code"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label='排序' class='top' prop='sort'>
|
||||
<el-form-item label="排序" class="top" prop="sort">
|
||||
<el-input-number v-model="form.sort" :min="0" />
|
||||
</el-form-item>
|
||||
<el-form-item label='开启等级' class='top'>
|
||||
<el-select
|
||||
v-model='form.openLevel'
|
||||
placeholder='选择开启等级'
|
||||
>
|
||||
<el-form-item label="开启等级" class="top">
|
||||
<el-select v-model="form.openLevel" placeholder="选择开启等级">
|
||||
<el-option
|
||||
v-for='item in OpenLevel'
|
||||
:key='item.value'
|
||||
:label='item.label'
|
||||
:value='item.value'
|
||||
>
|
||||
</el-option>
|
||||
v-for="item in OpenLevel"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='开启算法' class='top'>
|
||||
<el-select
|
||||
v-model='form.openDescribe'
|
||||
placeholder='选择开启算法'
|
||||
>
|
||||
<el-form-item label="开启算法" class="top">
|
||||
<el-select v-model="form.openDescribe" placeholder="选择开启算法">
|
||||
<el-option
|
||||
v-for='item in OpenDescribe'
|
||||
:key='item.value'
|
||||
:label='item.label'
|
||||
:value='item.value'
|
||||
>
|
||||
</el-option>
|
||||
v-for="item in OpenDescribe"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label='字典描述' class='top'>
|
||||
<el-input
|
||||
v-model='form.remark'
|
||||
type='textarea'
|
||||
:rows='2'
|
||||
></el-input>
|
||||
<el-form-item label="字典描述" class="top">
|
||||
<el-input v-model="form.remark" type="textarea" :rows="2"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
|
||||
<template #footer>
|
||||
<span class='dialog-footer'>
|
||||
<el-button @click='dialogVisible = false'>取消</el-button>
|
||||
<el-button type='primary' @click='submit'>确认</el-button>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang='ts' setup>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules">
|
||||
<el-form-item label="字典名称:" prop="name">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="部门编号:" prop="code">
|
||||
@@ -59,7 +59,7 @@ import { ref, inject } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import TableStore from '@/utils/tableStore' // 若不是列表页面弹框可删除
|
||||
import { getAreaTree, getPidAreaByAreaId,addDept,updateDept } from '@/api/user-boot/dept'
|
||||
import { getAreaTree, getPidAreaByAreaId, addDept, updateDept } from '@/api/user-boot/dept'
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const title = ref('')
|
||||
@@ -75,7 +75,7 @@ const form = reactive<anyObj>({
|
||||
type: 0,
|
||||
code: '',
|
||||
specialType: 0,
|
||||
id:''
|
||||
id: ''
|
||||
})
|
||||
const originForm = { ...form }
|
||||
const rules = {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
draggable
|
||||
class="cn-operate-dialog statistical-type-binding"
|
||||
v-model="dialogVisible"
|
||||
title="绑定监测点"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :mode="form" :inline="false" :model="form" label-width="120px" :rules="rules">
|
||||
<el-form-item prop="name" label="接口/按钮名称">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px">
|
||||
<el-form-item label="上级菜单">
|
||||
@@ -20,7 +20,10 @@
|
||||
<el-input v-model="form.path" placeholder="请输入菜单名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="组件路径">
|
||||
<el-input v-model="form.routeName" placeholder="请输入组件路径,如/src/views/auth/audit/index.vue或auth/audit" />
|
||||
<el-input
|
||||
v-model="form.routeName"
|
||||
placeholder="请输入组件路径,如/src/views/auth/audit/index.vue或auth/audit"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序">
|
||||
<el-input-number v-model="form.sort" :min="0" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules">
|
||||
<el-form-item label="角色名称">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="true" :model="form" label-width="120px" :rules="rules">
|
||||
<el-form-item label="用户名" prop="name">
|
||||
@@ -12,12 +12,7 @@
|
||||
<el-input v-model="form.password" placeholder="请输入密码" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="权限类型" prop="type">
|
||||
<el-select
|
||||
v-model="form.type"
|
||||
@change="changeValue"
|
||||
disabled
|
||||
placeholder="请选择权限类型"
|
||||
>
|
||||
<el-select v-model="form.type" @change="changeValue" disabled placeholder="请选择权限类型">
|
||||
<el-option
|
||||
v-for="(item, index) in UserTypeOption"
|
||||
:label="item.label"
|
||||
@@ -135,7 +130,7 @@ const form = reactive({
|
||||
emailNotice: 0,
|
||||
type: 0
|
||||
})
|
||||
const rules:Partial<Record<string, Array<FormItemRule>>> = {
|
||||
const rules: Partial<Record<string, Array<FormItemRule>>> = {
|
||||
name: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
|
||||
role: [{ required: true, message: '角色不能为空', trigger: 'blur' }],
|
||||
password: [{ required: true, message: '用户密码不能为空', trigger: 'blur' }],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" title="修改密码">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" title="修改密码">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="新密码" prop="newPwd">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog v-model="dialogVisible" title="模板绑定" width="500px" :before-close="handleClose">
|
||||
<el-dialog draggable v-model="dialogVisible" title="模板绑定" width="500px" :before-close="handleClose">
|
||||
<el-tree
|
||||
default-expand-all
|
||||
show-checkbox
|
||||
@@ -82,9 +82,8 @@ const gettreeData = (mdata, ids) => {
|
||||
})
|
||||
}
|
||||
// 绑定
|
||||
const bind=()=>{
|
||||
|
||||
updateBindTemplate().then(res=>{
|
||||
const bind = () => {
|
||||
updateBindTemplate().then(res => {
|
||||
// ElMessage.success('绑定成功')
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog :title="title" v-model="formVisible" width="30%" :before-close="closeDialog">
|
||||
<el-dialog draggable :title="title" v-model="formVisible" width="30%" :before-close="closeDialog">
|
||||
<el-form :model="formdata" label-width="100px" :rules="rules" ref="ruleForm">
|
||||
<el-form-item label="模板名称:" prop="name">
|
||||
<el-input placeholder="模板名称" v-model="formdata.name" style="width: 100%"></el-input>
|
||||
|
||||
@@ -27,7 +27,7 @@ import luckysheet from './luckysheet.vue'
|
||||
import look from './look.vue'
|
||||
import department from './department.vue'
|
||||
defineOptions({
|
||||
name: 'estimate/photovoltaic'
|
||||
name: 'Distributedphotovoltaic/templateConfiguration'
|
||||
})
|
||||
const luckysheetRef = ref()
|
||||
const lookRef = ref()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
|
||||
<el-form-item label="新密码:" prop="newPwd" style="margin-top: 20px">
|
||||
|
||||
Reference in New Issue
Block a user