浏览代码

Merge branch 'linwenxin_workOrder' of ssh://gogs.zfire.top:2222/zfire-front/zfire-newmall-admin into develop

linwenxin 1 年之前
父节点
当前提交
07338b63d7
共有 26 个文件被更改,包括 868 次插入96 次删除
  1. 1 1
      .env.development
  2. 1 1
      .env.production
  3. 3 3
      package-lock.json
  4. 1 1
      package.json
  5. 17 0
      src/api/workOrderPool.js
  6. 30 0
      src/api/workerProfileInit.js
  7. 337 10
      src/components/Shortcut/index.vue
  8. 7 7
      src/components/file-upload/index.vue
  9. 1 1
      src/components/v-quill-editor/index.vue
  10. 14 0
      src/utils/common.js
  11. 1 1
      src/views/mallManagement/goods/watermark/index.vue
  12. 6 4
      src/views/setting/notification/announcement/index.vue
  13. 40 0
      src/views/setting/organizationManagement/settledManagement/index.vue
  14. 53 1
      src/views/setting/organizationManagement/tenantDetails/index.vue
  15. 157 0
      src/views/userManagement/workerProfileInit/index.vue
  16. 30 1
      src/views/workOrder/appraise/index.vue
  17. 2 1
      src/views/workOrder/basicConfiguration/settlementStandard/components/install.vue
  18. 2 1
      src/views/workOrder/basicConfiguration/settlementStandard/components/other.vue
  19. 2 1
      src/views/workOrder/basicConfiguration/settlementStandard/components/repair.vue
  20. 48 8
      src/views/workOrder/orderHome/index.vue
  21. 3 3
      src/views/workOrder/settleAccountsManagement/summaryBill/detailList.vue
  22. 5 1
      src/views/workOrder/settleAccountsManagement/summaryBill/index.vue
  23. 13 3
      src/views/workOrder/workOrderPool/detailModule/CompletionDetails/index.vue
  24. 79 46
      src/views/workOrder/workOrderPool/detailModule/SettleAccounts/index.vue
  25. 5 0
      src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/basicInfo.js
  26. 10 1
      src/views/workOrder/workOrderPool/index.vue

+ 1 - 1
.env.development

@@ -4,7 +4,7 @@ ENV = 'development'
 VUE_APP_BASE = 'https://jiasm.zfire.top'
 # base api
 
-VUE_APP_BASE_OSS = 'https://jiasm.zfire.top/zfapi/img/get?key='
+VUE_APP_BASE_OSS = 'https://train-2023.oss-cn-shenzhen.aliyuncs.com/'
 
 VUE_APP_BASE_API = 'https://jiasm.zfire.top/zfapi/'
 

+ 1 - 1
.env.production

@@ -7,7 +7,7 @@ VUE_APP_ENV = 'production'
 #base
 VUE_APP_BASE = 'https://sxb.zfire.top'
 
-VUE_APP_BASE_OSS = 'https://sxb.zfire.top/zfapi/img/get?key='
+VUE_APP_BASE_OSS = 'https://zf-mall.oss-cn-shenzhen.aliyuncs.com/'
 
 # base api
 VUE_APP_BASE_API = 'https://sxb.zfire.top/zfapi/'

+ 3 - 3
package-lock.json

@@ -4712,9 +4712,9 @@
       "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
     },
     "@zjlib/element-plugins": {
-      "version": "2.13.6",
-      "resolved": "http://121.41.110.30:4873/@zjlib%2felement-plugins/-/element-plugins-2.13.6.tgz",
-      "integrity": "sha512-R5J+InHlzrwtIxNEDHpk4sdjOIjKjYGcwPZ12SUorkSTHkZFZccwj/rp3kz6yLx/b9/OkklkgXmQM194MzH9Lw==",
+      "version": "2.13.8",
+      "resolved": "http://121.41.110.30:4873/@zjlib%2felement-plugins/-/element-plugins-2.13.8.tgz",
+      "integrity": "sha512-I9/yswo9fRxe9NoCB9tl6NmcaLEJUGsc+MPemUlph3wj8WbTYplGvRuQlY/9ZaVjPWbLjbUyqusf//dE/tIp2g==",
       "requires": {
         "@turf/turf": "^6.5.0",
         "@vuemap/vue-amap": "^0.1.12",

+ 1 - 1
package.json

@@ -18,7 +18,7 @@
     "@turf/turf": "^6.5.0",
     "@vue-office/excel": "^1.3.0",
     "@vue/composition-api": "^1.7.1",
-    "@zjlib/element-plugins": "^2.13.6",
+    "@zjlib/element-plugins": "^2.13.8",
     "@zjlib/element-ui2": "^1.0.3",
     "axios": "0.18.1",
     "chatgpt": "^4.1.2",

+ 17 - 0
src/api/workOrderPool.js

@@ -168,3 +168,20 @@ export function orderBaseDetail(params) {
   })
 }
 
+export function settleNormInstallQuery(params) {
+  return request({
+    url: `/settle/norm/install/query`,
+    method: 'post',
+    params
+  })
+}
+
+export function settleNormOtherQuery(params) {
+  return request({
+    url: `/settle/norm/other/query`,
+    method: 'post',
+    params
+  })
+}
+
+

+ 30 - 0
src/api/workerProfileInit.js

