Просмотр исходного кода

Merge branch 'mergeBranch' into greenUrgent

qymljy 3 месяцев назад
Родитель
Сommit
d08d1c66cb

+ 3 - 3
src/Form/projectChange/add.vue

@@ -388,14 +388,14 @@
       <div class="fixed__btn__panel">
         <el-button
           size="small"
-          @click="onClose"
+          @click="dialogFormVisible = false"
           class="normal-btn-width inline-16"
           >{{ $t("取 消") }}</el-button
         >
         <duplicateCheck
           ref="check"
           :data="form"
-          @onSuccess="onClose"
+          @onSuccess="dialogFormVisible = false"
           @onCheck="onCheck"
         ></duplicateCheck>
         <el-button
@@ -919,8 +919,8 @@ export default {
     },
     onClose() {
       this.$refs["form"].resetFields();
-      this.dialogFormVisible = false;
       this.repeats = [];
+      this.$emit('onSuccess')
     },
     /*获取品牌*/
     async queryBrand() {

+ 1 - 0
src/HDrpManagement/BrandManage/component/saleclass/index.vue

@@ -106,6 +106,7 @@ export default {
 
     },
     createTreeData (array) {
+      console.log('3333333333/////')
       var that = this
       let arr = []
       function convertToElementTree(node) {

+ 120 - 65
src/HDrpManagement/contractManage/components/productClassList/addProduct.vue

@@ -1,56 +1,22 @@
 <template>
   <div>
     <el-button type="primary" size="small" :disabled="disabled" @click="addBtn">{{$t(title?title:'添 加')}}</el-button>
-    <el-drawer append-to-body size="80%" :with-header="false" :visible.sync="drawer" @close="onClose">
+    <el-drawer append-to-body size="800px" :with-header="false" :visible.sync="drawer" @close="onClose">
       <div class="container ">
         <p class="normal-title normal-margin">{{$t(`产品类别`)}}</p>
         <div class="drawer__panel" style="margin-bottom: 0 !important;">
           <div style="margin-bottom: 10px">
-            <uploadAllData
-                style="display: inline-block !important;"
-                :total="total"
-                @handlePullApi="handlePullApi"
-                @handleUploadApi="handleUploadApi"
-                @onSuccess="onSuccess"
-            ></uploadAllData>
-            <el-button type="primary" class="inline-16" size="small" :disabled="selectProductLength == 0" @click="onSumit">{{$t(`批 量 添 加`)}}</el-button>
+            <el-button type="primary"  size="small" :disabled="tableSelectData == 0" @click="batchSelect">{{$t(`批 量 添 加`)}}</el-button>
+            <el-button
+                class="inline-16"
+                type="primary"
+                size="small"
+                @click="allSelect"
+            >{{$t('一键全选')}}</el-button
+            >
             <el-input size="small" style="width:200px;margin-bottom:10px" v-model="params.content.where.condition" :placeholder="`${$t(`编号`)}、${$t(`类别名称`)}、${$t(`品牌`)}`" @clear="getProductList(params.content.pageNumber = 1)" @keyup.native.enter="getProductList(params.content.pageNumber = 1)" clearable></el-input>
           </div>
-          <Table :checkbox="true"  height="calc(100vh - 220px)" @selectionChange="selectArr" ref="table" id="itemclassid"  v-model="itemno" :layout="tablecols" :data="productList" :custom="true"   @upDateData="upDateData">
-            <template v-slot:customcol="scope">
-              <div v-if="scope.column.columnname == 'attinfos'">
-                <previewImage
-                    v-if="scope.column.data.attinfos[0]"
-                    style="width:38px;height:38px;margin:0px"
-                    class="image"
-                    :image="scope.column.data.attinfos[0]"
-                    :list="scope.column.data.attinfos"
-                    :deletebtn="false"
-                ></previewImage>
-              </div>
-              <div v-else-if="scope.column.columnname == 'brand'">
-                {{scope.column.data[scope.column.columnname][0] ? $t(scope.column.data[scope.column.columnname])[0].brandname : '--'}}
-              </div>
-              <div v-else>{{$t(scope.column.data[scope.column.columnname])}}</div>
-              <span v-if="!scope.column.data[scope.column.columnname] && scope.column.data[scope.column.columnname] !== 0 && scope.column.columnname != 'operation'">--</span>
-            </template>
-            <template v-slot:opreation="scope">
-              <el-button type="text" size="mini" @click="addProduct(scope.data)">{{$t('添 加')}}</el-button>
-            </template>
-          </Table>
-          <div style="display:flex;justify-content:space-between;align-items:center;margin-top:10px">
-            <!--            <el-pagination
-                            style="display:inline-block"
-                            background
-                            small
-                            @size-change="handleSizeChange"
-                            @current-change="handleCurrentChange"
-                            :current-page="params.content.pageNumber"
-                            :page-sizes="[20, 50, 100, 200]"
-                            layout="total, prev, pager, next, jumper"
-                            :total="total">
-                        </el-pagination>-->
-          </div>
+          <treeTable ref="treeRef" :table-data="productList" @rowSelect="rowSelect"></treeTable>
         </div>
 
 
@@ -90,7 +56,7 @@ export default {
       itemno:'',
       total:0,
       params: {
-        "id": 20221124140102,
+        "id": 2026012213242302,
         "content": {
             "sa_contractid": '',
             "pageNumber": 1,
@@ -99,7 +65,8 @@ export default {
                 "condition": ""
             }
         },
-      }
+      },
+      tableSelectData:[]
     };
   },
   computed:{
@@ -135,10 +102,43 @@ export default {
       this.params.content.sa_contractid = this.$route.query.id
       let res = await this.$api.requested(this.params)
       this.productList = res.data
+      this.productList = this.createMenu(res.data);
+      console.log(this.productList,'productList')
       this.total = res.total
-      this.params.content.pageNumber = res.pageNumber
-      console.log(this)
-      this.$refs.table.$refs.table.doLayout()
+      // this.params.content.pageNumber = res.pageNumber
+      // console.log(this)
+      // this.$refs.table.$refs.table.doLayout()
+    },
+    createMenu (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        var elNode = {
+          itemclassname: node["itemclassname"],
+          itemclassfullname: node["itemclassfullname"],
+          itemclassnum:node["itemclassnum"],
+          brandname:node["brandname"],
+          disabled:!node["isCheck"],
+          isCheck:node["isCheck"],
+          itemclassid:node['itemclassid'],
+          selected:false,
+          children: []
+        }
+        if (node.subitemclass && node.subitemclass.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subitemclass.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subitemclass[index]));
+          }
+        }
+        console.log(elNode,'elNode数据输出')
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
     },
     createTreeData (array) {
       var that = this
@@ -192,28 +192,27 @@ export default {
         this.$emit('onSuccess')
       })
     },
