Преглед изворни кода

服务申请单bug修复,服务改善列表

qymljy пре 3 месеци
родитељ
комит
b774259ec3

+ 9 - 3
src/HDrpManagement/serveWorkBill/components/acceptingOrders.vue

@@ -23,7 +23,7 @@
           >
             <el-col :span="24">
               <el-form-item :label="$t(`是否外包工单:`)" prop="isout">
-                <el-radio-group v-model="form.isout">
+                <el-radio-group v-model="form.isout" @change="isoutChange">
                   <el-radio :label="1">{{ $t("是") }}</el-radio>
                   <el-radio :label="0">{{ $t("否") }}</el-radio>
                 </el-radio-group>
@@ -152,13 +152,19 @@ export default {
       this.form.phonenumber = ''
     },
     nameChange(){
-      console.log('输出')
-      console.log(this.form.userid)
       this.optionNames.forEach(item => {
         if (item.userid == this.form.userid){
           this.form.phonenumber = item.phonenumber
         }
       })
+    },
+    isoutChange(){
+      if (this.form.isout){
+        this.form.userid = ''
+        this.form.phonenumber = ''
+      }else {
+        this.form.userid = this.team_userid
+      }
     }
   }
 }

+ 65 - 3
src/HDrpManagement/serveWorkBill/index.vue

@@ -66,6 +66,39 @@
             <el-option :label="$t(`历史售后`)" value="历史售后"></el-option>
           </el-select>
         </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("客诉大类") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="where.type"
+              :placeholder="$t(`请选择客诉大类`)"
+              @focus="queryType('customerclass')"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option
+                v-for="item in options.customerclass"
+                :key="item.value"
+                :label="$t(item.value)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("是否外包") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="where.isout"
+              :placeholder="$t(`请选是否外包`)"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option :label="$t(`是`)" :value="1"></el-option>
+            <el-option :label="$t(`否`)" :value="0"></el-option>
+          </el-select>
+        </div>
         <div class="mt-10">
           <label class="search__label">{{ $t("创建日期") }}:</label>
           <el-date-picker
@@ -82,6 +115,22 @@
           >
           </el-date-picker>
         </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("完成时间") }}:</label>
+          <el-date-picker
+              style="margin-right: 24px !important"
+              size="small"
+              @change="selectChange"
+              value-format="yyyy-MM-dd"
+              v-model="finishDate"
+              type="daterange"
+              :range-separator="$t(`至`)"
+              :start-placeholder="$t(`开始日期`)"
+              :end-placeholder="$t(`结束日期`)"
+              clearable
+          >
+          </el-date-picker>
+        </div>
       </template>
       <template v-slot:tbList="scope">
         <div v-if="scope.data.column.columnname == 'status'">
@@ -121,17 +170,23 @@ export default {
   data() {
     return {
       options: {
-        serviceworktype:[]
+        serviceworktype:[],
+        customerclass:[]
       },
       where: {
         status: [], //工单状态,可多选
         type: "", //工单类型
         servicetype: "", //服务类型
         begindate: "", //创建时间
-        enddate: "" //创建时间
+        enddate: "", //创建时间
+        class2:"",
+        isout:"",
+        begindate2:"",
+        enddate2:""
       },
       status:'',
-      createDate:""
+      createDate:"",
+      finishDate:""
     };
   },
   methods: {
@@ -158,6 +213,13 @@ export default {
         this.where.begindate = ''
         this.where.enddate = ''
       }
+      if (this.finishDate){
+        this.where.begindate2 = this.finishDate[0]
+        this.where.enddate2 = this.finishDate[1]
+      }else {
+        this.where.begindate2 = ''
+        this.where.enddate2 = ''
+      }
       this.$refs.list.param.content.where = this.where;
       this.$refs.list.listData();
     },

+ 39 - 29
src/HDrpManagement/serveWorkBill/modules/detail.vue

@@ -211,7 +211,7 @@ export default {
         },
       });
       this.mainData = Object.assign({}, this.mainData, res.data);