@@ -0,0 +1,30 @@
+import request, { postBlob, getBlob, handleImport } from '@/utils/request'
+
+export function listPageV2(data) {
+  return request({
+    url: `/member/list/wait2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//导出
+export function pageExport(data, name) {
+  return postBlob({
+    url: '/member/list/pageExport',
+    data,
+    name
+  })
+}
+
+export function del(params) {
+  return request({
+    url: `/member/list/wait2/del`,
+    method: 'post',
+    params
+  })
+}
+
+export function listImport(data) {
+	return handleImport('/member/list/wait2/import', data.formdata, data.id || '')
+}

+ 337 - 10
src/components/Shortcut/index.vue

@@ -4,6 +4,26 @@
       <i class="el-icon-message-solid" style="font-size: 24px; line-height: 50px" />
       <el-badge v-if='allUnreadNum > 0' class="mark" :value="allUnreadNum" />
     </div> -->
+    <!-- <el-dropdown class="user-container yidong">
+      <div class="user right-menu-item hover-effect">
+        <span>移动端</span>
+      </div>
+      <el-dropdown-menu slot="dropdown" class="user-dropdown">
+        <el-dropdown-item disabled v-for="(item, index) in QRcodeList" :key="index">
+          <div class="QRcode">
+            <el-image class="QRcode-img" :src="item.codeUrl" :preview-src-list="[item.codeUrl]" fit="fill"></el-image>
+            <div>
+              <div>{{ item.name }}</div>
+              <div class="liveTitle">{{ item.saleName }}</div>
+              <div>
+                <el-image v-if="item.iosIcon" class="shouji-icon" :src="item.iosIcon" fit="fill"></el-image>
+                <el-image v-if="item.androidIcon" class="shouji-icon" :src="item.androidIcon" fit="fill"></el-image>
+              </div>
+            </div>
+          </div>
+        </el-dropdown-item>
+      </el-dropdown-menu>
+    </el-dropdown> -->
     <el-drawer size="450px" :with-header="false" :show-close="false" :visible.sync="drawer" direction="rtl"
       :modal="false">
       <div class="drawer">
@@ -21,7 +41,8 @@
               <el-button :type="pam.read_flag == '' ? 'primary' : null" size="mini" @click="hadleRead(0)">全部</el-button>
               <el-button :type="pam.read_flag == 'NO' ? 'primary' : null" size="mini" @click="hadleRead(1)">未读</el-button>
               <el-badge :value="allUnreadNum" class="item" />
-              <el-button :type="pam.read_flag == 'YES' ? 'primary' : null" size="mini" @click="hadleRead(2)">已读</el-button>
+              <el-button :type="pam.read_flag == 'YES' ? 'primary' : null" size="mini"
+                @click="hadleRead(2)">已读</el-button>
             </div>
             <el-tabs v-model="pam.type" @tab-click="handleClick">
               <el-tab-pane label="通知" name="N"></el-tab-pane>
@@ -76,12 +97,19 @@ export default {
       total: 0,
       pam: {
         type: "N",
-        read_flag:"",
+        read_flag: "",
         pageNum: 1,
         pageSize: 20,
       },
       dialogVisible: false,
       showRow: {},
+      QRcodeList: [{
+        codeUrl: "https://fw.gd-jxm.com/gateway/pcapi/img/get?key=2023-10/16976800457215fe3d109-e0ae-485d-8b23-8e16d36885e9.jpg",
+        name: "aaaaa",
+        saleName: "",
+        iosIcon: "https://fw.gd-jxm.com/gateway/pcapi/img/get?key=2023-10/16976801488369080b52c-a1e6-40a0-83f9-8e04f12b494e.jpg",
+        androidIcon: "https://fw.gd-jxm.com/gateway/pcapi/img/get?key=2023-10/1697680143828d678a6e5-307d-47d0-8ee9-1698f100feb4.jpg"
+      }]
     }
   },
   computed: {
@@ -90,17 +118,17 @@ export default {
   mounted() {
     EventBus.$on('opendomview', this.opendomview)
     EventBus.$on('handleDrawerabcde', this.handleDrawer)
-    var this_ = this 
-    if(this.timeId){
+    var this_ = this
+    if (this.timeId) {
       clearTimeout(this.timeId)
     }
-    (function dingshiqingqiu (){
+    (function dingshiqingqiu() {
       this_.updateUnreadNotice()
       this_.timeId = setTimeout(dingshiqingqiu, 2000);
     })()
   },
-  beforeDestroy(){
-    if(this.timeId){
+  beforeDestroy() {
+    if (this.timeId) {
       clearTimeout(this.timeId)
     }
   },
@@ -119,7 +147,7 @@ export default {
     ...mapActions({
       updateUnreadNotice: 'app/getUnreadNum'
     }),
-    handleClick(val){
+    handleClick(val) {
       console.log(val)
     },
     opendomview(row) {
@@ -456,7 +484,8 @@ export default {
     white-space: nowrap;
     font-size: 16px;
     flex-wrap: 500;
-    .item-time{
+
+    .item-time {
       font-size: 12px;
       color: #aaa;
       margin-top: 5px;
@@ -468,4 +497,302 @@ export default {
     background: #e8fffb;
   }
 }
-</style>
+
+
+
+
+ul {
+  list-style: none;
+  padding: 0;
+  line-height: 20px;
+
+  li {
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+  }
+}
+
+.right-menu {
+  height: 100%;
+  line-height: 50px;
+
+  &>div {
+    float: left;
+  }
+
+  &:focus {
+    outline: none;
+  }
+
+  .user-container {
+    height: 50px;
+
+    .user {
+      i {
+        font-size: 18px;
+        margin-right: 5px;
+      }
+
+      span {
+        font-size: 16px;
+      }
+    }
+  }
+
+  .right-menu-item {
+    display: inline-block;
+    padding: 0 15px;
+    height: 100%;
+    font-size: 18px;
+    color: #{$navbarText};
+    vertical-align: text-bottom;
+    border-left: 1px solid #eaeaea;
+
+    &.hover-effect {
+      cursor: pointer;
+      transition: background 0.3s;
+
+      &:hover {
+        background: rgba(0, 0, 0, 0.025);
+      }
+    }
+
+    .notice-icon {
+      padding-top: 0;
+      padding-bottom: 0;
+    }
+
+    .right-menu-item {
+      .notice-icon>i {
+        font-size: 18px;
+      }
+
+      sup {
+        top: 12px;
+        right: 25px;
+      }
+    }
+  }
+}
+
+.flex {
+  display: flex;
+  justify-content: space-between;
+}
+
+.dot_title {
+  height: 40px;
+}
+
+.dot::before {
+  content: '';
+  display: inline-block;
+  margin-right: 10px;
+  padding: 5px;
+  border-radius: 25px;
+  background-color: #f00;
+}
+
+.tip {
+  width: 37px;
+  height: 20px;
+  border-radius: 2px;
+  background-color: rgba(255, 0, 0, 1);
+  color: rgba(255, 255, 255, 1);
+  font-size: 14px;
+  text-align: center;
+}
+
+.drawer_top {
+  margin: 0 20px;
+}
+
+.center {
+  align-items: center;
+}
+
+.notice {
+  box-sizing: content-box;
+  margin: 0 20px;
+  margin-top: 20px;
+  background-color: rgba(255, 255, 255, 1);
+  height: 690px;
+  box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
+  overflow-x: hidden;
+
+  &_item {
+    width: calc(450px - 80px);
+    margin: 20px;
+    border-bottom: 1px solid #ebeef5;
+  }
+}
+
+.icon {
+  &_bell {
+    text-align: right;
+    cursor: pointer;
+  }
+
+  &_close {
+    font-size: 25px;
+    cursor: pointer;
+  }
+}
+
+.drawer {
+  height: 100%;
+  display: flex;
+  font-size: 14px;
+
+  &_left {
+    width: 450px;
+    display: inline-block;
+  }
+
+  &_right {
+    width: 450px;
+    margin: 0 20px;
+    display: inline-block;
+
+    .radio {
+      display: flex;
+      justify-content: center;
+    }
+
+    &_content {
+      height: 855px;
+      padding: 0 2px;
+      overflow-y: auto;
+
+      &_item {
+        display: flex;
+        align-items: center;
+        margin: 20px 0;
+        padding: 0 10px;
+        height: 84px;
+        font-size: 14px;
+        border-radius: 5px;
+        background-color: rgba(255, 255, 255, 1);
+        box-shadow: 0px 2px 6px 0px rgba(0, 0, 0, 0.4);
+
+        &_text {
+          display: flex;
+          flex-direction: column;
+          justify-content: space-around;
+          flex: 1 1;
+          height: 84px;
+          padding-left: 20px;
+          line-height: 20px;
+        }
+      }
+    }
+  }
+}
+
+.download {
+  width: 595px;
+  max-height: 327px;
+  background-color: rgba(255, 255, 255, 1);
+
+  .clear {
+    cursor: pointer;
+  }
+
+  &_title {
+    display: flex;
+    justify-content: space-between;
+    padding: 5px 15px;
+
+    div:last-child {
+      display: flex;
+      justify-content: flex-end;
+      flex: 0 350px;
+
+      div {
+        flex: 1;
+        font-size: 14px;
+      }
+
+      div:last-child {
+        flex: 1;
+        text-align: right;
+      }
+    }
+  }
+
+  &_item {
+    max-height: 280px;
+    margin: 15px;
+    overflow-y: auto;
+
+    &_content {
+      display: flex;
+      justify-content: space-between;
+      margin: 10px 0;
+      padding-bottom: 5px;
+      font-size: 14px;
+      border-bottom: 1px solid rgba(204, 204, 204, 0.38);
+
+      div:last-child {
+        display: flex;
+        justify-content: flex-end;
+        flex: 0 350px;
+
+        div {
+          flex: 1;
+        }
+
+        div:last-child {
+          flex: 1;
+          text-align: right;
+        }
+      }
+    }
+  }
+}
+
+.el-dropdown-menu {
+  padding: 0 !important;
+  margin: 0 !important;
+  z-index: 9999 !important;
+}
+
+::v-deep .el-dropdown-menu__item.is-disabled {
+  color: #000;
+  padding: 20px;
+  border-bottom: 1px solid #EBEEF5;
+}
+
+.yidong {
+  ::v-deep .el-dropdown-menu__item {
+    padding: 0;
+  }
+}
+
+::v-deep ul>li:last-child {
+  border-bottom: none !important;
+}
+
+.QRcode {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.QRcode-img {
+  width: 120px;
+  height: 120px;
+  margin-right: 5px;
+  border: 1px solid #EBEEF5;
+}
+
+.shouji-icon {
+  width: 40px;
+  height: 40px;
+  margin-right: 10px;
+}
+
+.liveTitle {
+  color: #f00;
+}</style>

+ 7 - 7
src/components/file-upload/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-upload name="file" :class="['uploader', uid]" :action="baseURL + 'common/upload'" :multiple="false"
+    <el-upload name="file" :class="['uploader', uid_]" :action="baseURL + 'common/upload'" :multiple="false"
       :accept="accept" :show-file-list="false" :on-success="uploadSuccess" :before-upload="beforeUpload"
       :headers="myHeaders" />
     <div class="images" v-if="modType === 'view'">
@@ -60,10 +60,10 @@ export default {
       type: String,
       default: 'view'
     },
-    // uid: {
-    //   type: String,
-    //   default: 'uidImgfile'
-    // },
+    uid: {
+      type: String,
+      default: ''
+    },
     // 最大上传数量
     limit: {
       type: Number,
@@ -117,7 +117,7 @@ export default {
   },
   data() {
     return {
-      uid: "id_" + new Date().getTime(),
+      uid_: this.uid || "id_" + new Date().getTime(),
       myHeaders: { 'x-token': getToken() },
       baseURL: process.env.VUE_APP_BASE_API,
       imageURL: this.$imageUrl,
@@ -250,7 +250,7 @@ export default {
     // 点击上传
     uploadImage(url) {
       this.uploadImageUrl = url
-      document.querySelector(`.${this.uid}` + ' input').click()
+      document.querySelector(`.${this.uid_}` + ' input').click()
     },
     // 上传文件之前
     async beforeUpload(file) {

+ 1 - 1
src/components/v-quill-editor/index.vue

@@ -106,7 +106,7 @@ export default {
   methods: {
     getFiles(fileList) {
       fileList.forEach(item => {
-        this.editorImages.push(this.$imageUrl + item.url)
+        this.editorImages.push(item.url)
       })
       this.showFileUpload = false
       this.$nextTick(() => {

+ 14 - 0
src/utils/common.js

@@ -198,6 +198,20 @@ export const debounce = (fn, delay = 1000) => {
   }
 }
 
+export function thousands(num) {
+  if (num === null) {
+    return '';
+  }
+  var n = Number(num).toFixed(2);
+  if (isNaN(n)) {
+    return n;
+  }
+  n = n + '';
+  var [a, b] = n.split('.');
+  var aq = Number(a).toLocaleString();
+  return `${aq}.${b}`;
+}
+
 export default {
   successMsg,
   errorMsg,

+ 1 - 1
src/views/mallManagement/goods/watermark/index.vue

@@ -19,7 +19,7 @@ export default {
         [
           [
             {
-              name: '添加模块',
+              name: '添加水印',
               isRole: true,
               click: () => {
                 this.$router.push({

+ 6 - 4
src/views/setting/notification/announcement/index.vue

@@ -44,6 +44,7 @@ import ImageUpload from '@/components/file-upload'
 import { required, mobileRequired, mobile } from '@/components/template/rules_verify.js'
 import { noticeListPageV2, noticePageExport, getNoticeDetail, noticeAdd, noticeUpdate, noticeDel } from "@/api/announcement";
 import { memberListPageV2 } from "@/api/masterManagement";
+import { getMemberList } from "@/api/member";
 import { getList as getListaa } from "@/api/merchant";
 export default {
 	components: { TemplatePage, ImageUpload },
@@ -151,7 +152,7 @@ export default {
 				name: 'zj-paging-pull-down',
 				options: this.workerList,
 				attributes: {
-					valueKey: "id",
+					valueKey: "userId",
 					labelKey: "nickName",
 					size: 'mini',
 					placeholder: '请选择',
@@ -170,7 +171,7 @@ export default {
 				formItemAttributes: {
 					label: '附件',
 					prop: 'files',
-					rules: []
+					rules: this.formData.type == "A" ? [...required] : []
 				},
 				render: (h, { props, onInput }) => {
 					var { value } = props
@@ -282,7 +283,7 @@ export default {
 				},
 				render: (h, { props, onInput }) => {
 					var { value } = props
-					return <div>{this.workerList.filter(item => !!~value.indexOf(item.id)).map(item => <el-tag style="margin-right:5px">{item.nickName}</el-tag>)}</div>
+					return <div>{this.workerList.filter(item => !!~value.indexOf(item.userId)).map(item => <el-tag style="margin-right:5px">{item.nickName}</el-tag>)}</div>
 				},
 			}]
 		}
@@ -376,7 +377,8 @@ export default {
 					this[key] = true;
 				})
 			} else {
-				memberListPageV2({ "pageNum": 1, "pageSize": -1, "params": [] }).then(res => {
+				getMemberList({ "pageNum": 1, "pageSize": -1, type: "WORKER" }).then(res => {
+					console.log(res.data.records)
 					this.workerList = res.data.records
 					this[key] = true;
 				})

+ 40 - 0
src/views/setting/organizationManagement/settledManagement/index.vue

@@ -155,6 +155,46 @@
             <span>建议尺寸:400*400</span>
           </div>
         </el-form-item>
+
+
+
+        <!-- --------------------------- -->
+        <!-- <el-form-item label="头像logo:" prop="imgUrl">
+          <div class="images">
+            <div class="main-img">
+              <div class="img" v-if="img3_url" @mouseover="img3_hover = true;" @mouseout="img3_hover = false;">
+                <el-image ref="img3" :src="img3_url" :preview-src-list="[img3_url]" style="width: 120px; height: 120px" fit="contain"></el-image>
+                <div class="mask" v-show="img3_hover">
+                  <i class="el-icon-zoom-in" @click="previewImage('img3')"></i>
+                  <i class="el-icon-upload2" @click="uploadImage('img3')"></i>
+                </div>
+              </div>
+              <div class="add" v-else @click="uploadImage('img3')">
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+              </div>
+            </div>
+          </div>
+        </el-form-item> -->
+        <!-- --------------------------- -->
+        <!-- <el-form-item label="头像logo:" prop="imgUrl">
+          <div class="images">
+            <div class="main-img">
+              <div class="img" v-if="img3_url" @mouseover="img3_hover = true;" @mouseout="img3_hover = false;">
+                <el-image ref="img3" :src="img3_url" :preview-src-list="[img3_url]" style="width: 120px; height: 120px" fit="contain"></el-image>
+                <div class="mask" v-show="img3_hover">
+                  <i class="el-icon-zoom-in" @click="previewImage('img3')"></i>
+                  <i class="el-icon-upload2" @click="uploadImage('img3')"></i>
+                </div>
+              </div>
+              <div class="add" v-else @click="uploadImage('img3')">
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+              </div>
+            </div>
+          </div>
+        </el-form-item> -->
+        <!-- --------------------------- -->
+
+
       </el-form>
     </div>
 

+ 53 - 1
src/views/setting/organizationManagement/tenantDetails/index.vue

@@ -5,7 +5,8 @@
       <el-tab-pane label="商户信息" name="first"></el-tab-pane>
       <el-tab-pane label="商城配置信息" name="second"></el-tab-pane>
       <el-tab-pane label="微信配置信息" name="third"></el-tab-pane>
-	  <el-tab-pane label="结算配置信息" name="four"></el-tab-pane>
+	    <el-tab-pane label="结算配置信息" name="four"></el-tab-pane>
+	    <el-tab-pane label="移动端二维码" name="five"></el-tab-pane>
     </el-tabs>
 
     <div v-show="step == 'first'">
@@ -201,6 +202,57 @@
 			</el-form-item>
       </el-form>
     </div>
+
+    <div v-show="step == 'five'">
+      <el-form label-width="100px" label-position="right">
+        <el-upload
+          class="avatar-uploader"
+          :action="baseURL + 'common/upload'"
+          :headers="myHeaders"
+          :show-file-list="false"
+          :on-success="uploadSuccess"
+          :before-upload="beforeUpload">
+        </el-upload>
+        <el-form-item label="公众号" prop="imgUrl">
+          <div class="images">
+            <div class="main-img">
+              <div class="img" v-if="img1_url" @mouseover="img1_hover = true;" @mouseout="img1_hover = false;">
+                <el-image ref="img1" :src="img1_url" :preview-src-list="[img1_url]" style="width: 120px; height: 120px" fit="contain"></el-image>
+                <div class="mask" v-show="img1_hover">
+                  <i class="el-icon-zoom-in" @click="previewImage('img1')"></i>
+                  <i class="el-icon-upload2" @click="uploadImage('img1')"></i>
+                </div>
+              </div>
+              <div class="add" v-else @click="uploadImage('img1')">
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+              </div>
+            </div>
+          </div>
+          <div class="tips">
+            <span>建议尺寸:400*400</span>
+          </div>
+        </el-form-item>
+        <el-form-item label="小程序" prop="imgUrl">
+          <div class="images">
+            <div class="main-img">
+              <div class="img" v-if="img2_url" @mouseover="img2_hover = true;" @mouseout="img2_hover = false;">
+                <el-image ref="img2" :src="img2_url" :preview-src-list="[img2_url]" style="width: 120px; height: 120px" fit="contain"></el-image>
+                <div class="mask" v-show="img2_hover">
+                  <i class="el-icon-zoom-in" @click="previewImage('img2')"></i>
+                  <i class="el-icon-upload2" @click="uploadImage('img2')"></i>
+                </div>
+              </div>
+              <div class="add" v-else @click="uploadImage('img2')">
+                <i class="el-icon-plus avatar-uploader-icon"></i>
+              </div>
+            </div>
+          </div>
+          <div class="tips">
+            <span>建议尺寸:400*400</span>
+          </div>
+        </el-form-item>
+      </el-form>
+    </div>
 		
 		<div class="page-footer">
       <div class="footer" :class="classObj">

+ 157 - 0
src/views/userManagement/workerProfileInit/index.vue

@@ -0,0 +1,157 @@
+<template>
+	<template-page ref="pageRef" :get-list="getList" :table-attributes="tableAttributes" :table-events="tableEvents" :operationColumnWidth="50"
+	  :options-evens-group="optionsEvensGroup" :moreParameters="moreParameters" :column-parsing="columnParsing"
+	  :operation="operation">
+	   <!-- :exportList="exportList" -->
+	</template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import ImageUpload from '@/components/file-upload'
+import { downloadFiles } from '@/utils/util'
+import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
+import { listPageV2,pageExport, del, listImport } from "@/api/workerProfileInit";
+import { commonTemplateDownload } from '@/api/common.js'
+export default {
+  components: { TemplatePage, ImageUpload },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+		[
+		  [
+		    {
+		      name: '导入模板',
+		      click: this.handleDownload
+		    }
+		  ],
+		  [
+		    {
+		      name: '导入师傅资料',
+		      render: () => {
+		        return this.importButton(listImport, '导入师傅资料')
+		      }
+		    }
+		  ],
+		]
+	  ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      // 勾选选中行
+      recordSelected: [],
+      /** 表单变量 */
+      formDialogType: 0,
+      formDialogTitles: ["新增","编辑", "详情"],
+      formDialog: false,
+      formData: {},
+    }
+  },
+  computed: {
+    // 更多参数
+    moreParameters() {
+      return []
+    },
+    formItems() {}
+  },
+  methods: {
+    // 列表请求函数
+	getList(p,cb) {
+	  try {
+	    var pam = JSON.parse(JSON.stringify(p))
+	    // if (this.examineStatus) {
+	    //   pam.params.push({ "param": "b.examine_status", "compare": "=", "value": this.examineStatus })
+	    // }
+		cb && cb(pam)
+	    return listPageV2(pam)
+	  } catch (error) {
+	    console.log(error)
+	  }
+	},
+    // 列表导出函数
+    exportList: pageExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+		
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    // 表格操作列
+    operation(h, { row, index, column }) {
+      return (
+        <div class='operation-btns'>
+		  <el-button type="text" onClick={() => {
+		    this.$confirm(`请确认是否删除该数据, 是否继续?`, '提示', {
+		    	confirmButtonText: '确定',
+		    	cancelButtonText: '取消',
+		    	type: 'warning'
+		    }).then(() => {
+		    	del({
+		    		id: row.id
+		    	}).then(res => {
+		    		if (res.code == 200) {
+		    			this.$message({ type: 'success', message: `删除成功!` })
+		    			this.$refs.pageRef.refreshList()
+		    		} else {
+		    			this.$message.error(res.msg);
+		    		}
+		    	})
+		    });
+		  }}>删除</el-button>
+        </div>
+      )
+    },
+    addData() {
+      this.formDialogType = 0
+      this.openForm()
+    },
+    openForm() {
+      this.formDialog = true;
+    },
+    formCancel() {
+      this.$refs.formRef.$refs.inlineForm.clearValidate()
+      this.$data.formData = this.$options.data().formData
+      this.formDialog = false
+    },
+    formConfirm() {
+      this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
+        if (valid) {
+          ([add, edit][this.formDialogType])(this.formData).then(res => {
+            this.$message({ type: 'success', message: `${this.formDialogTitles[this.formDialogType]}成功!` })
+            this.formCancel()
+            this.$refs.pageRef.refreshList()
+          })
+        }
+      })
+    },
+	handleDownload() {
+		commonTemplateDownload({ name: '师傅分销员资料初始化.xlsx' }, `${this.$route.meta.title}`).then(res => {
+		    this.$message({
+		        message: '下载成功',
+		        type: 'success'
+		    })
+		}).catch(err => {
+		    this.$message.error('下载失败')
+		})
+	},
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+	.tab{
+		padding: 20px 20px 0 20px;
+	}
+</style>

+ 30 - 1
src/views/workOrder/appraise/index.vue

@@ -33,6 +33,7 @@ export default {
       formDialogType: 0,
       formDialogTitles: ["新增","编辑", "详情"],
       formDialog: false,
+	  appraise_status: ''
     }
   },
   computed: {
@@ -44,9 +45,27 @@ export default {
 		return []
     }
   },
+  created() {
+    if (this.$route.query.type == 1) {
+		this.appraise_status = 'C'
+		this.$nextTick(() => {
+			this.appraise_status = ''
+			this.$router.push({ name: "appraise", params: {}, query: {} })
+		})
+    }
+  },
   methods: {
     // 列表请求函数
-	getList: listPageV2,
+	getList(p,cb) {
+		try {
+			var pam = JSON.parse(JSON.stringify(p))
+			pam.params.push({'param': 'a.appraise_status', "compare": "=", "value": this.appraise_status})
+			cb && cb(pam)
+			return listPageV2(pam)
+		} catch (error) {
+			console.log(error)
+		}
+	},
     // 列表导出函数
     exportList: pageExport,
     // 表格列解析渲染数据更改
@@ -76,6 +95,16 @@ export default {
 			}
 			defaultData.columnAttributes.width = 200
 		}
+		if (item.jname === 'appraiseImgUrl') {
+		    defaultData.render = (h, { row, index, column }) => {
+		      return (
+		        <div style="cursor: pointer;display: flex;justify-content: center;">
+		          {row.appraiseImgUrl ? row.appraiseImgUrl.split(",").map(url => <el-image src={url} preview-src-list={[url]} fit="fit" style="width:80px;height:80px;cursor: pointer;" />) : null}
+		          </div>
+		      )
+		    }
+			defaultData.columnAttributes.width = 200
+		}
 		return defaultData
     },
     // 监听勾选变化

+ 2 - 1
src/views/workOrder/basicConfiguration/settlementStandard/components/install.vue

@@ -11,6 +11,7 @@ import import_mixin from '@/components/template/import_mixin.js'
 import ImageUpload from '@/components/file-upload'
 import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
 import { listPageV2,pageExport, add, edit, del, getMainList, getTypeList } from "@/api/workOrder/settlementStandardInstall";
+import { thousands } from '@/utils/common'
 export default {
   components: { TemplatePage, ImageUpload },
   mixins: [import_mixin],
@@ -173,7 +174,7 @@ export default {
 							</el-input>
 						</el-form-item>
 					</div>
-		    	):(<div style="padding: 6px;">{row.normAmount}</div>)
+		    	):(<div style="padding: 6px;">{thousands(row.normAmount)}</div>)
 		  	}
 		}
 		if (item.jname === 'remark') {

+ 2 - 1
src/views/workOrder/basicConfiguration/settlementStandard/components/other.vue

@@ -12,6 +12,7 @@ import ImageUpload from '@/components/file-upload'
 import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
 import { del } from "@/api/workOrder/settlementStandardInstall";
 import { listPageV2,pageExport, add, edit } from "@/api/workOrder/settlementStandardOther";
+import { thousands } from '@/utils/common'
 export default {
   components: { TemplatePage, ImageUpload },
   mixins: [import_mixin],
@@ -120,7 +121,7 @@ export default {
 							</el-input>
 						</el-form-item>
 					</div>
-		    	):(<div style="padding: 6px;">{row.normAmount}</div>)
+		    	):(<div style="padding: 6px;">{thousands(row.normAmount)}</div>)
 		  	}
 		}
 		if (item.jname === 'remark') {

+ 2 - 1
src/views/workOrder/basicConfiguration/settlementStandard/components/repair.vue

@@ -12,6 +12,7 @@ import ImageUpload from '@/components/file-upload'
 import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
 import { del, getMainList, getTypeList } from "@/api/workOrder/settlementStandardInstall";
 import { listPageV2,pageExport, add, edit } from "@/api/workOrder/settlementStandardRepair";
+import { thousands } from '@/utils/common'
 export default {
   components: { TemplatePage, ImageUpload },
   mixins: [import_mixin],
@@ -179,7 +180,7 @@ export default {
 							</el-input>
 						</el-form-item>
 					</div>
-		    	):(<div style="padding: 6px;">{row.repairAmount}</div>)
+		    	):(<div style="padding: 6px;">{thousands(row.repairAmount)}</div>)
 		  	}
 		}
 		if (item.jname === 'normAmount') {

+ 48 - 8
src/views/workOrder/orderHome/index.vue

@@ -1,7 +1,11 @@
 <template>
 	<div class="dashboard_container">
+		<div class="refresh" @click="refreshData">
+			<span style="color: #1d82ff;">刷新数据</span>
+			<i class="el-icon-refresh-left" style="color: #1d82ff;"></i>
+		</div>
 		<div class="container_top">
-			<div class="tab" v-for="(item,index) in tabs" :key='index'>
+			<div class="tab" v-for="(item,index) in tabs" :key='index' @click="openOrder(item.type)">
 				<el-image class="img" :src="item.url" fit="fit"></el-image>
 				<div class="text">
 					<div class="title">{{item.title}}</div>
@@ -13,7 +17,7 @@
 			<div class="chart">
 				<div class="head">
 					<div class="title">近7天订单趋势</div>
-					<div class="more" @click="openOrder">查看更多</div>
+					<div class="more" @click="openOrder()">查看更多</div>
 				</div>
 				<div ref="chart1" style="width: 100%;height: 280px;"></div>
 			</div>
@@ -40,7 +44,7 @@
 	export default{
 		data(){
 			return {
-				tabs: [{title: '待派工',num: 12,url: require('@/assets/orderHome/dpg.png')},{title: '待接收',num: 22,url: require('@/assets/orderHome/djs.png')},{title: '服务中',num: 53,url: require('@/assets/orderHome/ffz.png')},{title: '异常待处理',num: 2,url: require('@/assets/orderHome/yc.png')},{title: '差评统计',num: 0,url: require('@/assets/orderHome/pj.png')}],
+				tabs: [{title: '待派工',num: 12,url: require('@/assets/orderHome/dpg.png'),type: 'DWDPG'},{title: '待接收',num: 22,url: require('@/assets/orderHome/djs.png'),type: 'DJD'},{title: '服务中',num: 53,url: require('@/assets/orderHome/ffz.png'),type: 'FWZ'},{title: '异常待处理',num: 2,url: require('@/assets/orderHome/yc.png'),type: 'YCD'},{title: '差评统计',num: 0,url: require('@/assets/orderHome/pj.png'),type: 'appraise'}],
 				qtsm: [],
 				qtddqs: {},
 				wglxfb: {}
@@ -91,11 +95,34 @@
 			// this.drawChat1()
 		},
 		methods: {
-			openOrder(){
-				this.$router.push({
-					name: "workOrderPool",
-					query: {}
-				})
+			refreshData(){
+				this.$echarts.init(this.$refs.chart1).dispose()
+				this.$echarts.init(this.$refs.chart2).dispose()
+				this.$echarts.init(this.$refs.chart3).dispose()
+				this.getCount()
+			},
+			openOrder(type){
+				if(!type){
+					this.$router.push({
+						name: "workOrderPool",
+						query: {}
+					})
+				}else if(type == 'appraise'){
+					this.$router.push({
+						name: "appraise",
+						query: {
+							type: 1
+						}
+					})
+				}else{
+					this.$router.push({
+						name: "workOrderPool",
+						query: {
+							orderStatus: type
+						}
+					})
+				}
+				
 			},
 			getCount(){
 				getCount().then(res => {
@@ -195,6 +222,18 @@
 		padding: 20px;
 		min-height: calc(100vh - 86px);
 		box-sizing: border-box;
+		.refresh{
+			text-align: right;
+			margin-bottom: 10px;
+			span{
+				cursor: pointer;
+			}
+			i{
+				font-weight: bold;
+				margin-left: 4px;
+				cursor: pointer;
+			}
+		}
 		.container_top{
 			display: flex;
 			.tab{
@@ -205,6 +244,7 @@
 				margin-right: 20px;
 				background-color: #ffffff;
 				border-radius: 10px;
+				cursor: pointer;
 				.text{
 					margin-left: 30px;
 					.title{

+ 3 - 3
src/views/workOrder/settleAccountsManagement/summaryBill/detailList.vue

@@ -80,8 +80,8 @@
 			<el-table-column prop="companyWechatName" align="center" label="所属商户" width="180"></el-table-column>
 			<el-table-column prop="websitName" align="center" label="网点名称" width="180"></el-table-column>
 			<el-table-column prop="workerName" align="center" label="工程师信息" width="110"></el-table-column>
-			<el-table-column prop="workerMobile" align="center" label="联系电话"></el-table-column>
-			<el-table-column prop="workerIdcard" align="center" label="身份证"></el-table-column>
+			<el-table-column prop="workerMobile" align="center" label="联系电话" width="140"></el-table-column>
+			<el-table-column prop="workerIdcard" align="center" label="身份证" width="180"></el-table-column>
 			<el-table-column prop="totalAmount" align="center" label="结算金额 (元)" width="110"></el-table-column>
 			<el-table-column prop="status" align="center" label="发放状态">
 				<template slot-scope="scope">
@@ -103,7 +103,7 @@
 			<el-table-column prop="customerName" align="center" label="客户名字"></el-table-column>
 			<el-table-column prop="customerMobile" align="center" label="客户电话" width="110"></el-table-column>
 			<el-table-column prop="customerAddress" align="center" label="详细地址" width="180"></el-table-column>
-			<el-table-column prop="orderStatus" align="center" label="工单状态">
+			<el-table-column prop="orderStatus" align="center" label="工单状态" width="120">
 				<template slot-scope="scope">
 					{{scope.row.orderStatus == 'DYY'?'待预约':scope.row.orderStatus == 'DSHPG'?'待商户派工':scope.row.orderStatus == 'DWDPG'?'待网点派工':scope.row.orderStatus == 'DJD'?'待接单':scope.row.orderStatus == 'FWZ'?'服务中':scope.row.orderStatus == 'YCD'?'异常单':scope.row.orderStatus == 'YWG'?'已完工待结算':scope.row.orderStatus == 'YJS'?'已结算':scope.row.orderStatus == 'YQX'?'已取消':''}}
 				</template>

+ 5 - 1
src/views/workOrder/settleAccountsManagement/summaryBill/index.vue

@@ -54,7 +54,8 @@ export default {
       // 表格属性
       tableAttributes: {
         // 启用勾选列
-        selectColumn: true
+        selectColumn: true,
+		selectable: this.selectable
       },
       // 表格事件
       tableEvents: {
@@ -143,6 +144,9 @@ export default {
 		this.formDialog = false;
 		this.$refs.pageRef.refreshList()
 	},
+	selectable(row, index) {
+	  return ["NO"].includes(Object.entries(row.selectMapData.status).find(([key, val]) => val == row.status)?.[0])
+	},
     // 列表请求函数
     getList(p,cb) {
 		try {

+ 13 - 3
src/views/workOrder/workOrderPool/detailModule/CompletionDetails/index.vue

@@ -7,9 +7,12 @@
         </zj-form-module>
       </zj-form-container>
       <zj-form-container v-else key="details">
-        <zj-form-module title="维修信息" :form-data="formData" :form-items="repairInfo" />
-        <zj-form-module title="采集图片" :form-data="formData" :form-items="INSTALL_pgOrderProductImgs" />
-        <zj-form-module title="故障图片" :form-data="formData" :form-items="BUG_pgOrderProductImgs" />
+        <template v-if="formData.pgOrderBase && formData.pgOrderBase.orderType !== 'INSTALL'">
+          <zj-form-module title="维修信息" :form-data="formData" :form-items="repairInfo" />
+          <zj-form-module title="采集图片" :form-data="formData" :form-items="INSTALL_pgOrderProductImgs" />
+          <zj-form-module title="故障图片" :form-data="formData" :form-items="BUG_pgOrderProductImgs" />
+        </template>
+        <zj-form-module v-else title="采集信息" :form-data="formData" :form-items="INSTALL_pgOrderProductImgs" />
       </zj-form-container>
     </zj-page-fill>
     <div v-if="detailId" style="box-sizing: border-box;padding: 16px;">
@@ -171,6 +174,13 @@ export default {
             />
           )
         }
+      },
+      {
+        show: this.formData.pgOrderBase && this.formData.pgOrderBase.orderType == 'INSTALL',
+        name: 'el-input',
+        md: 24,
+        attributes: { disabled: true, type: "textarea", placeholder: '' },
+        formItemAttributes: { label: '备注', prop: 'detailRemark' },
       },]
     },
     BUG_pgOrderProductImgs() {

+ 79 - 46
src/views/workOrder/workOrderPool/detailModule/SettleAccounts/index.vue

@@ -20,7 +20,7 @@ import { required, mobileRequired, mobile, httpUrl, email } from '@/components/t
 import { listPageV2 } from "@/api/workOrder/settlementStandardInstall";
 import { listPageV2 as listPageV2Repair } from "@/api/workOrder/settlementStandardRepair";
 import { listPageV2 as listPageV2Other } from "@/api/workOrder/settlementStandardOther";
-import { orderBaseSettleNormDetail, orderBaseSettleNormConfirm } from "@/api/workOrderPool.js";
+import { orderBaseSettleNormDetail, orderBaseSettleNormConfirm, settleNormInstallQuery, settleNormOtherQuery } from "@/api/workOrderPool.js";
 import { EventBus } from '@/utils/eventBus'
 export default {
   props: {
@@ -45,14 +45,45 @@ export default {
       return [
         {
           columnAttributes: {
+            label: '产品品牌',
+            prop: 'brand'
+          },
+        },
+        {
+          columnAttributes: {
+            label: '产品大类',
+            prop: 'mainName'
+          },
+        },
+        {
+          columnAttributes: {
+            label: '产品小类',
+            prop: 'smallName'
+          },
+        },
+        {
+          columnAttributes: {
+            label: '产品机型',
+            prop: 'goodsName'
+          },
+        },
+        {
+          columnAttributes: {
+            label: '数量',
+            prop: 'orderNum'
+          },
+        },
+        {
+          columnAttributes: {
             label: '工单类型',
             prop: 'typeName'
           },
         },
         {
           columnAttributes: {
-            label: '产品大类',
-            prop: 'parentCategoryId'
+            label: '结算产品大类',
+            prop: 'parentCategoryId',
+            width: '110'
           },
           render: (h, { row, column, index }) => {
             return <div class="redbordererr">
@@ -68,7 +99,6 @@ export default {
                     row.normAmount = ""
                     row.repairAmount = ""
                     row.settleNormId = ""
-                    row.settleNum = ""
                     if (val) {
                       var data = this.classifyList.find(item => item.categoryId == val)
                       row.parentCategoryName = data.name
@@ -85,8 +115,9 @@ export default {
         },
         {
           columnAttributes: {
-            label: '产品小类',
-            prop: 'categoryId'
+            label: '结算产品小类',
+            prop: 'categoryId',
+            width: '110'
           },
           render: (h, { row, column, index }) => {
             return <div class="redbordererr">
@@ -100,7 +131,6 @@ export default {
                     row.normAmount = ""
                     row.repairAmount = ""
                     row.settleNormId = ""
-                    row.settleNum = ""
                     if (val) {
                       var data = this.classifyListLv2.find(item => item.categoryId == val)
                       row.categoryName = data.name
@@ -109,24 +139,18 @@ export default {
                     }
                   }}
                   placeholder="请选择">
-                  {this.classifyListLv2.filter(item => item.parentId === row.parentCategoryId).map((item, index_) => <el-option key={index_} label={item.name} value={item.categoryId}></el-option>)}
+                  {this.classifyListLv2.filter(item => item.parentCategoryId === row.parentCategoryId).map((item, index_) => <el-option key={index_} label={item.name} value={item.categoryId}></el-option>)}
                 </el-select>
               </el-form-item>
             </div>
           }
         },
-        {
-          columnAttributes: {
-            label: '机型',
-            prop: 'goodsName'
-          },
-        },
         ...(() => {
           if (this.formData.orderType == 'INSTALL') {
             return [
               {
                 columnAttributes: {
-                  label: '功率',
+                  label: '结算功率',
                   prop: 'label'
                 },
                 render: (h, { row, column, index }) => {
@@ -137,7 +161,6 @@ export default {
                         value={row[column.columnAttributes.prop]}
                         onInput={(val) => { row[column.columnAttributes.prop] = val }}
                         onChange={(val) => {
-                          row.settleNum = ""
                           if (val) {
                             var data = this.getflList(this.gonglv, row).find(item => item.label == val)
                             row.normAmount = data.normAmount
@@ -162,7 +185,7 @@ export default {
               },
               {
                 columnAttributes: {
-                  label: '数量',
+                  label: '结算数量',
                   prop: 'settleNum'
                 },
                 render: (h, { row, column, index }) => {
@@ -170,7 +193,7 @@ export default {
                     <el-form-item label="" label-width="0px" prop={`normList.${index}.${column.columnAttributes.prop}`} rules={required}>
                       <el-input
                         type="number"
-                        disabled={row.normAmount ? this.formData.settleStatus != 'YWG' : true}
+                        disabled={this.formData.settleStatus != 'YWG'}
                         value={row[column.columnAttributes.prop]}
                         onInput={(val) => { row[column.columnAttributes.prop] = val }}
                         placeholder="请输入内容"
@@ -211,7 +234,6 @@ export default {
                         value={row[column.columnAttributes.prop]}
                         onInput={(val) => { row[column.columnAttributes.prop] = val }}
                         onChange={(val) => {
-                          row.settleNum = ""
                           if (val) {
                             var data = this.getflList(this.gonglr, row).find(item => item.label == val)
                             row.repairAmount = data.repairAmount
@@ -233,7 +255,8 @@ export default {
               {
                 columnAttributes: {
                   label: '上门费(元/单)',
-                  prop: 'repairAmount'
+                  prop: 'repairAmount',
+                  width: '110'
                 },
                 render: (h, { row, column, index }) => {
                   return <div class="redbordererr">
@@ -254,7 +277,8 @@ export default {
               {
                 columnAttributes: {
                   label: '维修费结算比例%',
-                  prop: 'normAmount'
+                  prop: 'normAmount',
+                  width: '110'
                 },
                 render: (h, { row, column, index }) => {
                   return <div class="redbordererr">
@@ -265,7 +289,8 @@ export default {
               {
                 columnAttributes: {
                   label: '维修费用结算',
-                  prop: 'repairNormAmount'
+                  prop: 'repairNormAmount',
+                  width: '110'
                 },
                 render: (h, { row, column, index }) => {
                   return <div class="redbordererr">
@@ -285,7 +310,7 @@ export default {
               },
               {
                 columnAttributes: {
-                  label: '数量',
+                  label: '结算数量',
                   prop: 'settleNum'
                 },
                 render: (h, { row, column, index }) => {
@@ -293,7 +318,7 @@ export default {
                     <el-form-item label="" label-width="0px" prop={`normList.${index}.${column.columnAttributes.prop}`} rules={required}>
                       <el-input
                         type="number"
-                        disabled={row.normAmount ? this.formData.settleStatus != 'YWG' : true}
+                        disabled={this.formData.settleStatus != 'YWG'}
                         value={row[column.columnAttributes.prop]}
                         onInput={(val) => { row[column.columnAttributes.prop] = val }}
                         placeholder="请输入内容"
@@ -525,6 +550,9 @@ export default {
             id: this.id
           }).then(res => {
             this.formData = res.data || {}
+            this.formData.normList.map(item=>{
+              item.settleNum = item.orderNum
+            })
             if (this.formData.orderType == "INSTALL") {
               // 安装单请求
               listPageV2({ "pageNum": 1, "pageSize": -1, "params": [] }).then(res => {
@@ -536,6 +564,33 @@ export default {
                 this.gonglr = res.data.records
               })
             }
+            settleNormInstallQuery({
+              settleNormType: this.formData.orderType,
+              type: this.formData.orderSmallType
+            }).then(res => {
+              var classifyList = {}
+              var classifyListLv2 = {}
+              this.classifyListLv2 = res.data.map(item => {
+                var { children, ...data } = item
+                classifyList[data.parentCategoryId] = data.parentCategoryName
+                classifyListLv2[data.categoryId] = {
+                  name: data.categoryName,
+                  ...data
+                }
+              });
+              this.classifyListLv2 = Object.keys(classifyListLv2).map(key => classifyListLv2[key])
+              this.classifyList = Object.keys(classifyList).map(key => ({
+                name: classifyList[key],
+                categoryId: key
+              }))
+            })
+            settleNormOtherQuery().then(res => {
+              this.gongqt = res.data;
+              this.gongqtdl = Array.from(new Set(res.data.map(item => item.type))).map(type => ({
+                label: type,
+                value: type
+              }));
+            })
           })
         }
       },
@@ -543,28 +598,6 @@ export default {
       immediate: true,
     },
   },
-  created() {
-    // 获取产品大类小类
-    getClassifyList({ type: 2, status: true }).then(res => {
-      var classifyListLv2 = []
-      this.classifyList = res.data.map(item => {
-        var { children, ...data } = item
-        classifyListLv2.push(...(children || []))
-        return {
-          ...data
-        }
-      });
-      this.classifyListLv2 = classifyListLv2
-    })
-    // 其他类型
-    listPageV2Other({ "pageNum": 1, "pageSize": -1, "params": [] }).then(res => {
-      this.gongqt = res.data.records
-      this.gongqtdl = Array.from(new Set(res.data.records.map(item => item.type))).map(type => ({
-        label: type,
-        value: type
-      }))
-    })
-  },
   methods: {
     getflList(list = [], row = {},) {
       return list.filter(item => (

+ 5 - 0
src/views/workOrder/workOrderPool/detailModule/workOrderInfo/mixins/basicInfo.js

@@ -22,6 +22,11 @@ export default {
             label: '客户名称',
             prop: 'userName',
             rules: this.formOptions.userName.isRules
+          },
+          events: {
+            input: (v) => {
+              this.orderInfo.linkName = v
+            }
           }
         },
         {

+ 10 - 1
src/views/workOrder/workOrderPool/index.vue

@@ -94,7 +94,7 @@ export default {
         {
           name: '工单状态',
           key: 'orderStatus',
-          value: '',
+          value: this.$route.query.orderStatus || "",
           conditions: [{
             label: "全部",
             value: ""
@@ -318,6 +318,15 @@ export default {
           )
         }
       }
+      if (item.jname === 'appointmentTime') {
+        defaultData.render = (h, { row, index, column }) => {
+          return (
+            <div style="padding:0 6px;cursor: pointer;">
+              {row[column.columnAttributes.prop] ? row[column.columnAttributes.prop].split(" ")[0] : ""}
+            </div>
+          )
+        }
+      }
       return defaultData
     },