From a5a80af9017fdb8d378eb6f682e24dae99d19977 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期五, 15 八月 2025 10:12:09 +0800
Subject: [PATCH] 孔加工工具增加字段
---
src/views/eam/maintenance/modules/EamInspectionOrderModal.vue | 456 ++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 292 insertions(+), 164 deletions(-)
diff --git a/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue b/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue
index 44dc60d..61258e3 100644
--- a/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamInspectionOrderModal.vue
@@ -5,50 +5,70 @@
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
+ centered
+ :mask-closable="false"
@ok="handleOk"
@cancel="handleCancel"
cancelText="鍏抽棴">
- <a-spin :spinning="confirmLoading">
- <a-form-model ref="form" :model="model" :rules="validatorRules">
+ <a-spin :spinning="spinning">
+ <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row :gutter="24">
<a-col :span="8">
- <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardCode" label="鏍囧噯缂栫爜">
- <a-input placeholder="缂栫爜绯荤粺鑷姩鐢熸垚" v-model="model.standardCode" disabled />
+ <a-form-model-item prop="standardCode" label="宸ュ崟鍙�">
+ <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" v-model="model.orderNum" readOnly/>
</a-form-model-item>
</a-col>
<a-col :span="8">
- <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧缂栧彿">
- <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" :disabled="editable"></MaintenanceEquipmentSelect>
+ <a-form-model-item prop="equipmentId" label="璁惧缂栧彿">
+ <MaintenanceEquipmentSelect placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId"
+ :maintenanceCategory="maintenanceCategory" :disabled="disabled"
+ @autocompleteForm="autocompleteForm"/>
</a-form-model-item>
</a-col>
<a-col :span="8">
- <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="standardName" label="鏍囧噯鍚嶇О">
- <a-input placeholder="璇疯緭鍏ユ爣鍑嗗悕绉�" disabled v-model="model.standardName" />
+ <a-form-model-item prop="standardName" label="鏍囧噯鍚嶇О">
+ <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" readOnly v-model="model.standardName"/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="8">
- <a-form-model-item label="鐐规鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inspectionDate">
- <j-date placeholder="璇烽�夋嫨鐐规鏃ユ湡" v-model="model.inspectionDate" style="width: 100%" />
+ <a-form-model-item prop="standardCode" label="鏍囧噯缂栫爜">
+ <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" readOnly v-model="model.standardCode"/>
</a-form-model-item>
</a-col>
<a-col :span="8">
- <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
- <a-input-number v-model="model.maintenancePeriod" :min="1" :precision="0" disabled style="width: 100%"/>
+ <a-form-model-item label="淇濆吇鍛ㄦ湡">
+ <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" readOnly/>
</a-form-model-item>
</a-col>
<a-col :span="8">
- <a-form-model-item label="鐐规杩囨湡鏃堕棿" :labelCol="{span:6}" :wrapperCol="{span:15}" prop="expirationTime">
- <j-date placeholder="璇烽�夋嫨鐐规杩囨湡鏃堕棿" v-model="model.expirationTime" disabled style="width: 100%" />
+ <a-form-model-item prop="operator" label="鐐规浜�">
+ <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨鐐规浜�" :disabled="!model.equipmentId"
+ :dictOptions="maintenanceOperatorOptions"/>
+ </a-form-model-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :span="8">
+ <a-form-model-item label="鐐规鏃ユ湡" prop="inspectionDate">
+ <j-date :placeholder="!model.maintenancePeriod?'璇峰~鍐欎繚鍏诲懆鏈�':'璇烽�夋嫨鐐规鏃ユ湡'" v-model="model.inspectionDate"
+ :disabled="!model.maintenancePeriod"
+ @change="expirationTimeFrom(model.inspectionDate)" style="width: 100%"/>
+ </a-form-model-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-model-item label="鐐规杩囨湡鏃堕棿">
+ <j-date placeholder="閫夋嫨鐐规鏃ユ湡鍚庤嚜鍔ㄥ甫鍑�" v-model="model.expirationTime" disabled style="width: 100%"/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
- <a-form-model-item label="澶囨敞" :labelCol="{span:1}" :wrapperCol="{span:22}" prop="remark">
- <a-textarea v-model="model.remark" rows="3" placeholder="璇疯緭鍏ュ娉�" />
+ <a-form-model-item label="澶囨敞" :labelCol="{span:2}" :wrapperCol="{span:21}" prop="remark">
+ <a-textarea v-model="model.remark" rows="3" placeholder="璇疯緭鍏ュ娉�"/>
</a-form-model-item>
</a-col>
</a-row>
@@ -56,10 +76,10 @@
<j-vxe-table
ref="editableDetailTable"
:rowNumber="true"
- :rowSelection="false"
+ :rowSelection="true"
:bordered="true"
:alwaysEdit="true"
- :toolbar="false"
+ :toolbar="true"
keep-source
:height="300"
:loading="detail.loading"
@@ -73,163 +93,271 @@
</template>
<script>
-import { getAction, httpAction } from '@/api/manage'
-import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
-import { JVXETypes } from '@/components/jeecg/JVxeTable'
-import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
+ import { getAction, httpAction } from '@/api/manage'
+ import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
+ import { JVXETypes } from '@/components/jeecg/JVxeTable'
+ import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
+ import moment from 'dayjs'
-export default {
- name: "EamMaintenanceStandardModal",
- mixins: [JVxeTableModelMixin],
- components: {
- MaintenanceEquipmentSelect,
- },
- data () {
- return {
- title:"鎿嶄綔",
- visible: false,
- model: {},
- editable: false,
- labelCol: {
- xs: { span: 24 },
- sm: { span: 5 },
- },
- wrapperCol: {
- xs: { span: 24 },
- sm: { span: 16 },
- },
- confirmLoading: false,
- validatorRules: {
- standardName: [
- { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�!' }
- ],
- maintenanceCategory: [
- { required: true, message: '璇烽�夋嫨淇濆吇鍒嗙被!' }
- ],
- initialDate: [
- { required: true, message: '璇烽�夋嫨鍒濆鏃ユ湡!' }
- ],
- maintenancePeriod: [
- { required: true, message: '璇疯緭鍏ヤ繚鍏诲懆鏈燂紝鍗曚綅锛氬ぉ!' }
- ],
- equipmentId: [
- { required: true, message: '璇烽�夋嫨璁惧!' }
- ]
- },
- url: {
- add: "/eam/maintenanceStandard/add",
- edit: "/eam/maintenanceStandard/edit",
- detail: "/eam/eamMaintenanceStandardDetail/queryList",
- },
- detail: {
- loading: false,
- dataSource: [],
- columns: [
- {
- title: '搴忓彿',
- key: 'itemCode',
- width: '10%',
- align:"center",
- },
- {
- title: '淇濆吇椤�',
- key: 'itemName',
- width: '20%',
- align:"center",
- },
- {
- title: '淇濆吇瑕佹眰',
- key: 'itemDemand',
- width: '30%',
- align:"center",
- },
- ],
- }
- }
- },
- created () {
- },
- methods: {
- add () {
- this.model = {};
- this.visible = true;
- this.editable = false;
+ export default {
+ name: 'EamMaintenanceStandardModal',
+ mixins: [JVxeTableModelMixin],
+ components: {
+ MaintenanceEquipmentSelect
},
- edit (record) {
- this.model = Object.assign({}, record);
- this.visible = true;
- this.editable = true;
- if(record && record.referenceFile) {
- let obj = JSON.parse(record.referenceFile);
- this.model.fileList = [obj];
- }else {
- this.model.fieldList = [];
- }
- this.loadDetail(record.id);
- },
- close () {
- this.$emit('close');
- this.visible = false;
- this.$refs.form.clearValidate();
- },
- async handleOk () {
- const that = this;
- let errMap = await that.$refs.editableDetailTable.validateTable();
- if(errMap){
- this.$message.warning("鏁版嵁鏍¢獙澶辫触锛�");
- return;
- }
- // 瑙﹀彂琛ㄥ崟楠岃瘉
- this.$refs.form.validate(valid => {
- if (valid) {
- let tableData = that.$refs.editableDetailTable.getTableData();
- let removeData = that.$refs.editableDetailTable.getDeleteData();
- that.model.tableDetailList = [...tableData];
- that.model.removeDetailList = [...removeData];
-
- that.confirmLoading = true;
- let httpurl = '';
- let method = '';
- if(!this.model.id){
- httpurl+=this.url.add;
- method = 'post';
- }else{
- httpurl+=this.url.edit;
- method = 'put';
- }
- httpAction(httpurl,this.model,method).then((res)=>{
- if(res.success){
- that.$message.success(res.message);
- that.$emit('ok');
- that.close();
- }else{
- that.$message.warning(res.message);
+ data() {
+ return {
+ title: '鎿嶄綔',
+ visible: false,
+ model: {},
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ confirmLoading: false,
+ spinning: false,
+ disabled: false,
+ validatorRules: {
+ // standardName: [
+ // { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�!' }
+ // ],
+ inspectionDate: [
+ { required: true, message: '璇烽�夋嫨鐐规鏃ユ湡!' }
+ ],
+ // maintenancePeriod: [
+ // { required: true, message: '璇疯緭鍏ヤ繚鍏诲懆鏈燂紝鍗曚綅锛氬ぉ!' }
+ // ],
+ equipmentId: [
+ { required: true, message: '璇烽�夋嫨璁惧!' }
+ ]
+ },
+ url: {
+ add: '/eam/eamInspectionOrder/add',
+ edit: '/eam/eamInspectionOrder/edit',
+ detail: '/eam/eamMaintenanceStandardDetail/queryList',
+ detailOrder: '/eam/eamInspectionOrderDetail/queryList',
+ userSelect: '/eam/user_select/list'
+ },
+ maintenanceCategory: 'POINT_INSPECTION',
+ maintenanceOperatorOptions: [],
+ standardId: '',
+ standardType: false,
+ detail: {
+ loading: false,
+ dataSource: [],
+ columns: [
+ {
+ title: '搴忓彿',
+ key: 'itemCode',
+ type: JVXETypes.inputNumber,
+ width: '10%',
+ align: 'center',
+ validateRules: [
+ { required: true, unique: true, message: '搴忓彿涓嶈兘閲嶅' }
+ ]
+ },
+ {
+ title: '淇濆吇椤�',
+ key: 'itemName',
+ type: JVXETypes.textarea,
+ width: '20%',
+ align: 'center',
+ validateRules: [
+ { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' }
+ ]
+ },
+ {
+ title: '淇濆吇瑕佹眰',
+ key: 'itemDemand',
+ type: JVXETypes.textarea,
+ width: '30%',
+ align: 'center',
+ validateRules: [
+ { required: true, message: '淇濆吇瑕佹眰涓嶈兘涓虹┖锛�' }
+ ]
}
- }).finally(() => {
- that.confirmLoading = false;
- })
- }else{
- return false;
+ ]
}
- })
+ }
},
- handleCancel () {
- this.close()
+ created() {
},
- //鍔犺浇璇︽儏鏁版嵁
- loadDetail(standardId) {
- this.detail.dataSource = [];
- if (standardId) {
- getAction(this.url.detail, { standardId: standardId }).then(res => {
- if (res.success) {
- this.detail.dataSource = [...res.result];
+ methods: {
+ add() {
+ this.model = {}
+ this.detail.dataSource = []
+ this.visible = true
+ this.disabled = false
+ this.standardType = false
+ },
+
+ edit(record) {
+ this.model = Object.assign({}, record)
+ this.standardId = record.standardId
+ this.disabled = true
+ this.standardType = true
+ this.visible = true
+ this.detail.dataSource = []
+ if (record && record.referenceFile) {
+ let obj = JSON.parse(record.referenceFile)
+ this.model.fileList = [obj]
+ } else {
+ this.model.fieldList = []
+ }
+ this.loadDetailOrder(record.id)
+ },
+
+ async handleOk() {
+ const that = this
+ let errMap = await that.$refs.editableDetailTable.validateTable()
+ if (errMap) {
+ this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�')
+ return
+ }
+ // 瑙﹀彂琛ㄥ崟楠岃瘉
+ this.$refs.form.validate(valid => {
+ if (valid) {
+ let tableData = that.$refs.editableDetailTable.getTableData()
+ let removeData = that.$refs.editableDetailTable.getDeleteData()
+ that.model.tableDetailList = [...tableData]
+ that.model.removeDetailList = [...removeData]
+
+ that.confirmLoading = that.spinning = true
+ let httpurl = ''
+ let method = ''
+ if (!this.model.id) {
+ httpurl += this.url.add
+ method = 'post'
+ } else {
+ httpurl += this.url.edit
+ method = 'put'
+ }
+ this.model.standardId = this.standardId
+ httpAction(httpurl, this.model, method).then((res) => {
+ if (res.success) {
+ that.$message.success(res.message)
+ that.$emit('ok')
+ that.close()
+ } else {
+ that.$message.warning(res.message)
+ }
+ }).finally(() => {
+ that.confirmLoading = that.spinning = false
+ })
+ } else {
+ return false
}
})
+ },
+
+ autocompleteForm(selectObj) {
+ this.model.standardName = selectObj.standardName
+ this.model.maintenancePeriod = selectObj.maintenancePeriod
+ this.model.standardCode = selectObj.standardCode
+ // 鑻ュ彇娑堣澶囬�夋嫨鍚庝繚鍏诲懆鏈熶负绌哄垯闇�娓呯┖鐐规鏃ユ湡鍜岀偣妫�杩囨湡鏃堕棿
+ if (!this.model.equipmentId) {
+ delete this.model.inspectionDate
+ delete this.model.expirationTime
+ } else {
+ // 濡傛灉鐐规鏃ユ湡瀛樺湪锛屽垯鍦ㄩ噸鏂伴�夋嫨璁惧鍚庡嵆淇濆吇鍛ㄦ湡鍙兘鍙戠敓鏀瑰彉鍚庨噸鏂拌绠楄繃鏈熸椂闂�
+ if (this.model.inspectionDate) this.expirationTimeFrom(this.model.inspectionDate)
+ }
+ if (!this.standardType) {
+ console.log('this.standardType', this.standardType)
+ this.standardId = selectObj.id
+ this.loadDetail(selectObj.id)
+ }
+ this.$nextTick(() => this.loadMaintenanceOperatorList(this.model.equipmentId))
+ },
+
+ expirationTimeFrom(date) {
+ //杩囨湡鏃堕棿鏄垵濮嬫椂闂�+淇濆吇鍛ㄦ湡
+ if (date && this.model.maintenancePeriod) {
+ // 杞崲涓烘椂闂存埑瀛楃涓诧紙鎴栨寚瀹氭牸寮忥級
+ this.model.expirationTime = moment(date)
+ .add(this.model.maintenancePeriod, 'days')
+ .format('YYYY-MM-DD')
+ } else {
+ this.model.expirationTime = null // 娓呯┖鏃犳晥鍊�
+ }
+ },
+
+ //鍔犺浇璇︽儏鏁版嵁
+ loadDetail(standardId) {
+ this.detail.dataSource = []
+ if (standardId) {
+ console.log('standardId', standardId)
+ this.spinning = true
+ getAction(this.url.detail, { standardId: standardId })
+ .then(res => {
+ if (res.success) {
+ this.detail.dataSource = [...res.result]
+ }
+ })
+ .finally(() => {
+ this.spinning = false
+ })
+ }
+ },
+
+ loadDetailOrder(orderId) {
+ if (orderId) {
+ this.spinning = true
+ getAction(this.url.detailOrder, { orderId: orderId })
+ .then(res => {
+ if (res.success) {
+ this.detail.dataSource = [...res.result]
+ }
+ })
+ .finally(() => {
+ this.spinning = false
+ })
+ }
+ },
+
+ loadMaintenanceOperatorList(equipmentId) {
+ this.maintenanceOperatorOptions = []
+ let params = { positionCode: 'PCR0001' }
+ if (equipmentId) {
+ params.equipmentId = equipmentId
+ } else {
+ delete this.model.operator
+ return
+ }
+ const that = this
+ getAction(this.url.userSelect, params)
+ .then(res => {
+ if (res.success) {
+ that.maintenanceOperatorOptions = res.result.map(item => ({
+ key: item.id,
+ value: item.username,
+ text: item.realname
+ }))
+ if (!that.maintenanceOperatorOptions.find(item => item.value === that.model.operator)) delete that.model.operator
+ } else {
+ if (that.model.operator) delete that.model.operator
+ }
+ })
+ .catch(err => {
+ if (that.model.operator) delete that.model.operator
+ })
+ },
+
+ handleCancel() {
+ this.close()
+ },
+
+ close() {
+ this.$emit('close')
+ this.visible = false
+ this.$refs.form.clearValidate()
}
}
-
}
-}
</script>
<style lang="less" scoped>
--
Gitblit v1.9.3