From 3c5205d857446563b3f89ae7432d76ba6d945a69 Mon Sep 17 00:00:00 2001
From: Houjie <714924425@qq.com>
Date: 星期五, 12 九月 2025 18:17:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/mes/modules/WorkOrderSelectModal.vue           |    2 
 src/views/mes/modules/MesMaterialTransferRequestForm.vue |   50 +++--
 src/views/base/ShiftGroupManager.vue                     |   18 +
 src/views/cms/CuttingReceiveList.vue                     |   71 +++++++-
 src/views/base/modules/group/GroupModal.vue              |  293 ++++++++++++++++++------------------
 5 files changed, 250 insertions(+), 184 deletions(-)

diff --git a/src/views/base/ShiftGroupManager.vue b/src/views/base/ShiftGroupManager.vue
index 1e4f5c1..81d39ba 100644
--- a/src/views/base/ShiftGroupManager.vue
+++ b/src/views/base/ShiftGroupManager.vue
@@ -7,7 +7,13 @@
           <!-- 鎼滅储鍖哄煙 -->
           <a-form layout="inline" @keyup.enter.native="searchQuery">
             <a-row :gutter="24">
-              <a-col :md="6" :sm="8">
+              <a-col :xl="6" :lg="7" :md="8" :sm="24">
+                <a-form-item label="浜х嚎">
+                  <j-dict-select-tag placeholder="璇烽�夋嫨浜х嚎" v-model="queryParam.factoryId"
+                                     dictCode="base_factory,factory_name,id,del_flag=0 and factory_category='3'"></j-dict-select-tag>
+                </a-form-item>
+              </a-col>
+              <a-col :xl="6" :lg="7" :md="8" :sm="24">
                 <a-form-item label="鐝粍鍚嶇О" :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}">
                   <a-input placeholder="" v-model="queryParam.groupName"></a-input>
                 </a-form-item>
@@ -89,7 +95,7 @@
               <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
             <a-col :md="9" :sm="24">
              <a-button type="primary" @click="searchQuery2" icon="search" style="margin-left: 21px">鏌ヨ</a-button>
-              <a-button type="primary" @click="searchReset2" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+              <a-button type="info" @click="searchReset2" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
 
             </a-col>
           </span>
@@ -170,7 +176,7 @@
         queryParam2: {},
         dataSource1: [],
         dataSource2: [],
