修改部分按钮重复点击

This commit is contained in:
GGJ
2024-10-16 17:54:55 +08:00
parent 89535b6059
commit e470554b7c
18 changed files with 492 additions and 1082 deletions

View File

@@ -1,14 +1,8 @@
<template> <template>
<div ref="tableHeader" class="cn-table-header"> <div ref="tableHeader" class="cn-table-header">
<div class="table-header ba-scroll-style"> <div class="table-header ba-scroll-style">
<el-form <el-form style="flex: 1; height: 34px; margin-right: 20px; display: flex; flex-wrap: wrap" ref="headerForm"
style="flex: 1; height: 34px; margin-right: 20px; display: flex; flex-wrap: wrap" @submit.prevent="" @keyup.enter="onComSearch" label-position="left" :inline="true">
ref="headerForm"
@submit.prevent=""
@keyup.enter="onComSearch"
label-position="left"
:inline="true"
>
<el-form-item label="日期" v-if="datePicker" style="grid-column: span 2; max-width: 570px"> <el-form-item label="日期" v-if="datePicker" style="grid-column: span 2; max-width: 570px">
<DatePicker ref="datePickerRef" :nextFlag="nextFlag" :theCurrentTime="theCurrentTime"></DatePicker> <DatePicker ref="datePickerRef" :nextFlag="nextFlag" :theCurrentTime="theCurrentTime"></DatePicker>
</el-form-item> </el-form-item>
@@ -23,20 +17,16 @@
<Icon size="14" name="el-icon-ArrowUp" style="color: #fff" v-if="showSelect" /> <Icon size="14" name="el-icon-ArrowUp" style="color: #fff" v-if="showSelect" />
<Icon size="14" name="el-icon-ArrowDown" style="color: #fff" v-else /> <Icon size="14" name="el-icon-ArrowDown" style="color: #fff" v-else />
</el-button> </el-button>
<el-button @click="onComSearch" v-if="showSearch" type="primary" :icon="Search">查询</el-button> <el-button @click="onComSearch" v-if="showSearch" :loading="tableStore.table.loading" type="primary"
<el-button @click="onResetForm" v-if="showSearch" :icon="RefreshLeft">重置</el-button> :icon="Search">查询</el-button>
<el-button @click="onResetForm" v-if="showSearch" :loading="tableStore.table.loading"
:icon="RefreshLeft">重置</el-button>
</template> </template>
<!-- :loading="tableStore.table.loading" -->
<slot name="operation"></slot> <slot name="operation"></slot>
</div> </div>
<el-form <el-form :style="showSelect && showUnfoldButton ? headerFormSecondStyleOpen : headerFormSecondStyleClose"
:style="showSelect && showUnfoldButton ? headerFormSecondStyleOpen : headerFormSecondStyleClose" ref="headerFormSecond" @submit.prevent="" @keyup.enter="onComSearch" label-position="left"
ref="headerFormSecond" :inline="true"></el-form>
@submit.prevent=""
@keyup.enter="onComSearch"
label-position="left"
:inline="true"
></el-form>
</div> </div>
</template> </template>
@@ -170,13 +160,14 @@ const setInterval = (val: any) => {
datePickerRef.value.setInterval(val) datePickerRef.value.setInterval(val)
} }
defineExpose({ onComSearch, areaRef, setDatePicker, setInterval, datePickerRef, showSelectChange}) defineExpose({ onComSearch, areaRef, setDatePicker, setInterval, datePickerRef, showSelectChange })
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.cn-table-header { .cn-table-header {
border: 1px solid var(--el-border-color); border: 1px solid var(--el-border-color);
} }
.table-header { .table-header {
position: relative; position: relative;
overflow-x: auto; overflow-x: auto;
@@ -218,7 +209,7 @@ defineExpose({ onComSearch, areaRef, setDatePicker, setInterval, datePickerRef,
margin-left: 12px; margin-left: 12px;
} }
.mlr-12 + .el-button { .mlr-12+.el-button {
margin-left: 12px; margin-left: 12px;
} }
@@ -253,7 +244,7 @@ defineExpose({ onComSearch, areaRef, setDatePicker, setInterval, datePickerRef,
border-radius: 0; border-radius: 0;
} }
.el-button + .el-button { .el-button+.el-button {
margin: 0; margin: 0;
} }
@@ -264,6 +255,7 @@ defineExpose({ onComSearch, areaRef, setDatePicker, setInterval, datePickerRef,
html.dark { html.dark {
.table-search-button-group { .table-search-button-group {
button:focus, button:focus,
button:active { button:active {
background-color: var(--el-color-info-dark-2); background-color: var(--el-color-info-dark-2);
@@ -282,11 +274,13 @@ html.dark {
} }
} }
} }
#header-form, #header-form,
#header-form-second { #header-form-second {
:deep(.el-select) { :deep(.el-select) {
--el-select-width: 220px; --el-select-width: 220px;
} }
:deep(.el-input) { :deep(.el-input) {
--el-input-width: 220px; --el-input-width: 220px;
} }

View File

@@ -32,7 +32,7 @@
</template> </template>
<template #operation> <template #operation>
<!-- <el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button> --> <!-- <el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button> -->
<el-button icon="el-icon-Download" @click="exportEvent" type="primary">下载报告</el-button> <el-button icon="el-icon-Download" :loading="loading" @click="exportEvent" type="primary">下载报告</el-button>
</template> </template>
</TableHeader> </TableHeader>
<Table ref="tableRef" :radio-config="{ <Table ref="tableRef" :radio-config="{
@@ -42,7 +42,7 @@
}" :tree-config="{ transform: true, parentField: 'uPid', rowField: 'uId' }" :scroll-y="{ enabled: true }" /> }" :tree-config="{ transform: true, parentField: 'uPid', rowField: 'uId' }" :scroll-y="{ enabled: true }" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, provide, nextTick } from 'vue' import { ref, onMounted, provide, reactive } from 'vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue' import Table from '@/components/table/index.vue'
@@ -155,6 +155,7 @@ const tableStore = new TableStore({
}, 0) }, 0)
} }
}) })
const loading = ref(false)
tableStore.table.params.statisticalType = classificationData.filter(item => item.name == '电网拓扑')[0] tableStore.table.params.statisticalType = classificationData.filter(item => item.name == '电网拓扑')[0]
tableStore.table.params.monitorFlag = 2 tableStore.table.params.monitorFlag = 2
@@ -197,6 +198,7 @@ const exportEvent = () => {
}) })
return return
} }
loading.value = true
let form = new FormData() let form = new FormData()
form.append('isUrl', false) form.append('isUrl', false)
form.append('lineIndex', line.id) form.append('lineIndex', line.id)
@@ -224,6 +226,9 @@ const exportEvent = () => {
document.body.appendChild(link) document.body.appendChild(link)
link.click() //执行下载 link.click() //执行下载
document.body.removeChild(link) document.body.removeChild(link)
loading.value = false
}).catch(() => {
loading.value = false
}) })
} }
</script> </script>

View File

@@ -64,7 +64,7 @@
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="handleClose">取消</el-button> <el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="submit">发起</el-button> <el-button type="primary" @click="submit" :loading="loading">发起</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>

View File