-    async onSumit () {
-      let item = this.$refs.table.allArr.map(item => {
-        return {
-          "sa_contract_itemsaleclassid": 0,
-          "itemclassid": item.itemclassid,
-          "discountrate":  item.discountrate
-        }
-      })
-
+    async onSubmit () {
       let res = await this.$api.requested({
         "id": 20221124110202,
         "content": {
             "sa_contractid": this.$route.query.id,
-            "items": item
+            "items": this.tableSelectData
         },
       })
-      this.tool.showMessage(res,() => {
-        // this.drawer = false
-        this.$emit('onSuccess')
-        this.getProductList()
-        this.$refs.table.allArr = []
-      })
+      if (res.code == 0){
+        this.tableSelectData = []
+        this.tool.showMessage(res,()=>{})
+      }else {
+        this.tool.showMessage(res,() => {
+          // this.drawer = false
+          this.tableSelectData = []
+          this.drawer = false
+          this.$emit('onSuccess')
+          // this.getProductList()
+          // this.$refs.table.allArr = []
+        })
+      }
     },
     upDateData (data) {
       this.selectProductLength = data.length
@@ -260,6 +259,62 @@ export default {
     onSuccess () {
       this.getProductList()
     },
+    batchSelect(){
+      this.onSubmit()
+    },
+    rowSelect (row) {
+      console.log(row)
+      const exists = this.tableSelectData.some(item => item.itemclassid === row.itemclassid);
+      if (exists) {
+        // 移除
+        this.tableSelectData = this.tableSelectData.filter(
+            item => item.itemclassid !== row.itemclassid
+        );
+      } else {
+        // 新增
+        this.tableSelectData = [
+          ...this.tableSelectData,
+          {
+            sa_quotedprice_itemclassid: 0,
+            itemclassid: row.itemclassid
+          }
+        ];
+      }
+      // this.tableSelectData.push({
+      //   sa_quotedprice_itemclassid: 0,
+      //   itemclassid: row.itemclassid
+      // })
+      console.log(this.tableSelectData)
+    },
+    allSelect(){
+      this.tableSelectData = []
+      this.productList.forEach(row => {
+        this.tableSelectData.push({
+          sa_quotedprice_itemclassid: 0,
+          itemclassid: row.itemclassid
+        })
+        console.log(row,'row输出')
+        if (row.children.length > 0){
+          row.children.forEach(item => {
+            console.log(item,'item')
+            this.tableSelectData.push({
+              sa_quotedprice_itemclassid: 0,
+              itemclassid: item.itemclassid
+            })
+            if (item.children.length > 0){
+              item.children.forEach(kow => {
+                this.tableSelectData.push({
+                  sa_quotedprice_itemclassid: 0,
+                  itemclassid: kow.itemclassid
+                })
+              })
+            }
+          })
+        }
+      })
+      this.onSubmit()
+      console.log(this.tableSelectData)
+    },
   },
 };
 </script>

+ 8 - 2
src/HDrpManagement/orderManage/modules/edit.vue

@@ -267,7 +267,8 @@
           <div :style="{marginTop:projectError?'20px':''}">
             <small class="inline-16"><span style="color:red;">*</span><b>{{$t(`关联项目`)}}:</b>&nbsp;</small>
             <popoverTemp class="inline-16" :tablecols="tablecols" :isButton="false" :params="paramsProject" :isRest="true"
-                         placeholder="选择关联项目" @rowClick="rowClick" :inputData="projectname"></popoverTemp>
+                         placeholder="选择关联项目" @rowClick="rowClick" :disVal="true" :inputData="projectname"></popoverTemp>
+            <el-button type="primary" size="small" @click="clearProject">清空</el-button>
           </div>
           <div v-if="projectError" style="color:red;font-size: 12px;margin-left: 90px;">{{projectError}}</div>
         </div>
@@ -456,7 +457,7 @@ export default {
         "content": {
           "sys_enterpriseid": '',
           "pageNumber": 1,
-          "pageSize": 100,
+          "pageSize": 20,
           "where": {
             "condition": ""
           }
@@ -751,6 +752,11 @@ export default {
       this.projectname = val.projectname
       this.sa_projectid = val.sa_projectid
       this.projectError = ''
+    },
+    clearProject(){
+      this.projectname = ''
+      this.sa_projectid = ''
+      this.projectError = ''
     }
   },
 }

+ 184 - 184
src/HDrpManagement/projectChange/modules/detail.vue

@@ -1,26 +1,26 @@
 
 <template>
   <basicDetails
-    ref="details"
-    :titleText="mainData.projectname"
-    formPath="projectChange"
-    :editData="mainData"
-    :mainAreaData="mainAreaData"
-    :turnPageId="20221020143502"
-    idname="sa_projectid"
-    ownertable="sa_project"
-    typeTask="项目商机"
-    :tags="[]"
-    :tabs="tool.checkAuth($route.name,'productSetQuery')?['报价单','合同','详细信息','关联客户','联系人','产品配置单','关联线索','报备进度','竞争对手','项目评估']:['报价单','合同','详细信息','关联客户','联系人','关联线索','报备进度','竞争对手','项目评估']"
-    :status="mainData.status"
-    :pageChange="pageDisabled ? pageDisabled : false"
-    @pageChange="pageChange"
-    @onEditSuccess="queryMainData($route.query.id)"
-    @logSuccess="queryMainData"
-    @followAdd="followAdd"
-    @sysTag="sysTag">
+      ref="details"
+      :titleText="mainData.projectname"
+      formPath="projectChange"
+      :editData="mainData"
+      :mainAreaData="mainAreaData"
+      :turnPageId="20221020143502"
+      idname="sa_projectid"
+      ownertable="sa_project"
+      typeTask="项目商机"
+      :tags="[]"
+      :tabs="tool.checkAuth($route.name,'productSetQuery')?['报价单','合同','详细信息','关联客户','联系人','产品配置单','关联线索','报备进度','竞争对手','项目评估']:['报价单','合同','详细信息','关联客户','联系人','关联线索','报备进度','竞争对手','项目评估']"
+      :status="mainData.status"
+      :pageChange="pageDisabled ? pageDisabled : false"
+      @pageChange="pageChange"
+      @onEditSuccess="queryMainData($route.query.id)"
+      @logSuccess="queryMainData"
+      @followAdd="followAdd"
+      @sysTag="sysTag">
     <!-- 使用此插槽可不传[tags] -->
-<!--    <tagPanl slot="tags" :data="tagObj" ownertable="sa_project" :id="mainData.sa_projectid" @onSuccess="queryMainData"/>-->
+    <!--    <tagPanl slot="tags" :data="tagObj" ownertable="sa_project" :id="mainData.sa_projectid" @onSuccess="queryMainData"/>-->
     <div slot="customOperationBef">
       <updProject class="inline-16" v-if="tool.checkAuth($route.name,'updProject')" :data="mainData" @updSuccess="queryMainData"></updProject>
       <commissionSet class="inline-16" v-if="tool.checkAuth($route.name,'commissionSet')" ownertable="sa_project" @setSuccess="queryMainData" :data="mainData"></commissionSet>
@@ -56,9 +56,9 @@
             </div>
           </div>
         </div>
-<!--        <div>
-          <setStage  :stage="stageList" @setStage="setStage" style="margin-bottom: 10px"></setStage>
-        </div>-->
+        <!--        <div>
+                  <setStage  :stage="stageList" @setStage="setStage" style="margin-bottom: 10px"></setStage>
+                </div>-->
       </div>
     </template>
 
@@ -229,21 +229,21 @@ export default {
   },
 
   watch:{
-   async mainData(val) {
-     const res = await this.$api.requested({
-       "id": 20220930103501,
-       "content": {
-         "ownertable":"sa_project",
-         "ownerid":this.$route.query.id
-       }
-     })
-     const agent = await this.$api.requested({
-       "id":20230329122604,
-       "content": {
-         "ownertable":"sa_project",
-         "ownerid":this.$route.query.id
-       }
-     })
+    async mainData(val) {
+      const res = await this.$api.requested({
+        "id": 20220930103501,
+        "content": {
+          "ownertable":"sa_project",
+          "ownerid":this.$route.query.id
+        }
+      })
+      const agent = await this.$api.requested({
+        "id":20230329122604,
+        "content": {
+          "ownertable":"sa_project",
+          "ownerid":this.$route.query.id
+        }
+      })
 
       if (this.mainData.leader.length !== 0){
         if (JSON.parse(window.sessionStorage.getItem('active_account')).userid === this.mainData.leader[0].userid){
@@ -325,7 +325,7 @@ export default {
     // 监听切换数据,上一页,下一页
     pageChange (id,rowindex) {
       this.flag = 0
-     /* this.$router.replace({path:'/projectChangeDetail',query:{id:id,rowindex:rowindex,portrait:''}})*/
+      /* this.$router.replace({path:'/projectChangeDetail',query:{id:id,rowindex:rowindex,portrait:''}})*/
       this.queryMainData(id)
     },
     /*BPM是否开启*/
@@ -402,12 +402,12 @@ export default {
       let res = await this.$api.requested({
         "id": "20221018150602",
         "content": {
-            "sys_enterpriseid": 1,
-            "pageNumber": 1,
-            "pageSize": 20,
-            "where": {
-                "condition": ""
-            }
+          "sys_enterpriseid": 1,
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": ""
+          }
         }
       })
     },
@@ -421,11 +421,11 @@ export default {
       let res = await this.$api.requested({
         "id": 20221021095802,
         "content": {
-            "pageNumber": 1,
-            "pageSize": 99999,
-            "where": {
-                "condition": ""
-            }
+          "pageNumber": 1,
+          "pageSize": 99999,
+          "where": {
+            "condition": ""
+          }
         },
       })
       this.enterpriseList = res.data
@@ -435,12 +435,12 @@ export default {
       let res = await this.$api.requested({
         "id": "20221022165503",
         "content": {
-            "sys_enterpriseid": this.mainData.sys_enterpriseid,
-            "pageNumber": 1,
-            "pageSize": 999999,
-            "where": {
-                "condition": ""
-            }
+          "sys_enterpriseid": this.mainData.sys_enterpriseid,
+          "pageNumber": 1,
+          "pageSize": 999999,
+          "where": {
+            "condition": ""
+          }
         }
       })
       this.projectAddress = res.data
@@ -453,134 +453,134 @@ export default {
     changeDataStructure () {
       let that = this
       that.siteid === 'HY'?
-      this.detailInfo = {
-        baseInfo: [
-          {label:'项目编号',value:this.mainData.projectnum ? this.mainData.projectnum : '--'},
-          {label:'项目名称',value:this.mainData.projectname ? this.mainData.projectname : '--'},
-          {label:'报备进度',value:this.mainData.reportstatus,
-            style:function () {
-              let style = that.tool.getStatusColor(that.mainData.reportstatus)
-              return style
-
-            }
-          },
-          {label:'项目类型',value:this.mainData.projecttype ? this.$t(this.mainData.projecttype) + '-' + this.$t(this.mainData.projecttype_remarks) : '--'},
-          {label:'项目阶段',value:this.mainData.stagename ? this.mainData.stagename : '--'},
-          {label:'项目方阶段',value:this.mainData.squarestage ? this.mainData.squarestage : '--'},
-          {label: '项目等级',value: this.mainData.grade ? this.mainData.grade : '--'},
-          {label:'项目地址',value:`${this.mainData.province} - ${this.mainData.city} - ${this.mainData.county} - ${this.mainData.address}`},
-          {label:'项目规模',value:this.mainData.scale ? this.mainData.scale + this.mainData.unitname : '--'},
-          {label:'预计开工时间',value:this.mainData.begdate_due ? this.mainData.begdate_due : '--'},
-          {label:'预计完工时间',value:this.mainData.enddate_due ? this.mainData.enddate_due : '--'},
-
-          {label:'预计签约时间',value:this.mainData.signdate_due ? this.mainData.signdate_due : '--'},
-          {label:'预计签约金额(元)',value:this.mainData.signamount_due ? this.tool.formatAmount(this.mainData.signamount_due,2) : '--'},
-          {label:'项目成交金额(元)',value:this.mainData.dealamount ? this.tool.formatAmount(this.mainData.dealamount,2) : '--'},
-          {label:'赢率',value:this.mainData.winrate ? this.mainData.winrate : '--'},
-          {label:'领域',value:this.mainData.tradefield ? this.$t(this.mainData.tradefield) : '--'},
-          {label:'品牌',value:this.mainData.brandname ? this.mainData.brandname : '--'},
-          {label:'品牌是否填报方植入',value:this.mainData.isfillbrangd === '1' ? this.$t('是') :  this.$t('否')},
-          {label:'项目状态',value:this.mainData.status ? this.$t(this.mainData.status) : '--',
-            style:function () {
-              let style = that.mainData.status == '跟进中'?'color:#3874F6':that.tool.getStatusColor(that.mainData.status)
-              return style
-
-            }},
-         /* {label:'项目折扣',value:this.mainData.discountrate ? this.mainData.discountrate : '--'},*/
-
-
-
-          {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
-          {label:'结案/失败原因',value:this.mainData.status == '已结案'?this.mainData.endreason:this.mainData.status == '已失败'?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},
-          {label:'项目来源',value:this.mainData.source ? this.mainData.source : '--'},
-        /*  {label:'失败原因',value:this.mainData.defeatreason?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},*/
-       /*   {label:'修正比例',value:this.mainData.reward_rate ? Math.round((this.mainData.reward_rate * 100)*100)/100 + '%': '0%'},
-          {label:'提成计算节点',value:this.mainData.reward_point ? this.mainData.reward_point : '--'},*/
-        ],
-
-        systemInfo: [
-          {label:'创建人',value:this.mainData.createby ? this.mainData.createby : '--'},
-          {label:'创建时间',value:this.mainData.createdate ? this.mainData.createdate : '--'},
-          {label:'最近编辑人',value:this.mainData.changeby ? this.mainData.changeby : '--'},
-          {label:'最近编辑时间',value:this.mainData.changedate ? this.mainData.changedate : '--'},
-          {label:'提交报备人',value:this.mainData.reportby?this.mainData.reportby:'--'},
-          {label:'提交报备时间',value:this.mainData.reportdate?this.mainData.reportdate:'--'},
-          {label:'报备审核人',value:this.mainData.reportcheckby?this.mainData.reportcheckby:'--'},
-          {label:'报备审核时间',value:this.mainData.reportcheckdate?this.mainData.reportcheckdate:'--'},
-          /*{label:'锁定状态',value:this.mainData.locked == '0' ? '锁定' : '解锁'},*/
-
-          {label:'转手次数',value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'},
-        ]
-      }
-      :
-      this.detailInfo = {
-        baseInfo: [
-          {label:'项目编号',value:this.mainData.projectnum ? this.mainData.projectnum : '--'},
-          {label:'项目名称',value:this.mainData.projectname ? this.mainData.projectname : '--'},
-          {label:'报备进度',value:this.mainData.reportstatus,
-            style:function () {
-              let style = that.tool.getStatusColor(that.mainData.reportstatus)
-              return style
-
-            }
-          },
-          {label:'项目类型',value:this.mainData.projecttype ? this.$t(this.mainData.projecttype) + '-' + this.$t(this.mainData.projecttype_remarks) : '--'},
-          {label:'项目阶段',value:this.mainData.stagename ? this.mainData.stagename : '--'},
-          {label:'项目方阶段',value:this.mainData.squarestage ? this.mainData.squarestage : '--'},
-          {label: '项目等级',value: this.mainData.grade ? this.mainData.grade : '--'},
-          /*{label:'项目地址',value:this.mainData.address},*/
-          {label:'项目地址',value:`${this.mainData.province} - ${this.mainData.city} - ${this.mainData.county} - ${this.mainData.address}`},
-          {label:'项目规模',value:this.mainData.scale ? this.mainData.scale + this.mainData.unitname : '--'},
-          {label:'项目预算(万元)',value:this.mainData.budgetary ? this.tool.formatAmount(this.mainData.budgetary,2) : '--'},
-          {label:'总投资额(万元)',value:this.mainData.totalinvestment ? this.tool.formatAmount(this.mainData.totalinvestment,2) : '--'},
-          {label:'造价(万元)',value:this.mainData.costofconstruction ? this.tool.formatAmount(this.mainData.costofconstruction,2) : '--'},
-          {label:'预计开工时间',value:this.mainData.begdate_due ? this.mainData.begdate_due : '--'},
-          {label:'预计完工时间',value:this.mainData.enddate_due ? this.mainData.enddate_due : '--'},
-
-          {label:'预计签约时间',value:this.mainData.signdate_due ? this.mainData.signdate_due : '--'},
-          {label:'预计签约金额(元)',value:this.mainData.signamount_due ? this.tool.formatAmount(this.mainData.signamount_due,2) : '--'},
-          {label:'项目成交金额(元)',value:this.mainData.dealamount ? this.tool.formatAmount(this.mainData.dealamount,2) : '--'},
-          {label:'赢率',value:this.mainData.winrate ? this.mainData.winrate : '--'},
-          {label:'领域',value:this.mainData.tradefield ? this.$t(this.mainData.tradefield) : '--'},
-          {label:'品牌',value:this.mainData.brandname ? this.mainData.brandname : '--'},
-          {label:'品牌是否填报方植入',value:this.mainData.isfillbrangd === '1' ? this.$t('是') :  this.$t('否')},
-          // {label:'项目等级',value:this.projectLead.find(item => item.rowindex == this.mainData.grade).value},
-
-
-
-          /*  {label:'项目联系人',value:this.mainData.contact ? this.mainData.contact : '--'},
-            {label:'联系人手机号',value:this.mainData.phonenumber ? this.mainData.phonenumber : '--'},*/
-
-          {label:'项目状态',value:this.mainData.status ? this.mainData.status : '--',
-            style:function () {
-              let style = that.mainData.status == '跟进中'?'color:#3874F6':that.tool.getStatusColor(that.mainData.status)
-              return style
-
-            }},
-          /* {label:'项目折扣',value:this.mainData.discountrate ? this.mainData.discountrate : '--'},*/
-
-
-
-          {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
-         /* {label:'结案原因',value:this.mainData.endreason?this.mainData.endreason:'--'},
-          {label:'失败原因',value:this.mainData.defeatreason?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},*/
-          {label:'结案/失败原因',value:this.mainData.status == '已结案'?this.mainData.endreason:this.mainData.status == '已失败'?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},
-          {label:'项目来源',value:this.mainData.source ? this.mainData.source : '--'},
-        ],
-
-        systemInfo: [
-          {label:'创建人',value:this.mainData.createby ? this.mainData.createby : '--'},
-          {label:'创建时间',value:this.mainData.createdate ? this.mainData.createdate : '--'},
-          {label:'最近编辑人',value:this.mainData.changeby ? this.mainData.changeby : '--'},
-          {label:'最近编辑时间',value:this.mainData.changedate ? this.mainData.changedate : '--'},
-          {label:'提交报备人',value:this.mainData.reportby?this.mainData.reportby:'--'},
-          {label:'提交报备时间',value:this.mainData.reportdate?this.mainData.reportdate:'--'},
-          {label:'报备审核人',value:this.mainData.reportcheckby?this.mainData.reportcheckby:'--'},
-          {label:'报备审核时间',value:this.mainData.reportcheckdate?this.mainData.reportcheckdate:'--'},
-          /*{label:'锁定状态',value:this.mainData.locked == '0' ? '锁定' : '解锁'},*/
-          {label:'转手次数',value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'},
-        ]
-      }
+          this.detailInfo = {
+            baseInfo: [
+              {label:'项目编号',value:this.mainData.projectnum ? this.mainData.projectnum : '--'},
+              {label:'项目名称',value:this.mainData.projectname ? this.mainData.projectname : '--'},
+              {label:'报备进度',value:this.mainData.reportstatus,
+                style:function () {
+                  let style = that.tool.getStatusColor(that.mainData.reportstatus)
+                  return style
+
+                }
+              },
+              {label:'项目类型',value:this.mainData.projecttype ? this.$t(this.mainData.projecttype) + '-' + this.$t(this.mainData.projecttype_remarks) : '--'},
+              {label:'项目阶段',value:this.mainData.stagename ? this.mainData.stagename : '--'},
+              {label:'项目方阶段',value:this.mainData.squarestage ? this.mainData.squarestage : '--'},
+              {label: '项目等级',value: this.mainData.grade ? this.mainData.grade : '--'},
+              {label:'项目地址',value:`${this.mainData.province} - ${this.mainData.city} - ${this.mainData.county} - ${this.mainData.address}`},
+              {label:'项目规模',value:this.mainData.scale ? this.mainData.scale + this.mainData.unitname : '--'},
+              {label:'预计开工时间',value:this.mainData.begdate_due ? this.mainData.begdate_due : '--'},
+              {label:'预计完工时间',value:this.mainData.enddate_due ? this.mainData.enddate_due : '--'},
+
+              {label:'预计签约时间',value:this.mainData.signdate_due ? this.mainData.signdate_due : '--'},
+              {label:'预计签约金额(元)',value:this.mainData.signamount_due ? this.tool.formatAmount(this.mainData.signamount_due,2) : '--'},
+              {label:'项目成交金额(元)',value:this.mainData.dealamount ? this.tool.formatAmount(this.mainData.dealamount,2) : '--'},
+              {label:'赢率',value:this.mainData.winrate ? this.mainData.winrate : '--'},
+              {label:'领域',value:this.mainData.tradefield ? this.$t(this.mainData.tradefield) : '--'},
+              {label:'品牌',value:this.mainData.brandname ? this.mainData.brandname : '--'},
+              {label:'品牌是否填报方植入',value:this.mainData.isfillbrangd === '1' ? this.$t('是') :  this.$t('否')},
+              {label:'项目状态',value:this.mainData.status ? this.$t(this.mainData.status) : '--',
+                style:function () {
+                  let style = that.mainData.status == '跟进中'?'color:#3874F6':that.tool.getStatusColor(that.mainData.status)
+                  return style
+
+                }},
+              /* {label:'项目折扣',value:this.mainData.discountrate ? this.mainData.discountrate : '--'},*/
+
+
+
+              {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
+              {label:'结案/失败原因',value:this.mainData.status == '已结案'?this.mainData.endreason:this.mainData.status == '已失败'?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},
+              {label:'项目来源',value:this.mainData.source ? this.mainData.source : '--'},
+              /*  {label:'失败原因',value:this.mainData.defeatreason?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},*/
+              /*   {label:'修正比例',value:this.mainData.reward_rate ? Math.round((this.mainData.reward_rate * 100)*100)/100 + '%': '0%'},
+                 {label:'提成计算节点',value:this.mainData.reward_point ? this.mainData.reward_point : '--'},*/
+            ],
+
+            systemInfo: [
+              {label:'创建人',value:this.mainData.createby ? this.mainData.createby : '--'},
+              {label:'创建时间',value:this.mainData.createdate ? this.mainData.createdate : '--'},
+              {label:'最近编辑人',value:this.mainData.changeby ? this.mainData.changeby : '--'},
+              {label:'最近编辑时间',value:this.mainData.changedate ? this.mainData.changedate : '--'},
+              {label:'提交报备人',value:this.mainData.reportby?this.mainData.reportby:'--'},
+              {label:'提交报备时间',value:this.mainData.reportdate?this.mainData.reportdate:'--'},
+              {label:'报备审核人',value:this.mainData.reportcheckby?this.mainData.reportcheckby:'--'},
+              {label:'报备审核时间',value:this.mainData.reportcheckdate?this.mainData.reportcheckdate:'--'},
+              /*{label:'锁定状态',value:this.mainData.locked == '0' ? '锁定' : '解锁'},*/
+
+              {label:'转手次数',value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'},
+            ]
+          }
+          :
+          this.detailInfo = {
+            baseInfo: [
+              {label:'项目编号',value:this.mainData.projectnum ? this.mainData.projectnum : '--'},
+              {label:'项目名称',value:this.mainData.projectname ? this.mainData.projectname : '--'},
+              {label:'报备进度',value:this.mainData.reportstatus,
+                style:function () {
+                  let style = that.tool.getStatusColor(that.mainData.reportstatus)
+                  return style
+
+                }
+              },
+              {label:'项目类型',value:this.mainData.projecttype ? this.$t(this.mainData.projecttype) + '-' + this.$t(this.mainData.projecttype_remarks) : '--'},
+              {label:'项目阶段',value:this.mainData.stagename ? this.mainData.stagename : '--'},
+              {label:'项目方阶段',value:this.mainData.squarestage ? this.mainData.squarestage : '--'},
+              {label: '项目等级',value: this.mainData.grade ? this.mainData.grade : '--'},
+              /*{label:'项目地址',value:this.mainData.address},*/
+              {label:'项目地址',value:`${this.mainData.province} - ${this.mainData.city} - ${this.mainData.county} - ${this.mainData.address}`},
+              {label:'项目规模',value:this.mainData.scale ? this.mainData.scale + this.mainData.unitname : '--'},
+              {label:'项目预算(万元)',value:this.mainData.budgetary ? this.tool.formatAmount(this.mainData.budgetary,2) : '--'},
+              {label:'总投资额(万元)',value:this.mainData.totalinvestment ? this.tool.formatAmount(this.mainData.totalinvestment,2) : '--'},
+              {label:'造价(万元)',value:this.mainData.costofconstruction ? this.tool.formatAmount(this.mainData.costofconstruction,2) : '--'},
+              {label:'预计开工时间',value:this.mainData.begdate_due ? this.mainData.begdate_due : '--'},
+              {label:'预计完工时间',value:this.mainData.enddate_due ? this.mainData.enddate_due : '--'},
+
+              {label:'预计签约时间',value:this.mainData.signdate_due ? this.mainData.signdate_due : '--'},
+              {label:'预计签约金额(元)',value:this.mainData.signamount_due ? this.tool.formatAmount(this.mainData.signamount_due,2) : '--'},
+              {label:'项目成交金额(元)',value:this.mainData.dealamount ? this.tool.formatAmount(this.mainData.dealamount,2) : '--'},
+              {label:'赢率',value:this.mainData.winrate ? this.mainData.winrate : '--'},
+              {label:'领域',value:this.mainData.tradefield ? this.$t(this.mainData.tradefield) : '--'},
+              {label:'品牌',value:this.mainData.brandname ? this.mainData.brandname : '--'},
+              {label:'品牌是否填报方植入',value:this.mainData.isfillbrangd === '1' ? this.$t('是') :  this.$t('否')},
+              // {label:'项目等级',value:this.projectLead.find(item => item.rowindex == this.mainData.grade).value},
+
+
+
+              /*  {label:'项目联系人',value:this.mainData.contact ? this.mainData.contact : '--'},
+                {label:'联系人手机号',value:this.mainData.phonenumber ? this.mainData.phonenumber : '--'},*/
+
+              {label:'项目状态',value:this.mainData.status ? this.mainData.status : '--',
+                style:function () {
+                  let style = that.mainData.status == '跟进中'?'color:#3874F6':that.tool.getStatusColor(that.mainData.status)
+                  return style
+
+                }},
+              /* {label:'项目折扣',value:this.mainData.discountrate ? this.mainData.discountrate : '--'},*/
+
+
+
+              {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
+              /* {label:'结案原因',value:this.mainData.endreason?this.mainData.endreason:'--'},
+               {label:'失败原因',value:this.mainData.defeatreason?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},*/
+              {label:'结案/失败原因',value:this.mainData.status == '已结案'?this.mainData.endreason:this.mainData.status == '已失败'?this.mainData.defeattype + ','+ this.mainData.defeatreason:'--'},
+              {label:'项目来源',value:this.mainData.source ? this.mainData.source : '--'},
+            ],
+
+            systemInfo: [
+              {label:'创建人',value:this.mainData.createby ? this.mainData.createby : '--'},
+              {label:'创建时间',value:this.mainData.createdate ? this.mainData.createdate : '--'},
+              {label:'最近编辑人',value:this.mainData.changeby ? this.mainData.changeby : '--'},
+              {label:'最近编辑时间',value:this.mainData.changedate ? this.mainData.changedate : '--'},
+              {label:'提交报备人',value:this.mainData.reportby?this.mainData.reportby:'--'},
+              {label:'提交报备时间',value:this.mainData.reportdate?this.mainData.reportdate:'--'},
+              {label:'报备审核人',value:this.mainData.reportcheckby?this.mainData.reportcheckby:'--'},
+              {label:'报备审核时间',value:this.mainData.reportcheckdate?this.mainData.reportcheckdate:'--'},
+              /*{label:'锁定状态',value:this.mainData.locked == '0' ? '锁定' : '解锁'},*/
+              {label:'转手次数',value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'},
+            ]
+          }
 
 
       this.mainAreaData = [
@@ -739,7 +739,7 @@ export default {
     this.getEnterprise()
     this.getSysetms()
     // 验证权限
-   /* // this.tool.checkAuth(this.$route.name,'update')?'':this.$router.go(-1)*/
+    /* // this.tool.checkAuth(this.$route.name,'update')?'':this.$router.go(-1)*/
 
   },
 }

+ 110 - 161
src/SDrpManagement/QuotedPrice/detail/modules/itemClass/add.vue

@@ -11,27 +11,26 @@
       :title="$t(`添加`)"
       :visible.sync="dialogProductVisible"
       append-to-body
-      size="80%"
+      size="800px"
       :show-close="false"
       direction="rtl"
       @close="onColes"
     >
       <div class="drawer__panel" style="margin-bottom: 0 !important;">
         <div class="flex-between" style="margin-bottom: 10px">
-          <uploadAllData
-            style="display: inline-block !important"
-            :total="total"
-            @handlePullApi="handlePullApi"
-            @handleUploadApi="handleUploadApi"
-            @onSuccess="onSuccess"
-          ></uploadAllData>
           <el-button
-            class="inline-16"
-            type="primary"
-            size="small"
-            @click="batchSelect"
-            :disabled="tableSelectData.length === 0"
-            >{{$t('批量添加')}}</el-button
+              type="primary"
+              size="small"
+              @click="batchSelect"
+              :disabled="tableSelectData.length === 0"
+          >{{$t('批量添加')}}</el-button
+          >
+          <el-button
+              class="inline-16"
+              type="primary"
+              size="small"
+              @click="allSelect"
+          >{{$t('一键全选')}}</el-button
           >
           <el-input
             size="small"
@@ -46,89 +45,13 @@
           >&nbsp;
         </div>
         <div class="produtMag-panel">
-          <el-table
-            ref="multipleTable"
-            height="calc(100vh - 260px)"
-            :data="list"
-            style="width: 100%"
-            :header-cell-style="{
-              height: '50px',
-              color: '#606266',
-              fontWeight: '400',
-            }"
-            :cell-style="{
-              height: '50px',
-              color: '#666666',
-              fontWeight: '400',
-            }"
-            @selection-change="selectionChange"
-          >
-            <el-table-column type="selection" width="42" fixed>
-            </el-table-column>
-            <el-table-column
-              prop="itemclassnum"
-              :label="$t(`类别编号`)"
-              width="180"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="itemclassfullname"
-              :label="$t(`类别名称`)"
-              width="0"
-            >
-            </el-table-column>
-            <el-table-column
-              prop="upitemclassname"
-              :label="$t(`上级类别`)"
-              width="0"
-            >
-            </el-table-column>
-            <el-table-column :label="$t(`品牌名称`)" width="180">
-              <template slot-scope="scope">
-                <p>
-                  <span>{{ scope.row.brandname }}</span>
-                </p>
-              </template>
-            </el-table-column>
-            <!--            <el-table-column
-                prop="discountrate"
-                :label="$t(`折扣(%)`)"
-                width="150">
-              <template slot-scope="scope">
-                <span>{{scope.row.discountrate || '&#45;&#45;'}}</span>
-              </template>
-            </el-table-column>-->
-            <el-table-column fixed="right" :label="$t('操作')" width="80">
-              <template slot-scope="scope">
-                <el-button type="text" @click="onSelect(scope.row)">{{
-                  $t("添 加")
-                }}</el-button>
-              </template>
-            </el-table-column>
-          </el-table>
-          <div>
-            <div style="float: left">{{$t('已选')}}:{{ selectTotal }}{{$t('个商品')}}</div>
-            <div style="margin-top: 16px; text-align: right">
-              <el-pagination
-                background
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-                :current-page="params.content.pageNumber"
-                :page-sizes="[20, 50, 100, 200]"
-                :page-size="100"
-                layout="total,sizes, prev, pager, next, jumper"
-                :total="total"
-              >
-              </el-pagination>
-            </div>
-          </div>
+          <treeTable ref="treeRef" :table-data="list" @rowSelect="rowSelect"></treeTable>
         </div>
       </div>
       <div class="fixed__btn__panel">
-        <el-button size="small" @click="onColes" class="normal-btn-width">{{
+        <el-button size="small" @click="cancelClick" class="normal-btn-width">{{
           $t("取 消")
         }}</el-button>
-        <!--        <el-button size="small" type="primary" @click="onSubmit"  class="normal-btn-width">{{$t('确 定')}}</el-button>-->
       </div>
     </el-drawer>
   </div>
@@ -151,7 +74,7 @@ export default {
       selectData: [],
       selectTotal: 0,
       params: {
-        id: 20230219162803,
+        id: 2026012210022602,
         content: {
           sa_quotedpriceid: this.$route.query.id,
           pageNumber: 1,
@@ -164,17 +87,51 @@ export default {
         },
       },
       timer: 0,
+      currentKey:null
     };
   },
   methods: {
     onShow() {
       this.dialogProductVisible = true;
       this.listData();
+
     },
     async listData() {
       const res = await this.$api.requested(this.params);
-      this.list = res.data;
-      this.total = res.total;
+      this.list = this.createMenu(res.data);
+      this.total = res.total
+      console.log(this.list,'输出111')
+    },
+    createMenu (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        var elNode = {
+          itemclassname: node["itemclassname"],
+          itemclassfullname: node["itemclassfullname"],
+          itemclassnum:node["itemclassnum"],
+          brandname:node["brandname"],
+          num:node["num"],
+          disabled:!node["isCheck"],
+          isCheck:node["isCheck"],
+          itemclassid:node['itemclassid'],
+          selected:false,
+          children: []
+        }
+        if (node.subitemclass && node.subitemclass.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subitemclass.length; index++) {
+            // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+            elNode.children.push(convertToElementTree(node.subitemclass[index]));
+          }
+        }
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
     },
     debounce(fn, wait) {
       let that = this;
@@ -191,80 +148,72 @@ export default {
         id: 20230219161303,
         content: {
           sa_quotedpriceid: this.$route.query.id, //sat_notice_classid<=0时 为新增
-          items: this.selectData,
+          items: this.tableSelectData,
         },
       });
-      this.tool.showMessage(res, () => {
-        this.$emit("itemClassAdd");
-        this.listData();
-        this.selectListData();
-      });
-    },
-    onSelect(val) {
-      this.tableSelectData = [];
-      this.tableSelectData[0] = val;
-      let obj = this.tableSelectData.map((e) => {
-        return {
-          sa_quotedprice_itemclassid: 0,
-          itemclassid: e.itemclassid,
-          discountrate: e.discountrate,
-        };
-      });
-      this.selectData = obj;
-      /*this.$nextTick(()=>{
-        this.onSubmit()
-      })*/
-      this.debounce(this.onSubmit, 300)();
-    },
-    handleSizeChange(val) {
-      // console.log(`每页 ${val} 条`);
-      this.param.content.pageSize = val;
-      this.productData();
-    },
-    handleCurrentChange(val) {
-      // console.log(`当前页: ${val}`);
-      this.param.content.pageNumber = val;
-      this.productData();
+      if (res.code == 0){
+        this.tableSelectData = []
+        this.tool.showMessage(res,()=>{})
+      }else {
+        this.tool.showMessage(res, () => {
+          this.tableSelectData = []
+          this.dialogProductVisible = false
+          this.$emit("itemClassAdd");
+        });
+      }
     },
-    selectionChange(val) {
-      this.tableSelectData = [];
-      this.tableSelectData = val;
-      let obj = this.tableSelectData.map((e) => {
-        return {
-          sa_quotedprice_itemclassid: 0,
-          itemclassid: e.itemclassid,
-          discountrate: e.discountrate,
-        };
-      });
-      this.selectData = obj;
+    cancelClick(){
+      this.dialogProductVisible = false;
     },
     onColes() {
-      this.dialogProductVisible = false;
       this.params.content.where.condition = "";
-      this.$emit("closeDrawer");
+      this.$refs.treeRef.clearAll()
     },
-    /*已选产品数据*/
-    async selectListData() {
-      const res = await this.$api.requested({
-        id: 20230219161403,
-        content: {
-          sa_quotedpriceid: this.$route.query.id, //sat_notice_classid<=0时 为新增
-        },
-      });
-      this.selectTotal = res.total;
-    },
-    /*拉取数据*/
-    handlePullApi(pullApi) {
-      pullApi.content = JSON.parse(JSON.stringify(this.params.content));
-      pullApi.id = this.params.id;
-      /*pullApi.content.sa_projectid = this.$route.query.id*/
-    },
-    /*上传数据*/
-    handleUploadApi(uploadApi, data) {
-      this.$emit("uploadData", uploadApi, data);
+    allSelect(){
+      this.tableSelectData = []
+      this.list.forEach(row => {
+        this.tableSelectData.push({
+          sa_quotedprice_itemclassid: 0,
+          itemclassid: row.itemclassid
+        })
+        if (row.children.length > 0){
+          row.children.forEach(item => {
+            console.log(item,'item')
+            this.tableSelectData.push({
+              sa_quotedprice_itemclassid: 0,
+              itemclassid: item.itemclassid
+            })
+            if (item.children.length > 0){
+              item.children.forEach(kow => {
+                this.tableSelectData.push({
+                  sa_quotedprice_itemclassid: 0,
+                  itemclassid: kow.itemclassid
+                })
+              })
+            }
+          })
+        }
+      })
+      this.onSubmit()
+      console.log(this.tableSelectData)
     },
-    onSuccess() {
-      this.listData();
+    rowSelect (row) {
+      const exists = this.tableSelectData.some(item => item.itemclassid === row.itemclassid);
+      if (exists) {
+        // 移除
+        this.tableSelectData = this.tableSelectData.filter(
+            item => item.itemclassid !== row.itemclassid
+        );
+      } else {
+        // 新增
+        this.tableSelectData = [
+          ...this.tableSelectData,
+          {
+            sa_quotedprice_itemclassid: 0,
+            itemclassid: row.itemclassid
+          }
+        ];
+      }
     },
   },
   mounted() {},

+ 14 - 35
src/SDrpManagement/QuotedPrice/detail/modules/itemClass/index.vue

@@ -4,6 +4,7 @@
       <el-input
         size="small"
         style="width: 230px"
+        class="inline-16"
         suffix-icon="el-icon-search"
         v-model="param.content.where.condition"
         :placeholder="$t(`编号、类别名称、品牌`)"
@@ -12,8 +13,7 @@
         clearable
       >
       </el-input
-      >&nbsp;
-      <!--      <product_table style="float: right" :data="data"  ref="quoterPrice" @productAdd="productInitialization" ></product_table>-->
+      >
       <uploadAllData
         v-if="
           tool.checkAuth($route.name, 'itemClassDetails') &&
@@ -49,7 +49,6 @@
         "
         class="inline-16"
         @itemClassAdd="listData"
-        @uploadData="uploadData"
         ref="addProduct"
         @closeDrawer="closeDrawer"
       ></add>
@@ -91,7 +90,6 @@
         </template>
       </table-new-layout>
       <div style="height: 35px; margin-top: 20px">
-        <!--        <div style="float: left">总金额(元):{{ totalPrice }}</div>-->
         <div style="float: right">
           <el-pagination
             background
@@ -144,22 +142,19 @@ export default {
   methods: {
     async listData() {
       const res = await this.$api.requested(this.param);
-      this.list = res.data;
-      this.total = res.total;
-      for (var i = 0; i < res.data.length; i++) {
-        /*if (this.list[i].discountrate <= 1){
-          this.list[i].discountrate = Math.round((res.data[i].discountrate * 100)*100)/100
-        }else {
-          this.list[i].discountrate = Math.round((res.data[i].discountrate)*100)/100
-        }*/
-        if (this.list[i].discountrate === 0) {
-          this.list[i].discountrate = 0;
-        } else {
-          this.list[i].discountrate =
-            Math.round(res.data[i].discountrate * 100 * 100) / 100;
+      if (res.code == 0){
+        this.tool.showMessage(res,()=>{})
+      }else {
+        this.list = res.data;
+        this.total = res.total;
+        for (var i = 0; i < res.data.length; i++) {
+          if (this.list[i].discountrate === 0) {
+            this.list[i].discountrate = 0;
+          } else {
+            this.list[i].discountrate =
+                Math.round(res.data[i].discountrate * 100 * 100) / 100;
+          }
         }
-
-        /* this.totalPrice = this.totalPrice + res.data[i].qty * res.data[i].price*/
       }
     },
     handleSizeChange(val) {
@@ -268,22 +263,6 @@ export default {
       };
       this.listData();
     },
-    /*一键全选*/
-    uploadData(uploadApi, data) {
-      uploadApi.id = 20230219161303;
-      uploadApi.content = {
-        sa_quotedpriceid: this.$route.query.id, //订单ID
-        items: data.map((e) => {
-          return {
-            sa_quotedprice_itemclassid: 0,
-            itemclassid: e.itemclassid,
-            discountrate: e.discountrate,
-          };
-        }),
-      };
-      this.listData();
-      this.$refs.addProduct.listData();
-    },
     closeDrawer() {
       this.listData();
     },

+ 8 - 2
src/SDrpManagement/agentOrder/modules/edit.vue

@@ -487,7 +487,8 @@
             <div :style="{marginTop:projectError?'20px':''}">
               <small class="inline-16"><span style="color:red;">*</span><b>{{$t(`关联项目`)}}:</b>&nbsp;</small>
               <popoverTemp class="inline-16" :tablecols="tablecols" :isButton="false" :params="paramsProject" :isRest="true"
-                           placeholder="选择关联项目" @rowClick="rowClick" :inputData="projectname"></popoverTemp>
+                           placeholder="选择关联项目" @rowClick="rowClick" :disVal="true" :inputData="projectname"></popoverTemp>
+              <el-button type="primary" size="small" @click="clearProject">清空</el-button>
             </div>
             <div v-if="projectError" style="color:red;font-size: 12px;margin-left: 90px;">{{projectError}}</div>
           </div>
@@ -718,7 +719,7 @@ export default {
         "content": {
           "sys_enterpriseid": '',
           "pageNumber": 1,
-          "pageSize": 100,
+          "pageSize": 20,
           "where": {
             "condition": ""
           }
@@ -1006,6 +1007,11 @@ export default {
       this.projectname = val.projectname
       this.sa_projectid = val.sa_projectid
       this.projectError = ''
+    },
+    clearProject(){
+      this.projectname = ''
+      this.sa_projectid = ''
+      this.projectError = ''
     }
   },
   mounted () {

+ 8 - 2
src/SDrpManagement/salerOrder/modules/edit.vue

@@ -474,7 +474,8 @@
             <div :style="{marginTop:projectError?'20px':''}">
               <small class="inline-16"><span style="color:red;">*</span><b>{{$t(`关联项目`)}}:</b>&nbsp;</small>
               <popoverTemp class="inline-16" :tablecols="tablecols" :isButton="false" :params="paramsProject" :isRest="true"
-                           placeholder="选择关联项目" @rowClick="rowClick" :inputData="projectname"></popoverTemp>
+                           placeholder="选择关联项目" @rowClick="rowClick" :disVal="true" :inputData="projectname"></popoverTemp>
+              <el-button type="primary" size="small" @click="clearProject">清空</el-button>
             </div>
             <div v-if="projectError" style="color:red;font-size: 12px;margin-left: 90px;">{{projectError}}</div>
           </div>
@@ -712,7 +713,7 @@ export default {
         "content": {
           "sys_enterpriseid": '',
           "pageNumber": 1,
-          "pageSize": 100,
+          "pageSize": 20,
           "where": {
             "condition": ""
           }
@@ -1001,6 +1002,11 @@ export default {
       this.projectname = val.projectname
       this.sa_projectid = val.sa_projectid
       this.projectError = ''
+    },
+    clearProject(){
+      this.projectname = ''
+      this.sa_projectid = ''
+      this.projectError = ''
     }
   },
   mounted () {

+ 4 - 1
src/components/normal-basic-layout/details/modules/tabs/tab.vue

@@ -92,7 +92,10 @@ export default {
   },
   mounted () {
     setTimeout(() => {
-      if (this.tabs.length == 0) {this.activeName = 'file'} else {
+      console.log(this.tabs.length,'tabs长度')
+      if (this.tabs.length == 0 && this.$route.path !== '/contractDetail') {
+        this.activeName = 'file'
+      } else {
         this.activeName = 'tab0'
       }
     }, 100);

+ 3 - 1
src/components/selectPopover/index.vue

@@ -133,7 +133,7 @@
 <script>
 export default {
   props:["tablecols","params","placeholder",'restName','inputData','isRest','isContracted','type',
-    'idName','isButton','inputSize','disabled','isTask','rowIndex'],
+    'idName','isButton','inputSize','disabled','isTask','rowIndex','disVal'],
   name: "index",
   data(){
     return {
@@ -165,6 +165,8 @@ export default {
       this.visible = false
       if (this.isButton){
         this.$emit('rowClick',val)
+      }else if(this.disVal){
+        this.$emit('rowClick',val,this.type,this.restName,this.idName,this.rowIndex)
       }else {
         this.inputData = val[this.restName]
         this.$emit('rowClick',val,this.type,this.restName,this.idName,this.rowIndex)

+ 57 - 0
src/components/treeTable/index.vue

@@ -0,0 +1,57 @@
+<template>
+  <div>
+    <el-table
+        :data="tableData"
+        stripe
+        ref="table"
+        row-key="itemclassid"
+        default-expand-all
+        size="small"
+        :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+      <el-table-column
+          prop="itemclassfullname"
+          show-overflow-tooltip
+          :label="$t(`类别名称`)"
+          width="300">
+        <template slot-scope="scope">
+          <el-checkbox v-model="scope.row.selected" :checked="scope.row.selected" @change="onRowSelect(scope.row)" :disabled="scope.row.disabled" style="margin-right: 5px"></el-checkbox>
+          <span style="color:#3874f6"><b>{{scope.row.itemclassfullname}}</b></span>
+        </template>
+      </el-table-column>
+      <el-table-column
+          prop="brandname"
+          :label="$t(`品牌`)">
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "index",
+  props:["tableData"],
+  data(){
+    return {
+
+    }
+  },
+  methods:{
+    onRowSelect(row){
+      this.$emit('rowSelect',row)
+    },
+    clearAll(){
+      this.tableData.forEach(row => {
+        row.selected = false
+        row.children.forEach(item => {
+          item.selected = false
+        })
+      })
+      this.$refs.table.clearSelection()
+    },
+  },
+}
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 0
src/main.js

@@ -33,6 +33,7 @@ import btnDelete from './components/btn-delete/index'
 import customBtn from './components/customBtn/index'
 import tagPanl from '@/components/tagPanl/tagPanl'
 import selectTemp from '@/components/selectTemp/index';
+import treeTable from "@/components/treeTable/index";
 
 import confirmSelection from '@/template/buttonTemplate/confirmSelection'
 import popoverTemp from './components/selectPopover/index'
@@ -89,6 +90,7 @@ Vue.component('deleteBtn',deleteBtn)
 Vue.component('btnDelete',btnDelete)
 Vue.component('customBtn',customBtn)
 Vue.component('selectTemp',selectTemp)
+Vue.component('treeTable',treeTable)
 
 Vue.component('confirmSelection',confirmSelection)
 Vue.component('popoverTemp',popoverTemp)