codeMan 3 лет назад
Родитель
Сommit
6b6de016f0
26 измененных файлов с 2176 добавлено и 84 удалено
  1. 15 16
      src/Form/marketing2/agent/add.vue
  2. 21 18
      src/Form/marketing2/agent/edit.vue
  3. 1 1
      src/HDrpManagement/dispatch/modules/productlist.vue
  4. 15 2
      src/HDrpManagement/recvoucher/details/index.vue
  5. 3 2
      src/HDrpManagement/serveBill/components/add.vue
  6. 1 1
      src/HDrpManagement/serveBill/components/edit.vue
  7. 300 0
      src/HDrpManagement/serveBillMag/components/add.vue
  8. 148 0
      src/HDrpManagement/serveBillMag/components/changeBill.vue
  9. 299 0
      src/HDrpManagement/serveBillMag/components/edit.vue
  10. 112 0
      src/HDrpManagement/serveBillMag/components/selectAgent.vue
  11. 120 0
      src/HDrpManagement/serveBillMag/components/selectOrder.vue
  12. 113 0
      src/HDrpManagement/serveBillMag/components/workProgress.vue
  13. 101 0
      src/HDrpManagement/serveBillMag/index.vue
  14. 218 0
      src/HDrpManagement/serveBillMag/modules/detail.vue
  15. 152 0
      src/HDrpManagement/serveBillMag/modules/product/add.vue
  16. 135 0
      src/HDrpManagement/serveBillMag/modules/product/index.vue
  17. 150 0
      src/HDrpManagement/serveBillMag/modules/workBill/add.vue
  18. 152 0
      src/HDrpManagement/serveBillMag/modules/workBill/index.vue
  19. 1 1
      src/HManagement/notice/list/modules/add.vue
  20. 5 5
      src/HManagement/roleManage/modules/auth_list2.vue
  21. 35 11
      src/SDrpManagement/ProductGroup/index.vue
  22. 17 9
      src/SDrpManagement/ProductGroup/modules/GroupDetail/groupDetail.vue
  23. 32 16
      src/SDrpManagement/ProductGroup/modules/Select.vue
  24. 3 2
      src/SDrpManagement/agentOrder/modules/add.vue
  25. 22 0
      src/router/HDrpManagement.js
  26. 5 0
      src/template/invoiceCanUseProduct/index.vue

+ 15 - 16
src/Form/marketing2/agent/add.vue

@@ -83,15 +83,6 @@
             <selectAgent ref="agent" @selectAgent="selectAgent" :title="title"></selectAgent>
           </el-form-item>
           </el-col>
-          <el-col :span="12">
-          <el-form-item label="是否免运费">
-              <el-radio-group v-model="radio" @change="radioChange">
-                <el-radio :label="-1">不免费运费</el-radio>
-                <el-radio :label="0">免运费</el-radio>
-                <el-radio :label="1">其他</el-radio>
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
           <el-col :span="12">
             <el-form-item label="企业等级">
               <el-select size="small" style="width:100%" v-model="form.grade" placeholder="请选择">
@@ -106,12 +97,7 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12" v-if="radio === 1">
-            <el-form-item label="免运费额度" prop="freefreightamount">
-              <el-input v-model.number="form.freefreightamount" placeholder="请输入免运费额度"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
+          <el-col :span="12" style="height:51px">
             <el-form-item label="开票节点" prop="invoicingpoint">
               <el-radio-group v-model="form.invoicingpoint">
                 <el-radio :label="1">订单审核</el-radio>
@@ -124,12 +110,25 @@
               <el-checkbox v-model="form.isservice" :true-label="1" :false-label="0"></el-checkbox>
             </el-form-item>
           </el-col>
-          
           <el-col :span="12">
             <el-form-item label="是否授权所有营销类别:" prop="saleclassauth" label-width="160px">
               <el-checkbox v-model="form.saleclassauth" :true-label="0" :false-label="1"></el-checkbox>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+          <el-form-item label="是否免运费">
+              <el-radio-group v-model="radio" @change="radioChange">
+                <el-radio :label="-1">不免费运费</el-radio>
+                <el-radio :label="0">免运费</el-radio>
+                <el-radio :label="1">其他</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="radio === 1">
+            <el-form-item label="免运费额度" prop="freefreightamount">
+              <el-input v-model.number="form.freefreightamount" placeholder="请输入免运费额度"></el-input>
+            </el-form-item>
+          </el-col>
         </el-form>
       </el-row>
       </div>

+ 21 - 18
src/Form/marketing2/agent/edit.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-button type="primary" size="mini" @click="onShow">编 辑</el-button>
-    <el-drawer title="编辑经销商" direction="rtl" size="50%" append-to-body :visible.sync="dialogVisible" :show-close="false">
+    <el-drawer title="编辑经销商" direction="rtl" size="900px" append-to-body :visible.sync="dialogVisible" :show-close="false">
       <div class="drawer__panel">
         <el-row :gutter="20">
           <el-form :model="form" ref="form" :rules="rules" size="small" label-position="right" label-width="120px" class="demo-form-inline">
@@ -96,15 +96,6 @@
             <selectAgent ref="agent" @selectAgent="selectAgent" :title="title"></selectAgent>
           </el-form-item>
           </el-col>
-          <el-col :span="12">
-          <el-form-item label="是否免运费">
-              <el-radio-group v-model="radio" @change="radioChange">
-                <el-radio :label="-1">不免费运费</el-radio>
-                <el-radio :label="0">免运费</el-radio>
-                <el-radio :label="1">其他</el-radio>
-              </el-radio-group>
-            </el-form-item>
-          </el-col>
           <el-col :span="12">
             <el-form-item label="企业等级">
               <el-select size="small" style="width:100%" v-model="form.grade" placeholder="请选择">
@@ -119,12 +110,7 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12" v-if="radio === 1">
-            <el-form-item label="免运费额度" prop="freefreightamount">
-              <el-input v-model.number="form.freefreightamount" placeholder="请输入免运费额度"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
+          <el-col :span="12" style="height:51px">
             <el-form-item label="开票节点" prop="invoicingpoint">
               <el-radio-group v-model="form.invoicingpoint">
                 <el-radio :label="1">订单审核</el-radio>
@@ -137,12 +123,25 @@
               <el-checkbox v-model="form.isservice" :true-label="1" :false-label="0"></el-checkbox>
             </el-form-item>
           </el-col>
-          
           <el-col :span="12">
             <el-form-item label="是否授权所有营销类别:" prop="saleclassauth" label-width="160px">
               <el-checkbox v-model="form.saleclassauth" :true-label="0" :false-label="1"></el-checkbox>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+          <el-form-item label="是否免运费">
+              <el-radio-group v-model="radio" @change="radioChange">
+                <el-radio :label="-1">不免费运费</el-radio>
+                <el-radio :label="0">免运费</el-radio>
+                <el-radio :label="1">其他</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="radio === 1">
+            <el-form-item label="免运费额度" prop="freefreightamount">
+              <el-input v-model.number="form.freefreightamount" placeholder="请输入免运费额度"></el-input>
+            </el-form-item>
+          </el-col>
             
           </el-form>
         </el-row>
@@ -377,4 +376,8 @@ export default {
   height: 34px;
   line-height: 34px;
 }
-</style>
+.gz-form-row{
+  display: flex;
+  flex-wrap: wrap;
+}
+</style>

+ 1 - 1
src/HDrpManagement/dispatch/modules/productlist.vue

@@ -235,7 +235,7 @@ export default {
           "iteminfos":data.map(e=>{
             e.sa_dispatch_itemsid = 0
             e.qty=e.undeliqty
-            e.remarks = ''
+            e.remarks = e.remarks
             return e
           })
         },

+ 15 - 2
src/HDrpManagement/recvoucher/details/index.vue

@@ -38,7 +38,7 @@
           idName="20230306102904"
           keyName="sa_cashbillid"
           :id="$route.query.id"
-          @onSuccess="queryMainData($route.query.id)"
+          @onSuccess="duichong"
           class="inline-16"
           v-if="mainData.status == '审核' && tool.checkAuth($route.name,'duichong')"
         />
@@ -102,6 +102,19 @@ export default {
       
       this.changeDataStructure()
     },
