Browse Source

服务改善单详情页功能

qymljy 3 months ago
parent
commit
a59f95e54a

+ 71 - 3
src/HDrpManagement/serviceImprovement/modules/detail.vue

@@ -14,6 +14,65 @@
         :tabs="['服务申请','服务工单','服务改善']"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="customOperation">
+        <edit class="inline-16" v-if="(mainData.status != '已完成' && mainData.status != '已中止') && someUserid" @editSuccess="queryMainData($route.query.id)" :data="mainData"></edit>
+        <customBtn
+            btnName="提交分析"
+            message="是否确定提交真因分析?"
+            idName="2026013111240602"
+            keyName="sa_service_improvementid"
+            :id="$route.query.id"
+            v-if="mainData.status == '新建' && (userid == mainData.userid_analysis)"
+            @onSuccess="queryMainData"
+            class="inline-16"
+        />
+        <customBtn
+            btnName="撤回分析"
+            message="是否确定撤回真因分析?"
+            confirmButtonText="确定撤回"
+            idName="2026013111242402"
+            keyName="sa_service_improvementid"
+            :id="$route.query.id"
+            @onSuccess="queryMainData"
+            v-if="mainData.status == '分析已提交' && (userid == mainData.userid_analysis)"
+            class="inline-16"
+        />
+        <customBtn
+            btnName="发布方案"
+            message="是否确定发布改善方案?"
+            idName="2026013111251602"
+            keyName="sa_service_improvementid"
+            :id="$route.query.id"
+            @onSuccess="queryMainData"
+            v-if="mainData.status == '分析已提交' && (userid == mainData.userid_charge)"
+            class="inline-16"
+        />
+        <customBtn
+            btnName="撤回方案"
+            message="是否确定撤回改善方案?"
+            confirmButtonText="确定撤回"
+            idName="2026013111253202"
+            keyName="sa_service_improvementid"
+            v-if="mainData.status == '方案已发布' && (userid == mainData.userid_charge)"
+            :id="$route.query.id"
+            @onSuccess="queryMainData"
+            class="inline-16"
+        />
+        <customBtn
+            btnName="中止"
+            idName="2026013111262102"
+            keyName="sa_service_improvementid"
+            :id="$route.query.id"
+            :dialog="true"
+            :checkString="true"
+            dialogTitle="请输入中止原因"
+            dialogKey="abortreason"
+            @onSuccess="queryMainData"
+            errorMessage="中止原因不可为空"
+            v-if="(mainData.status != '已完成' && mainData.status != '已中止') && someUserid"
+            class="inline-16"
+        />
+      </div>
       <div slot="slot0" >
         <serviceApplication  ref="serviceApplicationRef" v-if="mainData" :mainData="mainData" :new-query="true"></serviceApplication>
       </div>
@@ -29,12 +88,14 @@
 
 <script>
 import serviceApplication from "@/HDrpManagement/serveBillMag/components/serviceApplication";
