mushencc 3 роки тому
батько
коміт
40940ac18f

+ 1 - 1
src/App.vue

@@ -9,7 +9,7 @@ export default {
   name: 'App',
   beforeCreate(){
     console.log(this.$store.state.ip);
-    document.title = this.$store.state.ip=='http://121.41.102.225:82'?'九方测试服':this.$store.state.ip=='http://121.37.173.82:82'?'倍思特':this.$store.state.ip=='http://124.71.176.88:882'?'金立方':this.$store.state.ip=='http://124.71.176.88:70'?'森兰九鼎':this.$store.state.ip=='http://121.41.102.225:999'?'上线服务器':'九方软件';
+    document.title = this.$store.state.ip=='http://121.41.102.225:82'?'九方测试服':this.$store.state.ip=='http://121.37.173.82:82'?'倍思特':this.$store.state.ip=='http://124.71.176.88:882'?'金立方':this.$store.state.ip=='http://124.71.176.88:70'?'森兰九鼎':this.$store.state.ip=='http://121.41.102.225:999'?'上线服务器':this.$store.state.ip=='http://hxy_api.qingyaokeji.com'?'华信源':'九方软件';
   }
 }
 </script>

+ 18 - 0
src/routerMap/index.js

@@ -2108,6 +2108,24 @@ const routerMap = [
       require(["@/views/Agreement/edit"], resolve),
   },
   {
+    path: "/cms/Agreement/deepen/list",
+    name: "deepenList", //合同-->合同列表-->深化单-->列表
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/Agreement/deepen/list"], resolve),
+  },
+  {
+    path: "/cms/Agreement/deepen/edit",
+    name: "deepenEdit", //合同-->合同列表-->深化单-->编辑,新增,详情
+    meta: {
+      index: 3,
+    },
+    component: (resolve) =>
+      require(["@/views/Agreement/deepen/edit"], resolve),
+  },
+  {
     path: "/cms/SealApprove/list",
     name: "SealApproveList", //印章审批列表
     meta: {

+ 263 - 0
src/views/Agreement/deepen/edit.vue

@@ -0,0 +1,263 @@
+<template>
+    <div>
+        <Toptitle :title="$route.query.type==1?'深化单新增':$route.query.type==2?'深化单编辑':'深化单详情'">
+             <Upload
+             v-if="$route.query.type!=3"
+          style="display:inline"
+          name="your_file"
+          :show-upload-list="false"
+          :headers="headers"
+          :on-error="uploadError"
+          :on-success="uploadSuccess"
+          :action="$store.state.ip + '/api/contract_deep_import'"
+        >
+          <Button type="primary" style="margin-right:10px;"
+            >导入</Button
+          >
+        </Upload>
+            <Button @click="back" style="margin-right:10px">返回</Button>
+            <Button @click="postData"  v-if="$route.query.type!=3">保存</Button>
+        </Toptitle>
+        <div class="content">
+            <Form :label-width='120' class="form_content" :style="$route.query.type==3?{'border-bottom':'1px solid #eeeeee'}:{}">
+                <FormItem label='金螳螂ID:'>
+                    <span v-if="$route.query.type==3" class="form_item">{{formData.jtl_id}}</span>
+                    <Input v-else clearable v-model="formData.jtl_id" placeholder="请输入金螳螂ID"/>
+                    
+                </FormItem>
+                <FormItem label='项目编码:'>
+                    <span v-if="$route.query.type==3" class="form_item">{{formData.order_no}}</span>
+                    <Input v-else clearable v-model="formData.order_no" placeholder="请输入项目编码"/>
+                </FormItem>
+                <FormItem label='项目名称:'>
+                    <span v-if="$route.query.type==3" class="form_item">{{formData.project_title}}</span>
+                    <Input v-else clearable v-model="formData.project_title" placeholder="请输入项目名称"/>
+                </FormItem>
+                <FormItem label='项目简称:'>
+                    <span v-if="$route.query.type==3" class="form_item">{{formData.abbreviation}}</span>
+                    <Input  v-else clearable v-model="formData.abbreviation" placeholder="请输入项目简称"/>
+                </FormItem>
+            </Form>
+            <Form :label-width='100' class="form_content" v-if="$route.query.type==3">
+                <FormItem label='区域:'>
+                    <Select multiple filterable v-model="searchData.region" class="form_item" max-tag-count='2'>
+                        <Option v-for="(item,index) in regionList" :key="index" :value="item" :label='item'></Option>
+                    </Select>
+                </FormItem>
+                <FormItem label='图号:'>
+                  <Select multiple filterable v-model="searchData.url_number" class="form_item" max-tag-count='2'>
+                        <Option v-for="(item,index) in urlNumberList" :key="index" :value="item" :label='item'></Option>
+                    </Select>
+                </FormItem>
+                <FormItem label='产品名称:'>
+                  <Select multiple filterable v-model="searchData.product_title" class="form_item" max-tag-count='2'>
+                       <Option v-for="(item,index) in productTitleList" :key="index" :value="item" :label='item'></Option>
+                    </Select>
+                </FormItem>
+                <FormItem label='制单日期:'>
+                    <DatePicker type="date" placeholder="年/月/日" style="width: 200px" v-model="searchData.start_time"></DatePicker>
+                    ~
+                    <DatePicker type="date" placeholder="年/月/日" style="width: 200px" v-model="searchData.end_time"></DatePicker>
+                </FormItem>
+                 <FormItem :label-width='60'>
+                    <Button type="primary" @click="search">搜索</Button>
+                </FormItem>
+            </Form>
+            <Table :data='tableData' :columns='$route.query.type==3?detailTableColumns:tableColumns' border max-height='550'>  
+             <template slot="set" slot-scope="{index}">
+                     <a @click="del(index)">删除</a>
+             </template>
+            </Table>
+        </div>
+         <div class="content_body_page" v-if="$route.query.type==3">
+        <Page
+          :page-size-opts="[10, 20, 30, 40, 100]"
+          @on-page-size-change="changeSize"
+          @on-change="changePage"
+          :current="pageIndex"
+          show-total
+          show-elevator
+          :total="total"
+          show-sizer
+          :page-size="pageSize"
+        />
+      </div>
+    </div>
+</template>
+<script>
+export default {
+    data(){
+        return{
+            regionList:[],
+            urlNumberList:[],
+            productTitleList:[],
+            pageIndex:1,
+            pageSize:10,
+            total:0,
+           headers: { 'Authorization': localStorage.getItem('token') },
+            tableData:[],
+            tableColumns:[
+                {type:'index',title:'序号',align:'center',minWidth:80},
+                {title:'区域',align:'center',key:'region',minWidth:120},
+                {title:'图号',align:'center',key:'url_number',minWidth:120},
+                {title:'产品名称',align:'center',key:'product_title',minWidth:120},
+                {title:'数量',align:'center',key:'num',minWidth:120},
+                {title:'制单日期',align:'center',key:'crt_time',minWidth:120,render:(h,params)=>{
+                    const {row} = params;
+                    return h('span',{},this.func.replaceDateNoHMS(row.crt_time))
+                }},
+                {title:'操作',align:'center',key:'set',minWidth:120,slot:'set'},
+            ],
+            detailTableColumns:[
+                {type:'index',title:'序号',align:'center',minWidth:80},
+                {title:'区域',align:'center',key:'region',minWidth:120},
+                {title:'图号',align:'center',key:'url_number',minWidth:120},
+                {title:'产品名称',align:'center',key:'product_title',minWidth:120},
+                {title:'数量',align:'center',key:'num',minWidth:120},
+                {title:'制单日期',align:'center',key:'crt_time',minWidth:120,render:(h,params)=>{
+                    const {row} = params;
+                    return h('span',{},this.func.replaceDateNoHMS(row.crt_time))
+                }}
+            ],
+             formData:{
+                 jtl_id:'',
+                 order_no:'',
+                 project_title:'',
+                 abbreviation:''
+             },
+             searchData:{
+                 region:[],
+                 url_number:[],
+                 project_title:[],
+                 start_time:'',
+                 end_time:'',
+             }
+        }
+    },
+    mounted(){
+     if(this.$route.query.type!=1){
+         this.initData();
+     }
+    },
+    methods:{
+        search(){
+            let obj = JSON.parse(JSON.stringify(this.searchData));
+            obj.start_time = obj.start_time?Date.parse(obj.start_time).toString().slice(0,10):'';
+            obj.end_time = obj.end_time?Date.parse(obj.end_time).toString().slice(0,10):'';
+            this.axios.post('/api/contract_deep_detail',{order_no:this.$route.query.order_no,...obj,page_index:this.pageIndex,page_size:this.pageSize}).then(res=>{
+                this.tableData = res.data.children.data;
+                this.total = res.data.children.total
+            })
+        },
+        initData(){
+            let obj = {};
+            if(this.$route.query.type==3){
+                   obj.page_index = this.pageIndex;
+                   obj.page_size = this.pageSize;
+            }
+      this.axios.post('/api/contract_deep_detail',{order_no:this.$route.query.order_no,...obj}).then(res=>{
+          this.formData = JSON.parse(JSON.stringify(res.data));
+          delete this.formData.children;
+             this.tableData = res.data.children.data;
+             this.total = res.data.children.total;
+             if(this.$route.query.type==3){
+                 this.urlNumberList = res.data.url_number_list;
+                 this.regionList = res.data.region_list;
+                 this.productTitleList = res.data.product_title_list;
+             }
+      })
+        },
+         uploadError(err) {
+      this.$Message.error(err.msg || "上传失败");
+    },
+    uploadSuccess(res){
+            if (res.code == 200) {
+        this.$Message.success(res.msg || "上传成功");
+        if(this.tableData.length==0){
+            this.tableData = res.data;
+        }else{
+           let data = JSON.parse(JSON.stringify(this.tableData));
+           res.data.forEach(v => {
+               let arr = [];
+               arr = this.tableData.filter(x=>{
+                   return x.region == v.region&&x.product_title == v.product_title&&x.url_number==v.url_number;
+               })
+                  if(arr.length==0){
+                      data.push(v);
+                  }else{
+                    this.tableData.forEach((ele,index)=>{
+                        if(ele.region == v.region&&ele.product_title == v.product_title&&ele.url_number == v.url_number){
+                                data.splice(index,1,v)
+                        }
+                    })
+                  }
+           });
+            this.tableData = data;
+        }
+        
+      } else {
+        this.$Message.warning(res.msg || "上传失败");
+      }
+    },
+        postData(){
+            if(this.tableData.length==0){
+            return this.$Message.warning('请先导入数据!')
+            }
+            if(!this.formData.jtl_id||!this.formData.order_no||!this.formData.project_title||!this.formData.abbreviation){
+                return this.$Message.warning('请输入完整信息!')
+            }
+            
+            if(this.$route.query.type==1){
+                  this.axios.post('/api/contract_deep_add',{...this.formData,children:this.tableData}).then(res=>{
+            if(res.code==200){
+                 this.$Message.success(res.msg);
+                 this.back();        
+                      }        
+              })
+            }else{
+                this.axios.post('/api/contract_deep_edit',{order_no:this.formData.order_no,jtl_id:this.formData.jtl_id,project_title:this.formData.project_title,abbreviation:this.formData.abbreviation,children:this.tableData}).then(res=>{
+            if(res.code==200){
+                 this.$Message.success(res.msg);
+                 this.back();        
+                      }        
+              })
+            }
+      
+        },
+        back(){
+                this.$router.go(-1);
+        },
+        del(index){
+            this.tableData.splice(index,1);
+        },
+        changePage(e){
+            this.pageIndex =e;
+            this.search();
+        },
+        changeSize(e){
+            this.pageSize = e;
+            this.pageIndex = 1;
+            this.search();
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.form_content{
+    margin-top:15px;
+    display: flex;
+    flex-wrap:wrap;
+}
+.content_body_page{
+    text-align: center;
+    margin-top: 10px;
+}
+.content{
+    height:85%;
+    overflow: auto;
+}
+.form_item{
+    width:200px;
+    display: inline-block;
+}
+</style>

+ 138 - 0
src/views/Agreement/deepen/list.vue

@@ -0,0 +1,138 @@
+<template>
+    <div>
+        <Toptitle title="深化单列表"></Toptitle>
+        <div class="content">
+        <Form :label-width='120' class="form_content">
+            <FormItem label='金螳螂ID:'>
+                <Input clearable v-model="searchData.jtl_id"/>
+            </FormItem>
+            <FormItem label='项目编码:'>
+                <Input clearable v-model="searchData.order_no"/>
+            </FormItem>
+            <FormItem label='项目名称:'>
+                <Input clearable v-model="searchData.project_title"/>
+            </FormItem>
+            <FormItem label='项目简称:'>
+                <Input clearable v-model="searchData.abbreviation"/>
+            </FormItem>
+            <FormItem :label-width='40'>
+                <Button type="primary" @click="initData(searchData)">搜索</Button>
+            </FormItem>
+        </Form>
+        <div class="before_table">
+            <Button type="primary" @click="handleSet(1,null)">新增</Button>
+        </div>
+        <Table :data='tableData' :columns='tableColumns' border max-height='550'>
+            <template slot="set" slot-scope="{row}">
+                <a @click="handleSet(2,row)" style="margin-right:10px">编辑</a>
+                <a @click="handleSet(3,row)" style="margin-right:10px">查看</a>
+                <a @click="handleSet(4,row)">删除</a>
+            </template>
+        </Table>
+        </div>
+          <div class="content_body_page">
+        <Page
+          :page-size-opts="[10, 20, 30, 40, 100]"
+          @on-page-size-change="changeSize"
+          @on-change="changePage"
+          :current="pageIndex"
+          show-total
+          show-elevator
+          :total="total"
+          show-sizer
+          :page-size="pageSize"
+        />
+          </div>
+    </div>
+</template>
+<script>
+export default {
+    data(){
+        return{
+            pageIndex:1,
+            pageSize:10,
+            total:0,
+            tableData:[],
+            tableColumns:[
+                {title:'金螳螂ID',align:'center',minWidth:120,key:'jtl_id'},
+                {title:'项目编号',align:'center',minWidth:120,key:'order_no'},
+                {title:'项目名称',align:'center',minWidth:120,key:'project_title'},
+                {title:'项目简称',align:'center',minWidth:120,key:'abbreviation'},
+                {title:'操作',align:'center',minWidth:120,key:'set',slot:'set'}
+            ],
+               searchData:{
+                   jtl_id:'',
+                   order_no:'',
+                   project_title:'',
+                   abbreviation:'',
+               }
+        }
+    },
+    mounted(){
+           this.initData();
+    },
+    methods:{
+        initData(row){
+
+         this.axios.post('/api/contract_deep_list',{...row,page_size:this.pageSize,page_index:this.pageIndex}).then(res=>{
+             this.tableData = res.data.data;
+             this.total = res.data.total;
+         })
+        },
+        changePage(e){
+          this.pageIndex = e;
+          this.initData(this.searchData);
+        },
+        changeSize(e){
+            this.pageIndex = 1;
+            this.pageSize = e;
+            this.initData(this.searchData);
+        },
+        handleSet(type,row){
+            //type 1新增 2编辑 3查看 4删除
+            switch(type){
+                case 1:
+                   this.$router.push({path:'/cms/Agreement/deepen/edit',query:{type}})
+                    break;
+                case 2:
+                case 3:
+                    this.$router.push({path:'/cms/Agreement/deepen/edit',query:{type,order_no:row.order_no}})
+                    break;
+                case 4:
+                       this.confirmDelete({
+        content: '确认删除么?',
+        then: () => {
+          this.axios.post('/api/contract_deep_del', { order_no: row.order_no}).then(res => {
+            if (res.code == 200) {
+              this.$Message.success(res.msg)
+              this.initData(this.searchData)
+            }
+          })
+        }
+      })
+                    break;
+            }
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.content{
+    height:85%;
+    overflow: auto;
+}
+.form_content{
+    margin-top: 15px;
+    display: flex;
+    flex-wrap: wrap;
+}
+.before_table{
+    display: flex;
+    flex-direction: row-reverse;
+    margin-bottom:10px;
+}
+.content_body_page{
+    text-align: center;
+    margin-top:10px;
+}
+</style>

+ 179 - 26
src/views/Agreement/edit.vue

@@ -7,7 +7,7 @@
         <div style="height:90%;overflow:auto">
         <Form :label-width='100' class="content">
           <FormItem label='项目编码:'>
-              <Input placeholder="请输入项目编码" v-model="formData.order_no" class="form_item" clearable v-if="$route.query.type==1||$route.query.type==2"/>
+              <Input placeholder="请输入项目编码" v-model="formData.order_no" class="form_item" clearable v-if="$route.query.type==1||$route.query.type==2" :disabled='$route.query.type!=1'/>
               <span class="form_span" v-else>{{formData.order_no}}</span>
           </FormItem>
           <FormItem label='项目名称:'>
@@ -27,7 +27,7 @@
               <span class="form_span" v-else>{{formData.connect_phone}}</span>
           </FormItem>
           <FormItem label='项目阶段:'>
-              <Select filterable clearable multiple v-model="formData.phase" placeholder="请选择" class="form_item" v-if="$route.query.type!=4">
+              <Select filterable clearable multiple v-model="formData.phase" placeholder="请选择" class="form_item" v-if="$route.query.type!=4" @on-change='changePhase'>
                   <Option v-for="(item,index) in agreementList" :key="index" :value="item.id" :label="item.title"></Option>
               </Select>
               <span class="form_span" v-else>{{getPhase()}}</span>
@@ -52,6 +52,10 @@
               <Input v-model="formData.customer_id" placeholder="请输入金螳螂ID" class="form_item" clearable v-if="$route.query.type==1||$route.query.type==2"/>
               <span class="form_span" v-else>{{formData.customer_id}}</span>
           </FormItem>
+           <FormItem label='投标金额:'>
+              <Input v-model="formData.bid_price" placeholder="请输入投标金额" class="form_item" clearable v-if="$route.query.type==1||$route.query.type==2"/>
+              <span class="form_span" v-else>{{formData.bid_price}}</span>
+          </FormItem>
           <FormItem label='合同金额:'>
               <Input placeholder="请输入合同金额" v-model="formData.agreement_price" class="form_item" clearable v-if="$route.query.type==1||$route.query.type==2"/>
               <span class="form_span" v-else>{{formData.agreement_price}}</span>
@@ -97,9 +101,21 @@
         </Form>
        <Card>
         <p slot="title">
-          图号
+          清单
         </p>
-        <div slot="extra" v-if="$route.query.type!=4">
+        <div slot="extra" v-if="$route.query.type!=4" style="display:flex">
+            
+            <Upload
+              v-if="$route.query.type!=3||$route.query.type!=4"
+              multiple
+              :headers="headers"
+              :show-upload-list="false"
+              :on-success="handleTotalTableSuccess"
+             :action="$store.state.ip+'/api/upload_image'"
+             style="margin-right:10px"
+             >
+               <Button type="primary" size='small'>批量上传图片</Button>
+             </Upload>
             <Button type="primary" style="margin-right:10px" @click="totalDel" size='small'>批量删除</Button>
         <Upload
           style="display:inline"
@@ -111,22 +127,45 @@
           :action="$store.state.ip + '/api/contract_import'"
         >
           <Button type="primary" style="margin-right:10px;" size='small'
-            >图号导入</Button
+            >导入</Button
           >
         </Upload>
         </div>
       
-      <Table :data='tableData' :columns='$route.query.type==1||$route.query.type==2?tableColumns:editTableColumns' border max-height='620' @on-selection-change='handleSelect'>
+      <Table :data='tableData' :columns='$route.query.type==1||$route.query.type==2?tableColumns:editTableColumns' border max-height='620' @on-selection-change='handleSelect' show-summary :summary-method="handleSummary">
   <template slot="set" slot-scope="{index}">
       <a @click="del(index)">删除</a>
   </template>
-  <template slot="agreement_price" slot-scope="{row,index}">
-      <Input v-model="tableData[index].agreement_price" clearable v-if="$route.query.type==1||$route.query.type==2"/>
-      <span v-else>{{row.agreement_price}}</span>
+  <template slot="bp_id" slot-scope="{row,index}">
+      <Select v-model="row.bp_id" @on-change='selectBpId($event,index)' filterable clearable :transfer='true'>
+          <Option v-for="(item,index) in bp_list" :key="index" :value="item.id" :label='item.title'/>
+      </Select>
+  </template>
+  <template slot="product_img" slot-scope="{row,index}">
+            <div>
+               
+              <Upload
+              v-if="!row.product_img&&($route.query.type!=3||$route.query.type!=4)"
+              :headers="headers"
+              :show-upload-list="false"
+              :on-success="handleTableSuccess"
+             :action="$store.state.ip+'/api/upload_image'">
+               <a @click="updTableImg(index)">上传</a>
+             </Upload>
+             <div v-show="row.product_img" class="img_box">
+              <img @click="looks(row.product_img,true)" :src="$store.state.ip + row.product_img" alt="" class="img_table_content"/>
+              <Icon
+              v-if="$route.query.type!=4"
+              size="20"
+              @click="delTableItems(row,index)"
+              class="delete-img"
+              type="ios-close-circle"
+            />
+            </div>
+             </div>
   </template>
-   <template slot="quantity_price" slot-scope="{row,index}">
-      <Input v-model="tableData[index].quantity_price" clearable v-if="$route.query.type==1||$route.query.type==2"/>
-      <span v-else>{{row.quantity_price}}</span>
+  <template slot="total_bid_price" slot-scope="{row,index}">
+      <Input v-model="row.total_bid_price" @on-change='changeTotalBidPrice($event,index)' type="number" @on-blur='checkPrice(row,index)'/>
   </template>
       </Table>
     </Card>
@@ -145,6 +184,8 @@
 export default {
     data(){
         return{
+            tableIndex:null,
+            bp_list:[],
             showPicIndex:null,
             showList:[],
             list:[],
@@ -153,6 +194,7 @@ export default {
             selectData:[],
             agreementList:[{title:'立项',is_show:false,id:1},{title:'评审',is_show:false,id:2},{title:'报价',is_show:false,id:3},{title:'投标',is_show:false,id:4},{title:'中标',is_show:false,id:5},{title:'废标',is_show:false,id:6}],
             formData:{
+                bid_price:'',
                 order_no:'',
                 project_title:'',
                 project_address:'',
@@ -169,29 +211,105 @@ export default {
             },
             tableData:[],
             tableColumns:[
-                {type:'selection',minWidth:80,align:'center'},
-                {title:'序号',type:'index',align:'center',minWidth:80},
-                {title:'图号',minWidth:100,align:'center',key:'url_number'},
+                {type:'selection',minWidth:80,align:'center',key:'select'},
+                {title:'序号',type:'index',align:'center',minWidth:80,key:'index'},
+                {title:'区域',minWidth:100,align:'center',key:'region'},
+                {title:'产品分类',minWidth:100,align:'center',key:'bp_id',slot:'bp_id'},
                 {title:'产品名称',minWidth:100,align:'center',key:'product_title'},
-                {title:'平方数',minWidth:100,align:'center',key:'area'},
-                {title:'合同金额',minWidth:100,align:'center',key:'agreement_price',slot:'agreement_price'},
-                {title:'核量金额',minWidth:100,align:'center',key:'quantity_price',slot:'quantity_price'},
-                {title:'操作',minWidth:100,align:'center',key:'set',slot:'set'},
+                {title:'产品图片',minWidth:100,align:'center',key:'product_img',slot:'product_img'},
+                {title:'产品特征',minWidth:100,align:'center',key:'product_feature'},
+                {title:'计量单位',minWidth:100,align:'center',key:'unit'},
+                {title:'工程量',minWidth:100,align:'center',key:'num'},
+                {title:'投标单价',minWidth:100,align:'center',key:'bid_price'},
+                {title:'投标金额',minWidth:100,align:'center',key:'total_bid_price',slot:'total_bid_price'},
+                {title:'操作',minWidth:100,align:'center',key:'set',slot:'set'}
             ],
              editTableColumns:[
-                {title:'序号',type:'index',align:'center',minWidth:80},
-                {title:'图号',minWidth:100,align:'center',key:'url_number'},
+                {title:'序号',type:'index',align:'center',minWidth:80,key:'index'},
+                {title:'区域',minWidth:100,align:'center',key:'region'},
+                {title:'产品分类',minWidth:100,align:'center',key:'bp_id'},
                 {title:'产品名称',minWidth:100,align:'center',key:'product_title'},
-                {title:'平方数',minWidth:100,align:'center',key:'area'},
-                {title:'合同金额',minWidth:100,align:'center',key:'agreement_price',slot:'agreement_price'},
-                {title:'核量金额',minWidth:100,align:'center',key:'quantity_price',slot:'quantity_price'},
+                {title:'产品图片',minWidth:100,align:'center',key:'product_img'},
+                {title:'产品特征',minWidth:100,align:'center',key:'product_feature'},
+                {title:'计量单位',minWidth:100,align:'center',key:'unit'},
+                {title:'工程量',minWidth:100,align:'center',key:'num'},
+                {title:'投标单价',minWidth:100,align:'center',key:'bid_price'},
+                {title:'投标金额',minWidth:100,align:'center',key:'total_bid_price'}
+              
             ]
         }
     },
+    created(){
+      (this.$route.query.type==1||this.$route.query.type==2)&&this.axios.get('/api/basics_product_index').then(res=>{
+           this.bp_list = res.data.data
+       })
+    },
     mounted(){
            this.$route.query.type!=1&&this.initData();
     },
     methods:{
+        checkPrice(row,index){
+           if(row.total_bid_price<0){
+               row.total_bid_price = '0.00';
+               this.tableData[index].total_bid_price = '0.00'
+           }else{
+               row.total_bid_price = Number(row.total_bid_price).toFixed(2);
+                this.tableData[index].total_bid_price=Number(this.tableData[index].total_bid_price).toFixed(2);
+               return
+           }
+        },
+        changeTotalBidPrice(e,index){
+             this.tableData[index].total_bid_price = e.target.value;
+        },
+        handleSummary ({ columns, data }) {
+                const sums = {};
+                columns.forEach((column, index) => {
+                    const key = column.key;
+                    if (key === 'index') {
+                        sums[key] = {
+                            key,
+                            value: '合计'
+                        };
+                        return;
+                    }
+                    const values = data.map(item => Number(item[key]));
+                    if (key=='total_bid_price') {
+                        const v = values.reduce((prev, curr) => {
+                            const value = Number(curr);
+                            if (!isNaN(value)) {
+                                return prev + curr;
+                            } else {
+                                return prev;
+                            }
+                        }, 0);
+                        sums[key] = {
+                            key,
+                            value: (v*1).toFixed(2)
+                        };
+                       
+                        this.formData.bid_price = (v*1).toFixed(2);
+                         if(this.formData.phase.indexOf(5)>=0){
+                             this.formData.agreement_price = this.formData.bid_price;
+                         }
+                    }else{
+                        sums[key] = {
+                            key,
+                            value:''
+                        }
+                    }
+                });
+                  
+                return sums;
+            
+        },
+        selectBpId(e,index){
+            this.tableData[index].bp_id = e;
+        },
+        changePhase(e){
+               if(e.indexOf(5)>=0){
+                   this.formData.agreement_price = this.formData.bid_price;
+               }
+        },
         getPhase(){
              let arr = [];
              arr = this.agreementList.filter(v=>{
@@ -206,6 +324,10 @@ export default {
          delItems(n, arr) {
       arr.splice(n, 1);
     },
+    delTableItems(row,index){
+          row.product_img = '';
+          this.tableData[index].product_img = '';
+    },
         looks(img,type) {
             if(!type){
                 return
@@ -251,6 +373,30 @@ export default {
         recordIndex(index){
               this.showPicIndex = index;
         },
+        handleTotalTableSuccess(res,file){
+            if(file.name.indexOf('+')<0){
+                return this.$Message.error("请上传‘区域’+‘产品名称’的图片名称!")
+            }
+              if(res.code==200){
+                  let content = file.name.split('.')[0];
+                  
+                  let arr = content.split('+');
+                  console.log(arr);
+                this.tableData.forEach((v,index)=>{
+                        if(v.region===arr[0]&&v.product_title===arr[1]){
+                                 this.tableData[index].product_img = res.data.url;
+                        }
+                })
+              }
+        },
+        handleTableSuccess(res,file){
+             if(res.code==200){
+             this.tableData[this.tableIndex].product_img = res.data.url;
+             }
+        },
+        updTableImg(index){
+         this.tableIndex = index;
+        },
         handleSuccess(res,file){
             if(res.code==200){
                 let obj = {};
@@ -331,13 +477,13 @@ export default {
            res.data.forEach(v => {
                let arr = [];
                arr = this.tableData.filter(x=>{
-                   return x.url_number == v.url_number
+                   return x.region == v.region&&x.product_title == v.product_title
                })
                   if(arr.length==0){
                       data.push(v);
                   }else{
                     this.tableData.forEach((ele,index)=>{
-                        if(ele.url_number == v.url_number){
+                        if(ele.region == v.region&&ele.product_title == v.product_title){
                                 data.splice(index,1,v)
                         }
                     })
@@ -440,6 +586,10 @@ export default {
     width: 150px;
     height: 150px;
 }
+.img_table_content{
+     width: 50px;
+    height: 50px;
+}
   .delete-img {
   position: absolute;
   right: 0px;
@@ -465,4 +615,7 @@ export default {
         width: 100px;
     }
 }
+.img_box{
+    position: relative;
+}
 </style>

+ 9 - 3
src/views/leadMatch/MatchList/matchList.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
-         <BSTList v-if="false"/>
-         <HXYList v-else/>
+         <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/>
     </div>
 </template>
 <script>
@@ -10,9 +10,15 @@ import HXYList from '@/views/leadMatch/MatchList/HXYMatchList';
 export default {
     data(){
         return{
-             
+              type:null //1倍思特 2华信源
         }
     },
+    created(){
+       
+       this.axios.post('/api/explode_order_type').then(res=>{
+               this.type = res.data.type;
+       })
+    },
     components:{
         BSTList,
         HXYList

+ 9 - 3
src/views/leadMatch/roomList/list.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
-         <BSTList v-if="false"/>
-         <HXYList v-else/>
+         <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/>
     </div>
 </template>
 <script>
@@ -10,9 +10,15 @@ import HXYList from '@/views/leadMatch/roomList/HXYlist';
 export default {
     data(){
         return{
-             
+             type:null //1倍思特 2华信源
         }
     },
+     created(){
+       
+       this.axios.post('/api/explode_order_type').then(res=>{
+               this.type = res.data.type;
+       })
+    },
     components:{
         BSTList,
         HXYList

+ 9 - 3
src/views/leadMatch/weightMemo/list.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
-         <BSTList v-if="false"/>
-         <HXYList v-else/>
+         <BSTList v-if="type==1"/>
+         <HXYList v-else-if="type==2"/>
     </div>
 </template>
 <script>
@@ -10,9 +10,15 @@ import HXYList from '@/views/leadMatch/weightMemo/HXYlist';
 export default {
     data(){
         return{
-             
+              type:null //1倍思特 2华信源
         }
     },
+      created(){
+       
+       this.axios.post('/api/explode_order_type').then(res=>{
+               this.type = res.data.type;
+       })
+    },
     components:{
         BSTList,
         HXYList

+ 2 - 1
vue.config.js

@@ -2,10 +2,11 @@ const axios_default_ip =
   process.env.NODE_ENV == "dev"
     ? "http://121.41.102.225:82"
     : process.env.NODE_ENV == "test-prd"
-    ? "http://121.41.102.225:82" //测试服
+    ? "http://hxy_api.qingyaokeji.com" //测试服
     : process.env.NODE_ENV == "prd_other"
     ? "http://121.37.173.82:82" //贝斯特
     : "http://124.71.176.88:882";
+    //http://hxy_api.qingyaokeji.com // 华信源
 //  http://124.71.176.88:882  //江山
 // 'http://121.41.102.225:82' :测试
 // http://124.71.176.88:70  下沙新地址