@@ -4,22 +4,14 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item for="-" label="用户名称:" prop="userName"> <el-form-item for="-" label="用户名称:" prop="userName">
<el-input <el-input v-model="form.userName" clearable style="width: 100%"
v-model="form.userName" placeholder="请输入用户名称"></el-input>
clearable
style="width: 100%"
placeholder="请输入用户名称"
></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item for="-" label="用户编号:" prop="userNumber"> <el-form-item for="-" label="用户编号:" prop="userNumber">
<el-input <el-input v-model="form.userNumber" clearable style="width: 100%"
v-model="form.userNumber" placeholder="请输入用户编号"></el-input>
clearable
style="width: 100%"
placeholder="请输入用户编号"
></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -55,18 +47,9 @@
></el-input> ></el-input>
</el-form-item> --> </el-form-item> -->
<el-form-item for="-" label="监测点:" prop="monitorNumber"> <el-form-item for="-" label="监测点:" prop="monitorNumber">
<el-select <el-select v-model="form.monitorNumber" clearable style="width: 100%" placeholder="请选择监测点">
v-model="form.monitorNumber" <el-option v-for="item in minitorList" :key="item.id" :label="item.name"
clearable :value="item.id"></el-option>
style="width: 100%"
placeholder="请选择监测点"
>
<el-option
v-for="item in minitorList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -85,22 +68,14 @@
</el-row> --> </el-row> -->
<el-form-item for="-" label="投诉内容:" prop="complaintText"> <el-form-item for="-" label="投诉内容:" prop="complaintText">
<el-input <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="请输入内容"
type="textarea" v-model="form.complaintText"></el-input>
:autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入内容"
v-model="form.complaintText"
></el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" label="稳态指标:"> <el-form-item for="-" label="稳态指标:">
<el-checkbox-group v-model="form.steadyIndicator"> <el-checkbox-group v-model="form.steadyIndicator">
<div style="width: 100%; display: flex; flex-wrap: wrap; justify-content: flex-start"> <div style="width: 100%; display: flex; flex-wrap: wrap; justify-content: flex-start">
<el-checkbox <el-checkbox style="flex: none; width: 120px" v-for="(item, ind) in steadyStateList" :key="ind"
style="flex: none; width: 120px" :label="item.name">
v-for="(item, ind) in steadyStateList"
:key="ind"
:label="item.name"
>
<!-- @change="changeSteadyState" --> <!-- @change="changeSteadyState" -->
{{ item.name }} {{ item.name }}
</el-checkbox> </el-checkbox>
@@ -110,12 +85,8 @@
<el-form-item for="-" label="暂态指标:"> <el-form-item for="-" label="暂态指标:">
<el-checkbox-group v-model="form.transientIndicators"> <el-checkbox-group v-model="form.transientIndicators">
<div style="width: 100%; display: flex; flex-wrap: wrap; justify-content: flex-start"> <div style="width: 100%; display: flex; flex-wrap: wrap; justify-content: flex-start">
<el-checkbox <el-checkbox style="flex: none; width: 120px" v-for="(item, ind) in transientIndicatorsList"
style="flex: none; width: 120px" :key="ind" :label="item.name">
v-for="(item, ind) in transientIndicatorsList"
:key="ind"
:label="item.name"
>
<!-- @change="changeTransientIndicators" --> <!-- @change="changeTransientIndicators" -->
{{ item.name }} {{ item.name }}
</el-checkbox> </el-checkbox>
@@ -126,7 +97,7 @@
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="handleClose">取消</el-button> <el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="submit">确认</el-button> <el-button type="primary" @click="submit" :loading="loading">确认</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -141,6 +112,7 @@ import Area from '@/components/form/area/index.vue'
const emits = defineEmits(['onSubmit']) const emits = defineEmits(['onSubmit'])
const dictData = useDictData() const dictData = useDictData()
const dialogVisible = ref(false) const dialogVisible = ref(false)
const loading = ref(false)
const title: any = ref('') const title: any = ref('')
const steadyStateList = dictData.getBasicData('Steady_Indicator') const steadyStateList = dictData.getBasicData('Steady_Indicator')
const transientIndicatorsList = dictData.getBasicData('Transient_Indicators') const transientIndicatorsList = dictData.getBasicData('Transient_Indicators')
@@ -184,9 +156,10 @@ const rules = {
monitorNumber: [{ required: true, message: '请选择监测点', trigger: 'change' }], monitorNumber: [{ required: true, message: '请选择监测点', trigger: 'change' }],
dutyOrgId: [{ required: true, message: '请选择负责单位', trigger: 'change' }] dutyOrgId: [{ required: true, message: '请选择负责单位', trigger: 'change' }]
} }
const formRef = ref(null) const formRef = ref()
const submit = () => { const submit = async () => {
formRef.value.validate(valid => { loading.value = true
formRef.value.validate(async (valid) => {
if (valid) { if (valid) {
form.value = { form.value = {
...form.value, ...form.value,
@@ -196,7 +169,7 @@ const submit = () => {
return item.id == form.value.monitorNumber return item.id == form.value.monitorNumber
})?.name })?.name
} }
addComplaintsData(form.value).then(res => { await addComplaintsData(form.value).then(res => {
if (res.code == 'A0000') { if (res.code == 'A0000') {
ElMessage({ ElMessage({
message: '新增成功', message: '新增成功',
@@ -213,6 +186,9 @@ const submit = () => {
return false return false
} }
}) })
await setTimeout(() => {
loading.value = false
}, 0)
} }
const open = (row: any) => { const open = (row: any) => {

View File

@@ -1,14 +1,7 @@
<template> <template>
<el-dialog draggable :title="title" v-model="planAddition" width="500px" :before-close="cancelFn"> <el-dialog draggable :title="title" v-model="planAddition" width="500px" :before-close="cancelFn">
<el-form <el-form :model="form" ref="formRef" :rules="rules" label-width="auto" scroll-to-error
:model="form" :validate-on-rule-change="false" class="form-one">
ref="formRef"
:rules="rules"
label-width="auto"
scroll-to-error
:validate-on-rule-change="false"
class="form-one"
>
<el-form-item for="-" label="计划负责单位:"> <el-form-item for="-" label="计划负责单位:">
<Area v-model="form.deptId" @change="changeArea" /> <Area v-model="form.deptId" @change="changeArea" />
</el-form-item> </el-form-item>
@@ -17,34 +10,20 @@
</el-form-item> </el-form-item>
<el-form-item label="监督类型:" prop="supvType"> <el-form-item label="监督类型:" prop="supvType">
<el-select v-model="form.supvType" placeholder="请选择监督类型" style="width: 100%" @change="++key"> <el-select v-model="form.supvType" placeholder="请选择监督类型" style="width: 100%" @change="++key">
<el-option <el-option v-for="item in supvTypeOptionList" :key="item.id" :label="item.name"
v-for="item in supvTypeOptionList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="监督对象名称:" prop="supvObjectName"> <el-form-item for="-" label="监督对象名称:" prop="supvObjectName">
<el-input v-model="form.supvObjectName" placeholder="请输入监督对象名称"></el-input> <el-input v-model="form.supvObjectName" placeholder="请输入监督对象名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item for="-" label="计划开始时间:" prop="planStartTime"> <el-form-item for="-" label="计划开始时间:" prop="planStartTime">
<el-date-picker <el-date-picker v-model="form.planStartTime" type="date" placeholder="选择计划开始时间"
v-model="form.planStartTime" value-format="YYYY-MM-DD" :disabled-date="disableStartDate"></el-date-picker>
type="date"
placeholder="选择计划开始时间"
value-format="YYYY-MM-DD"
:disabled-date="disableStartDate"
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item for="-" label="计划结束时间:" prop="planEndTime"> <el-form-item for="-" label="计划结束时间:" prop="planEndTime">
<el-date-picker <el-date-picker v-model="form.planEndTime" type="date" placeholder="选择计划结束时间"
v-model="form.planEndTime" :disabled-date="disableEndDate" value-format="YYYY-MM-DD"></el-date-picker>
type="date"
placeholder="选择计划结束时间"
:disabled-date="disableEndDate"
value-format="YYYY-MM-DD"
></el-date-picker>
</el-form-item> </el-form-item>
<!-- <el-form-item for="-" label="实际完成时间:" prop="planComplateTime"> <!-- <el-form-item for="-" label="实际完成时间:" prop="planComplateTime">
<el-date-picker <el-date-picker
@@ -64,23 +43,10 @@
<el-radio :value="1"></el-radio> <el-radio :value="1"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item <el-form-item :key="key" label="关联电站:" v-if="form.customSubstationFlag == 0" :prop="dynamicProp"
:key="key" style="display: flex; align-items: center">
label="关联电站:" <el-cascader v-model="form.substation" :options="treeData" :props="defaultProps" clearable filterable
v-if="form.customSubstationFlag == 0" collapse-tags collapse-tags-tooltip placeholder="请选择关联电站" />
:prop="dynamicProp"
style="display: flex; align-items: center"
>
<el-cascader
v-model="form.substation"
:options="treeData"
:props="defaultProps"
clearable
filterable
collapse-tags
collapse-tags-tooltip
placeholder="请选择关联电站"
/>
<!-- <el-tree-select <!-- <el-tree-select
accordion accordion
ref="treeRef" ref="treeRef"
@@ -97,13 +63,7 @@
/> --> /> -->
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" label="关联电站:" :key="key" v-if="form.customSubstationFlag == 1" :prop="dynamicProp">
for="-"
label="关联电站:"
:key="key"
v-if="form.customSubstationFlag == 1"
:prop="dynamicProp"
>
<el-input v-model="form.substation" placeholder="请输入关联电站"></el-input> <el-input v-model="form.substation" placeholder="请输入关联电站"></el-input>
</el-form-item> </el-form-item>
<!-- <el-form :model="form" label-width="auto"> --> <!-- <el-form :model="form" label-width="auto"> -->
@@ -120,8 +80,8 @@
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> --> </el-form-item> -->
<!-- </el-form> --> <!-- </el-form> -->
</el-form> </el-form>
<!-- <el-divider content-position="left" style="font-size: 18px; font-weight: bolder">添加电站</el-divider> --> <!-- <el-divider content-position="left" style="font-size: 18px; font-weight: bolder">添加电站</el-divider> -->
@@ -144,8 +104,8 @@
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="cancelFn">取消</el-button> <el-button @click="cancelFn">取消</el-button>
<el-button type="primary" @click="submitFn(true)">保存</el-button> <el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>
<el-button type="primary" @click="submitFn(false)">提交审批</el-button> <el-button type="primary" @click="submitFn(false)" :loading="loading">提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -166,7 +126,7 @@ import { ElMessage, UploadProps } from 'element-plus'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
const emit = defineEmits(['onsubmit']) const emit = defineEmits(['onsubmit'])
const loading = ref(false)
const dictData = useDictData() const dictData = useDictData()
const supvTypeOptionList = dictData.getBasicData('supv_type') const supvTypeOptionList = dictData.getBasicData('supv_type')
const title = ref('') const title = ref('')
@@ -272,7 +232,8 @@ const detailById = (id: any) => {
}) })
} }
// 提交 // 提交
const submitFn = (flag: boolean) => { const submitFn = async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
const addForm = JSON.parse(JSON.stringify(form.value)) const addForm = JSON.parse(JSON.stringify(form.value))
@@ -281,7 +242,7 @@ const submitFn = (flag: boolean) => {
} }
addForm.saveOrCheckflag = '1' addForm.saveOrCheckflag = '1'
addSurveyPlan(addForm).then(res => { await addSurveyPlan(addForm).then(res => {
cancelFn() cancelFn()
ElMessage.success('保存成功!') ElMessage.success('保存成功!')
emit('onsubmit') emit('onsubmit')
@@ -296,13 +257,13 @@ const submitFn = (flag: boolean) => {
} }
addForm.saveOrCheckflag = '2' addForm.saveOrCheckflag = '2'
if (title.value == '计划新增') { if (title.value == '计划新增') {
addSurveyPlan(addForm).then(res => { await addSurveyPlan(addForm).then(res => {
cancelFn() cancelFn()
ElMessage.success('计划新增成功!') ElMessage.success('计划新增成功!')
emit('onsubmit') emit('onsubmit')
}) })
} else { } else {
updateSurveyPlan(addForm).then(res => { await updateSurveyPlan(addForm).then(res => {
cancelFn() cancelFn()
ElMessage.success('重新发起成功!') ElMessage.success('重新发起成功!')
emit('onsubmit') emit('onsubmit')
@@ -311,6 +272,9 @@ const submitFn = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
// 修改关联电站 // 修改关联电站
const changeArea = () => { const changeArea = () => {
@@ -368,5 +332,4 @@ defineExpose({ open })
<style lang="scss" scoped> <style lang="scss" scoped>
// :deep(.el-upload-list__item-info) { // :deep(.el-upload-list__item-info) {
// width: 250px; // width: 250px;
// } // }</style>
</style>

View File

@@ -104,8 +104,8 @@
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="cancelFn">取消</el-button> <el-button @click="cancelFn">取消</el-button>
<!-- <el-button type="primary" @click="submitFn">确定</el-button> --> <!-- <el-button type="primary" @click="submitFn">确定</el-button> -->
<el-button type="primary" @click="submitFn(true)">保存</el-button> <el-button type="primary" @click="submitFn(true)" :loading="loading">保存</el-button>
<el-button type="primary" @click="submitFn(false)">提交审批</el-button> <el-button type="primary" @click="submitFn(false)" :loading="loading" >提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -118,7 +118,7 @@ import { ElMessage, genFileId, UploadProps, UploadRawFile, UploadUserFile } from
import { uploadFile, getFileNameAndFilePath } from '@/api/system-boot/file' import { uploadFile, getFileNameAndFilePath } from '@/api/system-boot/file'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import { addSurveyTest, updateSurveyTest, getTestById } from '@/api/supervision-boot/survey/test' import { addSurveyTest, updateSurveyTest, getTestById } from '@/api/supervision-boot/survey/test'
const loading = ref(false)
const acceptType = ref('') const acceptType = ref('')
const tableStore = inject('tableStore') as TableStore const tableStore = inject('tableStore') as TableStore
let uploadName = ref('') let uploadName = ref('')
@@ -254,7 +254,8 @@ const cancelFn = () => {
planAddition.value = false planAddition.value = false
} }
// 提交 // 提交
const submitFn = (flag: boolean) => { const submitFn = async (flag: boolean) => {
loading.value = true
const subForm = JSON.parse(JSON.stringify(form.value)) const subForm = JSON.parse(JSON.stringify(form.value))
subForm.otherReport = '' subForm.otherReport = ''
@@ -270,7 +271,7 @@ const submitFn = (flag: boolean) => {
subForm.saveOrCheckflag = '1' subForm.saveOrCheckflag = '1'
//新增,则组装业务数据提交后台 //新增,则组装业务数据提交后台
addSurveyTest(subForm).then(res => { await addSurveyTest(subForm).then(res => {
ElMessage.success('保存成功!') ElMessage.success('保存成功!')
tableStore.index() tableStore.index()
planAddition.value = false planAddition.value = false
@@ -315,6 +316,9 @@ const submitFn = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
const audit = (filePath: any) => { const audit = (filePath: any) => {
if (title.value == '计划测试填报') { if (title.value == '计划测试填报') {

View File

@@ -166,8 +166,8 @@
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="close()">取消</el-button> <el-button @click="close()">取消</el-button>
<!-- <el-button type="primary" @click="confirmForm()">确定</el-button> --> <!-- <el-button type="primary" @click="confirmForm()">确定</el-button> -->
<el-button type="primary" @click="confirmForm(true)">保存</el-button> <el-button type="primary" @click="confirmForm(true)" :loading="loading" >保存</el-button>
<el-button type="primary" @click="confirmForm(false)">提交审批</el-button> <el-button type="primary" @click="confirmForm(false)" :loading="loading" >提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -200,6 +200,7 @@ const props = defineProps({
const rules = { const rules = {
goToNetReport: [{ required: true, message: '请上传报告', trigger: 'blur' }] goToNetReport: [{ required: true, message: '请上传报告', trigger: 'blur' }]
} }
const loading = ref(false)
const emits = defineEmits(['onSubmit']) const emits = defineEmits(['onSubmit'])
const dictData = useDictData() const dictData = useDictData()
const dialogFormVisible = ref(false) const dialogFormVisible = ref(false)
@@ -353,6 +354,7 @@ const choose = (e: any) => {
//提交 //提交
const confirmForm = (flag: boolean) => { const confirmForm = (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
let data = { let data = {
type: props.bussType, type: props.bussType,
@@ -394,6 +396,9 @@ const confirmForm = (flag: boolean) => {
} }
}) })
} }
setTimeout(() => {
loading.value = false
}, 0)
} }
defineExpose({ open }) defineExpose({ open })
</script> </script>

View File

@@ -1,68 +1,35 @@
<template> <template>
<el-dialog <el-dialog v-model="dialogFormVisible" :title="title" width="65%" :append-to-body="true" :before-close="close"
v-model="dialogFormVisible" :close-on-click-modal="false" draggable>
:title="title"
width="65%"
:append-to-body="true"
:before-close="close"
:close-on-click-modal="false"
draggable
>
<!-- 用户档案录入 新建1 --> <!-- 用户档案录入 新建1 -->
<el-form <el-form :model="form" class="form-two" :validate-on-rule-change="false" :rules="rules" :scroll-to-error="true"
:model="form" ref="ruleFormRef" label-width="auto">
class="form-two"
:validate-on-rule-change="false"
:rules="rules"
:scroll-to-error="true"
ref="ruleFormRef"
label-width="auto"
>
<el-form-item for="-" label="填报人:" prop="reporter"> <el-form-item for="-" label="填报人:" prop="reporter">
<el-input v-model="form.reporter" autocomplete="off" :disabled="true" placeholder="请输入填报人" /> <el-input v-model="form.reporter" autocomplete="off" :disabled="true" placeholder="请输入填报人" />
</el-form-item> </el-form-item>
<el-form-item for="-" label="填报日期:" prop="reportDate"> <el-form-item for="-" label="填报日期:" prop="reportDate">
<el-date-picker <el-date-picker :disabled="true" style="width: 100%" v-model="form.reportDate" type="date"
:disabled="true" placeholder="请选择填报日期" />
style="width: 100%"
v-model="form.reportDate"
type="date"
placeholder="请选择填报日期"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="填报部门:" prop="orgId"> <el-form-item for="-" label="填报部门:" prop="orgId">
<el-input v-model="form.orgId" :disabled="true" autocomplete="off" /> <el-input v-model="form.orgId" :disabled="true" autocomplete="off" />
</el-form-item> </el-form-item>
<el-form-item for="-" label="工程预期投产日期:" prop="expectedProductionDate"> <el-form-item for="-" label="工程预期投产日期:" prop="expectedProductionDate">
<el-date-picker <el-date-picker style="width: 100%" v-model="form.expectedProductionDate" type="date"
style="width: 100%" format="YYYY-MM-DD" value-format="YYYY-MM-DD" :disabled-date="disabledDate"
v-model="form.expectedProductionDate" placeholder="请选择工程预期投产日期" />
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:disabled-date="disabledDate"
placeholder="请选择工程预期投产日期"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="用户性质:" prop="userType"> <el-form-item for="-" label="用户性质:" prop="userType">
<!-- :disabled="resendId != '' && title != '编辑'" --> <!-- :disabled="resendId != '' && title != '编辑'" -->
<el-select v-model="form.userType" placeholder="请选择用户性质"> <el-select v-model="form.userType" placeholder="请选择用户性质">
<el-option <el-option v-for="(item, index) in userTypeList" :label="item.label" :value="item.value"
v-for="(item, index) in userTypeList" :key="index" />
:label="item.label"
:value="item.value"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="所在地市:" prop="city"> <el-form-item for="-" label="所在地市:" prop="city">
<el-select v-model="form.city" clearable placeholder="请选择所在地市"> <el-select v-model="form.city" clearable placeholder="请选择所在地市">
<el-option <el-option v-for="item in areaOptionList" :key="item.id" :label="item.name"
v-for="item in areaOptionList" :value="item.name"></el-option>
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="归口管理部门:" prop="responsibleDepartment"> <el-form-item for="-" label="归口管理部门:" prop="responsibleDepartment">
@@ -73,74 +40,37 @@
</el-form-item> </el-form-item>
<el-form-item for="-" label="用户状态:" prop="userStatus"> <el-form-item for="-" label="用户状态:" prop="userStatus">
<el-select v-model="form.userStatus" placeholder="请选择用户状态"> <el-select v-model="form.userStatus" placeholder="请选择用户状态">
<el-option <el-option v-for="(item, index) in userStateList" :label="item.label" :value="item.value"
v-for="(item, index) in userStateList" :disabled="item.disabled" :key="index" />
:label="item.label"
:value="item.value"
:disabled="item.disabled"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="厂站名称:" prop="substation"> <el-form-item for="-" label="厂站名称:" prop="substation">
<el-input v-model="form.substation" autocomplete="off" placeholder="请输入厂站名称" /> <el-input v-model="form.substation" autocomplete="off" placeholder="请输入厂站名称" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" v-if="form.userType == '0' || form.userType == '1'" label="用户协议容量:"
for="-" prop="agreementCapacity">
v-if="form.userType == '0' || form.userType == '1'" <el-input v-model="form.agreementCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
label="用户协议容量:"
prop="agreementCapacity"
>
<el-input
v-model="form.agreementCapacity"
oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请输入用户协议容量">
autocomplete="off"
placeholder="请输入用户协议容量"
>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" v-if="form.userType == '0' || form.userType == '1'" label="非线性终端类型:"
for="-" prop="nonlinearDeviceType">
v-if="form.userType == '0' || form.userType == '1'" <el-tree-select accordion ref="treeRef" :default-expand-all="false" show-checkbox check-strictly
label="非线性终端类型:" :highlight-current="true" readonly node-key="id" :props="defaultProps"
prop="nonlinearDeviceType" v-model="form.nonlinearDeviceType" :data="nonlinearDeviceTypeList" :render-after-expand="false" />
>
<el-tree-select
accordion
ref="treeRef"
:default-expand-all="false"
show-checkbox
check-strictly
:highlight-current="true"
readonly
node-key="id"
:props="defaultProps"
v-model="form.nonlinearDeviceType"
:data="nonlinearDeviceTypeList"
:render-after-expand="false"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="电压等级:" prop="voltageLevel"> <el-form-item for="-" label="电压等级:" prop="voltageLevel">
<el-select v-model="form.voltageLevel" placeholder="请选择电压等级" node-key="id"> <el-select v-model="form.voltageLevel" placeholder="请选择电压等级" node-key="id">
<el-option <el-option v-for="(item, index) in voltageLevelList" :label="item.name" :value="item.id"
v-for="(item, index) in voltageLevelList" :key="index" />
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="预测评估单位:" prop="evaluationDept"> <el-form-item for="-" label="预测评估单位:" prop="evaluationDept">
<el-select v-model="form.evaluationDept" allow-create filterable placeholder="请选择预测评估单位"> <el-select v-model="form.evaluationDept" allow-create filterable placeholder="请选择预测评估单位">
<el-option <el-option v-for="(item, index) in evaluationDeptList" :label="item.name" :value="item.name"
v-for="(item, index) in evaluationDeptList" :key="index" />
:label="item.name"
:value="item.name"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="是否需要治理:" prop="needGovernance"> <el-form-item for="-" label="是否需要治理:" prop="needGovernance">
@@ -157,106 +87,60 @@
</el-form-item> </el-form-item>
<el-form-item label="关联终端" prop="devId" v-if="props.openType != 'create'"> <el-form-item label="关联终端" prop="devId" v-if="props.openType != 'create'">
<el-select v-model="form.devId" filterable placeholder="请选择关联终端" @change="changeDevId"> <el-select v-model="form.devId" filterable placeholder="请选择关联终端" @change="changeDevId">
<el-option <el-option v-for="(item, index) in devIdList" :label="item.devName" :value="item.devId"
v-for="(item, index) in devIdList" :key="index" />
:label="item.devName"
:value="item.devId"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关联监测点" prop="lineId" v-if="props.openType != 'create'"> <el-form-item label="关联监测点" prop="lineId" v-if="props.openType != 'create'">
<el-select v-model="form.lineId" placeholder="请选择关联监测点"> <el-select v-model="form.lineId" placeholder="请选择关联监测点">
<el-option <el-option v-for="(item, index) in lineIdList" :label="item.lineName" :value="item.lineId"
v-for="(item, index) in lineIdList" :key="index" />
:label="item.lineName"
:value="item.lineId"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="评估类型:"
for="-" prop="evaluationType">
v-if="form.userType != '0' && form.userType != '1'"
label="评估类型:"
prop="evaluationType"
>
<el-select v-model="form.evaluationType" placeholder="请选择评估类型"> <el-select v-model="form.evaluationType" placeholder="请选择评估类型">
<el-option <el-option v-for="(item, index) in evaluationTypeList" :key="index" :label="item.name"
v-for="(item, index) in evaluationTypeList" :value="item.id" />
:key="index"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="PCC点" prop="pccPoint"> <el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="PCC点" prop="pccPoint">
<el-input v-model="form.pccPoint" autocomplete="off" placeholder="请输入PCC点" /> <el-input v-model="form.pccPoint" autocomplete="off" placeholder="请输入PCC点" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-"
for="-"
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="基准短路容量:" label="基准短路容量:" prop="baseShortCircuitCapacity">
prop="baseShortCircuitCapacity" <el-input v-model="form.baseShortCircuitCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
>
<el-input
v-model="form.baseShortCircuitCapacity"
oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入基准短路容量">
placeholder="请输入基准短路容量"
>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-"
for="-"
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="系统最小短路容量:" label="系统最小短路容量:" prop="minShortCircuitCapacity">
prop="minShortCircuitCapacity" <el-input v-model="form.minShortCircuitCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
>
<el-input
v-model="form.minShortCircuitCapacity"
oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" autocomplete="off" placeholder="请选择系统最小短路容量">
autocomplete="off"
placeholder="请选择系统最小短路容量"
>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-"
for="-"
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="PCC供电终端容量" label="PCC供电终端容量" prop="pccEquipmentCapacity">
prop="pccEquipmentCapacity" <el-input v-model="form.pccEquipmentCapacity" oninput="value=value.replace(/[^\-?\d.]/g,'')
>
<el-input
v-model="form.pccEquipmentCapacity"
oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入PCC供电终端容量">
placeholder="请输入PCC供电终端容量"
>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-"
for="-"
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
label="用户用电协议容量:" label="用户用电协议容量:" prop="userAgreementCapacity">
prop="userAgreementCapacity" <el-input v-model="form.userAgreementCapacity" autocomplete="off" oninput="value=value.replace(/[^\-?\d.]/g,'')
>
<el-input
v-model="form.userAgreementCapacity"
autocomplete="off"
oninput="value=value.replace(/[^\-?\d.]/g,'')
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.') .replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" .replace('-','$#$').replace(/\-/g,'').replace('$#$','-')" placeholder="请输入用户用电协议容量">
placeholder="请输入用户用电协议容量"
>
<template #append>MVA</template> <template #append>MVA</template>
</el-input> </el-input>
</el-form-item> </el-form-item>
@@ -269,51 +153,23 @@
<el-input v-model="form.deviceName" autocomplete="off" placeholder="请输入敏感终端名称" /> <el-input v-model="form.deviceName" autocomplete="off" placeholder="请输入敏感终端名称" />
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="供电电源数量:" prop="powerSupplyCount"> <el-form-item for="-" v-if="form.userType == '6'" label="供电电源数量:" prop="powerSupplyCount">
<el-input-number <el-input-number style="width: 100%" v-model="form.powerSupplyCount" :min="0" placeholder="请输入供电电源数量" />
style="width: 100%"
v-model="form.powerSupplyCount"
:min="0"
placeholder="请输入供电电源数量"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="敏感电能质量指标:" prop="energyQualityIndex"> <el-form-item for="-" v-if="form.userType == '6'" label="敏感电能质量指标:" prop="energyQualityIndex">
<el-select <el-select v-model="form.energyQualityIndex" multiple collapse-tags collapse-tags-tooltip
v-model="form.energyQualityIndex" placeholder="请选择敏感电能质量指标">
multiple <el-option v-for="(item, index) in energyQualityIndexList" :label="item.name" :value="item.id"
collapse-tags :key="index" />
collapse-tags-tooltip
placeholder="请选择敏感电能质量指标"
>
<el-option
v-for="(item, index) in energyQualityIndexList"
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-"
for="-"
v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'" v-if="form.userType == '2' || form.userType == '3' || form.userType == '4' || form.userType == '5'"
:label="form.userType == '4' || form.userType == '5' ? '非线性设备类型: ' : '非线性负荷类型:'" :label="form.userType == '4' || form.userType == '5' ? '非线性设备类型: ' : '非线性负荷类型:'"
prop="nonlinearLoadType" prop="nonlinearLoadType">
> <el-tree-select accordion ref="treeRef" :default-expand-all="false" show-checkbox check-strictly
<el-tree-select :highlight-current="true" readonly node-key="id" :props="defaultProps" filterable
accordion v-model="form.nonlinearLoadType" :data="nonlinearDeviceTypeList" :render-after-expand="false"
ref="treeRef" placeholder="请选择" />
:default-expand-all="false"
show-checkbox
check-strictly
:highlight-current="true"
readonly
node-key="id"
:props="defaultProps"
filterable
v-model="form.nonlinearLoadType"
:data="nonlinearDeviceTypeList"
:render-after-expand="false"
placeholder="请选择"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.userType == '6'" label="是否开展抗扰度测试:" prop="antiInterferenceTest"> <el-form-item for="-" v-if="form.userType == '6'" label="是否开展抗扰度测试:" prop="antiInterferenceTest">
<el-radio-group v-model="form.antiInterferenceTest"> <el-radio-group v-model="form.antiInterferenceTest">
@@ -321,234 +177,108 @@
<el-radio value="0"></el-radio> <el-radio value="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" v-if="form.userType == '6' && isInterferencemanagement" label="负荷级别:"
for="-" prop="loadLevel">
v-if="form.userType == '6' && isInterferencemanagement"
label="负荷级别:"
prop="loadLevel"
>
<el-select v-model="form.loadLevel" collapse-tags collapse-tags-tooltip placeholder="请选择负荷级别"> <el-select v-model="form.loadLevel" collapse-tags collapse-tags-tooltip placeholder="请选择负荷级别">
<el-option <el-option v-for="(item, index) in loadLevelOptionList" :label="item.name" :value="item.id"
v-for="(item, index) in loadLevelOptionList" :key="index" />
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" v-if="form.userType == '6' && isInterferencemanagement" label="供电电源情况:"
for="-" prop="powerSupplyInfo">
v-if="form.userType == '6' && isInterferencemanagement" <el-select v-model="form.powerSupplyInfo" collapse-tags collapse-tags-tooltip placeholder="请选择供电电源情况">
label="供电电源情况:" <el-option v-for="(item, index) in powerSupplyInfoOptionList" :label="item.name" :value="item.id"
prop="powerSupplyInfo" :key="index" />
>
<el-select
v-model="form.powerSupplyInfo"
collapse-tags
collapse-tags-tooltip
placeholder="请选择供电电源情况"
>
<el-option
v-for="(item, index) in powerSupplyInfoOptionList"
:label="item.name"
:value="item.id"
:key="index"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" v-if="form.userType != '0' && form.userType != '1'" label="预测评估评审单位:"
for="-" prop="evaluationChekDept">
v-if="form.userType != '0' && form.userType != '1'"
label="预测评估评审单位:"
prop="evaluationChekDept"
>
<el-input v-model="form.evaluationChekDept" autocomplete="off" placeholder="请输入预测评估评审单位" /> <el-input v-model="form.evaluationChekDept" autocomplete="off" placeholder="请输入预测评估评审单位" />
</el-form-item> </el-form-item>
<el-form-item for="-" label="预测评估结论:" prop="evaluationConclusion" style="width: 100%"> <el-form-item for="-" label="预测评估结论:" prop="evaluationConclusion" style="width: 100%">
<el-input <el-input type="textarea" v-model="form.evaluationConclusion" autocomplete="off"
type="textarea" placeholder="请输入预测评估结论" />
v-model="form.evaluationConclusion"
autocomplete="off"
placeholder="请输入预测评估结论"
/>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="可研报告:" prop="feasibilityReport"> <el-form-item class="uploadFile" for="-" label="可研报告:" prop="feasibilityReport">
<el-upload <el-upload v-model:file-list="form.feasibilityReport" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.feasibilityReport" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
ref="uploadRef" :on-progress="uploadFileName('feasibilityReport')">
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('feasibilityReport')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="项目初步设计说明书:" prop="preliminaryDesignDescription"> <el-form-item class="uploadFile" for="-" label="项目初步设计说明书:" prop="preliminaryDesignDescription">
<el-upload <el-upload v-model:file-list="form.preliminaryDesignDescription" ref="uploadRef" action=""
v-model:file-list="form.preliminaryDesignDescription" :accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
ref="uploadRef" :on-progress="uploadFileName('preliminaryDesignDescription')">
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('preliminaryDesignDescription')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="预测评估报告:" prop="predictionEvaluationReport"> <el-form-item class="uploadFile" for="-" label="预测评估报告:" prop="predictionEvaluationReport">
<el-upload <el-upload v-model:file-list="form.predictionEvaluationReport" ref="uploadRef" action=""
v-model:file-list="form.predictionEvaluationReport" :accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
ref="uploadRef" :on-progress="uploadFileName('predictionEvaluationReport')">
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('predictionEvaluationReport')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item class="uploadFile" for="-" label="预测评估评审意见报告:" prop="predictionEvaluationReviewOpinions">
class="uploadFile" <el-upload v-model:file-list="form.predictionEvaluationReviewOpinions" ref="uploadRef" action=""
for="-" :accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
label="预测评估评审意见报告:" :on-progress="uploadFileName('predictionEvaluationReviewOpinions')">
prop="predictionEvaluationReviewOpinions"
>
<el-upload
v-model:file-list="form.predictionEvaluationReviewOpinions"
ref="uploadRef"
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('predictionEvaluationReviewOpinions')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item class="uploadFile" for="-" label="其他附件:" prop="additionalAttachments"> <el-form-item class="uploadFile" for="-" label="其他附件:" prop="additionalAttachments">
<el-upload <el-upload v-model:file-list="form.additionalAttachments" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.additionalAttachments" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
ref="uploadRef" :on-progress="uploadFileName('additionalAttachments')">
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('additionalAttachments')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" class="uploadFile" v-if="form.userType != '0' && form.userType != '1'"
for="-" label="用户接入变电站主接线示意图:" prop="substationMainWiringDiagram">
class="uploadFile" <el-upload v-model:file-list="form.substationMainWiringDiagram" ref="uploadRef" action=""
v-if="form.userType != '0' && form.userType != '1'" :accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
label="用户接入变电站主接线示意图:" :on-progress="uploadFileName('substationMainWiringDiagram')">
prop="substationMainWiringDiagram"
>
<el-upload
v-model:file-list="form.substationMainWiringDiagram"
ref="uploadRef"
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('substationMainWiringDiagram')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item class="uploadFile" for="-" label="主要敏感终端清单:" v-if="form.userType == '6'"
class="uploadFile" prop="sensitiveDevices">
for="-" <el-upload v-model:file-list="form.sensitiveDevices" ref="uploadRef" action="" :accept="acceptType"
label="主要敏感终端清单:" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
v-if="form.userType == '6'" :on-progress="uploadFileName('sensitiveDevices')">
prop="sensitiveDevices"
>
<el-upload
v-model:file-list="form.sensitiveDevices"
ref="uploadRef"
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('sensitiveDevices')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item class="uploadFile" for="-" v-if="form.userType == '6'" label="抗扰度测试报告:"
class="uploadFile" prop="antiInterferenceReport">
for="-" <el-upload v-model:file-list="form.antiInterferenceReport" ref="uploadRef" action=""
v-if="form.userType == '6'" :accept="acceptType" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
label="抗扰度测试报告:" :on-progress="uploadFileName('antiInterferenceReport')">
prop="antiInterferenceReport"
>
<el-upload
v-model:file-list="form.antiInterferenceReport"
ref="uploadRef"
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('antiInterferenceReport')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item class="uploadFile" for="-" v-if="form.userType == '6'" label="背景电能质量测试报告:"
class="uploadFile" prop="powerQualityReport">
for="-" <el-upload v-model:file-list="form.powerQualityReport" ref="uploadRef" action="" :accept="acceptType"
v-if="form.userType == '6'" :limit="1" :on-change="choose" :auto-upload="false" :on-remove="removeFile"
label="背景电能质量测试报告:" :on-progress="uploadFileName('powerQualityReport')">
prop="powerQualityReport"
>
<el-upload
v-model:file-list="form.powerQualityReport"
ref="uploadRef"
action=""
:accept="acceptType"
:limit="1"
:on-change="choose"
:auto-upload="false"
:on-remove="removeFile"
:on-progress="uploadFileName('powerQualityReport')"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
@@ -559,8 +289,8 @@
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="close()">取消</el-button> <el-button @click="close()">取消</el-button>
<el-button type="primary" @click="confirmForm(true)">保存</el-button> <el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button>
<el-button type="primary" v-if="props.submissionControl" @click="confirmForm(false)"> <el-button type="primary" v-if="props.submissionControl" @click="confirmForm(false)" :loading="loading">
提交审批 提交审批
</el-button> </el-button>
</div> </div>
@@ -620,6 +350,7 @@ const dialogFormVisible = ref(false)
// .doc,.docx,.xlsx,.xls,.pdf // .doc,.docx,.xlsx,.xls,.pdf
const acceptType = '' const acceptType = ''
const form: any = ref({}) const form: any = ref({})
const loading = ref(false)
const addUploadRef: any = ref() const addUploadRef: any = ref()
const control: any = ref(true) const control: any = ref(true)
const controFlag: any = ref(false) const controFlag: any = ref(false)
@@ -1126,10 +857,10 @@ const fileRaw = (row: any, key: string) => {
row[key][k].length == 0 row[key][k].length == 0
? [] ? []
: [ : [
{ {
name: row[key][k].split('/')[2] name: row[key][k].split('/')[2]
} }
] ]
} else { } else {
form.value[k] = [] form.value[k] = []
} }
@@ -1153,7 +884,7 @@ const close = () => {
emits('onSubmit') emits('onSubmit')
resetForm() resetForm()
} }
onMounted(() => {}) onMounted(() => { })
// 上传报告 // 上传报告
const uploadRef = ref() const uploadRef = ref()
@@ -1245,7 +976,8 @@ const disabledDate = (time: any) => {
return false return false
} }
//提交 //提交
const confirmForm = (flag: boolean) => { const confirmForm = async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
//整理上传文件的数据 //整理上传文件的数据
// userType==0,1 // userType==0,1
@@ -1309,7 +1041,7 @@ const confirmForm = (flag: boolean) => {
if (!control.value) confirmFormData.dataType = 1 if (!control.value) confirmFormData.dataType = 1
if (controFlag.value) confirmFormData.dataType = 1 if (controFlag.value) confirmFormData.dataType = 1
if (props.normalizedControl) { if (props.normalizedControl) {
addEditor(confirmFormData).then(res => { await addEditor(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '保存成功!', message: '保存成功!',
type: 'success' type: 'success'
@@ -1320,7 +1052,7 @@ const confirmForm = (flag: boolean) => {
close() close()
}) })
} else { } else {
submitFormData(confirmFormData).then(res => { await submitFormData(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '保存成功!', message: '保存成功!',
type: 'success' type: 'success'
@@ -1332,7 +1064,7 @@ const confirmForm = (flag: boolean) => {
}) })
} }
} else { } else {
ruleFormRef.value.validate((valid: any) => { await ruleFormRef.value.validate( async (valid: any) => {
if (valid) { if (valid) {
//整理上传文件的数据 //整理上传文件的数据
// userType==0,1 // userType==0,1
@@ -1461,7 +1193,7 @@ const confirmForm = (flag: boolean) => {
confirmFormData.saveOrCheckflag = '2' confirmFormData.saveOrCheckflag = '2'
if (controFlag.value) confirmFormData.dataType = 1 if (controFlag.value) confirmFormData.dataType = 1
if (title.value == '用户档案录入') { if (title.value == '用户档案录入') {
submitFormData(confirmFormData).then(res => { await submitFormData(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '新增成功', message: '新增成功',
type: 'success' type: 'success'
@@ -1474,12 +1206,11 @@ const confirmForm = (flag: boolean) => {
} else { } else {
confirmFormData.id = resendId.value confirmFormData.id = resendId.value
if (controFlag.value) confirmFormData.dataType = 1 if (controFlag.value) confirmFormData.dataType = 1
console.log('🚀 ~ ruleFormRef.value.validate ~ controFlag.value:', controFlag.value)
console.log(123123)
if (props.normalizedControl) { if (props.normalizedControl) {
if (title.value == '编辑') { if (title.value == '编辑') {
if (status.value != '') confirmFormData.status = status.value if (status.value != '') confirmFormData.status = status.value
addEditor(confirmFormData).then(res => { await addEditor(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '发起成功', message: '发起成功',
type: 'success' type: 'success'
@@ -1490,7 +1221,7 @@ const confirmForm = (flag: boolean) => {
close() close()
}) })
} else { } else {
resend(confirmFormData).then(res => { await resend(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '重新发起成功', message: '重新发起成功',
type: 'success' type: 'success'
@@ -1501,7 +1232,7 @@ const confirmForm = (flag: boolean) => {
}) })
} }
} else { } else {
updateFormData(confirmFormData).then(res => { await updateFormData(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '重新发起成功', message: '重新发起成功',
type: 'success' type: 'success'
@@ -1519,6 +1250,9 @@ const confirmForm = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
// 过滤用户 // 过滤用户
@@ -1535,18 +1269,20 @@ const setcontroFlag = () => {
defineExpose({ open, filterUsers, setcontroFlag }) defineExpose({ open, filterUsers, setcontroFlag })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.el-form { .el-form {}
}
.form-label-left-align { .form-label-left-align {
text-align: left; text-align: left;
} }
::v-deep .el-input__wrapper { ::v-deep .el-input__wrapper {
// border: 2px solid red; // border: 2px solid red;
} }
::v-deep .el-input-number .el-input__inner { ::v-deep .el-input-number .el-input__inner {
text-align: left; text-align: left;
} }
::v-deep .el-tree__empty-text { ::v-deep .el-tree__empty-text {
width: 200px !important; width: 200px !important;
margin-left: 150px !important; margin-left: 150px !important;

View File

@@ -50,8 +50,8 @@
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
<!-- <el-button type="primary" @click="submit">确认</el-button> --> <!-- <el-button type="primary" @click="submit">确认</el-button> -->
<el-button type="primary" @click="submit(true)">保存</el-button> <el-button type="primary" @click="submit(true)" :loading="loading" >保存</el-button>
<el-button type="primary" @click="submit(false)">提交审批</el-button> <el-button type="primary" @click="submit(false)" :loading="loading" >提交审批</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -74,6 +74,7 @@ const sourceData = ref()
const deviceList = ref() const deviceList = ref()
const data = ref() const data = ref()
const title = ref('') const title = ref('')
const loading = ref(false)
const tableStore = inject('tableStore') as TableStore const tableStore = inject('tableStore') as TableStore
const formRef = ref() const formRef = ref()
const devStatuData: any = ref([]) const devStatuData: any = ref([])
@@ -171,11 +172,12 @@ const open = async (text: string, tempData?: any) => {
/** /**
* 提交用户表单数据 * 提交用户表单数据
*/ */
const submit = (flag: boolean) => { const submit =async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
form.value.saveOrCheckflag = '1' form.value.saveOrCheckflag = '1'
addRunningDevice(form.value).then(res => { await addRunningDevice(form.value).then(res => {
ElMessage.success('保存成功!') ElMessage.success('保存成功!')
tableStore.index() tableStore.index()
dialogVisible.value = false dialogVisible.value = false
@@ -211,6 +213,9 @@ const submit = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
/** /**

View File

@@ -60,8 +60,8 @@
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
<!-- <el-button type="primary" @click="submit">确认</el-button> --> <!-- <el-button type="primary" @click="submit">确认</el-button> -->
<el-button type="primary" @click="submit(true)">保存</el-button> <el-button type="primary" @click="submit(true)" :loading="loading" >保存</el-button>
<el-button type="primary" @click="submit(false)">提交审批</el-button> <el-button type="primary" @click="submit(false)" :loading="loading" >提交审批</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -79,6 +79,7 @@ const sourceData = ref()
const lineList = ref() const lineList = ref()
const data = ref() const data = ref()
const title = ref('') const title = ref('')
const loading = ref(false)
const tableStore = inject('tableStore') as TableStore const tableStore = inject('tableStore') as TableStore
const formRef = ref() const formRef = ref()
const runFlag = ref('') const runFlag = ref('')
@@ -148,11 +149,12 @@ const open = async (text: string, tempData?: any) => {
/** /**
* 提交用户表单数据 * 提交用户表单数据
*/ */
const submit = (flag: boolean) => { const submit = async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
form.value.saveOrCheckflag = '1' form.value.saveOrCheckflag = '1'
addRunningDevice(form.value).then(res => { await addRunningDevice(form.value).then(res => {
ElMessage.success('保存成功!') ElMessage.success('保存成功!')
tableStore.index() tableStore.index()
dialogVisible.value = false dialogVisible.value = false
@@ -178,6 +180,9 @@ const submit = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
/** /**

View File

@@ -70,8 +70,8 @@
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
<!-- <el-button type="primary" @click="submit">确认</el-button> --> <!-- <el-button type="primary" @click="submit">确认</el-button> -->
<el-button type="primary" @click="submit(true)">保存</el-button> <el-button type="primary" @click="submit(true)" :loading="loading" >保存</el-button>
<el-button type="primary" @click="submit(false)">提交审批</el-button> <el-button type="primary" @click="submit(false)" :loading="loading" >提交审批</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -90,6 +90,7 @@ const openFile = (name: any) => {
const acceptType = ref('') const acceptType = ref('')
//下拉数据源 //下拉数据源
const title = ref('') const title = ref('')
const loading = ref(false)
const tableStore = inject('tableStore') as TableStore const tableStore = inject('tableStore') as TableStore
const formRef = ref() const formRef = ref()
// 上传报告 // 上传报告
@@ -206,7 +207,8 @@ const close = () => {
/** /**
* 提交用户表单数据 * 提交用户表单数据
*/ */
const submit = (flag: boolean) => { const submit =async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
let subForm = JSON.parse(JSON.stringify(form.value)) let subForm = JSON.parse(JSON.stringify(form.value))
subForm = { subForm = {
@@ -215,7 +217,7 @@ const submit = (flag: boolean) => {
} }
subForm.saveOrCheckflag = '1' subForm.saveOrCheckflag = '1'
//此时该告警单处于待反馈状态 //此时该告警单处于待反馈状态
addFeedback(subForm).then(res => { await addFeedback(subForm).then(res => {
//查询进线数据避免一直处于loading状态 //查询进线数据避免一直处于loading状态
ElMessage.success('保存成功!') ElMessage.success('保存成功!')
tableStore.index() tableStore.index()
@@ -254,6 +256,9 @@ const submit = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
defineExpose({ open }) defineExpose({ open })

View File

@@ -3,32 +3,24 @@
<TableHeader ref="TableHeaderRef"> <TableHeader ref="TableHeaderRef">
<template #select> <template #select>
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input <el-input style="width: 200px" placeholder="请输入项目名称" v-model="tableStore.table.params.projectName"
style="width: 200px" clearable></el-input>
placeholder="请输入项目名称"
v-model="tableStore.table.params.projectName"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所在地市"> <el-form-item label="所在地市">
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市"> <el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市">
<el-option <el-option v-for="item in areaOptionList" :key="item.id" :label="item.name"
v-for="item in areaOptionList" :value="item.name"></el-option>
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button> <el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button>
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button> <el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
<el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate">模板下载</el-button> <el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate" :loading="loading">模板下载</el-button>
<el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button> <el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button>
</template> </template>
</TableHeader> </TableHeader>
<Table ref="tableRef" :checkbox-config="checkboxConfig" /> <Table ref="tableRef" :checkbox-config="checkboxConfig" />
<el-dialog title="详情" width="80%" v-model="dialogShow" v-if="dialogShow"> <el-dialog title="详情" width="80%" v-model="dialogShow" v-if="dialogShow">
<DetailInfo :id="userId" :openType="'sourcesOfInterference'"></DetailInfo> <DetailInfo :id="userId" :openType="'sourcesOfInterference'"></DetailInfo>
@@ -58,6 +50,7 @@ const addForms = ref()
const dictData = useDictData() const dictData = useDictData()
const sensitiveUserPopup = ref() const sensitiveUserPopup = ref()
const TableHeaderRef = ref() const TableHeaderRef = ref()
const loading = ref(false)
const areaOptionList = dictData.getBasicData('jibei_area') const areaOptionList = dictData.getBasicData('jibei_area')
const { push, options, currentRoute } = useRouter() const { push, options, currentRoute } = useRouter()
import { useAdminInfo } from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
@@ -68,7 +61,7 @@ const tableStore = new TableStore({
publicHeight: 65, publicHeight: 65,
method: 'POST', method: 'POST',
column: [ column: [
{ {
width: '60', width: '60',
type: 'checkbox' type: 'checkbox'
}, },
@@ -181,7 +174,7 @@ const tableStore = new TableStore({
click: row => { click: row => {
addForms.value.filterUsers([6]) addForms.value.filterUsers([6])
addForms.value.open({ addForms.value.open({
title: '编辑', title: '编辑',
row: row row: row
@@ -338,8 +331,9 @@ const getUserTypeName = (userType: any) => {
return '新建电网工程' return '新建电网工程'
} }
//导出模板 //导出模板
const exportExcelTemplate = () => { const exportExcelTemplate = async() => {
downloadSensitiveReportTemplate().then((res: any) => { loading.value = true
await downloadSensitiveReportTemplate().then((res: any) => {
let blob = new Blob([res], { let blob = new Blob([res], {
type: 'application/vnd.ms-excel' type: 'application/vnd.ms-excel'
}) })
@@ -351,6 +345,9 @@ const exportExcelTemplate = () => {
link.click() link.click()
link.remove() link.remove()
}) })
await setTimeout(() => {
loading.value = false
},0)
} }
//批量导入用户数据 //批量导入用户数据
@@ -358,21 +355,21 @@ const importUserData = () => {
sensitiveUserPopup.value.open('导入干扰源用户') sensitiveUserPopup.value.open('导入干扰源用户')
} }
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps({ id: { type: String, default: 'null' } })
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
let nowTime = Date.now() let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1]) const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getUserReportById(fullId).then(res => { await getUserReportById(fullId).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
addForms.value.setcontroFlag() addForms.value.setcontroFlag()
addForms.value.open({ addForms.value.open({
title: '重新发起', title: '重新发起',
row: res.data row: res.data
}) })
} }
}) })
}, {immediate: true}) }, { immediate: true })
</script> </script>

View File

@@ -3,28 +3,20 @@
<TableHeader ref="TableHeaderRef"> <TableHeader ref="TableHeaderRef">
<template #select> <template #select>
<el-form-item label="项目名称"> <el-form-item label="项目名称">
<el-input <el-input style="width: 200px" placeholder="请输入项目名称" v-model="tableStore.table.params.projectName"
style="width: 200px" clearable></el-input>
placeholder="请输入项目名称"
v-model="tableStore.table.params.projectName"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所在地市"> <el-form-item label="所在地市">
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市"> <el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市">
<el-option <el-option v-for="item in areaOptionList" :key="item.id" :label="item.name"
v-for="item in areaOptionList" :value="item.name"></el-option>
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button> <el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button>
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button> <el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
<el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate">模板下载</el-button> <el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate" :loading="loading">模版下载</el-button>
<el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button> <el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button>
</template> </template>
</TableHeader> </TableHeader>
@@ -53,6 +45,7 @@ import { ElMessage } from 'element-plus'
const dictData = useDictData() const dictData = useDictData()
const sensitiveUserPopup = ref() const sensitiveUserPopup = ref()
const TableHeaderRef = ref() const TableHeaderRef = ref()
const loading = ref(false)
const areaOptionList = dictData.getBasicData('jibei_area') const areaOptionList = dictData.getBasicData('jibei_area')
const loadLevelOptionList = dictData.getBasicData('load_level') const loadLevelOptionList = dictData.getBasicData('load_level')
const powerSupplyInfoOptionList = dictData.getBasicData('supply_condition') const powerSupplyInfoOptionList = dictData.getBasicData('supply_condition')
@@ -257,8 +250,9 @@ const getUserTypeName = (userType: any) => {
} }
//导出模板 //导出模板
const exportExcelTemplate = () => { const exportExcelTemplate = async () => {
downloadSensitiveUserTemplate().then((res: any) => { loading.value = true
await downloadSensitiveUserTemplate().then((res: any) => {
let blob = new Blob([res], { let blob = new Blob([res], {
type: 'application/vnd.ms-excel' type: 'application/vnd.ms-excel'
}) })
@@ -270,6 +264,9 @@ const exportExcelTemplate = () => {
link.click() link.click()
link.remove() link.remove()
}) })
await setTimeout(() => {
loading.value = false
}, 0)
} }
//批量导入用户数据 //批量导入用户数据

View File

@@ -33,7 +33,7 @@
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="close()">取消</el-button> <el-button @click="close()">取消</el-button>
<!-- <el-button type="primary" @click="confirmForm(true)">保存</el-button> --> <!-- <el-button type="primary" @click="confirmForm(true)">保存</el-button> -->
<el-button type="primary" @click="confirmForm(false)">提交审批</el-button> <el-button type="primary" @click="confirmForm(false)" :loading="loading" >提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -57,6 +57,7 @@ const props = defineProps({
const dictData = useDictData() const dictData = useDictData()
const dialogFormVisible = ref(false) const dialogFormVisible = ref(false)
const form: any = ref({}) const form: any = ref({})
const loading = ref(false)
const ruleFormRef: any = ref(null) const ruleFormRef: any = ref(null)
//定义切换form类型 //定义切换form类型
const selectFormType = ref('') const selectFormType = ref('')
@@ -112,13 +113,14 @@ const disabledDate = time => {
return time.getTime() < Date.now() - 8.64e7 // 8.64e7 毫秒数代表一天 return time.getTime() < Date.now() - 8.64e7 // 8.64e7 毫秒数代表一天
} }
//提交 //提交
const confirmForm = (flag: boolean) => { const confirmForm = async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
// 提交监测点信息 // 提交监测点信息
//提交监测点联调信息 //提交监测点联调信息
form.value.saveOrCheckflag = '1' form.value.saveOrCheckflag = '1'
addMointorPointTempLinedebug(form.value).then(res => { await addMointorPointTempLinedebug(form.value).then(res => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
ElMessage.success('保存成功!') ElMessage.success('保存成功!')
resetForm() resetForm()
@@ -126,19 +128,19 @@ const confirmForm = (flag: boolean) => {
}) })
} else { } else {
// 提交监测点信息 // 提交监测点信息
ruleFormRef.value.validate(valid => { ruleFormRef.value.validate(async (valid) => {
if (valid) { if (valid) {
//提交监测点联调信息 //提交监测点联调信息
form.value.saveOrCheckflag = '2' form.value.saveOrCheckflag = '2'
if (!(title.value == '重新发起' || title.value == '编辑')) { if (!(title.value == '重新发起' || title.value == '编辑')) {
addMointorPointTempLinedebug(form.value).then(res => { await addMointorPointTempLinedebug(form.value).then(res => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
ElMessage.success('申请联调成功!') ElMessage.success('申请联调成功!')
resetForm() resetForm()
close() close()
}) })
} else { } else {
updateMointorPointTempLinedebug(form.value).then(res => { await updateMointorPointTempLinedebug(form.value).then(res => {
ruleFormRef.value.resetFields() ruleFormRef.value.resetFields()
ElMessage.success('重新发起成功!') ElMessage.success('重新发起成功!')
resetForm() resetForm()
@@ -151,6 +153,9 @@ const confirmForm = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
defineExpose({ open }) defineExpose({ open })
</script> </script>

View File

@@ -352,8 +352,8 @@
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="close()">取消</el-button> <el-button @click="close()">取消</el-button>
<el-button type="primary" @click="confirmForm(true)">保存</el-button> <el-button type="primary" @click="confirmForm(true)" :loading="loading" >保存</el-button>
<el-button type="primary" @click="confirmForm(false)">提交审批</el-button> <el-button type="primary" @click="confirmForm(false)" :loading="loading" >提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -376,6 +376,7 @@ const dictData = useDictData()
const dialogFormVisible = ref(false) const dialogFormVisible = ref(false)
const form: any = ref({}) const form: any = ref({})
const title = ref('') const title = ref('')
const loading = ref(false)
const ruleFormRef: any = ref(null) const ruleFormRef: any = ref(null)
// acceptType .doc,.docx,.xlsx,.xls,.pdf // acceptType .doc,.docx,.xlsx,.xls,.pdf
const acceptType = '' const acceptType = ''
@@ -1081,7 +1082,8 @@ const disabledDate = time => {
} }
const activeName = ref('0') const activeName = ref('0')
//提交 //提交
const confirmForm = (flag: boolean) => { const confirmForm = async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
form.value.reportDate = window.XEUtils.toDateString(form.value.reportDate, 'yyyy-MM-dd') form.value.reportDate = window.XEUtils.toDateString(form.value.reportDate, 'yyyy-MM-dd')
let confirmFormData = JSON.parse(JSON.stringify(form.value)) let confirmFormData = JSON.parse(JSON.stringify(form.value))
@@ -1105,7 +1107,7 @@ const confirmForm = (flag: boolean) => {
} }
confirmFormData.saveOrCheckflag = '1' confirmFormData.saveOrCheckflag = '1'
if (title.value != '监测点信息') confirmFormData.id = resendId.value if (title.value != '监测点信息') confirmFormData.id = resendId.value
addMointorPointFormData(confirmFormData).then(res => { await addMointorPointFormData(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '保存成功!', message: '保存成功!',
type: 'success' type: 'success'
@@ -1117,7 +1119,7 @@ const confirmForm = (flag: boolean) => {
} else { } else {
// 先判断提交终端信息与监测点信息 // 先判断提交终端信息与监测点信息
// 提交监测点信息 // 提交监测点信息
ruleFormRef.value.validate(valid => { ruleFormRef.value.validate(async(valid) => {
if (valid) { if (valid) {
//整理上传文件的数据 //整理上传文件的数据
//处理填报日期时间格式 //处理填报日期时间格式
@@ -1145,7 +1147,7 @@ const confirmForm = (flag: boolean) => {
} }
confirmFormData.saveOrCheckflag = '2' confirmFormData.saveOrCheckflag = '2'
if (title.value == '监测点信息') { if (title.value == '监测点信息') {
addMointorPointFormData(confirmFormData).then(res => { await addMointorPointFormData(confirmFormData).then(res => {
ElMessage({ ElMessage({
message: '新增成功', message: '新增成功',
type: 'success' type: 'success'
@@ -1156,7 +1158,7 @@ const confirmForm = (flag: boolean) => {
}) })
} else { } else {
confirmFormData.id = resendId.value confirmFormData.id = resendId.value
updateMointorPointFormData(confirmFormData).then(res => { await updateMointorPointFormData(confirmFormData).then(res => {
if (res.code == 'A0000') { if (res.code == 'A0000') {
ElMessage({ ElMessage({
message: '重新发起成功', message: '重新发起成功',
@@ -1174,6 +1176,9 @@ const confirmForm = (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
defineExpose({ open }) defineExpose({ open })
</script> </script>

View File

@@ -1,29 +1,14 @@
<template> <template>
<el-dialog <el-dialog v-model="dialogFormVisible" :title="title" width="65%" :append-to-body="true" :before-close="close"
v-model="dialogFormVisible" :close-on-click-modal="false" :lazy="true" draggable>
:title="title"
width="65%"
:append-to-body="true"
:before-close="close"
:close-on-click-modal="false"
:lazy="true"
draggable
>
<!-- <el-anchor :container="containerRef" direction="vertical" type="default" :offset="30" @click="handleClick"> <!-- <el-anchor :container="containerRef" direction="vertical" type="default" :offset="30" @click="handleClick">
<el-anchor-link href="#part1" title="基础信息" /> <el-anchor-link href="#part1" title="基础信息" />
<el-anchor-link href="#part2" title="终端信息" /> <el-anchor-link href="#part2" title="终端信息" />
<el-anchor-link href="#part3" title="附件材料" /> <el-anchor-link href="#part3" title="附件材料" />
</el-anchor> --> </el-anchor> -->
<!--终端信息录入 基础信息+终端信息+附件材料 --> <!--终端信息录入 基础信息+终端信息+附件材料 -->
<el-form <el-form :model="form" :validate-on-rule-change="false" :scroll-to-error="true" :rules="rules" ref="ruleFormRef"
:model="form" label-width="auto" class="form-two">
:validate-on-rule-change="false"
:scroll-to-error="true"
:rules="rules"
ref="ruleFormRef"
label-width="auto"
class="form-two"
>
<!-- <el-tabs tab-position="left" class="tabs_form" v-model="activeName"> --> <!-- <el-tabs tab-position="left" class="tabs_form" v-model="activeName"> -->
<el-divider content-position="left">基础信息</el-divider> <el-divider content-position="left">基础信息</el-divider>
<!-- <div id="part1" class="form-two"> --> <!-- <div id="part1" class="form-two"> -->
@@ -31,35 +16,20 @@
<el-input v-model="form.reporter" autocomplete="off" placeholder="请输入填报人" :disabled="true" /> <el-input v-model="form.reporter" autocomplete="off" placeholder="请输入填报人" :disabled="true" />
</el-form-item> </el-form-item>
<el-form-item for="-" label="填报日期:" prop="reportDate"> <el-form-item for="-" label="填报日期:" prop="reportDate">
<el-date-picker <el-date-picker :disabled="true" style="width: 100%" v-model="form.reportDate" type="date"
:disabled="true" placeholder="请选择填报日期" />
style="width: 100%"
v-model="form.reportDate"
type="date"
placeholder="请选择填报日期"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="填报部门:" prop="orgId"> <el-form-item for="-" label="填报部门:" prop="orgId">
<el-input v-model="form.orgId" :disabled="true" autocomplete="off" /> <el-input v-model="form.orgId" :disabled="true" autocomplete="off" />
</el-form-item> </el-form-item>
<el-form-item for="-" label="工程投产日期:" prop="expectedProductionDate"> <el-form-item for="-" label="工程投产日期:" prop="expectedProductionDate">
<el-date-picker <el-date-picker style="width: 100%" v-model="form.expectedProductionDate" type="date"
style="width: 100%" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择工程投产日期" />
v-model="form.expectedProductionDate"
type="date"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
placeholder="请选择工程投产日期"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="所在地市:" prop="city"> <el-form-item for="-" label="所在地市:" prop="city">
<el-select v-model="form.city" clearable style="width: 100%" placeholder="请选择所在地市"> <el-select v-model="form.city" clearable style="width: 100%" placeholder="请选择所在地市">
<el-option <el-option v-for="item in areaOptionList" :key="item.id" :label="item.name"
v-for="item in areaOptionList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-col :span="12"> <!-- <el-col :span="12">
@@ -100,18 +70,9 @@
<el-divider content-position="left">终端信息</el-divider> <el-divider content-position="left">终端信息</el-divider>
<!-- <div id="part2" class="form-two"> --> <!-- <div id="part2" class="form-two"> -->
<div class="fixed_upload" v-if="false"> <div class="fixed_upload" v-if="false">
<el-upload <el-upload v-model:file-list="form.deviceFilePath" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.deviceFilePath" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('deviceFilePath')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('deviceFilePath')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">终端台账信息</el-button> <el-button type="primary">终端台账信息</el-button>
</template> </template>
@@ -125,86 +86,40 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item for="-" label="所属供电公司:" prop="powerCompany"> <el-form-item for="-" label="所属供电公司:" prop="powerCompany">
<el-select <el-select v-model="form.powerCompany" clearable style="width: 100%" placeholder="请选择所属供电公司"
v-model="form.powerCompany" @change="findSubstationVoltageLevel">
clearable <el-option v-for="item in powerCompanyList" :key="item.id" :label="item.name"
style="width: 100%" :value="item.id"></el-option>
placeholder="请选择所属供电公司"
@change="findSubstationVoltageLevel"
>
<el-option
v-for="item in powerCompanyList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.customSubstationFlag == 0" label="并网变电站:" prop="substation"> <el-form-item for="-" v-if="form.customSubstationFlag == 0" label="并网变电站:" prop="substation">
<el-select <el-select v-model="form.substation" clearable style="width: 100%" placeholder="请选择并网变电站" filterable
v-model="form.substation" @change="changeSubstation">
clearable <el-option v-for="item in substationList" :key="item.id" :label="item.name"
style="width: 100%" :value="item.id"></el-option>
placeholder="请选择并网变电站"
filterable
@change="changeSubstation"
>
<el-option
v-for="item in substationList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" v-if="form.customSubstationFlag == 1" label="并网变电站:" prop="substationName"> <el-form-item for="-" v-if="form.customSubstationFlag == 1" label="并网变电站:" prop="substationName">
<el-input v-model="form.substationName" autocomplete="off" placeholder="请输入并网变电站" /> <el-input v-model="form.substationName" autocomplete="off" placeholder="请输入并网变电站" />
</el-form-item> </el-form-item>
<el-form-item for="-" label="变电站电压等级:" prop="substationVoltageLevel"> <el-form-item for="-" label="变电站电压等级:" prop="substationVoltageLevel">
<el-select <el-select v-model="form.substationVoltageLevel" clearable style="width: 100%" placeholder="请选择变压站电压等级">
v-model="form.substationVoltageLevel" <el-option v-for="item in voltageLevelList" :key="item.id" :label="item.name"
clearable :value="item.id"></el-option>
style="width: 100%"
placeholder="请选择变压站电压等级"
>
<el-option
v-for="item in voltageLevelList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="经度:" prop="longitude"> <el-form-item for="-" label="经度:" prop="longitude">
<el-input <el-input v-model="form.longitude" :disabled="form.customSubstationFlag == 0" type="text"
v-model="form.longitude" placeholder="请输入经度" />
:disabled="form.customSubstationFlag == 0"
type="text"
placeholder="请输入经度"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="纬度:" prop="latitude"> <el-form-item for="-" label="纬度:" prop="latitude">
<el-input <el-input v-model="form.latitude" :disabled="form.customSubstationFlag == 0" type="text"
v-model="form.latitude" placeholder="请输入纬度" />
:disabled="form.customSubstationFlag == 0"
type="text"
placeholder="请输入纬度"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端型号:" prop="terminalType"> <el-form-item for="-" label="终端型号:" prop="terminalType">
<el-select <el-select v-model="form.terminalType" filterable clearable style="width: 100%" placeholder="请选择终端型号">
v-model="form.terminalType" <el-option v-for="item in terminalTypeList" :key="item.id" :label="item.name"
filterable :value="item.id"></el-option>
clearable
style="width: 100%"
placeholder="请选择终端型号"
>
<el-option
v-for="item in terminalTypeList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -213,103 +128,49 @@
</el-form-item> </el-form-item>
<el-form-item for="-" label="通讯类型:"> <el-form-item for="-" label="通讯类型:">
<el-select v-model="form.frontType" clearable style="width: 100%" placeholder="请选择通讯类型"> <el-select v-model="form.frontType" clearable style="width: 100%" placeholder="请选择通讯类型">
<el-option <el-option v-for="item in frontTypeList" :key="item.id" :label="item.name"
v-for="item in frontTypeList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端编码:" prop="monitoringTerminalCode"> <el-form-item for="-" label="终端编码:" prop="monitoringTerminalCode">
<el-input <el-input v-model="form.monitoringTerminalCode" autocomplete="off" placeholder="请输入终端编码"
v-model="form.monitoringTerminalCode" @change="encode" />
autocomplete="off"
placeholder="请输入终端编码"
@change="encode"
/>
</el-form-item> </el-form-item>
<el-form-item v-if="false" for="-" label="通讯状态:" prop="communicationStatus"> <el-form-item v-if="false" for="-" label="通讯状态:" prop="communicationStatus">
<el-select <el-select v-model="form.communicationStatus" clearable style="width: 100%" placeholder="请选择通讯状态"
v-model="form.communicationStatus" :disabled="true">
clearable <el-option v-for="item in communicationStatusList" :key="item.id" :label="item.name"
style="width: 100%" :value="item.id" :disabled="item.id == '1'"></el-option>
placeholder="请选择通讯状态"
:disabled="true"
>
<el-option
v-for="item in communicationStatusList"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="item.id == '1'"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端IP" prop="terminalIp"> <el-form-item for="-" label="终端IP" prop="terminalIp">
<el-input <el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="form.terminalIp" autocomplete="off"
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入终端IP" />
v-model="form.terminalIp"
autocomplete="off"
placeholder="请输入终端IP"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="端口:" prop="terminalPort"> <el-form-item for="-" label="端口:" prop="terminalPort">
<el-input <el-input oninput="value=value.replace(/[^0-9.]/g,'')" v-model="form.terminalPort" autocomplete="off"
oninput="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入端口" />
v-model="form.terminalPort"
autocomplete="off"
placeholder="请输入端口"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="投运时间:" prop="commissioningTime"> <el-form-item for="-" label="投运时间:" prop="commissioningTime">
<el-date-picker <el-date-picker style="width: 100%" v-model="form.commissioningTime" type="datetime"
style="width: 100%" format="YYYY/MM/DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss" placeholder="请选择投运时间" />
v-model="form.commissioningTime"
type="datetime"
format="YYYY/MM/DD hh:mm:ss"
value-format="YYYY-MM-DD hh:mm:ss"
placeholder="请选择投运时间"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="数据更新时间:" prop="dataUpdateTime"> <el-form-item for="-" label="数据更新时间:" prop="dataUpdateTime">
<el-date-picker <el-date-picker :disabled="true" style="width: 100%" v-model="form.dataUpdateTime" type="datetime"
:disabled="true" placeholder="请选择数据更新时间" />
style="width: 100%"
v-model="form.dataUpdateTime"
type="datetime"
placeholder="请选择数据更新时间"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="所属前置机:" prop="frontEndMachine"> <el-form-item for="-" label="所属前置机:" prop="frontEndMachine">
<el-select v-model="form.frontEndMachine" clearable style="width: 100%" placeholder="请选择所属前置机"> <el-select v-model="form.frontEndMachine" clearable style="width: 100%" placeholder="请选择所属前置机">
<el-option <el-option v-for="item in frontEndMachineList" :key="item.id" :label="item.name"
v-for="item in frontEndMachineList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" label="监测终端安装位置:" prop="monitoringDeviceInstallationPosition" class="label_over_warp">
for="-"
label="监测终端安装位置:"
prop="monitoringDeviceInstallationPosition"
class="label_over_warp"
>
<!-- 电网侧用户侧 --> <!-- 电网侧用户侧 -->
<el-select <el-select v-model="form.monitoringDeviceInstallationPosition" clearable style="width: 100%"
v-model="form.monitoringDeviceInstallationPosition" placeholder="请选择监测终端安装位置">
clearable <el-option v-for="item in monitoringDeviceInstallationPositionList" :key="item.id"
style="width: 100%" :label="item.name" :value="item.id"></el-option>
placeholder="请选择监测终端安装位置"
>
<el-option
v-for="item in monitoringDeviceInstallationPositionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="识别码:" prop="identificationCode"> <el-form-item for="-" label="识别码:" prop="identificationCode">
@@ -320,101 +181,49 @@
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端模型:" prop="terminalModel"> <el-form-item for="-" label="终端模型:" prop="terminalModel">
<el-select v-model="form.terminalModel" clearable style="width: 100%" placeholder="请选择终端模型"> <el-select v-model="form.terminalModel" clearable style="width: 100%" placeholder="请选择终端模型">
<el-option <el-option v-for="item in terminalModelList" :key="item.id" :label="item.name"
v-for="item in terminalModelList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="数据类型:" prop="dataType"> <el-form-item for="-" label="数据类型:" prop="dataType">
<el-select v-model="form.dataType" clearable style="width: 100%" placeholder="请选择数据类型"> <el-select v-model="form.dataType" clearable style="width: 100%" placeholder="请选择数据类型">
<el-option <el-option v-for="item in dataTypeList" :key="item.id" :label="item.name"
v-for="item in dataTypeList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="终端接线方式类型:" prop="terminalWiringMethodType" class="label_over_warp"> <el-form-item for="-" label="终端接线方式类型:" prop="terminalWiringMethodType" class="label_over_warp">
<el-select <el-select v-model="form.terminalWiringMethodType" clearable style="width: 100%"
v-model="form.terminalWiringMethodType" placeholder="请选择终端接线方式类型">
clearable <el-option v-for="item in terminalWiringMethodTypeList" :key="item.id" :label="item.name"
style="width: 100%" :value="item.id"></el-option>
placeholder="请选择终端接线方式类型"
>
<el-option
v-for="item in terminalWiringMethodTypeList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="厂家:" prop="manufacturer"> <el-form-item for="-" label="厂家:" prop="manufacturer">
<el-select v-model="form.manufacturer" clearable style="width: 100%" placeholder="请选择厂家"> <el-select v-model="form.manufacturer" clearable style="width: 100%" placeholder="请选择厂家">
<el-option <el-option v-for="item in manufacturerList" :key="item.id" :label="item.name"
v-for="item in manufacturerList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item <el-form-item for="-" label="本次终端检测时间:" prop="currentTerminalDetectionTime" class="label_over_warp">
for="-" <el-date-picker style="width: 100%" v-model="form.currentTerminalDetectionTime" type="datetime"
label="本次终端检测时间" placeholder="请选择本次终端检测时间" :disabled-date="disableStartDate" />
prop="currentTerminalDetectionTime"
class="label_over_warp"
>
<el-date-picker
style="width: 100%"
v-model="form.currentTerminalDetectionTime"
type="datetime"
placeholder="请选择本次终端检测时间"
:disabled-date="disableStartDate"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="下次终端定检时间:" prop="nextTerminalInspectionTime" class="label_over_warp"> <el-form-item for="-" label="下次终端定检时间:" prop="nextTerminalInspectionTime" class="label_over_warp">
<el-date-picker <el-date-picker style="width: 100%" v-model="form.nextTerminalInspectionTime" type="datetime"
style="width: 100%" placeholder="请选择下次终端定检时间" :disabled-date="disableEndDate" />
v-model="form.nextTerminalInspectionTime"
type="datetime"
placeholder="请选择下次终端定检时间"
:disabled-date="disableEndDate"
/>
</el-form-item> </el-form-item>
<el-form-item for="-" label="电压互感器类型:" prop="voltageTransformerType"> <el-form-item for="-" label="电压互感器类型:" prop="voltageTransformerType">
<el-select <el-select v-model="form.voltageTransformerType" clearable style="width: 100%" placeholder="请选择电压互感器类型">
v-model="form.voltageTransformerType" <el-option v-for="item in voltageTransformerTypeList" :key="item.id" :label="item.name"
clearable :value="item.id"></el-option>
style="width: 100%"
placeholder="请选择电压互感器类型"
>
<el-option
v-for="item in voltageTransformerTypeList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="中性点接线方式:" prop="neutralPointWiringMethod"> <el-form-item for="-" label="中性点接线方式:" prop="neutralPointWiringMethod">
<el-select <el-select v-model="form.neutralPointWiringMethod" clearable style="width: 100%"
v-model="form.neutralPointWiringMethod" placeholder="请选择中性点接线方式">
clearable <el-option v-for="item in neutralPointWiringMethodList" :key="item.id" :label="item.name"
style="width: 100%" :value="item.id"></el-option>
placeholder="请选择中性点接线方式"
>
<el-option
v-for="item in neutralPointWiringMethodList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="厂家终端编号:" prop="manufacturerDeviceNumber"> <el-form-item for="-" label="厂家终端编号:" prop="manufacturerDeviceNumber">
@@ -433,28 +242,15 @@
</el-form-item> </el-form-item>
<el-form-item for="-" label="电镀功能:" prop="electroplatingFunction"> <el-form-item for="-" label="电镀功能:" prop="electroplatingFunction">
<!-- 默认 关闭 下拉框 --> <!-- 默认 关闭 下拉框 -->
<el-select <el-select v-model="form.electroplatingFunction" clearable style="width: 100%" placeholder="请选择电镀功能">
v-model="form.electroplatingFunction" <el-option v-for="item in electroplatingFunctionList" :key="item.id" :label="item.name"
clearable :value="item.id"></el-option>
style="width: 100%"
placeholder="请选择电镀功能"
>
<el-option
v-for="item in electroplatingFunctionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="召唤标志:" prop="summonFlag"> <el-form-item for="-" label="召唤标志:" prop="summonFlag">
<el-select v-model="form.summonFlag" clearable style="width: 100%" placeholder="请选择召唤标志"> <el-select v-model="form.summonFlag" clearable style="width: 100%" placeholder="请选择召唤标志">
<el-option <el-option v-for="item in summonFlagList" :key="item.id" :label="item.name"
v-for="item in summonFlagList" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item for="-" label="告警功能:" prop="alarmFunction"> <el-form-item for="-" label="告警功能:" prop="alarmFunction">
@@ -469,132 +265,64 @@
<!-- </div> --> <!-- </div> -->
<el-divider content-position="left">附件材料</el-divider> <el-divider content-position="left">附件材料</el-divider>
<el-form-item for="-" label="信息安全检测报告:" class="uploadFile" prop="informationSecurityTestReport"> <el-form-item for="-" label="信息安全检测报告:" class="uploadFile" prop="informationSecurityTestReport">
<el-upload <el-upload v-model:file-list="form.informationSecurityTestReport" ref="uploadRef" action=""
v-model:file-list="form.informationSecurityTestReport" :accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('informationSecurityTestReport')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('informationSecurityTestReport')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="false" for="-" label="验收检验报告单:" class="uploadFile"
v-if="false" prop="acceptanceInspectionReportSingle">
for="-" <el-upload v-model:file-list="form.acceptanceInspectionReportSingle" ref="uploadRef" action=""
label="验收检验报告单:" :accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
class="uploadFile" :on-progress="uploadFileName('acceptanceInspectionReportSingle')" :on-remove="removeFile">
prop="acceptanceInspectionReportSingle"
>
<el-upload
v-model:file-list="form.acceptanceInspectionReportSingle"
ref="uploadRef"
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('acceptanceInspectionReportSingle')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" label="验收检验报告:" class="uploadFile" prop="acceptanceInspectionReport"> <el-form-item for="-" label="验收检验报告:" class="uploadFile" prop="acceptanceInspectionReport">
<el-upload <el-upload v-model:file-list="form.acceptanceInspectionReport" ref="uploadRef" action=""
v-model:file-list="form.acceptanceInspectionReport" :accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('acceptanceInspectionReport')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('acceptanceInspectionReport')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" label="型式实验报告:" class="uploadFile" prop="typeExperimentReport"> <el-form-item for="-" label="型式实验报告:" class="uploadFile" prop="typeExperimentReport">
<el-upload <el-upload v-model:file-list="form.typeExperimentReport" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.typeExperimentReport" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('typeExperimentReport')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('typeExperimentReport')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" label="出厂检验报告:" class="uploadFile" prop="factoryInspectionReport"> <el-form-item for="-" label="出厂检验报告:" class="uploadFile" prop="factoryInspectionReport">
<el-upload <el-upload v-model:file-list="form.factoryInspectionReport" ref="uploadRef" action=""
v-model:file-list="form.factoryInspectionReport" :accept="acceptType" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('factoryInspectionReport')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('factoryInspectionReport')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" label="性能检测报告:" class="uploadFile" prop="performanceTestReport"> <el-form-item for="-" label="性能检测报告:" class="uploadFile" prop="performanceTestReport">
<el-upload <el-upload v-model:file-list="form.performanceTestReport" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.performanceTestReport" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('performanceTestReport')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('performanceTestReport')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item for="-" label="其他附件:" class="uploadFile" prop="otherAttachments"> <el-form-item for="-" label="其他附件:" class="uploadFile" prop="otherAttachments">
<el-upload <el-upload v-model:file-list="form.otherAttachments" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.otherAttachments" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('otherAttachments')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('otherAttachments')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
@@ -604,8 +332,9 @@
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button @click="close()">取消</el-button> <el-button @click="close()">取消</el-button>
<el-button type="primary" @click="confirmForm(true)">保存</el-button> <el-button type="primary" @click="confirmForm(true)" :loading="loading">保存</el-button>
<el-button type="primary" @click="confirmForm(false)" v-if="importType != 1">提交审批</el-button> <el-button type="primary" @click="confirmForm(false)" :loading="loading"
v-if="importType != 1">提交审批</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
@@ -634,6 +363,7 @@ const dialogFormVisible = ref(false)
const form: any = ref({}) const form: any = ref({})
const ruleFormRef: any = ref(null) const ruleFormRef: any = ref(null)
const title = ref('') const title = ref('')
const loading = ref(false)
// acceptType .xls,.xlsx // acceptType .xls,.xlsx
const acceptType = '' const acceptType = ''
//字典获取所在地市 //字典获取所在地市
@@ -1493,6 +1223,7 @@ const close = async () => {
} }
//提交 //提交
const confirmForm = async (flag: boolean) => { const confirmForm = async (flag: boolean) => {
loading.value = true
if (flag) { if (flag) {
// 提交终端信息 // 提交终端信息
@@ -1544,7 +1275,7 @@ const confirmForm = async (flag: boolean) => {
}) })
} else { } else {
// 提交终端信息 // 提交终端信息
ruleFormRef.value.validate(valid => { ruleFormRef.value.validate(async (valid) => {
if (valid) { if (valid) {
//整理上传文件的数据 //整理上传文件的数据
devReportForm.value.reporter = adminInfo.$state.id devReportForm.value.reporter = adminInfo.$state.id
@@ -1569,7 +1300,7 @@ const confirmForm = async (flag: boolean) => {
confirmFormData.saveOrCheckflag = '2' confirmFormData.saveOrCheckflag = '2'
confirmFormData.importType = importType.value confirmFormData.importType = importType.value
if (title.value == '终端信息') { if (title.value == '终端信息') {
addTerminalFormData(confirmFormData).then((res: any) => { await addTerminalFormData(confirmFormData).then((res: any) => {
if (res.code == 'A0000') { if (res.code == 'A0000') {
ElMessage({ ElMessage({
message: '新增成功', message: '新增成功',
@@ -1586,7 +1317,7 @@ const confirmForm = async (flag: boolean) => {
confirmFormData.supervisionTempDeviceReportParam.commissioningTime = confirmFormData.supervisionTempDeviceReportParam.commissioningTime =
confirmFormData.supervisionTempDeviceReportParam.commissioningTime.replace('T', ' ') confirmFormData.supervisionTempDeviceReportParam.commissioningTime.replace('T', ' ')
confirmFormData.id = resendId.value confirmFormData.id = resendId.value
updateTerminalFormData(confirmFormData).then((res: any) => { await updateTerminalFormData(confirmFormData).then((res: any) => {
if (res.code == 'A0000') { if (res.code == 'A0000') {
ElMessage({ ElMessage({
message: '重新发起成功', message: '重新发起成功',
@@ -1604,6 +1335,9 @@ const confirmForm = async (flag: boolean) => {
} }
}) })
} }
await setTimeout(() => {
loading.value = false
}, 0)
} }
// 编码改动 // 编码改动
const encode = (e: string) => { const encode = (e: string) => {
@@ -1618,9 +1352,11 @@ defineExpose({ open })
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
.el-divider { .el-divider {
margin: 20px 0; margin: 20px 0;
} }
::v-deep .el-divider__text { ::v-deep .el-divider__text {
font-size: 16px !important; font-size: 16px !important;
} }

View File

@@ -2,27 +2,20 @@
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef"> <TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
<template #select> <template #select>
<el-form-item label="搜索"> <el-form-item label="搜索">
<el-input <el-input v-model="tableStore.table.params.searchValue" placeholder="输入变电站、终端、监测点名称"
v-model="tableStore.table.params.searchValue" clearable></el-input>
placeholder="输入变电站、终端、监测点名称"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="流程状态"> <el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in statusSelect" :key="item.id" :label="item.name"
v-for="item in statusSelect" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button> <el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button>
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button> <el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
<el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate">模板下载</el-button> <el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate" :loading="loading">模版下载</el-button>
<el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button> <el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button>
</template> </template>
</TableHeader> </TableHeader>
@@ -49,18 +42,19 @@ import { downloadDevTemplate } from '@/api/supervision-boot/userReport/form'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { ElMessageBox } from 'element-plus/es' import { ElMessageBox } from 'element-plus/es'
import DetailInfo from '@/views/pqs/supervise/terminalNetworkDetection/components/terminainal/detail.vue' import DetailInfo from '@/views/pqs/supervise/terminalNetworkDetection/components/terminainal/detail.vue'
import {cancelTerminalFormData, getTerminalDetailsById} from '@/api/supervision-boot/terminal/index' import { cancelTerminalFormData, getTerminalDetailsById } from '@/api/supervision-boot/terminal/index'
import uploadATemplate from './uploadATemplate.vue' import uploadATemplate from './uploadATemplate.vue'
import addForm from './addForm.vue' import addForm from './addForm.vue'
import { useAdminInfo } from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
import { deleteDevReport } from '@/api/supervision-boot/delete/index' import { deleteDevReport } from '@/api/supervision-boot/delete/index'
import {getUserReportById} from "@/api/supervision-boot/interfere"; import { getUserReportById } from "@/api/supervision-boot/interfere";
//获取登陆用户姓名和部门 //获取登陆用户姓名和部门
const adminInfo = useAdminInfo() const adminInfo = useAdminInfo()
const dictData = useDictData() const dictData = useDictData()
const { push, options, currentRoute } = useRouter() const { push, options, currentRoute } = useRouter()
const TableHeaderRef = ref() const TableHeaderRef = ref()
const userId = ref() const userId = ref()
const loading = ref(false)
const tableRef = ref() const tableRef = ref()
const areaOptionList = dictData.getBasicData('jibei_area') const areaOptionList = dictData.getBasicData('jibei_area')
const statusSelect = dictData.statusSelect() const statusSelect = dictData.statusSelect()
@@ -285,7 +279,8 @@ const deleteEven = () => {
} }
//导出模板 //导出模板
const exportExcelTemplate = () => { const exportExcelTemplate = async () => {
loading.value = true
downloadDevTemplate().then((res: any) => { downloadDevTemplate().then((res: any) => {
let blob = new Blob([res], { let blob = new Blob([res], {
type: 'application/vnd.ms-excel' type: 'application/vnd.ms-excel'
@@ -298,6 +293,9 @@ const exportExcelTemplate = () => {
link.click() link.click()
link.remove() link.remove()
}) })
await setTimeout(() => {
loading.value = false
}, 0)
} }
//批量导入用户数据 //批量导入用户数据
const importUserData = () => { const importUserData = () => {
@@ -330,22 +328,22 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
}) })
} }
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps({ id: { type: String, default: 'null' } })
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
let nowTime = Date.now() let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1]) const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getTerminalDetailsById({id:fullId}).then(res => { await getTerminalDetailsById({ id: fullId }).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
addForms.value.open({ addForms.value.open({
title: '重新发起', title: '重新发起',
row: res.data row: res.data
}) })
} }
}) })
}, {immediate: true}) }, { immediate: true })
</script> </script>

View File

@@ -11,34 +11,22 @@
</template> </template>
<!-- 情况一流程表单 --> <!-- 情况一流程表单 -->
<el-col v-if="processInstance?.processDefinition?.formType === 10" :offset="6" :span="16"> <el-col v-if="processInstance?.processDefinition?.formType === 10" :offset="6" :span="16">
<form-create <form-create v-model="detailForm.value" v-model:api="fApi" :option="detailForm.option"
v-model="detailForm.value" :rule="detailForm.rule" />
v-model:api="fApi"
:option="detailForm.option"
:rule="detailForm.rule"
/>
</el-col> </el-col>
<!-- 情况二业务表单 --> <!-- 情况二业务表单 -->
<div v-if="processInstance?.processDefinition?.formType === 20"> <div v-if="processInstance?.processDefinition?.formType === 20">
<BusinessFormComponent :id="processInstance.businessKey" :applyTitle="processInstance.name" /> <BusinessFormComponent :id="processInstance.businessKey" :applyTitle="processInstance.name" />
</div> </div>
</el-card> </el-card>
<el-card <el-card v-for="(item, index) in runningTasks" :key="index" v-loading="processInstanceLoading"
v-for="(item, index) in runningTasks" class="box-card">
:key="index"
v-loading="processInstanceLoading"
class="box-card"
>
<template #header> <template #header>
<span class="el-icon-picture-outline">当前任务{{ item.name }}</span> <span class="el-icon-picture-outline">当前任务{{ item.name }}</span>
</template> </template>
<el-col :offset="6" :span="16"> <el-col :offset="6" :span="16">
<el-form <el-form :ref="'form' + index" :model="auditForms[index]" :rules="auditRule"
:ref="'form' + index" label-width="100px">
:model="auditForms[index]"
:rules="auditRule"
label-width="100px"
>
<el-form-item v-if="processInstance && processInstance.name" label="流程名"> <el-form-item v-if="processInstance && processInstance.name" label="流程名">
{{ processInstance.name }} {{ processInstance.name }}
</el-form-item> </el-form-item>
@@ -55,20 +43,12 @@
{{ runningTasks[index]?.formName }} {{ runningTasks[index]?.formName }}
</span> </span>
</template> </template>
<form-create <form-create v-model="approveForms[index].value" v-model:api="approveFormFApis[index]"
v-model="approveForms[index].value" :option="approveForms[index].option" :rule="approveForms[index].rule" />
v-model:api="approveFormFApis[index]"
:option="approveForms[index].option"
:rule="approveForms[index].rule"
/>
</el-card> </el-card>
<el-form-item label="审批建议" prop="reason" style="margin-top: 15px"> <el-form-item label="审批建议" prop="reason" style="margin-top: 15px">
<el-input <el-input v-model="auditForms[index].reason" placeholder="请输入审批建议" type="textarea" />
v-model="auditForms[index].reason"
placeholder="请输入审批建议"
type="textarea"
/>
</el-form-item> </el-form-item>
<!-- <el-form-item label='抄送人' prop='copyUserIds'>--> <!-- <el-form-item label='抄送人' prop='copyUserIds'>-->
<!-- <el-select v-model='auditForms[index].copyUserIds' multiple placeholder='请选择抄送人'>--> <!-- <el-select v-model='auditForms[index].copyUserIds' multiple placeholder='请选择抄送人'>-->
@@ -82,8 +62,10 @@
<!-- </el-form-item>--> <!-- </el-form-item>-->
</el-form> </el-form>
<div style="margin-bottom: 20px; margin-left: 10%; font-size: 14px"> <div style="margin-bottom: 20px; margin-left: 10%; font-size: 14px">
<el-button type="success" :icon="Select" @click="handleAudit(item, true)">通过</el-button> <el-button type="success" :icon="Select" @click="handleAudit(item, true)"
<el-button type="danger" :icon="Close" @click="handleAudit(item, false)">通过</el-button> :loading="loading">通过</el-button>
<el-button type="danger" :icon="Close" @click="handleAudit(item, false)"
:loading="loading">不通过</el-button>
<!-- <el-button type='primary' @click='openTaskUpdateAssigneeForm(item.id)'>--> <!-- <el-button type='primary' @click='openTaskUpdateAssigneeForm(item.id)'>-->
<!-- <Icon icon='ep:edit' />--> <!-- <Icon icon='ep:edit' />-->
<!-- 转办--> <!-- 转办-->
@@ -100,7 +82,7 @@
</div> </div>
</el-col> </el-col>
</el-card> </el-card>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="申请信息" name="申请信息" v-if="runningTasks.length == 0"> <el-tab-pane label="申请信息" name="申请信息" v-if="runningTasks.length == 0">
<!-- 申请信息 --> <!-- 申请信息 -->
@@ -110,12 +92,8 @@
</template> </template>
<!-- 情况一流程表单 --> <!-- 情况一流程表单 -->
<el-col v-if="processInstance?.processDefinition?.formType === 10" :offset="6" :span="16"> <el-col v-if="processInstance?.processDefinition?.formType === 10" :offset="6" :span="16">
<form-create <form-create v-model="detailForm.value" v-model:api="fApi" :option="detailForm.option"
v-model="detailForm.value" :rule="detailForm.rule" />
v-model:api="fApi"
:option="detailForm.option"
:rule="detailForm.rule"
/>
</el-col> </el-col>
<!-- 情况二业务表单 --> <!-- 情况二业务表单 -->
<div v-if="processInstance?.processDefinition?.formType === 20"> <div v-if="processInstance?.processDefinition?.formType === 20">
@@ -125,22 +103,12 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="审批记录" name="审批记录"> <el-tab-pane label="审批记录" name="审批记录">
<!-- 审批记录 --> <!-- 审批记录 -->
<ProcessInstanceTaskList <ProcessInstanceTaskList :loading="tasksLoad" :process-instance="processInstance" :tasks="tasks"
:loading="tasksLoad" @refresh="getTaskList" />
:process-instance="processInstance"
:tasks="tasks"
@refresh="getTaskList"
/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="流程图" name="流程图"> <el-tab-pane label="流程图" name="流程图">
<ProcessInstanceBpmnViewer <ProcessInstanceBpmnViewer ref="mapRef" :id="`${id}`" :bpmn-xml="bpmnXml"
ref="mapRef" :loading="processInstanceLoading" :process-instance="processInstance" :tasks="tasks" />
:id="`${id}`"
:bpmn-xml="bpmnXml"
:loading="processInstanceLoading"
:process-instance="processInstance"
:tasks="tasks"
/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<ContentWrap> <ContentWrap>
@@ -192,6 +160,7 @@ const processInstanceLoading = ref(false) // 流程实例的加载中
const processInstance = ref({}) // 流程实例 const processInstance = ref({}) // 流程实例
const bpmnXml = ref('') // BPMN XML const bpmnXml = ref('') // BPMN XML
const tasksLoad = ref(true) // 任务的加载中 const tasksLoad = ref(true) // 任务的加载中
const loading = ref(false) // 任务的加载中
const tasks = ref<any[]>([]) // 任务列表 const tasks = ref<any[]>([]) // 任务列表
// ========== 审批信息 ========== // ========== 审批信息 ==========
const runningTasks = ref<any[]>([]) // 运行中的任务 const runningTasks = ref<any[]>([]) // 运行中的任务
@@ -226,6 +195,7 @@ watch(
/** 处理审批通过和不通过的操作 */ /** 处理审批通过和不通过的操作 */
const handleAudit = async (task, pass) => { const handleAudit = async (task, pass) => {
loading.value = true
// 1.1 获得对应表单 // 1.1 获得对应表单
const index = runningTasks.value.indexOf(task) const index = runningTasks.value.indexOf(task)
const auditFormRef = proxy.$refs['form' + index][0] const auditFormRef = proxy.$refs['form' + index][0]
@@ -262,7 +232,10 @@ const handleAudit = async (task, pass) => {
ElMessage.success('审批不通过成功') ElMessage.success('审批不通过成功')
} }
// 2.2 加载最新数据 // 2.2 加载最新数据
getDetail() await getDetail()
await setTimeout(() => {
loading.value = false
}, 0);
} }
/** 转派审批人 */ /** 转派审批人 */
@@ -479,6 +452,7 @@ onMounted(async () => {
height: calc(100vh - 200px) !important; height: calc(100vh - 200px) !important;
overflow: auto !important; overflow: auto !important;
} }
::v-deep .el-col-offset-6 { ::v-deep .el-col-offset-6 {
margin-left: 15% !important; margin-left: 15% !important;
} }