Browse Source

feat: 对接创建工单和保存工单

linwenxin 1 năm trước cách đây
mục cha
commit
221916d174

+ 12 - 1
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/buttons/commitSave.vue

@@ -17,7 +17,18 @@ export default {
       this.acquireVerify(this, 'allVerify')((v) => {
         if (v) {
           orderBaseSave(this.orderInfo).then(res => {
-            EventBus.$emit('handleOrderClone')
+            if (this.orderInfo.id) {
+              // 编辑保存后不跳转列表,刷新数据
+              this.acquireVerify(this, 'getorderDetail')(() => {
+                this.$message({
+                  type: 'success',
+                  message: '保存成功'
+                })
+              })
+            } else {
+              // 创建保存后跳转列表
+              EventBus.$emit('handleOrderClone')
+            }
           })
         }
       })

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

@@ -3,7 +3,7 @@
     <zj-page-fill class="neibuview">
       <zj-form-container ref="formRef" :form-data="orderInfo" :form-rules="formRules" :form-attributes="{ size: 'mini' }">
         <!-- 派工信息 创建不需要 -->
-        <zj-form-module v-if="id" title="派工信息" label-width="68px" :form-data="orderInfo" :form-items="dispatchInfo">
+        <zj-form-module v-if="id" title="派工信息" label-width="90px" :form-data="orderInfo" :form-items="dispatchInfo">
           <div slot="internal-bottom">
             <copy-info text="复制工单信息" :info="dispatchInfo" :order-info="orderInfo" />
           </div>
@@ -34,7 +34,7 @@
         <!-- 关闭 -->
         <close-button />
         <!-- 1,保存  -->
-        <commitSave :orderInfo="orderInfo" :orderType="orderType"/>
+        <commitSave v-if="~btnRestrict.indexOf(1)" :orderInfo="orderInfo" :orderType="orderType" />
         <!-- 2,过程反馈  -->
         <!-- 3,设为异常  -->
         <!-- 4,加急  -->
@@ -46,7 +46,8 @@
       <div style="box-sizing: border-box;padding: 10px 10px 0;" v-else>
         <!-- 关闭 -->
         <close-button />
-        <commitSave :orderInfo="orderInfo" :orderType="orderType"/>
+        <!-- 1,下派服务单  -->
+        <commitSave :orderInfo="orderInfo" :orderType="orderType" />
       </div>
     </div>
   </zj-page-container>

+ 19 - 22
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/basicInfo.js

@@ -158,55 +158,52 @@ export default {
           name: 'slot-component',
           md: 2,
           formItemAttributes: {
-            'label-width': '0px'
+            'label-width': '0px',
+            prop: 'gpsAddress',
+            rules: this.formOptions.gpsAddress.isRules,
+            errLabel: 'GPS地址'
           },
           render: (h, { props }) => {
-            var { formData } = props
             return (
               <geographicalPosi
                 disabled={!this.formOptions.gpsAddress.isEdit}
-                formData={formData}
+                formData={this.orderInfo}
                 onSelectPosi={data => {
                   // 获取经纬度
-                  formData.lng = data.center[0]
-                  formData.lat = data.center[1]
+                  this.orderInfo.lng = data.center[0]
+                  this.orderInfo.lat = data.center[1]
                   // 获取定位的省市区街道
                   var { province, city, district, township } = data.data.addressComponent
-                  console.log(province, city, district, township)
                   // 获取选中省名称id
                   var { id, name } = this.provinceList.find(item => item.name === province)
-                  formData.provinceId = id
-                  formData.province = name
+                  this.orderInfo.provinceId = id
+                  this.orderInfo.province = name
                   // 请求市选项
-                  lbsAmapRegion({ pid: formData.provinceId }).then(res => {
+                  lbsAmapRegion({ pid: this.orderInfo.provinceId }).then(res => {
                     // 赋值市选项
                     this.cityList = res.data
                     // 获取选中市名称id
                     var { id, name } = res.data.find(item => item.name === city)
-                    formData.cityId = id
-                    formData.city = name
+                    this.orderInfo.cityId = id
+                    this.orderInfo.city = name
                     // 请求区选项
-                    lbsAmapRegion({ pid: formData.cityId }).then(res => {
+                    lbsAmapRegion({ pid: this.orderInfo.cityId }).then(res => {
                       // 赋值区选项
                       this.areaList = res.data
                       // 获取选中区名称id
                       var { id, name } = res.data.find(item => item.name === district)
-                      formData.areaId = id
-                      formData.area = name
+                      this.orderInfo.areaId = id
+                      this.orderInfo.area = name
                       // 请求街道选项
-                      lbsAmapRegion({ pid: formData.areaId }).then(res => {
+                      lbsAmapRegion({ pid: this.orderInfo.areaId }).then(res => {
                         // 赋值街道选项
                         this.streetList = res.data
                         // 获取选中街道名称id
                         var { id, name } = res.data.find(item => item.name === township)
-                        formData.streetId = id
-                        formData.street = name
+                        this.orderInfo.streetId = id
+                        this.orderInfo.street = name
                         // 赋值GPS详细地址
-                        formData.gpsAddress = data.name
-                        // 如果手动填写详细地址没有值时,赋值GPS地址
-                        if (!formData.address) {
-                          // formData.address = data.name
-                        }
+                        this.orderInfo.gpsAddress = data.name
                       })
                     })
                   })

+ 34 - 3
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/dispatchInfo.js

@@ -60,12 +60,12 @@ export default {
           name: 'slot-component',
           md: 24,
           attributes: { disabled: true, placeholder: '请输入' },
-          formItemAttributes: { label: '网点信息', prop: 'createWebsitName' },
+          formItemAttributes: { label: '网点信息', prop: 'websitName' },
           render: (h, { props, onInput }) => {
             var { formData } = props
             return (
               <el-input
-                value={`${formData.createWebsitId || ''}-${formData.createWebsitName || ''}`}
+                value={`${formData.websitName || ''}-${formData.websitId || ''}`}
                 disabled={true}
                 size="mini"
                 placeholder="请输入"
@@ -73,7 +73,7 @@ export default {
             )
           },
           getValue: () => {
-            return `${this.orderInfo.createWebsitName}  ${this.orderInfo.createWebsitId}`
+            return `${this.orderInfo.websitName}  ${this.orderInfo.websitId}`
           }
         },
         {
@@ -100,6 +100,37 @@ export default {
           attributes: { disabled: true, placeholder: '请输入' },
           formItemAttributes: { label: '接单时间', prop: 'workerReceTime' }
         },
+        ...(() => {
+          var list = [];
+          (this.orderInfo.orderWorkers_cp || []).map(item => {
+            list.push({
+              name: 'slot-component',
+              md: 12,
+              formItemAttributes: { label: item.isMaster == '1' ? '主要工程师' : item.isMaster == '0' ? '辅助工程师' : '', prop: '' },
+              render: (h, { props, onInput }) => {
+                return (
+                  <el-input value={item.workerName} disabled={true} size="mini" ></el-input>
+                )
+              },
+              getValue: () => {
+                return item.workerName
+              }
+            }, {
+              name: 'slot-component',
+              md: 12,
+              formItemAttributes: { label: '手机号', prop: '' },
+              render: (h, { props, onInput }) => {
+                return (
+                  <el-input value={item.workerMobile} disabled={true} size="mini" ></el-input>
+                )
+              },
+              getValue: () => {
+                return item.workerMobile
+              }
+            })
+          })
+          return list
+        })()
       ]
     }
   },

+ 13 - 10
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/pandanxinxi.js

@@ -213,17 +213,20 @@ export default {
     getWorkers() {
       if (this.orderInfo.websitId) {
         memberListPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "b.examine_status", "compare": "=", "value": "OK" }, { "param": "b.websit_id", "compare": "=", "value": this.orderInfo.websitId }] }).then(res => {
-          this.workerList = res.data.records.map(item => ({
-            value: item.id,
-            label: item.nickName,
-            data: {
-              workerId: item.id,
-              workerName: item.nickName,
-              workerIdcard: item.idCard,
-              workerMobile: item.mobile,
-              ...item
+          this.workerList = res.data.records.map(item => {
+            var { id, ...data } = item
+            return {
+              value: id,
+              label: data.nickName,
+              data: {
+                workerId: id,
+                workerName: data.nickName,
+                workerIdcard: data.idCard,
+                workerMobile: data.mobile,
+                ...data
+              }
             }
-          }))
+          })
         })
       }
     }

+ 11 - 11
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/productColumns.js

@@ -21,7 +21,7 @@ export default {
           },
           render: (h, { row, column, index }) => {
             return this.isEditIndex == index ? <div class="redbordererr">
-              <el-form-item label="" lebel-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
+              <el-form-item label="" label-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
                 <el-select
                   disabled={!this.formOptions.orderProducts.isEdit}
                   value={row[column.columnAttributes.prop]}
@@ -48,7 +48,7 @@ export default {
           },
           render: (h, { row, column, index }) => {
             return this.isEditIndex == index ? <div class="redbordererr">
-              <el-form-item label="" lebel-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
+              <el-form-item label="" label-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
                 <el-select
                   disabled={!this.formOptions.orderProducts.isEdit}
                   value={row[column.columnAttributes.prop]}
@@ -77,7 +77,7 @@ export default {
           },
           render: (h, { row, column, index }) => {
             return this.isEditIndex == index ? <div class="redbordererr">
-              <el-form-item label="" lebel-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
+              <el-form-item label="" label-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
                 <el-select
                   disabled={!this.formOptions.orderProducts.isEdit}
                   value={row[column.columnAttributes.prop]}
@@ -104,7 +104,7 @@ export default {
           },
           render: (h, { row, column, index }) => {
             return this.isEditIndex == index ? <div class="redbordererr">
-              <el-form-item label="" lebel-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
+              <el-form-item label="" label-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
                 <el-input
                   disabled={!this.formOptions.orderProducts.isEdit}
                   value={row[column.columnAttributes.prop]}
@@ -123,7 +123,7 @@ export default {
           },
           render: (h, { row, column, index }) => {
             return this.isEditIndex == index ? <div class="redbordererr">
-              <el-form-item label="" lebel-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
+              <el-form-item label="" label-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
                 <el-input
                   disabled={!this.formOptions.orderProducts.isEdit}
                   value={row[column.columnAttributes.prop]}
@@ -142,7 +142,7 @@ export default {
           },
           render: (h, { row, column, index }) => {
             return this.isEditIndex == index ? <div class="redbordererr">
-              <el-form-item label="" lebel-width="0px" prop={`orderProducts.${index}.${column.columnAttributes.prop}`}>
+              <el-form-item label="" label-width="0px">
                 <el-input
                   disabled={!this.formOptions.orderProducts.isEdit}
                   value={row[column.columnAttributes.prop]}
@@ -163,11 +163,11 @@ export default {
                 },
                 render: (h, { row, column, index }) => {
                   return <div style="padding-left:10px">
-                    <el-button type="text" onClick={()=>{
-                      this.delProduct(row.index)
+                    <el-button type="text" onClick={() => {
+                      this.delProduct(row, index)
                     }}>删除</el-button>
-                    {this.isEditIndex == index && <el-button type="text" onClick={()=>{
-                      this.eidtProduct(row.index)
+                    {this.isEditIndex == index && <el-button type="text" onClick={() => {
+                      this.eidtProduct(row, index)
                     }}>确定</el-button>}
                     {this.isEditIndex == -1 && <el-button type="text" onClick={() => {
                       this.isEditIndex = index
@@ -209,7 +209,7 @@ export default {
                         "mainId": "",
                         "mainName": "",
                         "num": "",
-                        "orderBaseId": "",
+                        "orderBaseId": this.id || '',
                         "productId": "",
                         "productName": "",
                         "remark": "",

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

@@ -4,7 +4,7 @@ import { getDataDictionary } from '@/api/dataDictionary.js'
 export default {
   data() {
     return {
-      orderTypeData: [],
+      orderSmallTypeData: [],
       orderChannels: []
     }
   },
@@ -12,42 +12,42 @@ export default {
     serviceInfo() {
       return [
         {
-          isShow: this.formOptions.orderType.isShow && !this.id,
+          isShow: this.formOptions.orderSmallType.isShow && !this.id,
           name: 'el-select',
           md: 6,
-          options: this.orderTypeData,
+          options: this.orderSmallTypeData,
           attributes: {
-            disabled: !this.formOptions.orderType.isEdit,
+            disabled: !this.formOptions.orderSmallType.isEdit,
             placeholder: '请选择',
             clearable: true,
             filterable: true
           },
           formItemAttributes: {
             label: '工单类型',
-            prop: 'orderType',
-            rules: this.formOptions.orderType.isRules
+            prop: 'orderSmallType',
+            rules: this.formOptions.orderSmallType.isRules
           },
           events: {
             change: (val) => {
               if (val) {
-                this.orderInfo.orderTypeText = this.orderTypeData.find(item => item.value == val).label
+                this.orderInfo.orderSmallTypeText = this.orderSmallTypeData.find(item => item.value == val).label
               } else {
-                this.orderInfo.orderTypeText = ''
+                this.orderInfo.orderSmallTypeText = ''
               }
             }
           }
         },
         {
-          isShow: this.formOptions.orderType.isShow && this.id,
+          isShow: this.formOptions.orderSmallType.isShow && this.id,
           name: 'el-input',
           md: 6,
           attributes: {
-            disabled: !this.formOptions.orderType.isEdit,
+            disabled: !this.formOptions.orderSmallType.isEdit,
           },
           formItemAttributes: {
             label: '工单类型',
-            prop: 'orderTypeText',
-            rules: this.formOptions.orderType.isRules
+            prop: 'orderSmallTypeText',
+            rules: this.formOptions.orderSmallType.isRules
           }
         },
         {
@@ -128,7 +128,7 @@ export default {
   created() {
     // 获取工单类型
     listPageV2({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "true" }] }).then(res => {
-      this.orderTypeData = res.data.records.map(item => ({
+      this.orderSmallTypeData = res.data.records.map(item => ({
         value: item.id,
         label: item.orderSmallTypeText
       }))

+ 18 - 11
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/workOrderLogic.js

@@ -10,17 +10,25 @@ var initdata_ = {
   userMobile: "",
   // 客户电话2
   userMobile2: "",
+  // 省
+  provinceId: "",
+  // 市
+  cityId: "",
+  // 区
+  areaId: "",
+  // 街道
+  streetId: "",
   // gps地址
   gpsAddress: "",
   // 详细地址
   address: "",
   // 服务信息--------------------------------
   // 工单类型
-  orderType: "",
-  // 预约上门日期
-  appointmentTime: "",
+  orderSmallType: "",
   // 工单渠道
   orderChannelId: "",
+  // 预约上门日期
+  appointmentTime: "",
   // 销售单位
   saleCompany: "",
   // 产品信息------------------------
@@ -34,7 +42,8 @@ var initdata_ = {
   // 主要工程师id
   workerId: "",
   // 工程师列表
-  orderWorkers: []
+  orderWorkers: [],
+  orderWorkers_cp:[]
 }
 
 export default {
@@ -42,7 +51,6 @@ export default {
     id: {
       type: [String, Number],
       default: null,
-
     }
   },
   data() {
@@ -51,9 +59,6 @@ export default {
     }
   },
   watch: {
-    orderType(newVal, oldVal) {
-      this.$emit('updateOrderType', newVal)
-    },
     id: {
       handler(newVal, oldVal) {
         this.getorderDetail((data) => {
@@ -68,7 +73,7 @@ export default {
       },
       deep: true,
       immediate: true,
-    }
+    },
   },
   computed: {
     // 用户信息
@@ -152,7 +157,7 @@ export default {
         },
         // 服务信息--------------------------------
         // 工单类型
-        orderType: {
+        orderSmallType: {
           isEdit: this.id ? false : true,
           isShow: true,
           isRules: [...required]
@@ -226,10 +231,12 @@ export default {
           .then(([res, res1]) => {
             this.orderInfo = {
               ...res.data,
+              orderWorkers_cp: [...(res.data.orderWorkers||[]).map(item=>({...item}))],
               orderProducts: res1.data || [],
-              workerId_fz: ""
+              workerId_fz: "",
             }
             cb && cb(this.orderInfo)
+            console.log(this.orderInfo)
           })
       } else {
         // 创建工单

+ 3 - 3
src/views/workOrder/workOrderPool/index.vue

@@ -69,7 +69,7 @@ export default {
       return [
         {
           name: '工单类型',
-          key: 'orderType',
+          key: 'orderSmallType',
           value: '',
           conditions: [{
             label: "全部",
@@ -199,8 +199,8 @@ export default {
         if (pam.orderStatus) {
           pam.params.push({ "param": "a.order_status", "compare": "=", "value": pam.orderStatus })
         }
-        if (pam.orderType) {
-          pam.params.push({ "param": "a.order_type", "compare": "=", "value": pam.orderType })
+        if (pam.orderSmallType) {
+          pam.params.push({ "param": "a.order_small_type", "compare": "=", "value": pam.orderSmallType })
         }
         cb && cb(pam)
         return orderBaseList(pam)