|
@@ -1,37 +1,57 @@
|
|
|
<template>
|
|
|
- <a-card :bordered='false' v-show='visible' class='card' :title='modalTitle'>
|
|
|
- <a-row :gutter='48' slot='extra'>
|
|
|
- <a-col :md='48' :sm='48'>
|
|
|
- <span class='table-page-search-submitButtons' style='float: right'>
|
|
|
- <a-button :loading='confirmLoading' type='primary' @click='save()'>保存</a-button>
|
|
|
- <a-button style='margin-left: 8px' type='default' @click='handleCancel()'>返回</a-button>
|
|
|
+ <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
|
|
|
+ <a-row :gutter="48" slot="extra">
|
|
|
+ <a-col :md="48" :sm="48">
|
|
|
+ <span class="table-page-search-submitButtons" style="float: right">
|
|
|
+ <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
|
|
|
+ <a-button style="margin-left: 8px" type="default" @click="handleCancel()">返回</a-button>
|
|
|
</span>
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
- <a-form :form='form'>
|
|
|
+ <a-form :form="form">
|
|
|
|
|
|
- <a-form-item v-show='false'>
|
|
|
- <a-input v-decorator="['id']" type='hidden' />
|
|
|
+ <a-form-item v-show="false">
|
|
|
+ <a-input v-decorator="['id']" type="hidden" />
|
|
|
+ <a-input v-decorator="['sbId']" type="hidden"/>
|
|
|
</a-form-item>
|
|
|
|
|
|
- <row-list :col='2'>
|
|
|
+ <row-list :col="2">
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='设备'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="检查区域"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-cascader
|
|
|
+ :options="sbPositionList"
|
|
|
+ :load-data="loadData"
|
|
|
+ placeholder="请选择"
|
|
|
+ change-on-select
|
|
|
+ v-decorator="['positionId', {rules: [{required: true, message: '检查区域不能为空'}]}]"
|
|
|
+ />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item>
|
|
|
+
|
|
|
+ <a-form-item
|
|
|
+ label="设备"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
<a-input
|
|
|
- v-decorator="['sbId', {rules: [{required: true, message: '设备不能为空'}]}]" />
|
|
|
+ style="width: 70%"
|
|
|
+ disabled
|
|
|
+ v-decorator="['sbName', {rules: [{required: true, message: '设备不能为空'}]}]" />
|
|
|
+ <a-button style="width: 30%" type="primary" @click="handleSbSelect">选择</a-button>
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='设备位号'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="设备位号"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
<a-input
|
|
|
v-decorator="['positionNo', {rules: [{required: true, message: '设备位号不能为空'}]}]" />
|
|
@@ -40,159 +60,213 @@
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='检查区域'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="整改责任人"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
<a-input
|
|
|
- v-decorator="['positionId', {rules: [{required: true, message: '检查区域不能为空'}]}]" />
|
|
|
+ v-decorator="['dutyUser', {rules: [{required: true, message: '整改责任人不能为空'}]}]" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='存在问题'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="属地负责人"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
+ <a-input
|
|
|
+ v-decorator="['areaUser', {rules: [{required: true, message: '属地负责人不能为空'}]}]" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='可能风险'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="备注"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
+ <a-input
|
|
|
+ v-decorator="['remark', {rules: [{required: true, message: '备注不能为空'}]}]" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
+ <!-- <row-item>
|
|
|
+
|
|
|
+ <a-form-item
|
|
|
+ label="完成状态 closed,delay,on going"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-input-number
|
|
|
+ style="width: 100%"
|
|
|
+ :min="0"
|
|
|
+ :formatter="BaseTool.Amount.formatter"
|
|
|
+ :parser="BaseTool.Amount.parser"
|
|
|
+ v-decorator="['status', {rules: [{required: true, message: '完成状态 closed,delay,on going不能为空'}]}]" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item> -->
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='整改建议'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="专业类型 仪表 电气 机械"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
+ <a-select v-decorator="['professorType', {rules: [{required: true, message: '专业类型不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in professorTypeMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="value">{{ label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='整改责任人'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="检查级别 公司级-部门组织-专业自查"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-input
|
|
|
- v-decorator="['dutyUser', {rules: [{required: true, message: '整改责任人不能为空'}]}]" />
|
|
|
+ <a-select v-decorator="['checkLevel', {rules: [{required: true, message: '检查级别不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in checkLevelMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="value">{{ label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='属地负责人'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="整改时限"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-input
|
|
|
- v-decorator="['areaUser', {rules: [{required: true, message: '属地负责人不能为空'}]}]" />
|
|
|
+ <a-date-picker
|
|
|
+ showTime
|
|
|
+ style="width: 100%"
|
|
|
+ :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
|
|
|
+ v-decorator="['requireTime', {rules: [{required: true, message: '整改时限不能为空'}]}]" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='备注'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="存在问题"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-input
|
|
|
- v-decorator="['remark', {rules: [{required: true, message: '备注不能为空'}]}]" />
|
|
|
+ <a-textarea v-decorator="['existsQuestion']" :rows="4" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='完成状态 closed,delay,on going'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="可能风险"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-input-number
|
|
|
- style='width: 100%'
|
|
|
- :min='0'
|
|
|
- :formatter='BaseTool.Amount.formatter'
|
|
|
- :parser='BaseTool.Amount.parser'
|
|
|
- v-decorator="['status', {rules: [{required: true, message: '完成状态 closed,delay,on going不能为空'}]}]" />
|
|
|
+ <a-textarea v-decorator="['hiddenRisk']" :rows="4" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
|
|
|
<a-form-item
|
|
|
- label='专业类型 仪表 电气 机械'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="整改建议"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-input-number
|
|
|
- style='width: 100%'
|
|
|
- :min='0'
|
|
|
- :formatter='BaseTool.Amount.formatter'
|
|
|
- :parser='BaseTool.Amount.parser'
|
|
|
- v-decorator="['professorType', {rules: [{required: true, message: '专业类型 仪表 电气 机械不能为空'}]}]" />
|
|
|
+ <a-textarea v-decorator="['opition']" :rows="4" />
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
-
|
|
|
<a-form-item
|
|
|
- label='检查级别 公司级-部门组织-专业自查'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="上传图片"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-input-number
|
|
|
- style='width: 100%'
|
|
|
- :min='0'
|
|
|
- :formatter='BaseTool.Amount.formatter'
|
|
|
- :parser='BaseTool.Amount.parser'
|
|
|
- v-decorator="['checkLevel', {rules: [{required: true, message: '检查级别 公司级-部门组织-专业自查不能为空'}]}]" />
|
|
|
+ <a-upload
|
|
|
+ :action="uploadUrl"
|
|
|
+ :multiple="true"
|
|
|
+ list-type="picture"
|
|
|
+ :file-list="this.defaultApplicationFileList"
|
|
|
+ @change="handleApplicationFileChange"
|
|
|
+ accept="image/*"
|
|
|
+ :headers="headers"
|
|
|
+ >
|
|
|
+ <a-button> <a-icon type="upload" /> 上传图片 </a-button>
|
|
|
+ </a-upload>
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
<row-item>
|
|
|
-
|
|
|
<a-form-item
|
|
|
- label='整改时限'
|
|
|
- :labelCol='BaseTool.Constant.labelCol'
|
|
|
- :wrapperCol='BaseTool.Constant.wrapperCol'
|
|
|
+ label="上传文件"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
>
|
|
|
- <a-date-picker
|
|
|
- showTime
|
|
|
- style='width: 100%'
|
|
|
- :format='BaseTool.Date.PICKER_NORM_DATE_PATTERN'
|
|
|
- v-decorator="['requireTime', {rules: [{required: true, message: '整改时限不能为空'}]}]" />
|
|
|
+ <a-upload
|
|
|
+ :action="uploadUrl"
|
|
|
+ :multiple="true"
|
|
|
+ :file-list="defaultReportFileList"
|
|
|
+ @change="handleCheckFileChange"
|
|
|
+ :headers="headers"
|
|
|
+ >
|
|
|
+ <a-button> <a-icon type="upload" /> 上传文件 </a-button>
|
|
|
+ </a-upload>
|
|
|
</a-form-item>
|
|
|
</row-item>
|
|
|
</row-list>
|
|
|
</a-form>
|
|
|
+ <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd"/>
|
|
|
</a-card>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import pick from 'lodash.pick'
|
|
|
import { addHiddenDanger, updateHiddenDanger } from '@/api/hidden/hidden-danger'
|
|
|
-
|
|
|
+import { getSbPositions } from '@/api/repair/application-form'
|
|
|
+import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'
|
|
|
+import { uploadUrl } from '@/api/upms/file'
|
|
|
+import Vue from 'vue'
|
|
|
+import { ACCESS_TOKEN } from '@/store/mutation-types'
|
|
|
export default {
|
|
|
name: 'BaseHiddenDanger',
|
|
|
- data() {
|
|
|
+ components: {
|
|
|
+ SbInfoSelectModal
|
|
|
+ },
|
|
|
+ data () {
|
|
|
return {
|
|
|
confirmLoading: false,
|
|
|
modalTitle: null,
|
|
|
form: this.$form.createForm(this),
|
|
|
- visible: false
|
|
|
+ visible: false,
|
|
|
+ sbPositionList: [],
|
|
|
// 下拉框map
|
|
|
+ professorTypeMap: {},
|
|
|
+ checkLevelMap: {},
|
|
|
+ headers: {
|
|
|
+ Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
|
|
|
+ },
|
|
|
+ uploadUrl: uploadUrl,
|
|
|
+ beforeImageList: [],
|
|
|
+ defaultApplicationFileList: [],
|
|
|
+ defaultReportFileList: [],
|
|
|
+ fileList: [] // 报修图片
|
|
|
}
|
|
|
},
|
|
|
props: {},
|
|
|
- created() {
|
|
|
+ created () {
|
|
|
// 下拉框map
|
|
|
+ this.professorTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PROFESSOR_TYPE)
|
|
|
+ this.checkLevelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.CHECK_LEVEL)
|
|
|
+ this.getSbPositions()
|
|
|
},
|
|
|
methods: {
|
|
|
- base(record) {
|
|
|
+ base (record) {
|
|
|
this.visible = true
|
|
|
// 如果是空标识添加
|
|
|
if (this.BaseTool.Object.isBlank(record)) {
|
|
@@ -200,6 +274,10 @@ export default {
|
|
|
return
|
|
|
}
|
|
|
this.modalTitle = '编辑'
|
|
|
+ this.beforeImageList = record.beforeImageList
|
|
|
+ this.fileList = record.fileList
|
|
|
+ this.defaultApplicationFileList = this.BaseTool.UPLOAD.transImg(this.beforeImageList)
|
|
|
+ this.defaultReportFileList = this.BaseTool.UPLOAD.transImg(this.fileList)
|
|
|
const { form: { setFieldsValue } } = this
|
|
|
// 日期处理
|
|
|
record.requireTime = this.BaseTool.Moment(record.requireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
|
|
@@ -222,7 +300,7 @@ export default {
|
|
|
])))
|
|
|
})
|
|
|
},
|
|
|
- save() {
|
|
|
+ save () {
|
|
|
const { form: { validateFieldsAndScroll } } = this
|
|
|
this.confirmLoading = true
|
|
|
validateFieldsAndScroll((errors, values) => {
|
|
@@ -231,27 +309,100 @@ export default {
|
|
|
return
|
|
|
}
|
|
|
// 日期处理
|
|
|
+ values.fileList = this.fileList
|
|
|
+ values.beforeImageList = this.beforeImageList
|
|
|
values.requireTime = this.BaseTool.Date.formatter(values.requireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
|
|
|
+ console.log(values)
|
|
|
if (this.BaseTool.String.isBlank(values.id)) {
|
|
|
addHiddenDanger(values)
|
|
|
.then(() => {
|
|
|
this.handleCancel(values)
|
|
|
}).catch(() => {
|
|
|
- this.confirmLoading = false
|
|
|
- })
|
|
|
+ this.confirmLoading = false
|
|
|
+ })
|
|
|
} else {
|
|
|
updateHiddenDanger(values)
|
|
|
.then(() => {
|
|
|
this.handleCancel(values)
|
|
|
}).catch(() => {
|
|
|
- this.confirmLoading = false
|
|
|
- })
|
|
|
+ this.confirmLoading = false
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- handleCancel(values) {
|
|
|
+ getSbPositions (parentId) {
|
|
|
+ getSbPositions({ parentId }).then(res => {
|
|
|
+ console.log(res)
|
|
|
+ this.sbPositionList = res.data.map(item => {
|
|
|
+ item = {
|
|
|
+ label: item.name,
|
|
|
+ value: item.name,
|
|
|
+ id: item.id,
|
|
|
+ isLeaf: false
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ loadData (selectedOptions) {
|
|
|
+ console.log(selectedOptions)
|
|
|
+ const targetOption = selectedOptions[selectedOptions.length - 1]
|
|
|
+ targetOption.loading = true
|
|
|
+ getSbPositions({ parentId: targetOption.id }).then(res => {
|
|
|
+ targetOption.loading = false
|
|
|
+ targetOption.children = res.data.map(item => {
|
|
|
+ item = {
|
|
|
+ label: item.name,
|
|
|
+ value: item.name
|
|
|
+ }
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ this.sbPositionList = [...this.sbPositionList]
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleSbSelect () {
|
|
|
+ this.$refs.sbInfoSelectModal.base({}, {})
|
|
|
+ },
|
|
|
+ handleSbSelectd (keys, rows) {
|
|
|
+ const [ key ] = keys
|
|
|
+ const [ row ] = rows
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ this.sbId = key
|
|
|
+ // 日期处理
|
|
|
+ console.log(rows)
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign({
|
|
|
+ 'sbId': key,
|
|
|
+ 'sbName': row.name,
|
|
|
+ 'positionNo': row.positionNo
|
|
|
+ }))
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleCheckFileChange (info) {
|
|
|
+ this.defaultReportFileList = info.fileList
|
|
|
+ this.fileList = this.setFileList(info, 32)
|
|
|
+ },
|
|
|
+ handleApplicationFileChange (info) {
|
|
|
+ this.defaultApplicationFileList = info.fileList
|
|
|
+ this.beforeImageList = this.setFileList(info, 11)
|
|
|
+ },
|
|
|
+ setFileList (info, type) {
|
|
|
+ const file = info.file
|
|
|
+ const fileList = info.fileList
|
|
|
+ if (file.status === 'done') {
|
|
|
+ return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
|
|
|
+ } else if (file.status === 'removed') {
|
|
|
+ return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
|
|
|
+ } else if (file.status === 'error') {
|
|
|
+ this.$message.error('上传失败')
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCancel (values) {
|
|
|
this.visible = false
|
|
|
this.confirmLoading = false
|
|
|
+ this.beforeImageList = []
|
|
|
+ this.defaultApplicationFileList = []
|
|
|
this.form.resetFields()
|
|
|
if (this.BaseTool.Object.isNotBlank(values)) {
|
|
|
this.$emit('ok', values)
|