+    duichong (data) {
+      // if (this.$route.path !== '/workorderDetail') {
+      //   this.oldRoute = {path:this.$route.path,query:this.$route.query}
+      //   this.$store.dispatch('setHistoryRouter',this.oldRoute)
+      // }
+      // this.$router.push({
+      //   path:'/writeoffbillDetail',
+      //   query:{
+      //     id:res.data.sa_writeoffbillid,
+      //   }
+      // })
+      this.queryMainData($route.query.id)
+    },
     changeDataStructure(){
       let that = this
       this.mainAreaData = [
@@ -161,7 +174,7 @@ export default {
         },
         {
           label:'对冲单号',
-          value:this.mainData.billno
+          value:this.mainData.offsettingbillno
         },
         {
           label:'备注',

+ 3 - 2
src/HDrpManagement/serveBill/components/add.vue

@@ -204,12 +204,13 @@ export default {
         ],
       },
       agentParam: {
-        "id":20221216145803,
+        "id":20220920083901,
         "content": {
           "pageNumber":1,
           "pageSize":20,
           "where": {
-            condition:''
+            condition:'',
+            type:9
           }
         }
       }

+ 1 - 1
src/HDrpManagement/serveBill/components/edit.vue

@@ -11,7 +11,7 @@
             <el-col :span="12">
               <el-form-item label="经销商:" prop="enterprisename">
                   <selectAgent :customParam="agentParam" ref="agent" @selectRow="agentChange">
-                    <el-input readonly type="text" slot="input" size="mini" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
+                    <el-input readonly :disabled="accountInfo.usertype!=1 && accountInfo.usertype!=0" type="text" slot="input" size="mini" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
                   </selectAgent>
               </el-form-item>
             </el-col>

+ 300 - 0
src/HDrpManagement/serveBillMag/components/add.vue

@@ -0,0 +1,300 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="dialogFormVisible = true">新 建</el-button>
+    <el-drawer title="新 建" append-to-body :show-close="false" :visible.sync="dialogFormVisible" size="50%">
+      <div slot="title" style="font-size: 15px">
+        新增服务申请单
+      </div>
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="140px" label-position="right" size="mini">
+            <el-col :span="12">
+              <el-form-item label="经销商:" prop="enterprisename">
+                  <selectAgent :customParam="agentParam" ref="agent" @selectRow="agentChange">
+                    <el-input readonly type="text" slot="input" size="mini" @focus="$refs.agent.visible=true" v-model="form.enterprisename"></el-input>
+                  </selectAgent>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="服务类型" prop="servicetype">
+                <el-select class="inline-24" v-model="form.servicetype" @change="classChange" placeholder="请选择状态" size="mini" clearable>
+                  <el-option v-for="(item,index) in serveClassList" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12" v-if="form.servicetype == '售中' || form.servicetype == '售后'">
+              <el-form-item label="订单号:" prop="sonum">
+                <selectOrder :id="form.sys_enterpriseid" ref="order" @selectRow="orderChange">
+                    <el-input readonly :disabled="!form.sys_enterpriseid" type="text" slot="input" size="mini" @focus="$refs.order.listData(),$refs.order.visible=true" v-model="form.sonum"></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="单据日期" prop="billdate">
+                <el-date-picker
+                  v-model="form.billdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="省市县" prop="province">
+                <el-cascader 
+                  size="mini" 
+                  v-model="form.province" 
+                  :options="basicData.data().areaData"
+                  ref="cascader">
+                </el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="地址" prop="address">
+                <el-input v-model="form.address" placeholder="请输入地址"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="服务联系人" prop="scenecontact">
+                <el-input v-model="form.scenecontact" placeholder="请输入服务联系人"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="联系人角色" prop="scenecontactrole">
+                <el-input v-model="form.scenecontactrole" placeholder="请输入联系人角色"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="服务联系电话" prop="scenecontactphonenumber">
+                <el-input v-model="form.scenecontactphonenumber" placeholder="请输入服务联系电话"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="应用系统" prop="class1">
+                <el-select class="inline-24" v-model="form.class1" @change="classChange" placeholder="请选择应用系统" size="mini" clearable>
+                  <el-option v-for="(item,index) in systemapp" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="客诉大类" prop="class2">
+                <el-select class="inline-24" v-model="form.class2" @change="classChange" placeholder="请选择客诉大类" size="mini" clearable>
+                  <el-option v-for="(item,index) in customerclass" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="申请原因" prop="reason">
+                <el-input v-model="form.reason" placeholder="请输入申请原因"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="需求服务开始日期" prop="begdate">
+                <el-date-picker
+                  v-model="form.begdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="需求服务结束日期" prop="enddate">
+                <el-date-picker
+                  v-model="form.enddate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="备注" prop="remarks">
+                <el-input type="textarea" v-model="form.remarks" placeholder="请输入备注"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectAgent from '@/template/selectAgent/index'
+import selectOrder from './selectOrder'
+import { log } from '@antv/g2plot/lib/utils'
+
+export default {
+  name: "add",
+  components:{selectAgent,selectOrder},
+  data(){
+    return {
+      dialogFormVisible:false,
+      serveClassList:[],
+      customerclass:[],
+      systemapp:[],
+      accountInfo: JSON.parse(window.sessionStorage.getItem('accountinfo')),
+      form:{
+        "sa_serviceorderid":0,     //sa_brandid<=0时 为新增
+        "servicetype":"",
+        "sa_orderid":0,
+        "sonum":"",
+        "sys_enterpriseid":'',
+        "enterprisename":'',
+        "remarks":"",
+        "class1":"",
+        "class2":"",
+        "reason":"",
+        "province":"",
+        "city":"",
+        "county":"",
+        "address":"",
+        "scenecontact":"",
+        "scenecontactrole":"",
+        "scenecontactphonenumber":"",
+        "billdate":`${new Date().getFullYear()}-${new Date().getMonth() + 1}-${new Date().getDate()}`,
+        "begdate":"",
+        "enddate":""
+      },
+      rules:{
+        servicetype:[
+          { required: true, message: '请选择服务类型', trigger: 'change'},
+        ],
+        enterprisename:[
+          { required: true, message: '请选择经销商', trigger: 'change'}
+        ],
+        sonum:[
+          { required: true, message: '请选择订单', trigger: 'change'},
+        ],
+        scenecontactphonenumber: [
+          { required: true, message: '请填写手机号码', trigger: 'blur'},
+          { pattern:/^1[3-9][0-9]\d{8}$/, message: '请输入正确手机号码',trigger: 'blur' }
+        ],
+        province:[
+          { required: true, message: '请选择省市县', trigger: 'change'},
+        ],
+        address:[
+          { required: true, message: '请填写地址', trigger: 'blur'},
+        ],
+        scenecontact:[
+          { required: true, message: '服务联系人', trigger: 'blur'},
+        ],
+        scenecontactrole:[
+          { required: true, message: '联系人角色', trigger: 'blur'},
+        ],
+        class1:[
+          { required: true, message: '应用系统', trigger: 'change'},
+        ],
+        class2:[
+          { required: true, message: '客诉大类', trigger: 'change'},
+        ],
+        reason:[
+          { required: true, message: '申请原因', trigger: 'blur'},
+        ],
+        begdate:[
+          { required: true, message: '需求服务开始日期', trigger: 'change'},
+        ],
+        enddate:[
+          { required: true, message: '需求服务结束日期', trigger: 'change'},
+        ],
+      },
+      agentParam: {
+        "id":20220920083901,
+        "content": {
+          "pageNumber":1,
+          "pageSize":20,
+          "where": {
+            condition:'',
+            type:''
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        if (this.form.province) {
+          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": "20230206091403",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.$refs['form'].resetFields();
+          this.dialogFormVisible = false
+          this.$store.dispatch('changeDetailDrawer',true)
+          this.$router.push({path:'/serveBillDetail',query:{id:res.data.sa_serviceorderid,rowindex:res.data.rowindex}})
+        })
+      })
+    },
+    async getServeClass () {
+      let res = await this.$api.requested({
+        "id":20230206112003,
+        "content": {
+        }
+      })
+      this.serveClassList = res.data
+      console.log(this.serveClassList);
+    },
+    orderChange (data) {
+      console.log(data);
+      
+      this.form.sa_orderid = data.sa_orderid
+      this.form.sonum = data.sonum
+      this.$refs.order.visible = false
+      console.log(this.form.sonum);
+      
+    },
+    agentChange (data) {
+      console.log(data);
+      this.form.sys_enterpriseid = data.sys_enterpriseid
+      this.form.enterprisename = data.enterprisename
+      this.$refs.agent.visible = false
+
+      this.form.sa_orderid = 0
+      this.form.sonum = ''
+    },
+    classChange () {
+      if (this.form.servicetype == '售中' || this.form.servicetype == '售后') {
+        this.$refs.agent.param.content.sys_enterpriseid = this.form.sys_enterpriseid
+      }
+    }
+  },
+  async created () {
+    this.getServeClass()
+    const res = await this.$store.dispatch('optiontypeselect','customerclass')
+    this.customerclass = res.data
+    const res1 = await this.$store.dispatch('optiontypeselect','systemapp')
+    this.systemapp = res1.data
+    console.log(this.customerclass,this.systemapp);
+    
+  },
+  mounted () {
+    this.form.sys_enterpriseid = this.accountInfo.usertype != 1 && this.accountInfo.usertype != 0 ? this.accountInfo.enterprise.sys_enterpriseid : ''
+    this.form.enterprisename = this.accountInfo.usertype != 1 && this.accountInfo.usertype != 0 ? this.accountInfo.enterprise.enterprisename : ''
+    
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select,.el-input,.el-cascader {
+  width: 100% !important;
+}
+</style>

+ 148 - 0
src/HDrpManagement/serveBillMag/components/changeBill.vue

@@ -0,0 +1,148 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="dialogFormVisible = true">转 工 单</el-button>
+    <el-drawer append-to-body :show-close="false" :visible.sync="dialogFormVisible" size="500px">
+      <div slot="title" style="font-size: 15px">
+        <span style="margin-right:16px">转工单</span>
+        <workProgress class="inline-16" />
+      </div>
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="90px" label-position="right" size="mini">
+            <!-- <el-col :span="24">
+              <el-form-item label="工单类型" prop="type">
+                <el-select class="inline-24" v-model="form.type" placeholder="请选择模板" size="small" clearable>
+                  <el-option v-for="(item,index) in serveClassList" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col> -->
+            <el-col :span="24">
+              <el-form-item label="工单模板" prop="sa_workorder_templateid">
+                <el-select class="inline-24" @change="modelChange" v-model="form.sa_workorder_templateid" placeholder="请选择模板" size="small" clearable>
+                  <el-option v-for="(item,index) in serveModelList" :key="index" :label="item.name" :value="item.sa_workorder_templateid"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="工单类型" prop="type">
+                <el-input size="mini" type="text" placeholder="工单类型" :disabled="true" v-model="form.type"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="负责人" prop="projectlearders">
+                <el-select class="inline-24" v-model="form.projectlearders" placeholder="请选择负责人" size="small" clearable>
+                  <el-option v-for="(item,index) in leaderList" :key="index" :label="item.name" :value="item.userid"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import workProgress from './workProgress'
+export default {
+  name: "add",
+  components:{workProgress},
+  data(){
+    return {
+      dialogFormVisible:false,
+      serveModelList:[],
+      serveClassList:[],
+      leaderList:[],
+      form:{
+        type:'',
+        sa_workorder_templateid:'',
+        projectlearders:'',
+        sa_serviceorderid:''
+      },
+      rules:{
+        sa_workorder_templateid:[
+          { required: true, message: '请选择服务模板', trigger: 'blur'},
+        ],
+        projectlearders:[
+          { required: true, message: '请选择负责人', trigger: 'blur'},
+        ],
+        type:[
+          { required: true, message: '请选择服务类型', trigger: 'blur'},
+        ],
+      }
+    }
+  },
+  created () {
+    this.getServeModel()
+    this.getLeaderList()
+  },
+  methods:{
+    onSubmit(){
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        
+        this.form.sa_serviceorderid = this.$route.query.id
+        typeof this.form.projectlearders == 'number' ? this.form.projectlearders = [this.form.projectlearders] : ''
+        const res = await this.$api.requested({
+          "id": "20230207091003",
+          "version":1,
+          "content": this.form
+        })
+        console.log(res);
+        
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.$refs['form'].resetFields();
+          this.dialogFormVisible = false
+          if (this.$route.path !== '/workorderDetail') {
+            this.oldRoute = {path:this.$route.path,query:this.$route.query}
+            this.$store.dispatch('setHistoryRouter',this.oldRoute)
+          }
+          this.$router.push({
+            path:'/workorderDetail',
+            query:{
+              id:res.data,
+            }
+          })
+        })
+      })
+    },
+    modelChange (data) {
+      this.form.type = this.serveModelList.find(item => item.sa_workorder_templateid == data).type   
+    },
+    async getServeModel () {
+      let res = await this.$api.requested({
+        "id":20230206155803,
+        "content": {
+        }
+      })
+      this.serveModelList = res.data
+      console.log(this.serveModelList);
+    },
+    async getLeaderList () {
+      let res = await this.$api.requested({
+        "id":20230213143003,
+        "content": {
+          isleader:0
+        }
+      })
+      this.leaderList = res.data
+      console.log(this.leaderList);
+      
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select {
+  width:100% !important;
+}
+</style>

+ 299 - 0
src/HDrpManagement/serveBillMag/components/edit.vue

@@ -0,0 +1,299 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="editBtn">编 辑</el-button>
+    <el-drawer title="新 建" append-to-body :show-close="false" :visible.sync="dialogFormVisible" size="50%">
+      <div slot="title" style="font-size: 15px">
+        编辑服务申请单
+      </div>
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form" :rules="rules" ref="form" label-width="140px" label-position="right" size="mini">
+            <el-col :span="12">
+              <el-form-item label="经销商:" prop="enterprisename">
+                  <selectAgent :customParam="agentParam" ref="agent" @selectRow="agentChange">
+                    <el-input readonly type="text" slot="input" size="mini" @focus="$refs.agent.visible=true;$refs.agent.listData()" v-model="form.enterprisename"></el-input>
+                  </selectAgent>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="服务类型" prop="servicetype">
+                <el-select class="inline-24" v-model="form.servicetype" @change="classChange" placeholder="请选择状态" size="mini" clearable>
+                  <el-option v-for="(item,index) in serveClassList" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12" v-if="form.servicetype == '售中' || form.servicetype == '售后'">
+              <el-form-item label="订单号:" prop="sonum">
+                <selectOrder ref="order" @selectRow="orderChange">
+                    <el-input readonly :disabled="!form.sys_enterpriseid" type="text" slot="input" size="mini" @focus="$refs.order.listData(),$refs.order.visible=true" v-model="form.sonum"></el-input>
+                </selectOrder>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="单据日期" prop="billdate">
+                <el-date-picker
+                  v-model="form.billdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="省市县" prop="province">
+                <el-cascader 
+                  size="mini" 
+                  v-model="form.province" 
+                  :options="basicData.data().areaData"
+                  ref="cascader">
+                </el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="地址" prop="address">
+                <el-input v-model="form.address" placeholder="请输入地址"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="服务联系人" prop="scenecontact">
+                <el-input v-model="form.scenecontact" placeholder="请输入服务联系人"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="联系人角色" prop="scenecontactrole">
+                <el-input v-model="form.scenecontactrole" placeholder="请输入联系人角色"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="服务联系电话" prop="scenecontactphonenumber">
+                <el-input v-model="form.scenecontactphonenumber" placeholder="请输入服务联系电话"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="应用系统" prop="class1">
+                <el-select class="inline-24" v-model="form.class1" @change="classChange" placeholder="请选择应用系统" size="mini" clearable>
+                  <el-option v-for="(item,index) in systemapp" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="客诉大类" prop="class2">
+                <el-select class="inline-24" v-model="form.class2" @change="classChange" placeholder="请选择客诉大类" size="mini" clearable>
+                  <el-option v-for="(item,index) in customerclass" :key="index" :label="item.value" :value="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="申请原因" prop="reason">
+                <el-input v-model="form.reason" placeholder="请输入申请原因"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="需求服务开始日期" prop="begdate">
+                <el-date-picker
+                  v-model="form.begdate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="需求服务结束日期" prop="enddate">
+                <el-date-picker
+                  v-model="form.enddate"
+                  type="date"
+                  value-format="yyyy-MM-dd"
+                  placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="备注" prop="remarks">
+                <el-input type="textarea" v-model="form.remarks" placeholder="请输入备注"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectAgent from './selectAgent'
+import selectOrder from './selectOrder'
+import { log } from '@antv/g2plot/lib/utils'
+
+export default {
+  name: "add",
+  props:['data'],
+  components:{selectAgent,selectOrder},
+  data(){
+    return {
+      dialogFormVisible:false,
+      serveClassList:[],
+      customerclass:[],
+      systemapp:[],
+      form:{
+        "sa_serviceorderid":0,     //sa_brandid<=0时 为新增
+        "servicetype":"",
+        "sa_orderid":'',
+        "sonum":"",
+        "sys_enterpriseid":"",
+        "enterprisename":"",
+        "remarks":"",
+        "class1":"",
+        "class2":"",
+        "reason":"",
+        "province":"",
+        "city":"",
+        "county":"",
+        "address":"",
+        "scenecontact":"",
+        "scenecontactrole":"",
+        "scenecontactphonenumber":"",
+        "billdate":new Date(),
+        "begdate":"",
+        "enddate":""
+      },
+      rules:{
+        servicetype:[
+          { required: true, message: '请选择服务类型', trigger: 'change'},
+        ],
+        enterprisename:[
+          { required: true, message: '请选择经销商', trigger: 'change'}
+        ],
+        sonum:[
+          { required: true, message: '请选择订单', trigger: 'change'},
+        ],
+        scenecontactphonenumber: [
+          { required: true, message: '请填写手机号码', trigger: 'blur'},
+          { pattern:/^1[3-9][0-9]\d{8}$/, message: '请输入正确手机号码',trigger: 'blur' }
+        ],
+        province:[
+          { required: true, message: '请选择省市县', trigger: 'change'},
+        ],
+        address:[
+          { required: true, message: '请填写地址', trigger: 'blur'},
+        ],
+        scenecontact:[
+          { required: true, message: '服务联系人', trigger: 'blur'},
+        ],
+        scenecontactrole:[
+          { required: true, message: '联系人角色', trigger: 'blur'},
+        ],
+        class1:[
+          { required: true, message: '应用系统', trigger: 'change'},
+        ],
+        class2:[
+          { required: true, message: '客诉大类', trigger: 'change'},
+        ],
+        reason:[
+          { required: true, message: '申请原因', trigger: 'blur'},
+        ],
+        begdate:[
+          { required: true, message: '需求服务开始日期', trigger: 'change'},
+        ],
+        enddate:[
+          { required: true, message: '需求服务结束日期', trigger: 'change'},
+        ],
+      },
+      agentParam: {
+        "id":20220920083901,
+        "content": {
+          "pageNumber":1,
+          "pageSize":20,
+          "where": {
+            condition:'',
+            type:''
+          }
+        }
+      }
+    }
+  },
+  methods:{
+    editBtn () {
+      this.dialogFormVisible = true
+      this.form = Object.assign({},this.form,this.data)
+      this.form.province = [this.data.province, this.data.city, this.data.county]
+    },
+    onSubmit(){
+      console.log(this.form)
+      this.$refs['form'].validate(async (valid) => {
+        if (!valid) return false
+        if (this.form.province) {
+          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": "20230206091403",
+          "version":1,
+          "content": this.form
+        })
+        this.tool.showMessage(res,()=>{
+          this.$emit('onSuccess')
+          this.$refs['form'].resetFields();
+          this.dialogFormVisible = false
+        })
+      })
+    },
+    async getServeClass () {
+      let res = await this.$api.requested({
+        "id":20230206112003,
+        "content": {
+        }
+      })
+      this.serveClassList = res.data
+      console.log(this.serveClassList);
+    },
+    orderChange (data) {
+      console.log(data);
+      
+      this.form.sa_orderid = data.sa_orderid
+      this.form.sonum = data.sonum
+      this.$refs.order.visible = false
+      console.log(this.form.sonum);
+      
+    },
+    agentChange (data) {
+      console.log(data);
+      this.form.sys_enterpriseid = data.sys_enterpriseid
+      this.form.enterprisename = data.enterprisename
+      this.$refs.agent.visible = false
+
+      this.form.sa_orderid = ''
+      this.form.sonum = ''
+    },
+    classChange () {
+      if (this.form.servicetype == '售中' || this.form.servicetype == '售后') {
+        this.$refs.agent.param.content.sys_enterpriseid = this.form.sys_enterpriseid
+      }
+    }
+  },
+  async created () {
+    this.getServeClass()
+
+    const res = await this.$store.dispatch('optiontypeselect','customerclass')
+    this.customerclass = res.data
+    const res1 = await this.$store.dispatch('optiontypeselect','systemapp')
+    this.systemapp = res1.data
+    console.log(this.customerclass,this.systemapp);
+    
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select,.el-input,.el-cascader {
+  width: 100% !important;
+}
+</style>

+ 112 - 0
src/HDrpManagement/serveBillMag/components/selectAgent.vue

@@ -0,0 +1,112 @@
+<template>
+  <div> 
+    <el-dialog :visible.sync="visible" append-to-body width="50%">
+      <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="搜索" @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"
+          height="50vh"
+          border>
+          <el-table-column
+            prop="enterprisename"
+            :label="qiyi ? '企业名称' : '经销商名称'"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="agentnum"
+            :label="qiyi ? '编号' : '经销商编号'"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="contact"
+            label="联系人">
+          </el-table-column>
+          <el-table-column
+            label="地址">
+            <template slot-scope="scope">
+              {{scope.row.province}}{{scope.row.city}}{{scope.row.county}}{{scope.row.address}}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="操作">
+            <template slot-scope="scope">
+              <el-button type="text" size="small" @click="selectRow(scope.row)">选 择</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="currentPage"
+            :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:['customParam','qiyi'],
+  data () {
+    return {
+      visible:false,
+      param:{
+        "id":20221216145803,
+        "content": {
+          "pageNumber":1,
+          "pageSize":20,
+          where: {
+            condition:''
+          }
+        }
+      },
+      tableData: [],
+      total:0,
+      currentPage:0
+    }
+  },
+  methods:{
+    async listData () {
+      const res = await this.$api.requested(this.customParam ? this.customParam : 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 () {
+    this.listData()
+  },
+}
+
+</script>
+<style>
+</style>

+ 120 - 0
src/HDrpManagement/serveBillMag/components/selectOrder.vue

@@ -0,0 +1,120 @@
+<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="搜索" @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="订单号"
+            width="130px">
+          </el-table-column>
+          <el-table-column
+            prop="type"
+            label="订单类型">
+          </el-table-column>
+          <el-table-column
+            prop="tradefield"
+            label="领域">
+          </el-table-column>
+          <el-table-column
+            prop="toolcount"
+            label="合计数量">
+          </el-table-column>
+          <el-table-column
+            prop="sumamount"
+            label="合计金额">
+          </el-table-column>
+          <el-table-column
+            prop="billdate"
+            label="单据时间">
+          </el-table-column>
+          <el-table-column
+            prop="saler_name"
+            label="业务员">
+          </el-table-column>
+          <el-table-column
+            label="操作"
+            width="90">
+            <template slot-scope="scope">
+              <el-button type="text" size="small" @click="selectRow(scope.row)">选 择</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="currentPage"
+            :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,
+          "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>

+ 113 - 0
src/HDrpManagement/serveBillMag/components/workProgress.vue

@@ -0,0 +1,113 @@
+<template>
+  <div> 
+    <el-dialog :visible.sync="visible" append-to-body width="70%">
+      <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="搜索" @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"
+          height="50vh"
+          border>
+          <el-table-column
+            prop="billno"
+            label="工单号"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="projectleader"
+            label="工单负责人"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            label="省市县">
+            <template slot-scope="scope">
+              {{scope.row.province}}-{{scope.row.city}}-{{scope.row.county}}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="address"
+            label="地址">
+          </el-table-column>
+          <el-table-column
+            prop="startdate"
+            label="需求服务开始时间"
+            width="180">
+          </el-table-column>
+          <el-table-column
+            prop="enddate"
+            label="需求服务结束时间"
+            width="180">
+          </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="currentPage"
+            :page-size="param.content.pageSize"
+            layout="total, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
+    <el-button type="primary" size="mini" @click="visible=true">进 度</el-button>
+  </div>
+</template>
+
+<script>
+export default {
+  props:[],
+  data () {
+    return {
+      visible:false,
+      param:{
+        "id": "20230208140203",
+        "version":1,
+        "content": {
+          "pageSize":20,
+          "pageNumber":1,
+            "where":{
+                "condition":""
+            }
+        }
+      },
+      tableData: [],
+      total:0,
+      currentPage:0
+    }
+  },
+  methods:{
+    async listData () {
+      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()
+    }
+  },
+  created () {
+    this.listData()
+  },
+}
+
+</script>
+<style>
+</style>

+ 101 - 0
src/HDrpManagement/serveBillMag/index.vue

@@ -0,0 +1,101 @@
+
+<template>
+  <div>
+    <basicLayout 
+      ref="list" 
+      :oldFormPath="{
+        add:'HDrpManagement/serveBillMag/components'
+      }"
+      tableName="serveBillTable" 
+      idName="sa_serviceorderid" 
+      :apiId="{query:20230206091703,del:20230206091803}"
+      :options="options"
+      :detailPath="{
+        path:'/serveBillDetail'
+      }"
+      @listData="list">
+      <div slot="custom" style="display:flex">
+        <div class="label_center">
+          <label  class="search__label">状态:</label>
+          <el-select class="inline-24" v-model="where.status" placeholder="请选择状态" @change="selectChange" size="small" clearable>
+            <el-option label="待指派" value="待指派"></el-option>
+            <el-option label="待处理" value="待处理"></el-option>
+            <el-option label="进行中" value="进行中"></el-option>
+            <el-option label="已完成" value="已完成"></el-option>
+          </el-select>
+        </div>
+        <div class="label_center">
+          <label class="search__label" >提交日期:</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="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              clearable>
+          </el-date-picker>
+        </div>
+      </div>
+      <template v-slot:tbList="scope">
+        <div v-if="scope.data.column.columnname == 'status'">
+          <span style="color:#52c41a" v-if="scope.data.column.data[[scope.data.column.columnname]] == '进行中'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#3874f6" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '待处理'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#333333" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '新建'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#3874f6" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '提交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#fa8c16" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '待指派'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#fa8c16" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已完成'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span v-else>{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+        </div>
+        <div v-else-if="scope.data.column.columnname == 'province'">
+          {{ `${scope.data.column.data.province}-${scope.data.column.data.city}-${scope.data.column.data.county}` }}
+        </div>
+        <div v-else>
+          {{scope.data.column.data[[scope.data.column.columnname]]?scope.data.column.data[[scope.data.column.columnname]]:'--'}}
+        </div>
+      </template>
+      <template v-slot:tbOpreation="scope">
+      </template>
+    </basicLayout>
+  </div>
+</template>
+
+<script>
+export default {
+  data () {
+    return {
+      options:[],
+      where: {
+        status:'',
+        date: ''
+      }
+    }
+  },
+  methods:{
+    list (data) {
+      console.log(data)
+    },
+    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 = ''
+      }     
+      this.$refs.list.param.content.where = this.where
+      this.$refs.list.listData()
+    }
+  }
+}
+
+</script>
+<style>
+</style>

+ 218 - 0
src/HDrpManagement/serveBillMag/modules/detail.vue

@@ -0,0 +1,218 @@
+<template>
+  <div>
+    <basicDetails
+        ref="details"
+        :titleText="mainData.billno"
+        :editData="mainData"
+        :mainAreaData="mainAreaData"
+        turnPageId="20230206091703"
+        idname="sa_serviceorderid"
+        ownertable="sa_serviceorder"
+        :delApiId="20230206091803"
+        :statusCheck="[{key:'status',value:'待处理'},{key:'status',value:'进行中'},{key:'status',value:'提交'},{key:'status',value:'待指派'},{key:'status',value:'已完成'}]"
+        tags=""
+        :tabs="['详细信息','关联工单','服务商品']"
+        @pageChange="pageChange"
+        @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="tags">
+      </div>
+      <div slot="customOperation" >
+        <Edit v-if="tool.checkAuth($route.name,'update') && mainData.status == '新建'" class="inline-16" :data="mainData" @onSuccess="queryMainData" />
+        <changeBill v-if="mainData.status == '待指派' && tool.checkAuth($route.name,'changeBill')" class="inline-16" @onSuccess="queryMainData" :data="mainData"></changeBill>
+        <customBtn 
+          btnName="提交"
+          message="确认提交当前服务申请单吗?"
+          idName="20230206101403"
+          keyName="sa_serviceorderid"
+          :id="$route.query.id"
+          :paramData="[{key:'issumbit',value:1}]"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status == '新建' && tool.checkAuth($route.name,'submit')"
+        />
+        <customBtn 
+          btnName="退回"
+          message="确认退回当前服务申请单吗?"
+          idName="20230206101403"
+          keyName="sa_serviceorderid"
+          :id="$route.query.id"
+          :paramData="[{key:'issumbit',value:0}]"
+          :dialog="true"
+          dialogTitle="请输入退回原因"
+          dialogKey="backreason"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status == '待指派' && tool.checkAuth($route.name,'resubmit')"
+        />
+      </div>
+      <div slot="slot0" >
+        <detailInfo :more="true" :data="detailInfo"></detailInfo>
+      </div>
+      <div slot="slot1" >
+        <workBill ref="workBill">
+          <!-- <template v-slot:delProduct="scope">
+            <delete-btn nameId="20230206162003" nameKey="sa_serviceorderitemsids" :id="scope.data.sa_serviceorderid" @deleteSuccess="$refs.workBill.listData()"></delete-btn>
+          </template> -->
+        </workBill>
+      </div>
+      <div slot="slot2">
+        <productTable ref="product">
+          <addProduct v-if="tool.checkAuth($route.name,'serveProduct') && mainData.status == '新建'" slot="addProduct" :data="mainData" @onSuccess="$refs.product.listData()" />
+          <template v-slot:editProduct="scope">
+            <el-button class="inline-16" v-if="tool.checkAuth($route.name,'serveProduct') && mainData.status == '新建'" type="text" size="mini" @click="$refs.product.currentProduct=scope.data">编 辑</el-button>            
+          </template>
+          <template v-slot:delProduct="scope">
+            <delete-btn nameId="20230206162003" v-if="tool.checkAuth($route.name,'serveProduct') && mainData.status == '新建'" nameKey="sa_serviceorderitemsids" :id="scope.data.sa_serviceorderitemsid" @deleteSuccess="$refs.product.listData()"></delete-btn>
+          </template>
+        </productTable>
+      </div>
+    </basicDetails>
+  </div>
+</template>
+
+<script>
+import detailInfo from '@/components/detailInfo/index'
+import changeBill from '../components/changeBill'
+import Edit from '../components/edit'
+
+import workBill from './workBill/index'
+import productTable from './product/index'
+import addProduct from './product/add'
+export default {
+  name: "detail",
+  data() {
+    return {
+      mainData:{},
+      mainAreaData:{},
+      detailInfo:[]
+    }
+  },
+  components:{
+    detailInfo,
+    changeBill,
+    Edit,
+    workBill,
+    productTable,
+    addProduct
+  },
+  methods:{
+    async queryMainData(id) {
+      const res = await this.$api.requested({
+        "id":20230206091603,
+        "content": {
+          "sa_serviceorderid": this.$route.query.id
+        }
+      })
+      this.mainData = res.data
+      console.log(this.mainData);
+      
+      this.changeDataStructure()
+    },
+    changeDataStructure() {
+      let that = this
+      this.mainAreaData = [
+        {label:'单号',value:this.mainData.billno ? this.mainData.billno : ''},
+        {label:'单据日期',value:this.mainData.billdate ? this.mainData.billdate : ''},
+        {label:'状态',value:this.mainData.status ? this.mainData.status : '',
+          style:function () {
+            let style = {}
+            switch (that.mainData.status) {
+              case '进行中':
+                style = {color:'#52c41a'}
+                break;
+              case '待处理':
+                style = {color:'#3874f6'}
+                break;
+              case '新建':
+                style = {color:'#333333'}
+                break;
+              case '提交':
+                style = {color:'#3874f6'}
+                break; 
+              case '待指派':
+                style = {color:'#fa8c16'}
+                break; 
+              case '已完成':
+                style = {color:'#fa8c16'}
+                break; 
+              default:
+                break;
+            }
+            return style
+            
+          }  
+        },
+        {label:'经销商编号',value:this.mainData.agentnum ? this.mainData.agentnum : ''},
+        {label:'经销商',value:this.mainData.enterprisename ? this.mainData.enterprisename : ''},
+        {label:'省市县',value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`},
+        {label:'地址',value:this.mainData.address ? this.mainData.address : ''},
+        {label:'关联订单',value:this.mainData.sonum ? this.mainData.sonum : ''},
+        {label:'服务分类',value:this.mainData.servicetype ? this.mainData.servicetype : ''},
+        {label:'服务联系人',value:this.mainData.scenecontact ? this.mainData.scenecontact : ''},
+        {label:'联系人角色',value:this.mainData.scenecontactrole ? this.mainData.scenecontactrole : ''},
+        {label:'服务联系电话',value:this.mainData.scenecontactphonenumber ? this.mainData.scenecontactphonenumber : ''},
+        {label:'应用系统',value:this.mainData.class1 ? this.mainData.class1 : ''},
+        {label:'客诉大类',value:this.mainData.class2 ? this.mainData.class2 : ''},
+        {label:'需求服务开始日期',value:this.mainData.begdate ? this.mainData.begdate : ''},
+        {label:'需求服务结束日期',value:this.mainData.enddate ? this.mainData.enddate : ''},
+        {label:'申请原因',value:this.mainData.reason ? this.mainData.reason : ''},
+        {label:'备注',value:this.mainData.remarks ? this.mainData.remarks : ''},
+      ]
+      this.detailInfo = [
+        {
+          title:'基本信息',
+          info: [
+            {label:'单号',value:this.mainData.billno},
+            {label:'单据日期',value:this.mainData.billdate},
+            {label:'状态',value:this.mainData.status},
+            {label:'经销商编号',value:this.mainData.agentnum},
+            {label:'经销商',value:this.mainData.enterprisename},
+            {label:'省市县',value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`},
+            {label:'关联订单',value:this.mainData.sonum},
+            {label:'服务分类',value:this.mainData.servicetype},
+            {label:'服务联系人',value:this.mainData.scenecontact},
+            {label:'联系人角色',value:this.mainData.scenecontactrole},
+            {label:'服务联系电话',value:this.mainData.scenecontactphonenumber},
+            {label:'应用系统',value:this.mainData.class1},
+            {label:'客诉大类',value:this.mainData.class2},
+            {label:'申请原因',value:this.mainData.reason},
+            {label:'需求服务开始日期',value:this.mainData.begdate},
+            {label:'需求服务结束日期',value:this.mainData.enddate},
+            {label:'备注',value:this.mainData.remarks ? this.mainData.remarks : ''},
+          ]
+        },
+        {
+          title:'系统信息',
+          info: [
+            {label:'创建人',value:this.mainData.createby},
+            {label:'创建时间',value:this.mainData.createdate},
+            {label:'提交人',value:this.mainData.submitby},
+            {label:'提交时间',value:this.mainData.submitdate},
+          ]
+        }
+      ]
+    },
+    // 监听切换数据,上一页,下一页
+    pageChange (id,rowindex,tabIndex) {
+      this.flag = false
+      tabIndex = this.$route.query.tabIndex
+      this.$router.replace({path:'/serveBillDetail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
+      this.queryMainData(id)
+    },
+    onSuccess(){
+      this.visible = false
+      this.queryMainData(this.$route.query.id)
+      this.$emit('onSuccess')
+    }
+  },
+  mounted () {
+    this.queryMainData(this.$route.query.id)
+  },
+  created() {
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 152 - 0
src/HDrpManagement/serveBillMag/modules/product/add.vue

@@ -0,0 +1,152 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="addBtn">添 加</el-button>
+    <el-drawer append-to-body :visible.sync="dialogFormVisible" size="70%">
+      <div slot="title" style="font-size: 15px">
+        添加商品
+      </div>
+      <div class="drawer__panel">
+        <el-input style="width:250px;margin-bottom:10px" size="small" placeholder="请输入搜索内容" clearable @clear="getOrderList(params.content.pageNumber=1)" v-model="params.content.where.condition" @keyup.enter.native="getOrderList(params.content.pageNumber=1)"></el-input>
+        <selectTable @selectChange="selectChange" v-if="dialogFormVisible" idName="sa_serviceorderitemsid" ref="table" v-model="result" :layout="tablecols" :data="orderList" :custom="true" height="500px"  @upDateData="upDateData">
+           <template v-slot:customcol="scope">
+              <div>{{scope.column.data[scope.column.columnname]}}</div>
+            </template>
+        </selectTable>
+        <div class="container normal-panel" style="text-align:right">
+          <el-pagination
+              style="text-align:right"
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="params.content.pageNumber"
+              :page-size="params.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" :disabled="isLength" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectTable from '@/components/selectTable/index'
+import { log } from '@antv/g2plot/lib/utils'
+export default {
+  name: "add",
+  props:['data','disabled'],
+  components:{selectTable},
+  data(){
+    return {
+      result:[],
+      selectArr:[],
+      isLength:true,
+      dialogFormVisible:false,
+      orderList:[],
+      tablecols:[],
+      total:0,
+      params: {
+        "id": 20230206161703,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "sa_serviceorderid":'',
+          "sa_orderid":'',
+          "where": {
+              "condition": ""
+          }
+        }
+      }
+    }
+  },
+  computed: {
+    isEdit () {
+      return function (data) {
+        console.log(this.selectArr.some(item => item == data));
+        let is = this.selectArr.some(item => item == data)
+        return is
+      }
+    }
+  },
+  created () {
+    this.getOrderList()
+    this.tablecols = this.tool.tabelCol(this.$route.name).productTable.tablecols
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if(!val) {
+        this.$refs.table.allArr = []
+      }
+    }
+  },
+  methods:{
+    addBtn () {
+      this.dialogFormVisible = true
+      this.getOrderList()
+    },
+    async onSubmit(){
+      let data = this.$refs.table.allArr.map(item => {
+        return {
+          "sa_serviceorderitemsid": 0, 
+          "itemid": item.itemid, 
+          "reason": ''
+        }
+      })
+      let res = await this.$api.requested({
+        "id": "20230206161803",
+        "content": {
+            "sa_serviceorderid": this.$route.query.id,
+            "iteminfos": data
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('onSuccess')
+        this.dialogFormVisible = false
+      })
+    },
+    async getOrderList () {
+      this.params.content.sa_serviceorderid = this.data.sa_serviceorderid
+      this.params.content.sa_orderid = this.data.sa_orderid
+      let res = await this.$api.requested(this.params)
+      console.log(res.data);
+      
+      this.orderList = res.data
+      this.total = res.total
+      console.log(res);
+      
+    },
+    selectChange (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    upDateData (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.getOrderList()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.getOrderList()
+    },
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select {
+  width: 100%;
+}
+</style>

+ 135 - 0
src/HDrpManagement/serveBillMag/modules/product/index.vue

@@ -0,0 +1,135 @@
+
+<template>
+  <div>
+    <div style="display:flex;align-items:center">
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="params.content.where.condition"
+          style="width:200px"
+          size="mini"
+          class="input-with-select inline-16"
+          @keyup.native.enter="listData(params.content.pageNumber=1)"
+          @clear="clearData"
+          clearable>
+      </el-input>
+      <slot name="addProduct"></slot>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname == 'reason'">
+            <div v-if="currentProduct.sa_serviceorderitemsid == scope.column.data.sa_serviceorderitemsid">
+              <el-input type="textarea" size="mini" v-model="scope.column.data.reason"></el-input>
+            </div>
+            <div v-else>{{scope.column.data.reason ? scope.column.data.reason : '--'}}</div>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+          <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'&& scope.column.columnname != 'reason'">--</p>
+        </template>
+        <template v-slot:opreation="scope">
+          <el-button class="inline-16" type="text" size="mini" @click="save(scope.data)" v-if="currentProduct.sa_serviceorderitemsid == scope.data.sa_serviceorderitemsid">保 存</el-button>
+          <slot v-else name="editProduct" :data="scope.data"></slot>
+          <slot name="delProduct" :data="scope.data"></slot>
+        </template>
+      </tableLayout>
+    </div>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="params.content.pageNumber"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:["data"],
+  data () {
+    return {
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list:[],
+      total:0,
+      params:{
+        "id": 20230206161903,
+        "version":1,
+        "content": {
+            "sa_serviceorderid":'',
+            "pageNumber":1,
+            "pageSize":20,
+            "where":{
+              "condition":''
+            }
+        }
+      },
+      options:[
+      ],
+      productList:'',
+      currentProduct:{}
+    }
+  },
+  methods:{
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": "20230206161803",
+        "version":1,
+        "content": {
+            "sa_serviceorderid":this.$route.query.id,
+            "iteminfos":[
+                {
+                  "sa_serviceorderitemsid": data.sa_serviceorderitemsid, 
+                  "itemid": data.itemid, 
+                  "reason": data.reason
+                }
+            ]
+
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentProduct = ''
+      })
+    },
+    async listData(){
+      this.params.content.sa_serviceorderid = this.$route.query.id
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(this.list)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    clearData(){
+      this.listData()
+    },
+    queryClick(){
+      this.listData()
+    }
+  },
+  created() {
+    this.listData()
+    this.tablecols = this.tool.tabelCol(this.$route.name).productTable.tablecols
+  }
+}
+
+</script>
+<style scoped>
+
+</style>

+ 150 - 0
src/HDrpManagement/serveBillMag/modules/workBill/add.vue

@@ -0,0 +1,150 @@
+<template>
+  <div>
+    <el-button size="mini" type="primary" @click="addBtn">添 加</el-button>
+    <el-drawer append-to-body :visible.sync="dialogFormVisible" size="70%">
+      <div slot="title" style="font-size: 15px">
+        添加商品
+      </div>
+      <div class="drawer__panel">
+        <el-input style="width:250px;margin-bottom:10px" size="small" placeholder="请输入搜索内容" clearable @clear="getOrderList(params.content.pageNumber=1)" v-model="params.content.where.condition" @keyup.enter.native="getOrderList(params.content.pageNumber=1)"></el-input>
+        <selectTable @selectChange="selectChange" v-if="dialogFormVisible" idName="sa_serviceorderitemsid" ref="table" v-model="result" :layout="tablecols" :data="orderList" :custom="true" height="500px"  @upDateData="upDateData">
+           <template v-slot:customcol="scope">
+              <div>{{scope.column.data[scope.column.columnname]}}</div>
+            </template>
+        </selectTable>
+        <div class="container normal-panel" style="text-align:right">
+          <el-pagination
+              style="text-align:right"
+              background
+              small
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page="params.content.pageNumber"
+              :page-size="params.content.pageSize"
+              layout="total, prev, pager, next, jumper"
+              :total="total">
+          </el-pagination>
+        </div>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" :disabled="isLength" class="normal-btn-width">确 定</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import selectTable from '@/components/selectTable/index'
+import { log } from '@antv/g2plot/lib/utils'
+export default {
+  name: "add",
+  props:['data','disabled'],
+  components:{selectTable},
+  data(){
+    return {
+      result:[],
+      selectArr:[],
+      isLength:true,
+      dialogFormVisible:false,
+      orderList:[],
+      tablecols:[],
+      total:0,
+      params: {
+        "id": 20230206161903,
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 20,
+          "sa_serviceorderid":'',
+          "where": {
+              "condition": ""
+          }
+        }
+      }
+    }
+  },
+  computed: {
+    isEdit () {
+      return function (data) {
+        console.log(this.selectArr.some(item => item == data));
+        let is = this.selectArr.some(item => item == data)
+        return is
+      }
+    }
+  },
+  created () {
+    this.getOrderList()
+    this.tablecols = this.tool.tabelCol(this.$route.name).productTable.tablecols
+  },
+  watch: {
+    dialogFormVisible (val) {
+      if(!val) {
+        this.$refs.table.allArr = []
+      }
+    }
+  },
+  methods:{
+    addBtn () {
+      this.dialogFormVisible = true
+      this.getOrderList()
+    },
+    async onSubmit(){
+      let data = this.$refs.table.allArr.map(item => {
+        return {
+          "sa_serviceorderitemsid": 0, 
+          "itemid": item.itemid, 
+          "reason": ''
+        }
+      })
+      let res = await this.$api.requested({
+        "id": "20230206161803",
+        "content": {
+            "sa_serviceorderid": this.$route.query.id,
+            "iteminfos": data
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('onSuccess')
+        this.dialogFormVisible = false
+      })
+    },
+    async getOrderList () {
+      this.params.content.sa_serviceorderid = this.$route.query.id
+      let res = await this.$api.requested(this.params)
+      console.log(res.data);
+      
+      this.orderList = res.data
+      this.total = res.total
+      console.log(res);
+      
+    },
+    selectChange (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    upDateData (data) {
+      this.selectArr = data
+      this.isLength = data.length < 1
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.getOrderList()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.getOrderList()
+    },
+  }
+}
+</script>
+
+<style scoped>
+.dialog-footer {
+  margin-top: 0;
+}
+.el-select {
+  width: 100%;
+}
+</style>

+ 152 - 0
src/HDrpManagement/serveBillMag/modules/workBill/index.vue

@@ -0,0 +1,152 @@
+
+<template>
+  <div>
+    <div style="display:flex;align-items:center">
+      <el-input
+          placeholder="请输入搜索内容"
+          suffix-icon="el-icon-search"
+          v-model="params.content.where.condition"
+          style="width:200px"
+          size="mini"
+          class="input-with-select inline-16"
+          @keyup.native.enter="listData(params.content.pageNumber=1)"
+          @clear="clearData"
+          clearable>
+      </el-input>
+      <slot name="addProduct"></slot>
+    </div>
+    <div style="margin-top: 15px">
+      <tableLayout :layout="tablecols" :data="list" :opwidth="200"  :custom="true" :width="false"  :height="tableHieght" fixedName="operation">
+        <template v-slot:customcol="scope">
+          <div v-if="scope.column.columnname == 'price'">
+            <el-input size="small" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid" v-model="scope.column.data.price"></el-input>
+            <span v-else>{{tool.formatAmount(scope.column.data.price,2)}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'qty'">
+            <el-input size="small" v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid" v-model="scope.column.data.qty"></el-input>
+            <span v-else>{{scope.column.data.qty}}</span>
+          </div>
+          <div v-else-if="scope.column.columnname == 'reason'">
+            <div v-if="currentProduct.sa_aftersalesmag_itemsid == scope.column.data.sa_aftersalesmag_itemsid">
+              <el-input type="textarea" size="mini" v-model="scope.column.data.reason"></el-input>
+            </div>
+            <div v-else>{{scope.column.data.reason ? scope.column.data.reason : '--'}}</div>
+          </div>
+          <p v-else>{{scope.column.data[scope.column.columnname]}}</p>
+          <p v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'&& scope.column.columnname != 'reason'">--</p>
+        </template>
+        <template v-slot:opreation="scope">
+          <el-button @click="goDetail(scope)" size="mini" type="text">详 情</el-button>
+        </template>
+      </tableLayout>
+    </div>
+    <div style="margin-top:16px;text-align:right">
+      <el-pagination
+          background
+          small
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="params.content.pageNumber"
+          :page-size="params.content.pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props:["data"],
+  data () {
+    return {
+      tableHieght:"calc(100vh - 380px)",
+      tablecols:[],
+      list:[],
+      total:0,
+      params:{
+        "id": 20230207154203,
+        "version":1,
+        "content": {
+            "sa_serviceorderid":'',
+            "pageNumber":1,
+            "pageSize":20,
+            "where":{
+              "condition":''
+            }
+        }
+      },
+      options:[
+      ],
+      productList:'',
+      currentProduct:{}
+    }
+  },
+  methods:{
+    goDetail (scope) {
+      let route = this.$route
+      if (route.path !== '/taskDetails') {
+        this.oldRoute = {path:route.path,query:route.query}
+        this.$store.dispatch('setHistoryRouter',this.oldRoute)
+      }
+      this.$router.replace({path:'/workorderDetail',query:{id:scope.data.sa_workorderid,rowindex:scope.data.rowindex}})
+    },
+    async save (data) {
+      let res = await this.$api.requested({
+        "id": "20230105111003",
+        "version":1,
+        "content": {
+            "sa_aftersalesmagid":this.$route.query.id,
+            "iteminfos":[
+                {
+                    "sa_aftersalesmag_itemsid":data.sa_aftersalesmag_itemsid,
+                    "sa_orderitemsid":data.sa_orderitemsid,
+                    "itemid": data.itemid,
+                    "reason":data.reason,
+                    "qty":data.qty,
+                    "price":data.price
+                }
+            ]
+
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$emit('onSuccess')
+        this.listData()
+        this.currentProduct = ''
+      })
+    },
+    async listData(){
+      this.params.content.sa_serviceorderid = this.$route.query.id
+      const res = await this.$api.requested(this.params)
+      this.list = res.data
+      this.total = res.total
+      console.log(this.list)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.params.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.params.content.pageNumber = val
+      this.listData()
+    },
+    clearData(){
+      this.listData()
+    },
+    queryClick(){
+      this.listData()
+    }
+  },
+  created() {
+    this.listData()
+    this.tablecols = this.tool.tabelCol(this.$route.name).andWorkBillTable.tablecols
+  }
+}
+
+</script>
+<style scoped>
+
+</style>

+ 1 - 1
src/HManagement/notice/list/modules/add.vue

@@ -21,7 +21,7 @@ export default {
         "content": "",
         "issecret": 1,
         "begdate":(new Date()).toLocaleDateString(),
-        "enddate":(new Date()).toLocaleDateString(),
+        "enddate":'',
         "isontop":0
       }
     }

+ 5 - 5
src/HManagement/roleManage/modules/auth_list2.vue

@@ -9,9 +9,9 @@
       </div>
       <el-row>
         <el-col :span="24">
-          <Table ref="table" :layout="tablecols" :data="list" :custom="false" height="500px">
+          <Table ref="table" :layout="tablecols" :data="list" :custom="false" height="calc(100vh - 250px)">
           </Table>
-          <div style="margin:20px 0;text-align:right">
+          <!-- <div style="margin:20px 0;text-align:right">
             <el-pagination
               background
               small
@@ -22,7 +22,7 @@
               layout="total, prev, pager, next, jumper"
               :total="total">
             </el-pagination>
-          </div>
+          </div> -->
         </el-col>
       </el-row>
       </div>
@@ -97,12 +97,12 @@ export default {
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);
       this.param.content.pageSize = val
-      this.query_all_auth()
+      this.listData()
     },
     handleCurrentChange(val) {
       // console.log(`当前页: ${val}`);
       this.param.content.pageNumber = val
-      this.query_all_auth()
+      this.listData()
     },
   }
 }

+ 35 - 11
src/SDrpManagement/ProductGroup/index.vue

@@ -12,9 +12,19 @@
           @clear="clearData"
           clearable>
       </el-input>
-      <!-- <selectPeople ref="people" @selectRow="selectRow">
-        <el-input clearable @clear="selectRow({enterprisename:'',sys_enterpriseid:''})" v-model="enterprisename" placeholder="请选择经销商/客户" @focus="$refs.people.visible=true" slot="input" size="small"></el-input>
-      </selectPeople> -->
+      <selectPeople ref="people" @selectRow="selectRow" v-if="isEnterprise == 0 || isEnterprise == 1">
+        <div :class="enterprisename ? 'select-input' : ''" slot="input" >
+          <el-input 
+            clearable 
+            @clear="selectRow({enterprisename:'',sys_enterpriseid:''})" 
+            v-model="enterprisename" 
+            placeholder="请选择经销商/客户" 
+            @focus="$refs.people.visible=true" 
+            size="small"
+            style="width:300px"
+          ></el-input>
+        </div>
+      </selectPeople>
     </div>
     <selectClass ref="class" @brandChange="brandChange" @onClassChange="onClassChange" @Search="Search" @clearSearch="clearSearch" @clickField="clickField" :default="true"></selectClass>
     <div v-if="Object.keys(productGroup).length > 0">
@@ -67,7 +77,7 @@ export default {
           "nocache":true,
           "brandids":[],
           "where":{
-              "condition":"",
+            "condition":"",
             "tradefield":'',
           }
         }
@@ -75,7 +85,8 @@ export default {
       total:0,
       currentPage:0,
       sys_enterpriseid:'',
-      enterprisename:''
+      enterprisename:'',
+      isEnterprise: JSON.parse(window.sessionStorage.getItem('active_account')).usertype
     };
   },
   provide () {
@@ -100,6 +111,11 @@ export default {
       this.$refs.class.queryAgentiInfo()
       this.$refs.class.queryBrands().then(() => {
         this.$refs.class.queryClass()
+        this.brandId = [this.$refs.class.brand_act]
+        this.params.content.where.tradefield = this.$refs.class.tradefield
+        this.params.content.where.itemclassid = ''
+        this.$refs.class.class_act = ''
+        this.getProductGroup()
       })
     },
     /* 获取品牌数据 */
@@ -124,6 +140,11 @@ export default {
     },
     async getProductGroup() {
       this.params.content.brandids = this.brandId
+      if (this.sys_enterpriseid) {
+        this.params.content.sys_enterpriseid = this.sys_enterpriseid
+      } else {
+        Reflect.deleteProperty(this.params.content,'sys_enterpriseid')
+      }
       let res = await this.$api.requested(this.params)
       res.data = res.data.map(e=>{
         if (e.attinfos.length > 0) {
@@ -145,7 +166,8 @@ export default {
         path:'/groupDetail',
         query: {
           id:id.sa_itemgroupid,
-          brandid:id.sa_brandid
+          brandid:id.sa_brandid,
+          sys_enterpriseid: this.sys_enterpriseid ? this.sys_enterpriseid : ''
         }
       })
     },
@@ -158,6 +180,10 @@ export default {
       this.params.content.where.itemclassid = n.itemclassid
       this.getProductGroup()
     },
+    clickField (item) {
+      this.params.content.where.tradefield = item.tradefield
+      this.getProductGroup()
+    },
     pageChange(n) {
       this.params.content.pageNumber = n
       this.getProductGroup()
@@ -172,11 +198,6 @@ export default {
       this.params.content.pageNumber = 1
       this.getProductGroup()
     },
-    clickField (item) {
-      console.log(item)
-      this.params.content.where.tradefield = item.tradefield
-      this.getProductGroup()
-    },
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);
       this.params.content.pageSize = val
@@ -290,4 +311,7 @@ export default {
   display: flex;
   flex-direction: row-reverse;
 }
+/deep/.select-input input {
+  color: #3874f6;
+}
 </style>

+ 17 - 9
src/SDrpManagement/ProductGroup/modules/GroupDetail/groupDetail.vue

@@ -130,7 +130,16 @@ export default {
       tradefield:[],
       actTradefield:'',
       usertype:"",
-      length:""
+      length:"",
+      param: {
+        "id": "20220926142403",
+        "content": {
+          "pageNumber": 1,
+          "pageSize": 999999,
+          "sa_itemgroupid":'',
+          "sys_enterpriseid":''
+        }
+      }
     };
   },
   computed: {
@@ -145,14 +154,13 @@ export default {
   },
   methods: {
     async getDetail () {
-      let res = await this.$api.requested({
-        "id": "20220926142403",
-        "content": {
-          "pageNumber": 1,
-          "pageSize": 999,
-          "sa_itemgroupid": this.$route.query.id
-        }
-      })
+      this.param.content.sa_itemgroupid = this.$route.query.id
+      if (this.$route.query.sys_enterpriseid) {
+        this.param.content.sys_enterpriseid = this.$route.query.sys_enterpriseid
+      } else {
+        delete this.param.content.sys_enterpriseid
+      }
+      let res = await this.$api.requested(this.param)
       res.code === 0 ?this.$message.error(res.msg): ''
       this.detail = res.data
       this.selectProduct = this.detail ? this.detail[0] : ''

+ 32 - 16
src/SDrpManagement/ProductGroup/modules/Select.vue

@@ -29,6 +29,7 @@ export default {
       itemclass:[],
       activeClass:{},
       field_act:'',
+      tradefield:'',
       brand_act:0,
       class_act:''
     }
@@ -50,7 +51,7 @@ export default {
   },
   methods:{
     async queryAgentiInfo () {
-      const res1 = await this.$api.requested({
+      let param = {
         "id": 20221223141802,
         "content": {
             "pageNumber": 1,
@@ -60,35 +61,41 @@ export default {
               "condition": ""
             }
         }
-      })
+      }
+      if (!this.sys_enterpriseid()) delete param.content.sys_enterpriseid
+      const res1 = await this.$api.requested(param)
       this.fields = res1.data
       if (this.fields.length) {
         this.field_act = res1.data[0].sys_enterprise_tradefieldid
-        this.clickField({sys_enterprise_tradefieldid:this.field_act,tradefield:res1.data[0].tradefield})
+        this.tradefield = res1.data[0].tradefield
+        // this.clickField({sys_enterprise_tradefieldid:this.field_act,tradefield:res1.data[0].tradefield})
       } else {
         this.field_act = 0
-        this.clickField(false)
+        this.tradefield = ''
+        // this.clickField(false)
       }
     },
     async queryBrands () {
-      return new Promise(async (re,rej) => {
-        const res = await this.$api.requested({
-          "id": "20220924163702",
-          "content": {
-            "pageSize":1000,
-            // "sys_enterpriseid":this.sys_enterpriseid(),
-            "where":{
-              "condition":""
-            }
+      let param = {
+        "id": "20220924163702",
+        "content": {
+          "pageSize":1000,
+          "sys_enterpriseid":this.sys_enterpriseid(),
+          "where":{
+            "condition":""
           }
-        })
+        }
+      }
+      if (!this.sys_enterpriseid()) delete param.content.sys_enterpriseid
+      return new Promise(async (re,rej) => {
+        const res = await this.$api.requested(param)
         this.brands = res.data
         if (this.brands.length) {
           this.brand_act = res.data[0].sa_brandid
-          this.clickBrand(res.data[0].sa_brandid)
+          // this.clickBrand(res.data[0].sa_brandid)
         } else {
           this.brand_act = 0
-          this.clickBrand(this.brand_act)
+          // this.clickBrand(this.brand_act)
         }
         re()
       })
@@ -96,6 +103,7 @@ export default {
     },
 
     async queryClass () {
+<<<<<<< HEAD
       const res = await this.$api.requested({
         "id":"20220922110403","content":{
           "sa_brandid":this.brand_act,
@@ -104,12 +112,20 @@ export default {
           }
       })
       console.log(res.data,'pop')
+=======
+      let param = {
+        "id":"20220922110403","content":{"sa_brandid":this.brand_act,"sys_enterpriseid":this.sys_enterpriseid(),where:{istool:0}}
+      }
+      if (!this.sys_enterpriseid()) delete param.content.sys_enterpriseid
+      const res = await this.$api.requested(param)
+>>>>>>> xiaoqin
       this.itemclass = res.data[0].ttemclass
     },
     clickBrand (id) {
       this.brand_act = id ? id : 0
       this.queryClass()
       this.$emit('brandChange',[this.brand_act])
+      
     },
     clickField (item) {
       this.field_act = item ? item.sys_enterprise_tradefieldid : ''

+ 3 - 2
src/SDrpManagement/agentOrder/modules/add.vue

@@ -246,7 +246,6 @@ export default {
     refresh () {
       this.form = {
         "sa_orderid": 0,
-        "sys_enterpriseid": 0, //订货企业id,可不传,默认取当前账号的
         "sa_accountclassid": 0, //营销账户类型ID
         "sa_brandid": "", //品牌ID
         "sa_contractid": 0, //合同ID,标准订单不传
@@ -262,7 +261,9 @@ export default {
         "pay_enterpriseid": 0, //结算单位
         "rebate_used":0,//默认0,是否使用返利金
         "billdate":"",//单据日期,默认创建日期
-        "signbacknum":""
+        "signbacknum":"",
+        "contractname":'',
+        "projectnote":""
       }
       this.visible1 = false
     }

+ 22 - 0
src/router/HDrpManagement.js

@@ -816,6 +816,28 @@ const HDrpManagement = [
       },
     ]
   },
+  {
+    path: '/serveBillMag',
+    name:'serveBillMag',
+    meta: {
+      title: '服务申请单(管理)',
+      ast_nav: true,
+      keeproute: true,
+    },
+    component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/serveBillMag/index'),
+    children: [
+      {
+        path: '/serveBillMagDetail',
+        name:'serveBillMag',
+        meta: {
+          title: '服务申请单(管理)详情',
+          ast_nav: true,
+          keeproute: true,
+        },
+        component: () => import(/* webpackChunkName: "about" */ '@/HDrpManagement/serveBillMag/modules/detail')
+      },
+    ]
+  },
   {
     path: '/workorder',
     name:'workorder',

+ 5 - 0
src/template/invoiceCanUseProduct/index.vue

@@ -76,6 +76,11 @@
           <p><span>{{scope.row.undeliqty}}</span></p>
         </template>
       </el-table-column>
+      <el-table-column
+          label="备注"
+          prop="remarks"
+          width="200px">
+      </el-table-column>
     </el-table>
     <div style="margin-top:16px;text-align:right">
       <el-pagination