Ver código fonte

Merge branch 'greenUrgent' into allTestUrgent

qymljy 4 meses atrás
pai
commit
85f844174e

+ 268 - 78
src/HDrpManagement/serveWorkBill/components/edit.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-button size="mini" type="primary" @click="editBtn">{{
+    <el-button size="mini" :type="editDis?'':'primary'" @click="editBtn" :disabled="editDis">{{
       $t("编 辑")
     }}</el-button>
     <el-drawer
@@ -10,7 +10,7 @@
       :visible.sync="dialog"
       size="40%"
     >
-      <div slot="title" style="font-size: 15px">{{ $t("编辑服务工单") }}</div>
+      <div slot="title" style="font-size: 15px">{{ $t("编辑工单") }}</div>
       <div class="drawer__panel">
         <el-row :gutter="20">
           <el-form
@@ -18,113 +18,179 @@
             :rules="rules"
             ref="form"
             :label-width="tool.onlyZh('140px')"
-            label-position="right"
+            label-position="top"
             size="mini"
           >
             <el-col :span="24">
-              <el-form-item :label="$t(`申请单`)+':'" prop="billno">
-                <selectOrder ref="order" @selectRow="orderChange">
+              <el-form-item :label="$t(`服务类型`)+':'" prop="servicetype">
+                <el-select
+                    class="inline-24"
+                    v-model="form.servicetype"
+                    :placeholder="$t(`请选择服务类型`)"
+                    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="$t(`历史售后`)"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24" v-if="form.servicetype == '售中' || form.servicetype == '售后'">
+              <el-form-item :label="$t(`订单号`)+':'" prop="sonum" >
+                <selectOrder
+                    :id="form.sys_enterpriseid"
+                    ref="order"
+                    @selectRow="orderChange"
+                >
                   <el-input
-                    readonly
-                    disabled
-                    type="text"
-                    slot="input"
-                    size="mini"
-                    @focus="
+                      readonly
+                      :disabled="!form.sys_enterpriseid"
+                      type="text"
+                      slot="input"
+                      size="mini"
+                      @focus="
                       $refs.order.listData(), ($refs.order.visible = true)
                     "
-                    v-model="form.billno"
+                      v-model="form.sonum"
                   ></el-input>
                 </selectOrder>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t(`工单模板`) + ':'" prop="templatename">
-                <selectTemplate ref="template" @selectRow="templateChange">
-                  <el-input
-                    readonly
-                    disabled
-                    type="text"
-                    slot="input"
-                    size="mini"
-                    @focus="
-                      $refs.template.listData(), ($refs.template.visible = true)
-                    "
-                    v-model="form.templatename"
-                  ></el-input>
-                </selectTemplate>
+              <el-form-item :label="$t('省市县')" prop="province">
+                <el-cascader :placeholder="$t('请选择')"
+                             size="mini"
+                             v-model="form.province"
+                             :options="basicData.data().areaData"
+                             ref="cascader"
+                >
+                </el-cascader>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item
-                :label="$t(`是否在保`)"
-                prop="inqualityguaranteeperiod"
-              >
-                <el-radio-group v-model="form.inqualityguaranteeperiod">
-                  <el-radio :label="1">{{ $t("是") }}</el-radio>
-                  <el-radio :label="0">{{ $t("否") }}</el-radio>
-                </el-radio-group>
+              <el-form-item :label="$t('详细地址')" prop="address">
+                <el-input
+                    v-model="form.address"
+                    :placeholder="$t(`请输入详细地址`)"
+                ></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t(`是否在我司产品`)" prop="isouritem">
-                <el-radio-group v-model="form.isouritem">
-                  <el-radio :label="1">{{ $t("是") }}</el-radio>
-                  <el-radio :label="0">{{ $t("否") }}</el-radio>
-                </el-radio-group>
+              <el-form-item :label="$t(`现场联系人`)" prop="scenecontact">
+                <el-input
+                    v-model="form.scenecontact"
+                    :placeholder="$t(`请输入现场联系人`)"
+                ></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t(`异常属实`)" prop="isfact">
-                <el-radio-group v-model="form.isfact">
-                  <el-radio :label="1">{{ $t("是") }}</el-radio>
-                  <el-radio :label="0">{{ $t("否") }}</el-radio>
-                </el-radio-group>
+              <el-form-item :label="$t(`身份备注`)" prop="scenecontactrole">
+                <el-input
+                    v-model="form.scenecontactrole"
+                    :placeholder="$t(`请输入身份备注`)"
+                ></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t('联系人')" prop="scenecontact">
+              <el-form-item
+                  :label="$t(`现场联系人电话`)"
+                  prop="scenecontactphonenumber"
+              >
                 <el-input
-                  v-model="form.scenecontact"
-                  :placeholder="$t(`请输入联系人`)"
+                    v-model="form.scenecontactphonenumber"
+                    :placeholder="$t(`请输入现场联系人电话`)"
                 ></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item :label="$t(`联系人角色`)" prop="scenecontactrole">
-                <el-input
-                  v-model="form.scenecontactrole"
-                  :placeholder="$t(`请输入联系人角色`)"
-                ></el-input>
+              <el-form-item :label="$t(`应用系统`)" prop="class1">
+                <el-select
+                    class="inline-24"
+                    v-model="form.class1"
+                    @focus="queryType('systemapp')"
+                    :placeholder="$t(`请选择应用系统`)"
+                    size="mini"
+                    clearable
+                >
+                  <el-option
+                      v-for="(item, index) in options.systemapp"
+                      :key="index"
+                      :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="scenecontactphonenumber"
-              >
+              <el-form-item :label="$t(`客诉大类`)" prop="class2">
+                <el-select
+                    class="inline-24"
+                    v-model="form.class2"
+                    @focus="queryType('customerclass')"
+                    :placeholder="$t(`请选择客诉大类`)"
+                    size="mini"
+                    clearable
+                >
+                  <el-option
+                      v-for="(item, index) in options.customerclass"
+                      :key="index"
+                      :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="reason">
                 <el-input
-                  v-model="form.scenecontactphonenumber"
-                  :placeholder="$t(`请输入联系人电话`)"
+                    v-model="form.reason"
+                    :placeholder="$t(`请输入问题描述`)"
                 ></el-input>
               </el-form-item>
             </el-col>
-            <!-- <el-col :span="24">
-              <el-form-item :label="$t(`服务团队`)" prop="servicetype">
-                <selectTeam ref="team" @teamChange="teamChange">
-                  <el-tag
-                    style="margin-bottom:10px"
-                    :key="tag.userid"
-                    v-for="tag in form.projectlearders"
-                    closable
-                    :disable-transitions="false"
-                    @close="handleClose(tag)">
-                    {{tag.name}}
-                  </el-tag>
-                  <el-button class="button-new-tag" size="small" @click="$refs.team.dialogFormVisible=true">+ New people</el-button>
-                </selectTeam>
+            <el-col :span="24">
+              <el-form-item :label="$t(`异常类型`)" prop="exception_type">
+                <el-select
+                    class="inline-24"
+                    v-model="form.exception_type"
+                    :placeholder="$t(`请选择异常类型`)"
+                    @focus="queryType('exceptiontype')"
+                    size="small"
+                    clearable
+                >
+                  <el-option
+                      v-for="item in options.exceptiontype"
+                      :key="item.value"
+                      :label="$t(item.value)"
+                      :value="item.value">
+                  </el-option>
+                </el-select>
               </el-form-item>
-            </el-col> -->
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`服务等级`)" prop="service_level">
+                <el-select
+                    class="inline-24"
+                    v-model="form.service_level"
+                    :placeholder="$t(`请选择服务等级`)"
+                    @focus="queryType('servicelevel')"
+                    size="small"
+                    clearable
+                >
+                  <el-option
+                      v-for="item in options.servicelevel"
+                      :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
@@ -157,7 +223,7 @@
 </template>
 
 <script>
-import selectOrder from "./selectOrder";
+import selectOrder from "./selectOrderNew";
 import selectTemplate from "./selectTemplate";
 
 import selectTeam from "./teamSelect";
@@ -186,8 +252,88 @@ export default {
         scenecontactrole: "",
         scenecontactphonenumber: "",
         projectlearders: [],
+        servicetype:'',
+        sa_orderid:0,
+        province:'',
+        city:'',
+        county:'',
+        class1:'',
+        class2:'',
+        exception_type:'',
+        service_level:'',
+        sys_enterpriseid:''
       },
       rules: {
+        servicetype: [
+          {
+            required: true,
+            message: this.$t("请选择服务类型"),
+            trigger: "change",
+          },
+        ],
+        sa_orderid: [
+          {
+            required: true,
+            message: this.$t("请选择订单"),
+            trigger: "change",
+          },
+        ],
+        province: [
+          {
+            required: true,
+            message: this.$t("请选择省市县"),
+            trigger: "change",
+          },
+        ],
+        class1: [
+          {
+            required: true,
+            message: this.$t("请选择应用系统"),
+            trigger: "change",
+          },
+        ],
+        class2: [
+          {
+            required: true,
+            message: this.$t("请选择客诉大类"),
+            trigger: "change",
+          },
+        ],
+        address: [
+          {
+            required: true,
+            message: this.$t("请输入详细地址"),
+            trigger: "blur",
+          },
+        ],
+        reason: [
+          {
+            required: true,
+            message: this.$t("请输入问题描述"),
+            trigger: "blur",
+          },
+        ],
+        scenecontact: [
+          {
+            required: true,
+            message: this.$t("请输入现场联系人"),
+            trigger: "blur",
+          },
+        ],
+        exception_type: [
+          {
+            required: true,
+            message: this.$t("请选择异常类型"),
+            trigger: "change",
+          },
+        ],
+        service_level: [
+          {
+            required: true,
+            message: this.$t("请选择服务等级"),
+            trigger: "change",
+          },
+        ],
         billno: [
           {
             required: true,
@@ -206,14 +352,34 @@ export default {
           },
         ],
       },
+      agentParam: {
+        id: 20220920083901,
+        content: {
+          pageNumber: 1,
+          pageSize: 20,
+          where: {
+            condition: "",
+            type: "",
+          },
+        },
+      },
+      options:{
+        customerclass:[],
+        exceptiontype:[],
+        servicelevel:[],
+        systemapp:[]
+      },
+      userid:JSON.parse(sessionStorage.getItem('active_account')).userid,
+      editDis:true
     };
   },
   methods: {
     editBtn() {
+      console.log(this.data)
       this.dialog = true;
       this.form = Object.assign({}, this.form, this.data);
       this.form.projectlearders = this.form.team;
-      console.log(this.form);
+      this.form.province = [this.data.province,this.data.city,this.data.county]
     },
     onSubmit() {
       console.log(this.form);
@@ -222,9 +388,11 @@ export default {
         this.form.projectlearders = this.form.projectlearders.map(
           (item) => item.userid
         );
+        this.form.city = this.form.province[1]
+        this.form.county = this.form.province[2]
+        this.form.province = this.form.province[0]
         const res = await this.$api.requested({
           id: "20230208140003",
-          version: 1,
           content: this.form,
         });
         this.tool.showMessage(res, () => {
@@ -245,9 +413,10 @@ export default {
     orderChange(data) {
       console.log(data);
 
-      this.form.billno = data.billno;
-      this.form.sa_serviceorderid = data.sa_serviceorderid;
+      this.form.sa_orderid = data.sa_orderid;
+      this.form.sonum = data.sonum;
       this.$refs.order.visible = false;
+      console.log(this.form.sonum);
     },
     templateChange(data) {
       console.log(data);
@@ -278,6 +447,27 @@ export default {
       this.form.projectlearders.push(...result);
       this.$refs.team.dialogFormVisible = false;
     },
+    classChange() {
+      if (this.form.servicetype == "售中" || this.form.servicetype == "售后") {
+        this.$refs.agent.param.content.sys_enterpriseid =
+            this.form.sys_enterpriseid;
+      }
+    },
+    async queryType(type){
+      if (this.options[type].length == 0){
+        const res = await this.$store.dispatch('optiontypeselect',type)
+        this.options[type] = res.data
+      }
+    }
+  },
+  mounted() {
+    console.log(this.data,'输出data的数据222')
+    this.editDis = true
+    this.data.team.forEach(item =>{
+      if (item.userid == this.userid){
+        this.editDis = false
+      }
+    })
   },
   created() {},
 };

+ 310 - 0
src/HDrpManagement/serveWorkBill/components/editCopy.vue

@@ -0,0 +1,310 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="editBtn">{{
+      $t("编 辑")
+    }}</el-button>
+    <el-drawer
+      :title="$t(`新 建`)"
+      append-to-body
+      :show-close="false"
+      :visible.sync="dialog"
+      size="40%"
+    >
+      <div slot="title" style="font-size: 15px">{{ $t("编辑服务工单") }}</div>
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form
+            :model="form"
+            :rules="rules"
+            ref="form"
+            :label-width="tool.onlyZh('140px')"
+            label-position="right"
+            size="mini"
+          >
+            <el-col :span="24">
+              <el-form-item :label="$t(`申请单`)+':'" prop="billno">
+                <selectOrder ref="order" @selectRow="orderChange">
+                  <el-input
+                    readonly
+                    disabled
+                    type="text"
+                    slot="input"
+                    size="mini"
+                    @focus="
+                      $refs.order.listData(), ($refs.order.visible = true)
+                    "
+                    v-model="form.billno"
+                  ></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`工单模板`) + ':'" prop="templatename">
+                <selectTemplate ref="template" @selectRow="templateChange">
+                  <el-input
+                    readonly
+                    disabled
+                    type="text"
+                    slot="input"
+                    size="mini"
+                    @focus="
+                      $refs.template.listData(), ($refs.template.visible = true)
+                    "
+                    v-model="form.templatename"
+                  ></el-input>
+                </selectTemplate>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                :label="$t(`是否在保`)"
+                prop="inqualityguaranteeperiod"
+              >
+                <el-radio-group v-model="form.inqualityguaranteeperiod">
+                  <el-radio :label="1">{{ $t("是") }}</el-radio>
+                  <el-radio :label="0">{{ $t("否") }}</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`是否在我司产品`)" prop="isouritem">
+                <el-radio-group v-model="form.isouritem">
+                  <el-radio :label="1">{{ $t("是") }}</el-radio>
+                  <el-radio :label="0">{{ $t("否") }}</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`异常属实`)" prop="isfact">
+                <el-radio-group v-model="form.isfact">
+                  <el-radio :label="1">{{ $t("是") }}</el-radio>
+                  <el-radio :label="0">{{ $t("否") }}</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t('联系人')" prop="scenecontact">
+                <el-input
+                  v-model="form.scenecontact"
+                  :placeholder="$t(`请输入联系人`)"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`联系人角色`)" prop="scenecontactrole">
+                <el-input
+                  v-model="form.scenecontactrole"
+                  :placeholder="$t(`请输入联系人角色`)"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item
+                :label="$t(`联系人电话`)"
+                prop="scenecontactphonenumber"
+              >
+                <el-input
+                  v-model="form.scenecontactphonenumber"
+                  :placeholder="$t(`请输入联系人电话`)"
+                ></el-input>
+              </el-form-item>
+            </el-col>
+            <!-- <el-col :span="24">
+              <el-form-item :label="$t(`服务团队`)" prop="servicetype">
+                <selectTeam ref="team" @teamChange="teamChange">
+                  <el-tag
+                    style="margin-bottom:10px"
+                    :key="tag.userid"
+                    v-for="tag in form.projectlearders"
+                    closable
+                    :disable-transitions="false"
+                    @close="handleClose(tag)">
+                    {{tag.name}}
+                  </el-tag>
+                  <el-button class="button-new-tag" size="small" @click="$refs.team.dialogFormVisible=true">+ New people</el-button>
+                </selectTeam>
+              </el-form-item>
+            </el-col> -->
+            <el-col :span="24">
+              <el-form-item :label="$t('备注')" prop="remarks">
+                <el-input
+                  type="textarea"
+                  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="dialog = false"
+          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>
+import selectOrder from "./selectOrder";
+import selectTemplate from "./selectTemplate";
+
+import selectTeam from "./teamSelect";
+export default {
+  name: "add",
+  props: ["data"],
+  components: { selectOrder, selectTemplate, selectTeam },
+  data() {
+    return {
+      dialog: false,
+      serveClassList: [],
+      form: {
+        sa_workorderid: "", //sa_brandid<=0时 为新增
+        sa_serviceorderid: "",
+        billno: "",
+        sa_workorder_templateid: "",
+        templatename: "",
+        name: "",
+        remarks: "",
+        inqualityguaranteeperiod: 1,
+        isouritem: 1,
+        isfact: 1,
+        reason: "",
+        address: "",
+        scenecontact: "",
+        scenecontactrole: "",
+        scenecontactphonenumber: "",
+        projectlearders: [],
+      },
+      rules: {
+        billno: [
+          {
+            required: true,
+            message: this.$t("请选择申请单"),
+            trigger: "change",
+          },
+        ],
+        templatename: [
+          { required: true, message: this.$t("请选择模板"), trigger: "change" },
+        ],
+        scenecontactphonenumber: [
+          {
+            pattern: /^1[3-9][0-9]\d{8}$/,
+            message: this.$t("请输入正确手机号码"),
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  methods: {
+    editBtn() {
+      this.dialog = true;
+      this.form = Object.assign({}, this.form, this.data);
+      this.form.projectlearders = this.form.team;
+      console.log(this.form);
+    },
+    onSubmit() {
+      console.log(this.form);
+      this.$refs["form"].validate(async (valid) => {
+        if (!valid) return false;
+        this.form.projectlearders = this.form.projectlearders.map(
+          (item) => item.userid
+        );
+        const res = await this.$api.requested({
+          id: "20230208140003",
+          version: 1,
+          content: this.form,
+        });
+        this.tool.showMessage(res, () => {
+          this.$emit("onSuccess");
+          this.$refs["form"].resetFields();
+          this.dialog = false;
+        });
+      });
+    },
+    async getTeamList() {
+      let res = await this.$api.requested({
+        id: 20230206112003,
+        content: {},
+      });
+      this.serveClassList = res.data;
+      console.log(this.serveClassList);
+    },
+    orderChange(data) {
+      console.log(data);
+
+      this.form.billno = data.billno;
+      this.form.sa_serviceorderid = data.sa_serviceorderid;
+      this.$refs.order.visible = false;
+    },
+    templateChange(data) {
+      console.log(data);
+
+      this.form.name = data.name;
+      this.form.sa_workorder_templateid = data.sa_workorder_templateid;
+      this.$refs.template.visible = false;
+    },
+    handleClose(tag) {
+      this.form.projectlearders.splice(
+        this.form.projectlearders.indexOf(tag),
+        1
+      );
+    },
+    teamChange(data) {
+      let result = data.map((item) => {
+        return {
+          name: item.name,
+          userid: item.userid,
+        };
+      });
+      result = result.filter((item) => {
+        let is = this.form.projectlearders.every((item2) => {
+          return item.userid != item2.userid;
+        });
+        if (is) return item;
+      });
+      this.form.projectlearders.push(...result);
+      this.$refs.team.dialogFormVisible = false;
+    },
+  },
+  created() {},
+};
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select,
+.el-input,
+.el-cascader {
+  width: 100% !important;
+}
+.el-tag + .el-tag {
+  margin-left: 10px;
+}
+.button-new-tag {
+  margin-left: 10px;
+  height: 32px;
+  line-height: 30px;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.input-new-tag {
+  width: 90px;
+  margin-left: 10px;
+  vertical-align: bottom;
+}
+</style>

+ 126 - 0
src/HDrpManagement/serveWorkBill/components/selectOrderNew.vue

@@ -0,0 +1,126 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="visible" append-to-body width="60%">
+      <div class="flex-align-center flex-between mt-10">
+        <el-input
+            style="width: 200px"
+            size="small"
+            suffix-icon="el-icon-search"
+            v-model="param.content.where.condition"
+            :placeholder="$t('搜索')"
+            @keyup.enter.native="listData((param.content.pageNumber = 1))"
+            @clear="listData((param.content.pageNumber = 1))"
+            clearable
+        ></el-input>
+      </div>
+      <div>
+        <el-table
+            ref="multipleTable"
+            :data="tableData"
+            style="width: 100%"
+            size="mini"
+            border
+        >
+          <el-table-column prop="sonum" :label="$t('订单号')" width="130px">
+          </el-table-column>
+          <el-table-column prop="type" :label="$t(`订单类型`)">
+          </el-table-column>
+          <el-table-column prop="projectname" :label="$t(`项目名称`)">
+            <template slot-scope="scope">
+              {{scope.row.projectname || '--'}}
+            </template>
+          </el-table-column>
+          <el-table-column prop="tradefield" :label="$t(`领域`)">
+          </el-table-column>
+          <el-table-column prop="sumqty" :label="$t(`合计数量`)">
+          </el-table-column>
+          <el-table-column prop="sumamount" :label="$t(`合计金额`)">
+          </el-table-column>
+          <el-table-column prop="billdate" :label="$t(`单据时间`)">
+          </el-table-column>
+          <el-table-column prop="saler_name" :label="$t('业务员')">
+            <template slot-scope="scope">
+              {{scope.row.saler_name || '--'}}
+            </template>
+          </el-table-column>
+          <el-table-column :label="$t('操作')" width="90">
+            <template slot-scope="scope">
+              <el-button
+                  type="text"
+                  size="small"
+                  @click="selectRow(scope.row)"
+              >{{ $t("选 择") }}</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <div style="margin-top: 16px; text-align: right">
+          <el-pagination
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="param.content.pageNumber"
+              :page-size="param.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total"
+          >
+          </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
+    <slot name="input"></slot>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ["id"],
+  data() {
+    return {
+      visible: false,
+      param: {
+        id: 20230206091503,
+        version: 1,
+        content: {
+          sys_enterpriseid: 1,
+          pageNumber: 1,
+          pageSize: 20,
+          where: {
+            condition: "",
+          },
+        },
+      },
+      tableData: [],
+      total: 0,
+      currentPage: 0,
+    };
+  },
+  methods: {
+    async listData() {
+      this.param.content.sys_enterpriseid = this.id;
+      const res = await this.$api.requested(this.param);
+      this.tableData = res.data;
+      this.total = res.total;
+      this.currentPage = res.pageNumber;
+      console.log(this.tableData);
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val;
+      this.listData();
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val;
+      this.listData();
+    },
+    selectRow(row) {
+      this.$emit("selectRow", row);
+    },
+  },
+  created() {},
+};
+</script>
+<style>
+</style>

+ 97 - 36
src/HDrpManagement/serveWorkBill/index.vue

@@ -6,48 +6,83 @@
       tableName="indexTable"
       idName="sa_workorderid"
       :apiId="{ query: 20230208140203, del: 20230209144803 }"
-      :options="options"
       :detailPath="{
         path: '/workorderDetail',
       }"
       @listData="list"
       @listCreate="listCreate"
     >
-      <div slot="custom" style="display: flex">
-        <div class="label_center">
+      <template #custom>
+        <div class="mt-10">
           <label class="search__label">{{ $t("状态") }}:</label>
           <el-select
-            class="inline-24"
-            v-model="where.status"
-            :placeholder="$t(`请选择状态`)"
-            @change="selectChange"
-            size="small"
-            clearable
+              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-option :label="$t(`已中止`)" value="已中止"></el-option>
           </el-select>
         </div>
-        <div class="label_center">
-          <label class="search__label">{{ $t("提交日期") }}:</label>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("工单类型") }}:</label>
+          <el-select
+              class="inline-24"
+              v-model="where.type"
+              :placeholder="$t(`请选择工单类型`)"
+              @focus="queryType('serviceworktype')"
+              @change="selectChange"
+              size="small"
+              clearable
+          >
+            <el-option
+                v-for="item in options.serviceworktype"
+                :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.servicetype"
+              :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-select>
+        </div>
+        <div class="mt-10">
+          <label class="search__label">{{ $t("创建日期") }}:</label>
           <el-date-picker
-            style="margin-right: 24px !important"
-            size="small"
-            @change="dateChange"
-            value-format="yyyy-MM-dd"
-            v-model="where.date"
-            type="daterange"
-            :range-separator="$t(`至`)"
-            :start-placeholder="$t(`开始日期`)"
-            :end-placeholder="$t(`结束日期`)"
-            clearable
+              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>
+      </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]])">{{
@@ -59,6 +94,14 @@
             `${scope.data.column.data.province}-${scope.data.column.data.city}-${scope.data.column.data.county}`
           }}
         </div>
