Bläddra i källkod

Merge branch 'linwenxin_dev' of https://gogs.zfire.top/zfire-front/zfire-newmall-admin

linwenxin 1 år sedan
förälder
incheckning
624ac9042a

+ 55 - 0
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/buttons/cloneWorkOrder.vue

@@ -0,0 +1,55 @@
+<template>
+  <div class="withinLine">
+    <el-button type="primary" :disabled="disabled" size="mini" @click="save">
+      创建服务单
+    </el-button>
+  </div>
+</template>
+
+<script>
+import buttonMixin from './button_mixin.js'
+import { EventBus } from '@/utils/eventBus'
+export default {
+  mixins: [buttonMixin],
+  methods: {
+    save() {
+      EventBus.$emit('cloneWorkOrder', {...this.removeFields(JSON.parse(JSON.stringify(this.orderInfo)), ["id","createBy","createDate","updateBy","updateTime","orderStatus","orderFlags","orderBaseId","orderWorkers","orderWorkers_cp",,"workerId","workerIdList","workerId_fz","workerIdcard","workerMobile","workerName","workerReceTime","workerRemark"]),orderWorkers:[]})
+    },
+    removeFields(jsonData, fieldsToRemove) {
+        if (typeof jsonData !== 'object' || jsonData === null) {
+            // 如果传入的不是对象,则直接返回
+            return jsonData;
+        } else if (Array.isArray(jsonData)) {
+            // 如果是数组,则递归处理每个元素
+            return jsonData.map(item => this.removeFields(item, fieldsToRemove));
+        } else {
+            // 如果是对象,则遍历键值对
+            for (var key in jsonData) {
+                if (jsonData.hasOwnProperty(key)) {
+                    if (fieldsToRemove.includes(key)) {
+                        // 如果字段名在指定的要删除的字段数组中,则删除该字段
+                        delete jsonData[key];
+                    } else {
+                        // 否则递归处理字段值
+                        jsonData[key] = this.removeFields(jsonData[key], fieldsToRemove);
+                    }
+                }
+            }
+            return jsonData;
+        }
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.withinLine {
+  display: inline-block;
+
+  ::v-deep .el-button {
+    margin-left: 0;
+    margin-right: 10px;
+    margin-bottom: 10px;
+  }
+}
+</style>

+ 4 - 1
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/index.vue

@@ -52,6 +52,7 @@
         <orderReject v-if="~btnRestrict.indexOf(9)" :orderInfo="orderInfo" :orderType="orderType" />
         <!-- 10,激活工单 -->
         <activateOrder v-if="~btnRestrict.indexOf(10)" :orderInfo="orderInfo" :orderType="orderType" />
+        <cloneWorkOrderBtn :orderInfo="orderInfo" :orderType="orderType"/>
       </div>
       <div style="box-sizing: border-box; padding: 10px 10px 0" v-else>
         <!-- 关闭 -->
@@ -78,6 +79,7 @@ import commitSave from './buttons/commitSave.vue'
 import urgent from './buttons/urgent.vue'
 import unurgent from './buttons/unurgent.vue'
 import abnormal from './buttons/abnormal.vue'
+import cloneWorkOrderBtn from './buttons/cloneWorkOrder.vue'
 import processFeedback from './buttons/processFeedback.vue'
 import cancelOrder from './buttons/cancelOrder.vue'
 import orderReject from './buttons/orderReject.vue'
@@ -94,7 +96,8 @@ export default {
     processFeedback,
     cancelOrder,
     orderReject,
-    activateOrder
+    activateOrder,
+    cloneWorkOrderBtn
   },
   mixins: [
     workOrderLogic,

+ 13 - 1
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/workOrderLogic.js

@@ -64,6 +64,10 @@ export default {
       type: Number,
       default: 1, // 1普通工单, 4维保工单
     },
+    cloneWorkOrder: {
+      type: Object,
+      default: null,
+    },
   },
   data() {
     return {
@@ -278,6 +282,7 @@ export default {
   methods: {
     // 获取工单详情
     getorderDetail(cb) {
+      console.log(this.cloneWorkOrder,"oooo")
       if (this.id) {
         // 编辑详情
         Promise.all([
@@ -296,8 +301,15 @@ export default {
               workerId_fz: "",
             }
             cb && cb(this.orderInfo)
-            console.log(this.orderInfo)
           })
+      } if(this.cloneWorkOrder){
+       
+        // 创建工单
+        this.orderInfo = Object.assign({}, JSON.parse(JSON.stringify(this.cloneWorkOrder)), {
+          saleType: this?.workOrderType,
+          workerId_fz: ""
+        })
+        cb && cb(this.orderInfo)
       } else {
         // 创建工单
         this.orderInfo = Object.assign({}, JSON.parse(JSON.stringify(initdata_)), {

+ 20 - 4
src/views/workOrder/workOrderPool/index.vue

@@ -7,7 +7,7 @@
     <!-- 创建工单 -->
     <div class="cartographer_big">
       <el-dialog title="创建工单" width="100%" :modal="false" :visible.sync="createFormBool" :before-close="handleClose">
-        <workOrderInfo :workOrderType="workOrderType" v-if="createFormBool" />
+        <workOrderInfo :workOrderType="workOrderType" v-if="createFormBool" :cloneWorkOrder="cloneWorkOrder"/>
       </el-dialog>
     </div>
     <!-- 工单详情 -->
@@ -80,7 +80,8 @@ export default {
       orderTypeList: [],
       orderStatusList: [],
       defaultSearchData: [],
-      workOrderType: 1
+      workOrderType: 1,
+      cloneWorkOrder: null
     }
   },
   computed: {
@@ -199,6 +200,17 @@ export default {
     EventBus.$on('handleOrderClone', () => {
       this.handleClose()
     })
+    EventBus.$on('cloneWorkOrder', (data) => {
+      this.handleClose(()=>{
+        console.log(data,"999999999")
+        this.cloneWorkOrder = data
+        this.workOrderType = data.saleType
+        this.createFormBool = false
+        this.$nextTick(() => {
+          this.createFormBool = true
+        })
+      })
+    })
     // 获取工单类型
     listPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "true" }] }).then(res => {
       this.orderTypeList = res.data.records.map(item => ({
@@ -335,7 +347,7 @@ export default {
         edit: {
           click: ({ row, index, column }) => {
             this.id = row.id
-            this.workOrderType = Number(Object.entries(row.selectMapData.saleType).find(([key, val]) => val == row.saleType)?.[0] || 1)
+            this.workOrderType = Number(Object.entries(row?.selectMapData?.saleType||{}).find(([key, val]) => val == row.saleType)?.[0] || 1)
             this.$nextTick(() => {
               this.detailFormBool = true
             })
@@ -344,17 +356,21 @@ export default {
       })
     },
 
-    handleClose() {
+    handleClose(cb) {
       this.$router.push({
         name: "workOrderPool",
         params: {},
         query: {}
       })
       this.$nextTick(() => {
+        this.cloneWorkOrder = null
         this.createFormBool = false
         this.detailFormBool = false
         this.recordSelected = []
         this.$refs?.pageRef?.refreshList()
+        if(cb && typeof cb === 'function'){
+          cb()
+        }
       })
     },