-        ipagination1: {
+        ipagination: {
           current: 1,
           pageSize: 10,
           pageSizeOptions: ['10', '20', '30'],
@@ -192,9 +198,9 @@
           showSizeChanger: true,
           total: 0
         },
-        isorter1: {
-          column: 'createTime',
-          order: 'desc'
+        isorter: {
+          column: 'groupCode',
+          order: 'asc'
         },
         isorter2: {
           column: 'createTime',
diff --git a/src/views/base/modules/group/GroupModal.vue b/src/views/base/modules/group/GroupModal.vue
index 70dca51..4185b29 100644
--- a/src/views/base/modules/group/GroupModal.vue
+++ b/src/views/base/modules/group/GroupModal.vue
@@ -12,42 +12,37 @@
     style="top:5%;height: 85%;overflow-y: hidden">
 
     <a-spin :spinning="confirmLoading">
-      <a-form-model ref="form"  v-bind="layout"  :model="model" :rules="validatorRules">
+      <a-form-model ref="form" :model="model" :rules="validatorRules">
         <a-form-model-item label="鐝粍缂栫爜" required prop="groupCode" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-input v-model="model.groupCode" :disabled="roleDisabled"  placeholder="璇疯緭鍏ョ彮缁勭紪鐮�"/>
+          <a-input v-model="model.groupCode" :disabled="roleDisabled" placeholder="璇疯緭鍏ョ彮缁勭紪鐮�" />
         </a-form-model-item>
         <a-form-model-item label="鐝粍鍚嶇О" required prop="groupName" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-input v-model="model.groupName" placeholder="璇疯緭鍏ョ彮缁勫悕绉�"/>
+          <a-input v-model="model.groupName" placeholder="璇疯緭鍏ョ彮缁勫悕绉�" />
         </a-form-model-item>
-         <a-form-model-item label="鐝粍闀�" prop="groupManager" :labelCol="labelCol" :wrapperCol="wrapperCol">
+        <a-form-model-item label="鐝粍闀�" prop="groupManager" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <j-search-select-tag
+            type="list"
+            v-model="model.groupManager"
+            :trigger-change="true"
+            dict="sys_user,realname,id, del_flag='0' and status='1'"
+            placeholder="璇烽�夋嫨鐝粍闀�"
+          />
+        </a-form-model-item>
+        <a-form-model-item label="浜х嚎" prop="factoryId" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <j-dict-select-tag placeholder="璇烽�夋嫨浜х嚎" v-model="model.factoryId"
+                             dictCode="base_factory,factory_name,id,del_flag=0 and factory_category='3'"></j-dict-select-tag>
+        </a-form-model-item>
+        <a-form-model-item label="鐝" prop="shiftId" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <j-dict-select-tag
-                type="list"
-                v-model="model.groupManager"
-                :trigger-change="true"
-                dictCode="sys_user,realname,id"
-                placeholder="璇烽�夋嫨鐝粍闀�"
-              />
-        </a-form-model-item>
-         <a-form-model-item label="浜х嚎" prop="factoryId" :labelCol="labelCol" :wrapperCol="wrapperCol">
-         <j-select-factory
-            v-model="model.factoryId"
-            :multi="true"
-            @back="backFactoryInfo"
-            :backProduction="true"
-            :treeProductOpera="true"
-          ></j-select-factory>
-        </a-form-model-item>
-         <a-form-model-item label="鐝" prop="shiftId" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <j-dict-select-tag
-                type="list"
-                v-model="model.shiftId"
-                :trigger-change="true"
-                dictCode="base_shift,shift_name,id"
-                placeholder="璇烽�夋嫨鐝"
-              />
+            type="list"
+            v-model="model.shiftId"
+            :trigger-change="true"
+            dictCode="base_shift,shift_name,id"
+            placeholder="璇烽�夋嫨鐝"
+          />
         </a-form-model-item>
         <a-form-model-item label="澶囨敞" prop="remark" :labelCol="labelCol" :wrapperCol="wrapperCol">
-          <a-textarea :rows="5" v-model="model.remark" placeholder="璇疯緭鍏ュ娉�"/>
+          <a-textarea :rows="5" v-model="model.remark" placeholder="璇疯緭鍏ュ娉�" />
         </a-form-model-item>
       </a-form-model>
     </a-spin>
@@ -55,130 +50,138 @@
 </template>
 
 <script>
-  import {duplicateCheck } from '@/api/api'
-  import {postAction,requestPut} from '@/api/manage'
-  import JDictSelectTag from '@/components/dict/JDictSelectTag'
-  import JSelectFactory from '../../../../components/jeecgbiz/JSelectFactory'
-  export default {
-    name: "GroupModal",
-    components: {
-    JDictSelectTag,
-    JSelectFactory
+import { duplicateCheck } from '@/api/api'
+import { postAction, requestPut } from '@/api/manage'
+import JDictSelectTag from '@/components/dict/JDictSelectTag'
+
+export default {
+  name: 'GroupModal',
+  components: {
+    JDictSelectTag
   },
-    data () {
-      return {
-        title:"鎿嶄綔",
-        visible: false,
-        roleDisabled: false,
-        model: {},
-        labelCol: {
-          xs: { span: 24 },
-          sm: { span: 5 },
-        },
-        wrapperCol: {
-          xs: { span: 24 },
-          sm: { span: 16 },
-        },
-        confirmLoading: false,
-        validatorRules:{
-          groupName: [
-            { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!' },
-            { min: 2, max: 30, message: '闀垮害鍦� 2 鍒� 30 涓瓧绗�', trigger: 'blur' }
-          ],
-          groupCode: [
-            { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!'},
-            { min: 0, max: 64, message: '闀垮害涓嶈秴杩� 64 涓瓧绗�', trigger: 'blur' },
-            { validator: this.validategroupCode}
-          ],
-          remark: [
-            { min: 0, max: 126, message: '闀垮害涓嶈秴杩� 126 涓瓧绗�', trigger: 'blur' }
-          ]
-        },
-        url: {
-          add: "/base/shiftGroup/add",
-          edit: "/base/shiftGroup/edit",
-        },
-        nextFactoryOptions: [],
-      }
+  data() {
+    return {
+      title: '鎿嶄綔',
+      visible: false,
+      roleDisabled: false,
+      model: {},
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
+      },
+      confirmLoading: false,
+      validatorRules: {
+        groupName: [
+          { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!' },
+          { min: 2, max: 30, message: '闀垮害鍦� 2 鍒� 30 涓瓧绗�', trigger: 'blur' }
+        ],
+        groupCode: [
+          { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!' },
+          { min: 0, max: 64, message: '闀垮害涓嶈秴杩� 64 涓瓧绗�', trigger: 'blur' },
+          { validator: this.validategroupCode }
+        ],
+        factoryId: [
+          { required: true, message: '璇烽�夋嫨浜х嚎!' },
+        ],
+        groupManager: [
+          { required: true, message: '璇烽�夋嫨鐝粍闀�!' },
+        ],
+        shiftId: [
+          { required: true, message: '璇烽�夋嫨鐝彮娆�!' },
+        ],
+        remark: [
+          { min: 0, max: 126, message: '闀垮害涓嶈秴杩� 126 涓瓧绗�', trigger: 'blur' }
+        ]
+      },
+      url: {
+        add: '/base/shiftGroup/add',
+        edit: '/base/shiftGroup/edit'
+      },
+      nextFactoryOptions: []
+    }
+  },
+  created() {
+    //澶囦唤model鍘熷鍊�
+    this.modelDefault = JSON.parse(JSON.stringify(this.model))
+  },
+  methods: {
+    add() {
+      this.edit(this.modelDefault)
     },
-    created () {
-      //澶囦唤model鍘熷鍊�
-      this.modelDefault = JSON.parse(JSON.stringify(this.model));
+    edit(record) {
+      this.model = Object.assign({}, record)
+      this.visible = true
     },
-    methods: {
-      add () {
-        this.edit(this.modelDefault);
-      },
-      edit (record) {
-        this.model = Object.assign({}, record);
-        this.visible = true;
-      },
-      close () {
-        this.$refs.form.clearValidate();
-        this.$emit('close');
-        this.visible = false;
-      },
-      handleOk () {
-        const that = this;
-        // 瑙﹀彂琛ㄥ崟楠岃瘉
-        this.$refs.form.validate(valid => {
-          if (valid) {
-            that.confirmLoading = true;
-            let obj;
-            if(!this.model.id){
-              obj=postAction(this.url.add, this.model)
-            }else{
-              obj=requestPut(this.url.edit, this.model, {
-                    id: this.model.id
-                  })
-            }
-            obj.then((res)=>{
-              if(res.success){
-                that.$message.success(res.message);
-                that.$emit('ok');
-              }else{
-                that.$message.warning(res.message);
-              }
-            }).finally(() => {
-              that.confirmLoading = false;
-              that.close();
+    close() {
+      this.$refs.form.clearValidate()
+      this.$emit('close')
+      this.visible = false
+    },
+    handleOk() {
+      const that = this
+      // 瑙﹀彂琛ㄥ崟楠岃瘉
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          that.confirmLoading = true
+          let obj
+          if (!this.model.id) {
+            obj = postAction(this.url.add, this.model)
+          } else {
+            obj = requestPut(this.url.edit, this.model, {
+              id: this.model.id
             })
-          }else{
-            return false;
+          }
+          obj.then((res) => {
+            if (res.success) {
+              that.$message.success(res.message)
+              that.$emit('ok')
+            } else {
+              that.$message.warning(res.message)
+            }
+          }).finally(() => {
+            that.confirmLoading = false
+            that.close()
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    handleCancel() {
+      this.close()
+    },
+    validategroupCode(rule, value, callback) {
+      if (/[\u4E00-\u9FA5]/g.test(value)) {
+        callback('鐝粍缂栫爜涓嶅彲杈撳叆姹夊瓧!')
+      } else {
+        let params = {
+          tableName: 'base_shift_group',
+          fieldName: 'group_code',
+          fieldVal: value,
+          dataId: this.model.id
+        }
+        duplicateCheck(params).then((res) => {
+          if (res.success) {
+            callback()
+          } else {
+            callback(res.message)
           }
         })
-      },
-      handleCancel () {
-        this.close()
-      },
-      validategroupCode(rule, value, callback){
-        if(/[\u4E00-\u9FA5]/g.test(value)){
-          callback("鐝粍缂栫爜涓嶅彲杈撳叆姹夊瓧!");
-        }else{
-          let params = {
-            tableName: "base_shift_group",
-            fieldName: "group_code",
-            fieldVal: value,
-            dataId: this.model.id,
-          };
-          duplicateCheck(params).then((res)=>{
-            if(res.success){
-              callback();
-            }else{
-              callback(res.message);
-            }
-          });
-        }
-      },
-      backFactoryInfo(info) {
-        this.model.factoryIds = this.model.factoryId
-        this.nextFactoryOptions = info.map((item, index, arr) => {
-          let c = { label: item.text, value: item.value + '' }
-          return c
-        })
-      },
+      }
+    },
+    backFactoryInfo(info) {
+      this.model.factoryIds = this.model.factoryId
+      this.nextFactoryOptions = info.map((item, index, arr) => {
+        let c = { label: item.text, value: item.value + '' }
+        return c
+      })
     }
   }
+}
 </script>
 
 <style scoped>
diff --git a/src/views/cms/CuttingReceiveList.vue b/src/views/cms/CuttingReceiveList.vue
index b99b965..1f46ebf 100644
--- a/src/views/cms/CuttingReceiveList.vue
+++ b/src/views/cms/CuttingReceiveList.vue
@@ -120,7 +120,7 @@
             <!--        </span>-->
 
             <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)" :disabled="record.orderStatus === '2'">缂栬緫</a>
+          <a @click="handleEdit(record)" :disabled="record.orderStatus === '2' || record.orderStatus === '3'">缂栬緫</a>
           <a-divider type="vertical" />
           <a-dropdown>
             <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a>
@@ -128,15 +128,10 @@
               <a-menu-item>
                 <a @click="handleDetail(record)">璇︽儏</a>
               </a-menu-item>
-               <!--              <a-menu-item v-if="record.orderStatus != '2'">-->
-               <!--                <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">-->
-               <!--                  <a>鍒犻櫎</a>-->
-               <!--                </a-popconfirm>-->
-               <!--              </a-menu-item>-->
-              <a-menu-item v-if="record.orderStatus !== '2'">
+              <a-menu-item v-if="record.orderStatus === '1'">
                   <a @click="handleSubmit(record.id)" :disabled="record.orderStatus === '3'">鎻愪氦</a>
               </a-menu-item>
-              <a-menu-item v-if="record.orderStatus !== '2'">
+              <a-menu-item v-if="record.orderStatus === '1'">
                 <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">
                   <a>鍒犻櫎</a>
                 </a-popconfirm>
@@ -282,7 +277,8 @@
             deleteBatch: '/cms/cuttingReceive/deleteBatch',
             exportXlsUrl: '/cms/cuttingReceive/exportXls',
             importExcelUrl: 'cms/cuttingReceive/importExcel',
-            submit: '/cms/cuttingReceive/submit'
+            submit: '/cms/cuttingReceive/submit',
+            returnBack: '/cms/cuttingReceive/handleBack'
          },
          dictOptions: {},
          superFieldList: []
@@ -393,7 +389,62 @@
             }
          })
       },
-      //TODO锛氬垁鍏峰綊杩� handleBack
+
+      /**
+       *  鍗曟嵁棰嗙敤
+       */
+
+      handleBack: function(id) {
+         if (!this.url.returnBack) {
+            this.$message.error('璇疯缃畊rl.return灞炴��!')
+            return
+         }
+
+         let targetId = id // 浠庡弬鏁拌幏鍙朓D
+         // 濡傛灉娌℃湁閫氳繃鍙傛暟浼犻�扞D锛屽垯妫�鏌ラ�変腑鐨勮褰�
+         if (!targetId) {
+            if (this.selectedRowKeys.length != 1) {
+               this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒')
+               return
+            } else {
+               targetId = this.selectedRowKeys[0]
+            }
+         }
+
+         // 灏嗗弬鏁颁綔涓烘煡璇㈠弬鏁伴檮鍔犲埌URL涓�
+         let httpurl = this.url.returnBack + '?orderId=' + encodeURIComponent(targetId)
+         let method = 'get'
+         var params = {}  // 娓呯┖params锛屽洜涓哄弬鏁板凡缁忓湪URL涓紶閫�
+
+         const that = this
+
+         this.$confirm({
+            title: '纭鎻愪氦锛�',
+            // content: '姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...',
+            okText: '纭',
+            cancelText: '鍙栨秷',
+            onOk() {
+               // 鏄剧ず鍔犺浇鎻愮ず
+               const hide = that.$message.loading('姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', 0)
+
+               // 鍙戦�佽姹�
+               return httpAction(httpurl, params, method).then((res) => {
+                  hide() // 闅愯棌鍔犺浇鎻愮ず
+                  if (res.success) {
+                     that.$message.success(res.message)
+                     that.loadData()
+                  } else {
+                     that.$message.warning(res.message)
+                  }
+               }).catch(error => {
+                  hide() // 闅愯棌鍔犺浇鎻愮ず
+                  that.$message.error('鎻愪氦澶辫触: ' + error.message)
+               }).finally(() => {
+                  that.loading = false
+               })
+            }
+         })
+      }
    }
 }
 </script>
diff --git a/src/views/mes/modules/MesMaterialTransferRequestForm.vue b/src/views/mes/modules/MesMaterialTransferRequestForm.vue
index 5881aca..d7cd62c 100644
--- a/src/views/mes/modules/MesMaterialTransferRequestForm.vue
+++ b/src/views/mes/modules/MesMaterialTransferRequestForm.vue
@@ -42,11 +42,9 @@
           </a-col>
           <a-col :span="12">
             <a-form-model-item label="鎷夊姩鐗╂枡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber">
-              <a-select v-model="model.materialNumber" placeholder="璇烽�夋嫨鎷夊姩鐗╂枡" @change="handleMaterialNumberChange">
-                <a-select-option v-for="item in materialList" :value="item.materialNumber" :title="item.materialName" :key="item.materialNumber">
-                  {{ item.materialName }}
-                </a-select-option>
-              </a-select>
+              <j-search-select-tag v-model="model.materialNumber" placeholder="璇烽�夋嫨鎷夊姩鐗╂枡"
+                                   :dict-options="materialList" @change="handleMaterialNumberChange">
+              </j-search-select-tag>
             </a-form-model-item>
           </a-col>
           <a-col :span="12">
@@ -118,7 +116,7 @@
         workOrderQuery: '/mes/mesProductionWorkOrder/queryById'
       },
       materialList: [], //鐗╂枡鍒楄〃
-      workOrderObj: {}, //宸ュ崟瀵硅薄
+      workOrderObj: {} //宸ュ崟瀵硅薄
     }
   },
   computed: {
@@ -140,17 +138,21 @@
       this.model.workOrderCode = this.model.workOrderId_dictText
       this.visible = true
       if (this.model.workOrderId) {
-        this.editable = true;
+        this.editable = true
         let workOrderRes = await this.loadProductionWorkOrder(this.model.workOrderId)
-        if(!workOrderRes.success || !workOrderRes.result) {
-          return;
+        if (!workOrderRes.success || !workOrderRes.result) {
+          return
         }
         //鎺掍骇宸ュ崟璧嬪��
-        this.workOrderObj = Object.assign({}, workOrderRes.result);
+        this.workOrderObj = Object.assign({}, workOrderRes.result)
         //鐗╂枡鍒楄〃
         let materialListRes = await this.loadMaterialList(workOrderRes.result.materialNumber)
         if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) {
-          this.materialList = [...materialListRes.result]
+          this.materialList = materialListRes.result.map(item => ({
+            ...item,
+            value: item.materialNumber,
+            text: item.materialName
+          }))
         } else {
           this.materialList = []
         }
@@ -163,24 +165,28 @@
           this.model.targetWarehouseId = undefined
           this.model.warehouseName = ''
         }
-      }else {
-        this.editable = false;
+      } else {
+        this.editable = false
       }
     },
     async selectConfirm(rows) {
       if (rows && rows.length > 0) {
         //娓呯┖鍏宠仈鏁版嵁
-        this.model.materialNumber = undefined;
-        this.model.materialName = '';
-        this.model.specifiedQuantity = 0;
+        this.model.materialNumber = undefined
+        this.model.materialName = ''
+        this.model.specifiedQuantity = 0
         //璧嬪�兼柊鐨勬暟鎹�
         this.model.workOrderId = rows[0].id
         this.model.workOrderCode = rows[0].workOrderCode
         //鎺掍骇宸ュ崟璧嬪��
-        this.workOrderObj = Object.assign({}, rows[0]);
+        this.workOrderObj = Object.assign({}, rows[0])
         let materialListRes = await this.loadMaterialList(rows[0].materialNumber)
         if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) {
-          this.materialList = [...materialListRes.result]
+          this.materialList = materialListRes.result.map(item => ({
+            ...item,
+            value: item.materialNumber,
+            text: item.materialName
+          }))
         } else {
           this.materialList = []
         }
@@ -194,13 +200,13 @@
         }
       } else {
         //娓呯┖鍏宠仈鏁版嵁
-        this.model.materialNumber = undefined;
-        this.model.materialName = '';
-        this.model.specifiedQuantity = 0;
+        this.model.materialNumber = undefined
+        this.model.materialName = ''
+        this.model.specifiedQuantity = 0
         this.materialList = []
         this.model.targetWarehouseId = undefined
         this.model.warehouseName = ''
-        this.workOrderObj = {};
+        this.workOrderObj = {}
       }
     },
     submitForm() {
diff --git a/src/views/mes/modules/WorkOrderSelectModal.vue b/src/views/mes/modules/WorkOrderSelectModal.vue
index 1c9abf0..cf4c755 100644
--- a/src/views/mes/modules/WorkOrderSelectModal.vue
+++ b/src/views/mes/modules/WorkOrderSelectModal.vue
@@ -70,7 +70,7 @@
         workOrderStatus: this.orderStatus,
       },
       url: {
-        list: "/mes/mesProductionWorkOrder/list"
+        list: "/mes/mesProductionWorkOrder/queryWorkOrderByTransfer"
       },
       columns: [
         {

--
Gitblit v1.9.3