-      console.log(res.data,'输出33');
+
       res.data.team.forEach(item => {
         if (item.isleader){
           this.team_name = item.name
@@ -226,7 +226,6 @@ export default {
 
       this.nodes = this.createTreeData(res.data.nodes);
       this.mainData.actiontype == '工序模板'?this.$refs.serviceWorkOrderRef.activeName = '工序详情' : this.$refs.serviceWorkOrderRef.activeName = '服务商品'
-      console.log(this.nodes);
     },
     downLoadBill(data) {
       let result = data.attinfos.filter(
@@ -265,21 +264,13 @@ export default {
       let that = this;
       this.mainAreaData = [
         {
-          label: "单号",
+          label: "单号",
           value: this.mainData.billno,
         },
         {
-          label: "服务申请单号",
+          label: "申请单号",
           value: this.mainData.servicebillno,
         },
-        {
-          label: "工单类型",
-          value: this.mainData.type,
-        },
-        {
-          label: "负责人",
-          value: this.team_name,
-        },
         {
           label: "状态",
           value: this.$t(this.mainData.status),
@@ -288,35 +279,38 @@ export default {
             return style;
           },
         },
-        {
-          label: "企业编号",
-          value: this.mainData.agentnum,
-        },
         {
           label: "企业名称",
           value: this.mainData.enterprisename,
         },
+        {
+          label: "企业编号",
+          value: this.mainData.agentnum,
+        },
         {
           label: "省市县",
           value:
-            this.mainData.province + this.mainData.city + this.mainData.county,
+              this.mainData.province + this.mainData.city + this.mainData.county,
         },
         {
-          label: "业务员",
-          value: this.mainData.saler_name,
+          label: "详细地址",
+          value: this.mainData.address,
         },
         {
-          label: "业务员电话",
-          value: this.mainData.salerphonenumber,
+          label: "关联订单",
+          value: this.mainData.sonum,
         },
         {
-          label: "地址",
-          value: this.mainData.address,
+          label: "服务类型",
+          value: this.mainData.servicetype,
+          style: function () {
+            let style = that.tool.getStatusColor(that.mainData.servicetype);
+            return style;
+          },
         },
-
         {
-          label: "关联订单",
-          value: this.mainData.sonum,
+          label: "工单类型",
+          value: this.mainData.type,
         },
         {
           label: "现场联系人",
@@ -342,10 +336,22 @@ export default {
           label: "问题描述",
           value: this.mainData.reason,
         },
+        {
+          label: "服务负责人",
+          value: this.team_name,
+        },
         {
           label: "服务负责人电话",
           value: this.team_phone_number,
         },
+        {
+          label: "业务员",
+          value: this.mainData.saler_name,
+        },
+        {
+          label: "业务员电话",
+          value: this.mainData.salerphonenumber,
+        },
         {
           label: "异常类型",
           value: this.mainData.exception_type,
@@ -353,6 +359,10 @@ export default {
         {
           label: "服务等级",
           value: this.mainData.service_level,
+          style: function () {
+            let style = that.tool.getStatusColor(that.mainData.service_level);
+            return style;
+          },
         },
         {
           label: "项目名称",
@@ -364,7 +374,7 @@ export default {
           value: this.mainData.createdate,
         },
         {
-          label: "结束时间",
+          label: "完成时间",
           value: this.mainData.finishdate,
         },
         {
@@ -517,7 +527,7 @@ export default {
           pageSize:999,
         }
       })
-      console.log(res.data,'333')
+
       this.optionNames = res.data.map(item => {
         return {
           "username":item.username,
@@ -527,7 +537,7 @@ export default {
 
     },
     async transferWorkSubmit(){
-      console.log('执行222')
+
       const res = await this.$api.requested({
         "content": {
           "sa_workorderid": this.$route.query.id,

+ 90 - 61
src/HDrpManagement/serveWorkBill/modules/items/index.vue

@@ -1,7 +1,7 @@
 
 <template>
   <div>
-    <!-- <div style="display:flex;align-items:center">
+     <div style="display:flex;align-items:center">
       <el-input
           :placeholder="$t('请输入搜索内容')"
           suffix-icon="el-icon-search"
@@ -9,66 +9,40 @@
           style="width:200px"
           size="mini"
           class="input-with-select inline-16"
-          @keyup.native.enter="listData(params.content.pageNumber=1)"
-          @clear="clearData"
+          @keyup.native.enter="listData(params.content.pageNumber = 1)"
+          @clear="listData(params.content.pageNumber = 1)"
           clearable>
       </el-input>
-    </div> -->
+    </div>
     <div style="margin-top: 15px">
-      <el-table
-        ref="multipleTable"
-        :data="data.titems"
-        style="width: 100%"
-        size="mini"
-        height="50vh"
-        border
-      >
-        <el-table-column prop="itemno" :label="$t('编号')">
-          <template slot-scope="scope">
-            {{scope.row.itemno}}
-            <div v-if="siteid == 'HY' && scope.row.traceabilitytype && scope.row.traceabilitytype.length > 0">
-              <div v-for="item in scope.row.traceabilitytype" :key="item.index">
-                <el-tag v-if="item == 'M'"  style="margin-left: 5px;color: #FFFFFF;background-color: #3874F6"  size="mini">{{$t('自制')}}</el-tag>
-                <el-tag v-else  style="margin-left: 5px;color: #FFFFFF;background-color: #fa8c16"  size="mini">{{$t('外购')}}</el-tag>
-              </div>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column prop="itemname" :label="$t(`名称`)"> </el-table-column>
-        <el-table-column prop="model" :label="$t('型号')"> </el-table-column>
-        <el-table-column :label="$t('公称通径')" width="150" prop="caliber" v-if="siteid == 'HY' || siteid == 'YOSTEST1'">
-          <template slot-scope="scope">
-            <p>
-              <span>{{ scope.row.caliber }}</span>
-            </p>
-          </template>
-        </el-table-column>
-        <el-table-column :label="$t('公称压力')" width="150" prop="nominalpressure" v-if="siteid == 'HY' || siteid == 'YOSTEST1'">
-          <template slot-scope="scope">
-            {{tool.nominalPressureSet(scope.row.nominalpressure)}}
-          </template>
-        </el-table-column>
-        <el-table-column prop="spec" :label="$t('规格')" v-if="siteid != 'HY' && siteid != 'YOSTEST1'"> </el-table-column>
-        <el-table-column prop="qty" :label="$t(`数量`)"> </el-table-column>
-        <el-table-column
-          v-if="data.actiontype == '非工序模板'"
-          prop="processing"
-          :label="$t(`处理方式`)"
-        >
-        </el-table-column>
-        <el-table-column
-          v-if="data.actiontype == '非工序模板'"
-          prop="result"
-          :label="$t(`处理结果`)"
-        >
-        </el-table-column>
-        <el-table-column
-          v-if="data.actiontype == '非工序模板'"
-          prop="reason"
-          :label="$t(`原因解析`)"
-        >
-        </el-table-column>
-      </el-table>
+      <tableDetail :layout="tablecols" :data="list" :opwidth="200" :custom="true" fixed-name="operation" height="calc(100vh - 460px)">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname === 'nominalpressure'">
+            {{tool.nominalPressureSet(scope.column.data[scope.column.columnname])}}
+          </div>
+          <div v-else-if="scope.column.columnname === 'problem_description'">
+            <el-input v-if="nowRow == scope.column.data.rowindex" v-model="scope.column.data[scope.column.columnname]" :placeholder="$t(`请输入内容`)" size="mini"></el-input>
+            <div v-else>{{scope.column.data[scope.column.columnname] || '--'}}</div>
+          </div>
+          <div v-else-if="scope.column.columnname === 'processing'">
+            <el-input v-if="nowRow == scope.column.data.rowindex" v-model="scope.column.data[scope.column.columnname]" :placeholder="$t(`请输入内容`)" size="mini"></el-input>
+            <div v-else>{{scope.column.data[scope.column.columnname] || '--'}}</div>
+          </div>
+          <div v-else-if="scope.column.columnname === 'result'">
+            <el-input v-if="nowRow == scope.column.data.rowindex" v-model="scope.column.data[scope.column.columnname]" :placeholder="$t(`请输入内容`)" size="mini"></el-input>
+            <div v-else>{{scope.column.data[scope.column.columnname] || '--'}}</div>
+          </div>
+          <div v-else-if="scope.column.columnname === 'reason'">
+            <el-input v-if="nowRow == scope.column.data.rowindex" v-model="scope.column.data[scope.column.columnname]" :placeholder="$t(`请输入内容`)" size="mini"></el-input>
+            <div v-else>{{scope.column.data[scope.column.columnname] || '--'}}</div>
+          </div>
+          <div v-else>{{scope.column.data[scope.column.columnname]||scope.column.columnname === 'operation' ? scope.column.data[scope.column.columnname] : '--'}}</div>
+        </template>
+        <template v-slot:opreation="scope">
+          <el-button type="text" size="mini" @click="saveClick(scope.data)" :disabled="data.status != '进行中'" v-if="isEdit && scope.data.rowindex == nowRow">{{$t(`保存`)}}</el-button>
+          <el-button type="text" size="mini" @click="editClick(scope.data)" :disabled="data.status != '进行中'" v-else>{{$t(`编辑`)}}</el-button>
+        </template>
+      </tableDetail>
     </div>
   </div>
 </template>
@@ -79,12 +53,67 @@ export default {
   data() {
     return {
       options: [],
-      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid
+      siteid:JSON.parse(sessionStorage.getItem('active_account')).siteid,
+      params:{
+        "id": 2026012813264502,
+        "content": {
+          "sa_workorderid": this.$route.query.id,
+          "pageNumber": 1,
+          "pageSize": 999,
+          "where": {
+            "condition": ""
+          }
+        },
+      },
+      list:[],
+      tablecols:[],
+      nowRow:-1,
+      isEdit:false
     };
   },
-  methods: {},
-  created() {},
+  methods: {
+    async listData(){
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+    },
+    editClick(data){
+      this.isEdit = true
+      this.nowRow = data.rowindex
+    },
+    async saveClick(data){
+      const res = await this.$api.requested({
+        id: "20230215201903",
+        content: {
+          "sa_workorder_nodeid": data.sa_workorder_nodeid,
+          "sa_workorderid": this.data.sa_workorderid,
+          "iteminfos":[{
+            "sa_workorder_node_itemsid":data.sa_workorder_node_itemsid,
+            "problem_description":data.problem_description,
+            "processing":data.processing,
+            "result":data.result,
+            "reason":data.reason,
+            "qty":data.qty,
+            "itemid":data.itemid
+          }]
+        },
+      })
+      this.tool.showMessage(res,()=>{
+        this.isEdit = false
+        this.nowRow = -1
+      })
+    }
+  },
+  mounted() {
+    this.listData(this.params.content.pageNumber = 1)
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).serviceProductTable.tablecols
+  },
 };
 </script>
 <style scoped>
+/* 强制所有单元格换行 */
+/deep/ .el-table .cell {
+  white-space: normal !important;
+}
 </style>

+ 251 - 0
src/HDrpManagement/serviceImprovement/index.vue

@@ -0,0 +1,251 @@
+<template>
+  <div>
+    <basicLayout
+        ref="list"
+        tableName="serviceImprovementTable"
+        idName="sa_service_improvementid"
+        :apiId="{ query: 2026013111220102}"
+        :detailPath="{
+        path: '/serviceImprovementDetail',
+      }"
+    >
+      <template #custom>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("状态") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="status"
+              :placeholder="$t(`请选择状态`)"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option :label="$t(`新建`)" value="新建"></el-option>
+            <el-option :label="$t(`分析已提交`)" value="分析已提交"></el-option>
+            <el-option :label="$t(`方案已发布`)" value="方案已发布"></el-option>
+            <el-option :label="$t(`已完成`)" value="已完成"></el-option>
+            <el-option :label="$t(`已中止`)" value="已中止"></el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("改善类别") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="where.type"
+              :placeholder="$t(`请选择改善类别`)"
+              @focus="queryType('improvementtype')"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option
+                v-for="item in options.improvementtype"
+                :key="item.value"
+                :label="$t(item.value)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("客诉大类") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="where.type"
+              :placeholder="$t(`请选择客诉大类`)"
+              @focus="queryType('customerclass')"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option
+                v-for="item in options.customerclass"
+                :key="item.value"
+                :label="$t(item.value)"
+                :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("改善结果") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="status"
+              :placeholder="$t(`请选择改善结果`)"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option :label="$t(`有效`)" value="有效"></el-option>
+            <el-option :label="$t(`无效`)" value="无效"></el-option>
+          </el-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("真因分析时间") }}:</label>
+          <el-date-picker
+              style="margin-right: 24px !important"
+              size="small"
+              @change="selectChange"
+              value-format="yyyy-MM-dd"
+              v-model="submitdate"
+              type="daterange"
+              :range-separator="$t(`至`)"
+              :start-placeholder="$t(`开始日期`)"
+              :end-placeholder="$t(`结束日期`)"
+              clearable
+          >
+          </el-date-picker>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("方案发布时间") }}:</label>
+          <el-date-picker
+              style="margin-right: 24px !important"
+              size="small"
+              @change="selectChange"
+              value-format="yyyy-MM-dd"
+              v-model="senddate"
+              type="daterange"
+              :range-separator="$t(`至`)"
+              :start-placeholder="$t(`开始日期`)"
+              :end-placeholder="$t(`结束日期`)"
+              clearable
+          >
+          </el-date-picker>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("创建时间") }}:</label>
+          <el-date-picker
+              style="margin-right: 24px !important"
+              size="small"
+              @change="selectChange"
+              value-format="yyyy-MM-dd"
+              v-model="createdate"
+              type="daterange"
+              :range-separator="$t(`至`)"
+              :start-placeholder="$t(`开始日期`)"
+              :end-placeholder="$t(`结束日期`)"
+              clearable
+          >
+          </el-date-picker>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("完成时间") }}:</label>
+          <el-date-picker
+              style="margin-right: 24px !important"
+              size="small"
+              @change="selectChange"
+              value-format="yyyy-MM-dd"
+              v-model="finishdate"
+              type="daterange"
+              :range-separator="$t(`至`)"
+              :start-placeholder="$t(`开始日期`)"
+              :end-placeholder="$t(`结束日期`)"
+              clearable
+          >
+          </el-date-picker>
+        </div>
+      </template>
+      <template v-slot:tbList="scope">
+        <div v-if="scope.data.column.columnname == 'status'">
+          <span :style="tool.getStatusColor(scope.data.column.data[[scope.data.column.columnname]])">{{
+              $t(scope.data.column.data[[scope.data.column.columnname]])
+            }}</span>
+        </div>
+        <div v-else-if="scope.data.column.columnname == 'result'">
+          <span :style="tool.getStatusColor(scope.data.column.data[[scope.data.column.columnname]])">{{
+              $t(scope.data.column.data[[scope.data.column.columnname]])
+            }}</span>
+        </div>
+        <div v-else>
+          {{
+            scope.data.column.data[[scope.data.column.columnname]]
+                ? $t(scope.data.column.data[[scope.data.column.columnname]])
+                : "--"
+          }}
+        </div>
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "index",
+  data(){
+    return {
+      options:{
+        improvementtype:[],
+        customerclass:[]
+      },
+      where: {
+        "condition": "",
+        "status": [], //状态
+        "type": "", //改善类别
+        "class2": "", //客诉大类
+        "result": "", //改善结果
+        "begindate_submitdate": "", //真因分析提交时间区间
+        "enddate_submitdate": "", //真因分析提交时间区间
+        "begindate_senddate": "", //改善方案发布时间区间。
+        "enddate_senddate": "", //改善方案发布时间区间。
+        "begindate_createdate": "", //改善单创建时间区间。
+        "enddate_createdate": "", //改善单创建时间区间。
+        "begindate_finishdate": "", //改善单完成时间区间。
+        "enddate_finishdate": "" //改善单完成时间区间。
+      },
+      status:'',
+      submitdate:'',
+      senddate:'',
+      createdate:'',
+      finishdate:''
+    }
+  },
+  methods:{
+    selectChange() {
+      if (this.status){
+        this.where.status = [this.status]
+      }else {
+        this.where.status = []
+      }
+      if (this.submitdate){
+        this.where.begindate_submitdate = this.submitdate[0]
+        this.where.enddate_submitdate = this.submitdate[1]
+      }else {
+        this.where.begindate_submitdate = ''
+        this.where.enddate_submitdate = ''
+      }
+      if (this.senddate){
+        this.where.begindate_senddate = this.senddate[0]
+        this.where.enddate_senddate = this.senddate[1]
+      }else {
+        this.where.begindate_senddate = ''
+        this.where.enddate_senddate = ''
+      }
+      if (this.createdate){
+        this.where.begindate_createdate = this.createdate[0]
+        this.where.enddate_createdate = this.createdate[1]
+      }else {
+        this.where.begindate_createdate = ''
+        this.where.enddate_createdate = ''
+      }
+      if (this.finishdate){
+        this.where.begindate_finishdate = this.finishdate[0]
+        this.where.enddate_finishdate = this.finishdate[1]
+      }else {
+        this.where.begindate_finishdate = ''
+        this.where.enddate_finishdate = ''
+      }
+      this.$refs.list.param.content.where = this.where;
+      this.$refs.list.listData();
+    },
+    async queryType(type){
+      if (this.options[type].length == 0){
+        const res = await this.$store.dispatch('optiontypeselect',type)
+        this.options[type] = res.data
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/HDrpManagement/serviceImprovement/modules/detail.vue

@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+export default {
+  name: "detail"
+}
+</script>
+
+<style scoped>
+
+</style>

+ 22 - 0
src/router/HDrpManagement.js

@@ -916,6 +916,28 @@ const HDrpManagement = [
       },
     ]
   },
+  {
+    path: '/serviceImprovement',
+    name:'serviceImprovement',
+    meta: {
+      title: '服务改善',
+      ast_nav: true,
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/serviceImprovement/index'),
+    children: [
+      {
+        path: '/serviceImprovementDetail',
+        name:'serviceImprovement',
+        meta: {
+          title: '服务改善详情',
+          ast_nav: true,
+          keeproute: true,
+        },
+        component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/serviceImprovement/modules/detail')
+      },
+    ]
+  },
   {
     path: '/workorder',
     name:'workorder',