+        <div v-else-if="scope.data.column.columnname == 'isout'">
+          {{scope.data.column.data[[scope.data.column.columnname]]?'是':'否'}}
+        </div>
+        <div v-else-if="scope.data.column.columnname == 'service_level'">
+          <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]]
@@ -77,35 +120,53 @@ import { log } from "@antv/g2plot/lib/utils";
 export default {
   data() {
     return {
-      options: [],
+      options: {
+        serviceworktype:[]
+      },
       where: {
-        status: "",
-        date: "",
+        status: [], //工单状态,可多选
+        type: "", //工单类型
+        servicetype: "", //服务类型
+        begindate: "", //创建时间
+        enddate: "" //创建时间
       },
+      status:'',
+      createDate:""
     };
   },
   methods: {
     list(data) {
-      if (!data[0].servicebillno) this.$refs.list.list = [];
+      // if (!data[0].servicebillno) this.$refs.list.list = [];
+      if (!data[0].servicebillno) {
+        this.$refs.list.list = []
+        this.$refs.list.total = 0
+      }
     },
     listCreate(param) {
       param.content.isadmin = true;
     },
     selectChange() {
-      this.$refs.list.param.content.where = this.where;
-      this.$refs.list.listData();
-    },
-    dateChange(date) {
-      if (date) {
-        this.where.startdate = date[0];
-        this.where.enddate = date[1];
-      } else {
-        this.where.startdate = "";
-        this.where.enddate = "";
+      if (this.status){
+        this.where.status = [this.status]
+      }else {
+        this.where.status = []
+      }
+      if (this.createDate){
+        this.where.begindate = this.createDate[0]
+        this.where.enddate = this.createDate[1]
+      }else {
+        this.where.begindate = ''
+        this.where.enddate = ''
       }
       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>