codeMan 2 anni fa
parent
commit
a5125ea58c

+ 422 - 0
src/HDrpManagement/serveWorkBill/modules/detail copy.vue

@@ -0,0 +1,422 @@
+<template>
+  <div>
+    <basicDetails
+        ref="details"
+        :titleText="mainData.billno"
+        :oldFormPath="{edit:'HDrpManagement/serveWorkBill/components'}"
+        :editData="mainData"
+        :mainAreaData="mainAreaData"
+        turnPageId="20221031141102"
+        idname="sa_workorderid"
+        ownertable="sa_workorder"
+        tags=""
+        :tabs="mainData.actiontype == '工序模板' ? ['工序详情','确认单','服务团队','工单物料','详细信息'] : ['服务商品','确认单','服务团队','详细信息']"
+        @pageChange="pageChange"
+        @onEditSuccess="queryMainData($route.query.id)">
+      <div slot="tags">
+      </div>
+      <div slot="customOperation" >
+        <!-- <customBtn 
+          btnName="接单"
+          message="确认接单当前服务工单吗?"
+          idName="20230210101103"
+          keyName="sa_workorderid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status == '新建' && tool.checkAuth($route.name,'join')"
+        />
+        <customBtn 
+          btnName="开始"
+          message="确认开始当前服务工单吗?"
+          idName="20230209144503"
+          keyName="sa_workorderid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status == '待开始' && tool.checkAuth($route.name,'start')"
+
+        /> -->
+        <customBtn 
+          btnName="暂停"
+          message="确认暂停当前服务工单吗?"
+          idName="20230209144603"
+          keyName="sa_workorderid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status == '进行中' && tool.checkAuth($route.name,'stop')"
+
+        />
+        <customBtn 
+          btnName="启用"
+          message="确认启用当前服务工单吗?"
+          idName="20230209144703"
+          keyName="sa_workorderid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status == '暂停' && tool.checkAuth($route.name,'used')"
+
+        />
+        <!-- <customBtn 
+          btnName="完结"
+          message="确认完结当前服务工单吗?"
+          idName="20230209144903"
+          keyName="sa_workorderid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status != '新建' && tool.checkAuth($route.name,'complete')"
+
+        /> -->
+        <customBtn 
+          btnName="作废"
+          message="确认作废当前服务工单吗?"
+          idName="20230209144803"
+          keyName="sa_workorderid"
+          :id="$route.query.id"
+          @onSuccess="queryMainData"
+          class="inline-16"
+          v-if="mainData.status != '完结' && tool.checkAuth($route.name,'delete')"
+        />
+      </div>
+      <div slot="slot0" v-if="mainData.actiontype == '工序模板'">
+        <taskDetail :data="nodes">
+          <template v-slot:detail="scope">
+              <taskListDetail class="inline-16" :data="scope.data"></taskListDetail>
+          </template>
+          <!-- <template v-slot:edit="scope">
+            <taskListEdit class="inline-16" :data="scope.data"/>
+          </template> -->
+        </taskDetail>
+      </div>
+      <div slot="slot1" v-if="mainData.actiontype == '工序模板'">
+        <checkBill>
+          <template v-slot:download="scope">
+            <el-button v-if="tool.checkAuth($route.name,'checkBillDetail')" type="text" size="mini" @click="downLoadBill(scope.data)">单 据 下 载</el-button>
+          </template>
+        </checkBill>
+      </div>
+      <div slot="slot2" v-if="mainData.actiontype == '工序模板'">
+        <teamList v-if="tool.checkAuth($route.name,'teamList')" ref="teamList" :data="mainData.team">
+          <selectTeam ref="team" @teamChange="teamChange" slot="add">
+            <el-button  v-if="tool.checkAuth($route.name,'teamHandle')" class="button-new-tag" size="small" type="primary" @click="$refs.team.dialogFormVisible=true">添 加</el-button>
+          </selectTeam>
+        </teamList>
+      </div>
+      <div slot="slot3" v-if="mainData.actiontype == '工序模板'">
+        <Items :data="mainData"></Items>
+      </div>
+      <div slot="slot4" v-if="mainData.actiontype == '工序模板'">
+        <detailInfo :more="true" :data="detailInfo"></detailInfo>
+      </div>
+
+      <div slot="slot0" v-if="mainData.actiontype != '工序模板'">
+        <Items :data="mainData"></Items>
+      </div>
+      <div slot="slot1" v-if="mainData.actiontype != '工序模板'">
+        <checkBill>
+          <template v-slot:download="scope">
+            <el-button v-if="tool.checkAuth($route.name,'checkBillDetail')" type="text" size="mini" @click="downLoadBill(scope.data)">单 据 下 载</el-button>
+          </template>
+        </checkBill>
+      </div>
+      <div slot="slot2" v-if="mainData.actiontype != '工序模板'">
+        <teamList v-if="tool.checkAuth($route.name,'teamList')" ref="teamList" :data="mainData.team">
+          <selectTeam ref="team" @teamChange="teamChange" slot="add">
+            <el-button  v-if="tool.checkAuth($route.name,'teamHandle')" class="button-new-tag" size="small" type="primary" @click="$refs.team.dialogFormVisible=true">添 加</el-button>
+          </selectTeam>
+        </teamList>
+      </div>
+      <div slot="slot3" v-if="mainData.actiontype != '工序模板'">
+        <detailInfo :more="true" :data="detailInfo"></detailInfo>
+      </div>
+      
+    </basicDetails>
+  </div>
+</template>
+
+<script>
+import detailInfo from '@/components/detailInfo/index'
+import taskDetail from './taskDetail/index'
+import taskListDetail from './taskDetail/taskListDetail'
+import taskListEdit from './taskDetail/taskListEdit'
+import checkBill from './checkBill/index'
+import teamList from './teamList/index'
+import Items from './items/index'
+import selectTeam from '../components/teamSelect'
+import { log } from '@antv/g2plot/lib/utils'
+export default {
+  name: "detail",
+  data() {
+    return {
+      mainData:'',
+      mainAreaData:{},
+      detailInfo:'',
+      nodes:[]
+    }
+  },
+  components:{
+    detailInfo,
+    taskDetail,
+    taskListDetail,
+    taskListEdit,
+    checkBill,
+    teamList,
+    Items,
+    selectTeam
+  },
+  methods:{
+    async queryMainData(id) {
+      const res = await this.$api.requested({
+        "id":20230208140103,
+        "content": {
+          "sa_workorderid": this.$route.query.id
+        }
+      })
+      this.mainData = res.data
+      this.changeDataStructure()
+      console.log(res.data);
+      
+      this.nodes = this.createTreeData(res.data.nodes)
+      console.log(this.nodes);
+            
+    },
+    downLoadBill (data) {
+      let result = data.attinfos.filter(item => item.usetype == "comfirmbill")
+      if(result.length == 0) return this.$message({
+        type:'warning',
+        message:'暂无单据信息'
+      })      
+      window.open(result[0].url,'_self')
+    },
+    async teamChange (data) {
+      let result = data.map(item => {
+        return item.userid
+      })
+      const res = await this.$api.requested({
+        "id": 20220930103603,
+        "content": {
+            "ownertable":'sa_workorder',
+            "ownerid":this.$route.query.id,
+            "justuserids":false,
+            "userids": result
+        }
+      })
+      this.tool.showMessage(res,() => {
+        this.$refs.team.dialogFormVisible = false
+        this.$refs.teamList.listData()
+      })
+    },
+    changeDataStructure() {
+      let that = this
+      this.mainAreaData = [
+        {
+          label:'单号',
+          value:this.mainData.billno
+        },
+        {
+          label:'服务申请单号',
+          value:this.mainData.servicebillno
+        },
+        {
+          label:'工单类型',
+          value:this.mainData.type
+        },
+        {
+          label:'负责人',
+          value:this.mainData.projectleader
+        },
+        {
+          label:'状态',
+          value: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
+        },
+        {
+          label:'经销商',
+          value:this.mainData.enterprisename
+        },
+        {
+          label:'省市县',
+          value:this.mainData.province + this.mainData.city + this.mainData.county
+        },
+        {
+          label:'业务员',
+          value:this.mainData.saler_name
+        },
+        {
+          label:'业务员电话',
+          value:this.mainData.salerphonenumber
+        },
+        {
+          label:'地址',
+          value:this.mainData.address
+        },
+        {
+          label:'创建时间',
+          value:this.mainData.createdate
+        },
+        {
+          label:'结束时间',
+          value:this.mainData.enddate
+        },
+        {
+          label:'操作类型',
+          value:this.mainData.actiontype
+        }
+      ]
+      this.detailInfo = [
+        {
+          title:'基本信息',
+          info: [
+            {label:'单号',value:this.mainData.billno},
+            {label:'申请单号',value:this.mainData.servicebillno},
+            {
+              label:'状态',
+              value: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},
+            {label:'经销商',value:this.mainData.enterprise},
+            {label:'现场联系人',value:this.mainData.scenecontact},
+            {label:'联系人电话',value:this.mainData.scenecontactphonenumber},
+            {label:'工单负责人',value:this.mainData.projectleader},
+            {label:'工单类型',value:this.mainData.type},
+            {label:'工单模板',value:this.mainData.name},
+            {label:'省市县',value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`},
+            {label:'地址',value:this.mainData.address},
+            {label:'创建人',value:this.mainData.createby},
+            {label:'创建时间',value:this.mainData.createdate},
+          ]
+        },
+      ]
+    },
+    createTreeData (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        var elNode = {
+          amount:node['amount'],
+          attinfos:node['attinfos'],
+          changeby: node["changeby"],
+          changedate:node['changedate'],
+          changeuserid:node['changeuserid'],
+          confirm_value:node['confirm_value'],
+          finishby:node['finishby'],
+          parentid:node['parentid'],
+          remarks:node['remarks'],
+          sa_workorder_nodeid:node['sa_workorder_nodeid'],
+          sa_workorderid:node['sa_workorderid'],
+          sequence:node['sequence'],
+          status:node['status'],
+          textcontent:node['textcontent'],
+          workname:node['workpresetjson'].workname,
+          additem:node['workpresetjson'].additem,
+          addperson:node['workpresetjson'].amountpay,
+          confirm_options:node['workpresetjson'].confirm_options,
+          confirm:node['workpresetjson'].confirm,
+          contractupload:node['workpresetjson'].contractupload,
+          fileupload:node['workpresetjson'].fileupload,
+          itemtype:node['workpresetjson'].itemtype,
+          remarks:node['workpresetjson'].remarks,
+          required:node['workpresetjson'].required,
+          textedit:node['workpresetjson'].textedit,
+          children: [],
+        }
+          
+        if (node.child && node.child.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.child.length; index++) {
+          // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+          elNode.children.push(convertToElementTree(node.child[index]));
+          }
+        }
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    // 监听切换数据,上一页,下一页
+    pageChange (id,rowindex,tabIndex) {
+      this.flag = false
+      tabIndex = this.$route.query.tabIndex
+      this.$router.replace({path:'/workorderDetail',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>

+ 6 - 28
src/HDrpManagement/serveWorkBill/modules/detail.vue

@@ -10,7 +10,7 @@
         idname="sa_workorderid"
         ownertable="sa_workorder"
         tags=""
-        :tabs="mainData.actiontype == '工序模板' ? ['工序详情','确认单','服务团队','工单物料','详细信息'] : ['服务商品','确认单','服务团队','详细信息']"
+        :tabs="['工序详情','确认单','服务团队','工单物料','详细信息']"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
       <div slot="tags">
@@ -81,7 +81,7 @@
           v-if="mainData.status != '完结' && tool.checkAuth($route.name,'delete')"
         />
       </div>
-      <div slot="slot0" v-if="mainData.actiontype == '工序模板'">
+      <div slot="slot0">
         <taskDetail :data="nodes">
           <template v-slot:detail="scope">
               <taskListDetail class="inline-16" :data="scope.data"></taskListDetail>
@@ -91,48 +91,26 @@
           </template> -->
         </taskDetail>
       </div>
-      <div slot="slot1" v-if="mainData.actiontype == '工序模板'">
+      <div slot="slot1">
         <checkBill>
           <template v-slot:download="scope">
             <el-button v-if="tool.checkAuth($route.name,'checkBillDetail')" type="text" size="mini" @click="downLoadBill(scope.data)">单 据 下 载</el-button>
           </template>
         </checkBill>
       </div>
-      <div slot="slot2" v-if="mainData.actiontype == '工序模板'">
+      <div slot="slot2">
         <teamList v-if="tool.checkAuth($route.name,'teamList')" ref="teamList" :data="mainData.team">
           <selectTeam ref="team" @teamChange="teamChange" slot="add">
             <el-button  v-if="tool.checkAuth($route.name,'teamHandle')" class="button-new-tag" size="small" type="primary" @click="$refs.team.dialogFormVisible=true">添 加</el-button>
           </selectTeam>
         </teamList>
       </div>
-      <div slot="slot3" v-if="mainData.actiontype == '工序模板'">
+      <div slot="slot3">
         <Items :data="mainData"></Items>
       </div>
-      <div slot="slot4" v-if="mainData.actiontype == '工序模板'">
+      <div slot="slot4">
         <detailInfo :more="true" :data="detailInfo"></detailInfo>
       </div>
-
-      <div slot="slot0" v-if="mainData.actiontype != '工序模板'">
-        <Items :data="mainData"></Items>
-      </div>
-      <div slot="slot1" v-if="mainData.actiontype != '工序模板'">
-        <checkBill>
-          <template v-slot:download="scope">
-            <el-button v-if="tool.checkAuth($route.name,'checkBillDetail')" type="text" size="mini" @click="downLoadBill(scope.data)">单 据 下 载</el-button>
-          </template>
-        </checkBill>
-      </div>
-      <div slot="slot2" v-if="mainData.actiontype != '工序模板'">
-        <teamList v-if="tool.checkAuth($route.name,'teamList')" ref="teamList" :data="mainData.team">
-          <selectTeam ref="team" @teamChange="teamChange" slot="add">
-            <el-button  v-if="tool.checkAuth($route.name,'teamHandle')" class="button-new-tag" size="small" type="primary" @click="$refs.team.dialogFormVisible=true">添 加</el-button>
-          </selectTeam>
-        </teamList>
-      </div>
-      <div slot="slot3" v-if="mainData.actiontype != '工序模板'">
-        <detailInfo :more="true" :data="detailInfo"></detailInfo>
-      </div>
-      
     </basicDetails>
   </div>
 </template>

+ 2 - 2
src/HDrpManagement/workBillModule/components/add.vue

@@ -19,14 +19,14 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="24">
+          <!-- <el-col :span="24">
             <el-form-item label="操作类型" prop="actiontype">
               <el-select v-model="form.actiontype">
                 <el-option label="工序模板" value="工序模板"></el-option>
                 <el-option label="非工序模板" value="非工序模板"></el-option>
               </el-select>
             </el-form-item>
-          </el-col>
+          </el-col> -->
         </el-form>
       </el-row>
       <div class="dialog-footer">

+ 2 - 2
src/HDrpManagement/workBillModule/components/edit.vue

@@ -19,14 +19,14 @@
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="24">
+          <!-- <el-col :span="24">
             <el-form-item label="操作类型" prop="actiontype">
               <el-select :disabled="true" v-model="form.actiontype">
                 <el-option label="工序模板" value="工序模板"></el-option>
                 <el-option label="非工序模板" value="非工序模板"></el-option>
               </el-select>
             </el-form-item>
-          </el-col>
+          </el-col> -->
         </el-form>
       </el-row>
       <div class="dialog-footer">