|
@@ -0,0 +1,754 @@
|
|
|
+<template>
|
|
|
+ <a-modal
|
|
|
+ :title="modalTitle"
|
|
|
+ :width="900"
|
|
|
+ :visible="visible"
|
|
|
+ :confirmLoading="confirmLoading"
|
|
|
+ class="ant-modal2"
|
|
|
+ @cancel="handleCancel"
|
|
|
+ >
|
|
|
+ <a-form :form="form">
|
|
|
+
|
|
|
+ <a-form-item v-show="false" >
|
|
|
+ <a-input v-decorator="['id']" type="hidden"/>
|
|
|
+ <a-input v-decorator="['sbId']" type="hidden"/>
|
|
|
+ <a-input v-decorator="['partId']" type="hidden"/>
|
|
|
+ </a-form-item>
|
|
|
+
|
|
|
+ <row-list :col="2">
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="设备名称"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-input
|
|
|
+ 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"
|
|
|
+ >
|
|
|
+ <a-input v-decorator="['parentSbNo']" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <!-- <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="设备部位"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-input
|
|
|
+ style="width: 70%"
|
|
|
+ disabled
|
|
|
+ v-decorator="['partName']" />
|
|
|
+ <a-button style="width: 30%" type="primary" @click="handlePartSelect">选择</a-button>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>-->
|
|
|
+ <!-- <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="委托单位"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['trustDept', {rules: [{required: true, message: '委托单位不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in trustMap"
|
|
|
+ :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"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['repairDeptId', {rules: [{required: true, message: '维修部门不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in repairDeptMap"
|
|
|
+ :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"
|
|
|
+ >
|
|
|
+ <a-tree-select
|
|
|
+ tree-checkable
|
|
|
+ :show-checked-strategy="SHOW_PARENT"
|
|
|
+ v-decorator="['repairProfessor', {initialValue: [1], rules: [{required: true, message: '检修专业不能为空'}]}]"
|
|
|
+ placeholder="请选择">
|
|
|
+ <a-tree-select-node
|
|
|
+ v-for="(label,value) in professorMap"
|
|
|
+ :key="value"
|
|
|
+ :title="label"
|
|
|
+ :value="parseInt(value)">{{ label }}
|
|
|
+ </a-tree-select-node>
|
|
|
+ </a-tree-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="生产装置"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-cascader
|
|
|
+ :options="sbPositionList"
|
|
|
+ :load-data="loadData"
|
|
|
+ placeholder="请选择"
|
|
|
+ change-on-select
|
|
|
+ v-decorator="['sbPosition', {rules: [{required: true, message: '生产装置不能为空'}]}]"
|
|
|
+ />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="特殊作业类型"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-tree-select
|
|
|
+ tree-checkable
|
|
|
+ :show-checked-strategy="SHOW_PARENT"
|
|
|
+ v-decorator="['repairType', {rules: [{required: true, message: '工作类型不能为空'}]}]"
|
|
|
+ placeholder="请选择">
|
|
|
+ <a-tree-select-node
|
|
|
+ v-for="(label,value) in repairTypeMap"
|
|
|
+ :key="value"
|
|
|
+ :title="label"
|
|
|
+ :value="parseInt(value)">{{ label }}
|
|
|
+ </a-tree-select-node>
|
|
|
+ </a-tree-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="车间具体位置"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-input
|
|
|
+ placeholder="比如:甲七车间北侧"
|
|
|
+ v-decorator="['sbCph']" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="工单类别"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select @change="changePlanFlag" v-decorator="['category', {initialValue: 2, rules: [{required: true, message: '工单类别不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in categoryMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="parseInt(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"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['needStop', {rules: [{required: true, message: '是否停机不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in needStopMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="parseInt(value)">{{ label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item v-if="category === 1">
|
|
|
+ <a-form-item
|
|
|
+ label="计划性维修级别"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['repairPlanLevel', {rules: [{required: true, message: '计划性维修级别不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="value in ['大','中','小']"
|
|
|
+ :key="value"
|
|
|
+ :label="value"
|
|
|
+ :value="value">{{ value }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item v-if="category === 1">
|
|
|
+ <a-form-item
|
|
|
+ label="审批人"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['dispatchUserId', {rules: [{required: true, message: '审批人不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="({realName,userId}) in dispatchUserList"
|
|
|
+ :key="userId"
|
|
|
+ :label="realName"
|
|
|
+ :value="userId">{{ realName }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <!-- <row-item v-show="category === 1">
|
|
|
+ <a-form-item
|
|
|
+ label="要求日期"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-date-picker
|
|
|
+ style="width: 100%"
|
|
|
+ :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
|
|
|
+ v-decorator="['limitDate']" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item> -->
|
|
|
+ <!-- <row-item v-show="category === 2">
|
|
|
+ <a-form-item
|
|
|
+ label="要求时间"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-input
|
|
|
+ style="width: 100%"
|
|
|
+ suffix="小时"
|
|
|
+ v-decorator="['limitHours', {rules: [{required: true, message: '要求时间不能为空'}]}]" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item> -->
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="计划开始时间"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-date-picker
|
|
|
+ style="width: 100%"
|
|
|
+ show-time
|
|
|
+ :format="BaseTool.Date.PICKER_NORM_DATETIME_PATTERN"
|
|
|
+ v-decorator="['planStartTime', {rules: [{required: true, message: '计划开始时间不能为空'}]}]" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="计划结束时间"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-date-picker
|
|
|
+ style="width: 100%"
|
|
|
+ show-time
|
|
|
+ :format="BaseTool.Date.PICKER_NORM_DATETIME_PATTERN"
|
|
|
+ v-decorator="['planEndTime', {rules: [{required: true, message: '计划结束时间不能为空'}]}]" />
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item v-if="category !== 1">
|
|
|
+ <a-form-item
|
|
|
+ label="工作优选权"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['level', {initialValue: 1, rules: [{required: true, message: '工作优选权不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in levelMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="parseInt(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"
|
|
|
+ >
|
|
|
+ <a-input
|
|
|
+ disabled="disabled"
|
|
|
+ v-decorator="['actualUser', {initialValue: userInfo.realName, rules: [{required: true, message: '报修人不能为空'}]}]"/>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <!-- <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="紧急等级"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['level', {initialValue: 1, rules: [{required: true, message: '紧急等级不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in levelMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="parseInt(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"
|
|
|
+ >
|
|
|
+ <a-tree-select
|
|
|
+ style="width: 100%"
|
|
|
+ :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
|
|
|
+ :treeData="treeData"
|
|
|
+ :treeNodeFilterProp="'title'"
|
|
|
+ :showSearch="true"
|
|
|
+ v-decorator="['repairErrorTypeId']"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ </a-tree-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>-->
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="报修图片"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <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"
|
|
|
+ >
|
|
|
+ <a-upload
|
|
|
+ :action="uploadUrl"
|
|
|
+ :multiple="true"
|
|
|
+ :file-list="defaultCheckFileList"
|
|
|
+ @change="handleCheckFileChange"
|
|
|
+ :headers="headers"
|
|
|
+ >
|
|
|
+ <a-button> <a-icon type="upload" /> 上传 </a-button>
|
|
|
+ </a-upload>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ <row-item v-show="refusedFlag">
|
|
|
+ <a-form-item
|
|
|
+ label="驳回原因"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-input
|
|
|
+ disabled="disabled"
|
|
|
+ v-decorator="['remark']"/>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ </row-list>
|
|
|
+
|
|
|
+ <row-list :col="1">
|
|
|
+ <row-item v-if="false">
|
|
|
+ <a-form-item
|
|
|
+ label="报修状态"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol"
|
|
|
+ >
|
|
|
+ <a-select disabled v-decorator="['status', {initialValue: DictCache.VALUE.REPAIR_APPLICATION_FORM_STATUS.NOT_ALLOCATED,rules: [{required: true, message: '报修状态不能为空'}]}]" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in statusMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="parseInt(value)">{{ label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+
|
|
|
+ <!-- <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="故障描述"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol2"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol2"
|
|
|
+ >
|
|
|
+ <a-select v-decorator="['content']" placeholder="请选择">
|
|
|
+ <a-select-option
|
|
|
+ v-for="(label,value) in questionMap"
|
|
|
+ :key="value"
|
|
|
+ :label="label"
|
|
|
+ :value="parseInt(value)">{{ label }}
|
|
|
+ </a-select-option>
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>-->
|
|
|
+ <row-item>
|
|
|
+ <a-form-item
|
|
|
+ label="委托内容描述"
|
|
|
+ :labelCol="BaseTool.Constant.labelCol2"
|
|
|
+ :wrapperCol="BaseTool.Constant.wrapperCol2"
|
|
|
+ >
|
|
|
+ <a-textarea
|
|
|
+ :rows="4"
|
|
|
+ v-decorator="['content', {rules: [{required: true, message: '委托内容描述不能为空'}]}]"/>
|
|
|
+ </a-form-item>
|
|
|
+ </row-item>
|
|
|
+ </row-list>
|
|
|
+ </a-form>
|
|
|
+ <template slot="footer">
|
|
|
+ <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
|
|
|
+ </template>
|
|
|
+ <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd"/>
|
|
|
+ <part-info-select-modal ref="partInfoSelectModal" @selected="handlePartSelected"/>
|
|
|
+ </a-modal>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import pick from 'lodash.pick'
|
|
|
+import BaseTool from '../../../../utils/tool'
|
|
|
+import { addRepairApplicationForm, updateRepairApplicationForm, getSbPositions, getDispatchUser } from '@/api/repair/application-form'
|
|
|
+import PartInfoSelectModal from '@/views/part/info/modules/PartInfoSelectModal'
|
|
|
+import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'
|
|
|
+import { queryUser } from '@/api/upms/user'
|
|
|
+import { uploadUrl } from '@/api/upms/file'
|
|
|
+import Vue from 'vue'
|
|
|
+import { ACCESS_TOKEN } from '@/store/mutation-types'
|
|
|
+import { fetchErrorTypeTree } from '@/api/repair/errortype'
|
|
|
+import { TreeSelect } from 'ant-design-vue'
|
|
|
+const SHOW_PARENT = TreeSelect.SHOW_PARENT
|
|
|
+export default {
|
|
|
+ name: 'BaseRepairApplicationForm',
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ SHOW_PARENT,
|
|
|
+ confirmLoading: false,
|
|
|
+ modalTitle: null,
|
|
|
+ professorMap: {},
|
|
|
+ repairTypeMap: {},
|
|
|
+ sbPositionList: [],
|
|
|
+ form: this.$form.createForm(this),
|
|
|
+ visible: false,
|
|
|
+ sbId: null,
|
|
|
+ // 下拉框map
|
|
|
+ sourceMap: {},
|
|
|
+ levelMap: {},
|
|
|
+ questionMap: {},
|
|
|
+ dispatchUserList: {},
|
|
|
+ treeData: [],
|
|
|
+ needStop: null,
|
|
|
+ needStopMap: {},
|
|
|
+ category: 0,
|
|
|
+ categoryMap: {},
|
|
|
+ trustMap: {},
|
|
|
+ statusMap: {},
|
|
|
+ userInfo: this.$store.getters.userInfo,
|
|
|
+ userList: [],
|
|
|
+ uploadUrl: uploadUrl,
|
|
|
+ defaultRepairFileList: [],
|
|
|
+ defaultApplicationFileList: [],
|
|
|
+ defaultCheckFileList: [],
|
|
|
+ applicationFileList: [], // 报修图片
|
|
|
+ reportFileList: [], // 审核图片
|
|
|
+ repairFileList: [], // 维修图片,
|
|
|
+ repairDeptMap: {},
|
|
|
+ refusedFlag: false,
|
|
|
+ headers: {
|
|
|
+ Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ SbInfoSelectModal,
|
|
|
+ PartInfoSelectModal
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ },
|
|
|
+ created () {
|
|
|
+ // 下拉框map
|
|
|
+ this.sourceMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_APPLICATION_FORM_SOURCE)
|
|
|
+ // this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_APPLICATION_FORM_LEVEL)
|
|
|
+ this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_APPLICATION_FORM_STATUS)
|
|
|
+ this.questionMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_QUESTION)
|
|
|
+ this.needStopMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
|
|
|
+ this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.LEVEL_TYPE)
|
|
|
+ this.categoryMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_APPLICATION_FORM_CATEGORY)
|
|
|
+ this.trustMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.TRUST_DEPT_TYPE)
|
|
|
+ console.log(this.categoryMap)
|
|
|
+ this.repairDeptMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_DEPT_CATEGORY)
|
|
|
+ this.repairTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_APPLICATION_TYPE)
|
|
|
+ this.professorMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_APPLICATION_PROFESSOR)
|
|
|
+ this.getUsers()
|
|
|
+ this.getSbPositions()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ base (record) {
|
|
|
+ this.visible = true
|
|
|
+ this.refusedFlag = false
|
|
|
+ fetchErrorTypeTree().then(res => {
|
|
|
+ this.treeData = res.data
|
|
|
+ })
|
|
|
+ // 如果是空标识添加
|
|
|
+ if (this.BaseTool.Object.isBlank(record)) {
|
|
|
+ this.modalTitle = '报修'
|
|
|
+ if (!this.BaseTool.Object.isBlank(record) && !this.BaseTool.Object.isBlank(record.sbId)) {
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign({
|
|
|
+ 'id': record.id,
|
|
|
+ 'sbId': record.sbId,
|
|
|
+ 'sbName': record.name,
|
|
|
+ 'positionNo': record.positionNo
|
|
|
+ }))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (this.BaseTool.Object.isBlank(record.id)) {
|
|
|
+ this.modalTitle = '报修'
|
|
|
+ if (!this.BaseTool.Object.isBlank(record.sbId)) {
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign(pick(record, [
|
|
|
+ 'sbId',
|
|
|
+ 'sbName',
|
|
|
+ 'sbCph'
|
|
|
+ ])))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.modalTitle = '编辑'
|
|
|
+ this.applicationFileList = record.applicationFileList
|
|
|
+ this.repairFileList = record.repairFileList
|
|
|
+ this.reportFileList = record.reportFileList
|
|
|
+ this.defaultApplicationFileList = this.BaseTool.UPLOAD.transImg(this.applicationFileList)
|
|
|
+ this.defaultRepairFileList = this.BaseTool.UPLOAD.transImg(this.repairFileList)
|
|
|
+ this.defaultCheckFileList = this.BaseTool.UPLOAD.transImg(this.reportFileList)
|
|
|
+ if (record.status === this.DictCache.VALUE.REPAIR_APPLICATION_FORM_STATUS.REFUSED_REPAIR) {
|
|
|
+ this.refusedFlag = true
|
|
|
+ }
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ // 日期处理
|
|
|
+ record.applyTime = this.BaseTool.Moment(record.applyTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
|
|
|
+ if (record.limitDate != null) {
|
|
|
+ record.limitDate = this.BaseTool.Moment(record.limitDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign(pick(record, [
|
|
|
+ 'limitDate'
|
|
|
+ ])))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign(pick(record, [
|
|
|
+ 'id',
|
|
|
+ 'sbId',
|
|
|
+ 'sbCph',
|
|
|
+ 'partId',
|
|
|
+ 'repairUserId',
|
|
|
+ 'no',
|
|
|
+ 'category',
|
|
|
+ 'limitDate',
|
|
|
+ 'limitHours',
|
|
|
+ 'source',
|
|
|
+ 'level',
|
|
|
+ 'content',
|
|
|
+ 'status',
|
|
|
+ 'sbName',
|
|
|
+ 'needStop',
|
|
|
+ 'category',
|
|
|
+ 'partName',
|
|
|
+ 'remark',
|
|
|
+ 'repairDeptId'
|
|
|
+ ])))
|
|
|
+ })
|
|
|
+ },
|
|
|
+ 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]
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getUsers () {
|
|
|
+ queryUser({ status: 1 }).then(res => {
|
|
|
+ this.userList = res.data
|
|
|
+ })
|
|
|
+ getDispatchUser().then(res => {
|
|
|
+ console.log(res)
|
|
|
+ this.dispatchUserList = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ save () {
|
|
|
+ const { form: { validateFieldsAndScroll } } = this
|
|
|
+ this.confirmLoading = true
|
|
|
+ validateFieldsAndScroll((errors, values) => {
|
|
|
+ if (errors) {
|
|
|
+ this.confirmLoading = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 日期处理
|
|
|
+ values.applyTime = this.BaseTool.Date.formatter(values.applyTime, this.BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
|
|
|
+ values.limitDate = BaseTool.Date.formatter(values.limitDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
|
|
|
+ values.planStartTime = BaseTool.Date.formatter(values.planStartTime, BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
|
|
|
+ values.planEndTime = BaseTool.Date.formatter(values.planEndTime, BaseTool.Date.PICKER_NORM_DATETIME_PATTERN)
|
|
|
+ // 上传文件
|
|
|
+ values.repairFileList = this.repairFileList
|
|
|
+ values.repairProfessor = values.repairProfessor.join(',')
|
|
|
+ values.repairType = values.repairType.join(',')
|
|
|
+ values.applicationFileList = this.applicationFileList
|
|
|
+ values.reportFileList = this.reportFileList
|
|
|
+ values.sbPosition = values.sbPosition.join('->')
|
|
|
+ console.log(values)
|
|
|
+ if (values.partId === undefined) {
|
|
|
+ values.partId = ''
|
|
|
+ }
|
|
|
+ if (this.BaseTool.String.isBlank(values.id)) {
|
|
|
+ addRepairApplicationForm(values)
|
|
|
+ .then(() => {
|
|
|
+ this.$notification.success({
|
|
|
+ message: '报修成功!',
|
|
|
+ duration: 3
|
|
|
+ })
|
|
|
+ this.handleCancel(values)
|
|
|
+ }).catch(() => {
|
|
|
+ this.confirmLoading = false
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ updateRepairApplicationForm(values)
|
|
|
+ .then(() => {
|
|
|
+ this.handleCancel(values)
|
|
|
+ }).catch(() => {
|
|
|
+ this.confirmLoading = false
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changePlanFlag (value) {
|
|
|
+ this.category = value
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ if (this.category === 1) {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue({ needStop: 1 })
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue({ needStop: 0 })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCancel (values) {
|
|
|
+ this.visible = false
|
|
|
+ this.confirmLoading = false
|
|
|
+ this.applicationFileList = []
|
|
|
+ this.defaultApplicationFileList = []
|
|
|
+ this.form.resetFields()
|
|
|
+ if (this.BaseTool.Object.isNotBlank(values)) {
|
|
|
+ this.$emit('ok', values)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleSbSelect () {
|
|
|
+ this.$refs.sbInfoSelectModal.base({}, {})
|
|
|
+ },
|
|
|
+ handleSbSelectd (keys, rows) {
|
|
|
+ const [ key ] = keys
|
|
|
+ const [ row ] = rows
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ this.sbId = key
|
|
|
+ // 日期处理
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign({
|
|
|
+ 'sbId': key,
|
|
|
+ 'sbName': row.name,
|
|
|
+ 'sbCph': row.cph,
|
|
|
+ 'parentSbNo': row.ppNo
|
|
|
+ }))
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handlePartSelect () {
|
|
|
+ if (this.sbId === null) {
|
|
|
+ return this.$message.error('选择设备部位之前,请选择设备')
|
|
|
+ }
|
|
|
+ this.$refs.partInfoSelectModal.base({ sbId: this.sbId })
|
|
|
+ },
|
|
|
+ handlePartSelected (keys, rows) {
|
|
|
+ const [ key ] = keys
|
|
|
+ const [ row ] = rows
|
|
|
+ const { form: { setFieldsValue } } = this
|
|
|
+ this.$nextTick(() => {
|
|
|
+ setFieldsValue(Object.assign({
|
|
|
+ 'partId': key,
|
|
|
+ 'partName': row.name
|
|
|
+ }))
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleCheckFileChange (info) {
|
|
|
+ this.defaultCheckFileList = info.fileList
|
|
|
+ this.reportFileList = this.setFileList(info, 32)
|
|
|
+ },
|
|
|
+ handleApplicationFileChange (info) {
|
|
|
+ this.defaultApplicationFileList = info.fileList
|
|
|
+ this.applicationFileList = 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 []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|