-import serviceWorkOrder from '@/HDrpManagement/serveWorkBill/modules/serviceWorkOrder/index'
+import serviceWorkOrder from '@/HDrpManagement/serveWorkBill/modules/serviceWorkOrder/index';
+import edit from './edit'
 export default {
   name: "detail",
   components:{
     serviceApplication,
-    serviceWorkOrder
+    serviceWorkOrder,
+    edit
   },
   data(){
     return {
@@ -43,6 +104,8 @@ export default {
       nodes: [],
       team_name:'',
       team_phone_number:'',
+      userid:JSON.parse(sessionStorage.getItem('active_account')).userid,
+      someUserid:false
     }
   },
   methods:{
@@ -54,6 +117,11 @@ export default {
         },
       })
       this.mainData = res.data
+      this.mainData.abort_userids.forEach(item => {
+        if (item == this.userid){
+          this.someUserid = true
+        }
+      })
       this.changeDataStructure()
     },
     changeDataStructure(){
@@ -70,7 +138,7 @@ export default {
         {label:'工单号',value:this.mainData.billno_workorder},
         {label:'申请单号',value:this.mainData.billno_serviceorder},
         {label:'客诉大类',value:this.mainData.class2},
-        {label:'分析负责人',value:this.mainData.userid_analysis},
+        {label:'分析负责人',value:this.mainData.name_analysis},
         {label:'真因分析时间',value:this.mainData.submitdate},
         {label:'责任部门',value:this.mainData.depname_charge},
         {label:'方案发布人',value:this.mainData.sendby},

+ 133 - 0
src/HDrpManagement/serviceImprovement/modules/edit.vue

@@ -0,0 +1,133 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="editBtn">{{
+        $t("编 辑")
+      }}</el-button>
+    <el-drawer
+        direction="rtl"
+        append-to-body
+        :title="$t(`编辑改善单`)"
+        :show-close="false"
+        :visible.sync="drawerVisible"
+        size="600px"
+        @close="onClose">
+      <div class="drawer__panel">
+        <el-row :gutter="2">
+          <el-form
+              :model="form"
+              :rules="rules"
+              ref="form"
+              :label-width="tool.onlyZh('90px')"
+              label-position="top"
+              size="mini"
+          >
+            <el-col :span="24">
+              <el-form-item :label="$t('改善类别') + ':'" prop="type">
+                <el-select
+                    style="width: 100%"
+                    class="inline-24"
+                    v-model="form.type"
+                    :placeholder="$t(`请选择改善类别`)"
+                    @focus="queryType('improvementtype')"
+                    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>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`备注`) + ':'" prop="remarks">
+                <el-input
+                    v-model="form.remarks"
+                    :placeholder="$t(`请输入备注`)"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button
+            size="small"
+            @click="onClose"
+            class="normal-btn-width"
+        >{{ $t("取 消") }}</el-button
+        >
+        <el-button
+            size="small"
+            type="warning"
+            @click="onSubmit"
+            class="normal-btn-width btn-warning"
+        >{{ $t("确 定") }}</el-button
+        >
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "edit",
+  props:["data"],
+  data(){
+    return {
+      drawerVisible:false,
+      options:{
+        improvementtype:[]
+      },
+      form:{
+        "sa_service_improvementid": this.$route.query.id,
+        "type": "",
+        "remarks": ""
+      },
+      rules:{
+        type: [
+          {
+            required: true,
+            message: this.$t("请选择改善类别"),
+            trigger: "change",
+          },
+        ],
+      }
+    }
+  },
+  methods:{
+    editBtn(){
+      this.drawerVisible = true
+      this.form.type = this.data.type
+      this.form.remarks = this.data.remarks
+    },
+    onSubmit(){
+      this.$refs["form"].validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 2026013111232202,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.drawerVisible = false
+        })
+      })
+    },
+    onClose(){
+      this.$emit('editSuccess')
+    },
+    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>

+ 4 - 3
src/components/customBtn/index.vue

@@ -34,7 +34,8 @@ export default {
     checkString: Boolean,
     size: String,
     delType: String,
-    errorMessage:String
+    errorMessage:String,
+    confirmButtonText:String
   },
   data() {
     return {};
@@ -45,7 +46,7 @@ export default {
     submit() {
       if (this.dialog) {
         this.$prompt(this.$t(this.dialogTitle), this.$t("提示"), {
-          confirmButtonText: this.$t("确定"),
+          confirmButtonText: this.confirmButtonText?this.$t(this.confirmButtonText):this.$t("确定"),
           cancelButtonText: this.$t("取消"),
           inputPattern: this.checkContent ? /^[\d.]+$/ : this.checkString ? /^\S.*$/ : "",
           inputErrorMessage: this.$t(this.errorMessage)
@@ -84,7 +85,7 @@ export default {
         });
       } else {
         this.$confirm(this.$t(this.message), this.$t("提示"), {
-          confirmButtonText: this.$t("确定"),
+          confirmButtonText: this.confirmButtonText?this.$t(this.confirmButtonText):this.$t("确定"),
           cancelButtonText: this.$t("取消"),
           type: "warning",
         }).then(async () => {