qymljy 2 年之前
父节点
当前提交
7555503142

+ 105 - 19
src/Form/projectChange/add.vue

@@ -29,22 +29,6 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
-              <el-form-item label="项目预算(万元):" prop="budgetary">
-                <el-input v-model="form.budgetary" placeholder="项目预算"></el-input>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="24">
-              <el-form-item label="项目规模:" prop="scale">
-                <el-input v-model="form.scale" placeholder="请输入项目规模"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="预计签约金额(元):" prop="signamount_due">
-                <el-input v-model="form.signamount_due" placeholder="请输入预计签约金额" disabled></el-input>
-              </el-form-item>
-            </el-col>
             <el-col :span="24">
               <el-form-item label="项目等级:" prop="grade">
                 <el-select v-model="form.grade" placeholder="请选择项目等级" size="mini">
@@ -74,7 +58,52 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="预计成交时间:" prop="signdate_due">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="form.scale" placeholder="请输入建筑面积(㎡)/吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目预算(万元):" prop="budgetary">
+                <el-input v-model="form.budgetary" placeholder="项目预算"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="budgetary">
+                <el-input v-model="form.totalinvestment" placeholder="总投资额"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="budgetary">
+                <el-input v-model="form.costofconstruction" placeholder="造价"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="begdate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="enddate_due">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计签约时间:" prop="signdate_due">
                 <el-date-picker
                     style="width: 100%"
                     v-model="form.signdate_due"
@@ -85,6 +114,14 @@
                 </el-date-picker>
               </el-form-item>
             </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计签约金额(元):" prop="signamount_due">
+                <el-input v-model="form.signamount_due" placeholder="请输入预计签约金额" disabled></el-input>
+              </el-form-item>
+            </el-col>
+
+
+
           </el-form>
         </el-row>
       </div>
@@ -104,6 +141,22 @@ export default {
   inject:['enterpriseList','projectType','projectLead','projectPanl'],
   components:{duplicateCheck},
   data(){
+    var begdateTime = (rule,value,callback) =>{
+      if (this.form.enddate_due !== ''){
+        if (value < this.form.enddate_due){
+          callback(new Error('预计开工时间不能晚于预计完工时间'))
+        }
+      }
+
+    }
+    var enddateTime = (rule,value,callback) =>{
+      if (this.form.begdate_due !== ''){
+        if (value > this.form.begdate_due){
+          callback(new Error('预计完工时间不能早于预计开工时间'))
+        }
+      }
+
+    }
     return {
       pickerOptions: {
         disabledDate(time) {
@@ -129,6 +182,10 @@ export default {
         province:"",
         city:"",
         county:"",
+        totalinvestment:'', //总投资额
+        costofconstruction:'', //造价
+        begdate_due:'', //预计开工时间
+        enddate_due:''  //预计完工时间
       },
       value:'',
       rules:{
@@ -149,7 +206,13 @@ export default {
         ],*/
         province:[
           { required: true, message: '请选择项目地址', trigger: 'blur'}
-        ]
+        ],
+        begdate_due:[
+          { required: false, validator: begdateTime, trigger: 'change' }
+        ],
+        enddate_due:[
+          { required: false, validator: enddateTime, trigger: 'change' }
+        ],
       }
     }
   },
@@ -220,7 +283,30 @@ export default {
         }
       }else {
         this.form.signdate_due = ''
-        this.form.signdate_due = ''
+      }
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
       }
       console.log(this.form)
       this.$refs['form'].validate(async (valid) => {

+ 95 - 18
src/Form/projectChange/edit.vue

@@ -29,22 +29,6 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24">
-              <el-form-item label="项目预算(万元):" prop="budgetary">
-                <el-input v-model="form.budgetary" placeholder="项目预算"></el-input>
-              </el-form-item>
-            </el-col>
-
-            <el-col :span="24">
-              <el-form-item label="项目规模:" prop="scale">
-                <el-input v-model="form.scale" placeholder="请输入项目规模"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item label="预计签约金额(元):" prop="signamount_due">
-                <el-input v-model="form.signamount_due" placeholder="请输入预计签约金额" disabled></el-input>
-              </el-form-item>
-            </el-col>
             <el-col :span="24">
               <el-form-item label="项目等级:" prop="grade">
                 <el-select v-model="form.grade" placeholder="请选择项目等级" size="mini">
@@ -58,7 +42,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="项目地址:" prop="province">
+              <el-form-item label="省市县:" prop="province">
                 <el-cascader
                     :disabled="data.putFlag !== 0"
                     style="width:100%"
@@ -75,7 +59,52 @@
               </el-form-item>
             </el-col>
             <el-col :span="24">
-              <el-form-item label="预计成交时间:" prop="signdate_due">
+              <el-form-item label="项目规模:" prop="scale">
+                <el-input v-model="form.scale" placeholder="请输入建筑面积(㎡)/吨位(t)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="项目预算(万元):" prop="budgetary">
+                <el-input v-model="form.budgetary" placeholder="项目预算"></el-input>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24">
+              <el-form-item label="总投资额(百万):" prop="budgetary">
+                <el-input v-model="form.totalinvestment" placeholder="总投资额"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="造价(百万):" prop="budgetary">
+                <el-input v-model="form.costofconstruction" placeholder="造价"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计开工时间:" prop="budgetary">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.begdate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计完工时间:" prop="budgetary">
+                <el-date-picker
+                    style="width: 100%"
+                    v-model="form.enddate_due"
+                    type="month"
+                    placeholder="选择月"
+                    :picker-options="pickerOptions"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计签约时间:" prop="signdate_due">
                 <el-date-picker
                     style="width: 100%"
                     v-model="form.signdate_due"
@@ -85,6 +114,13 @@
                 </el-date-picker>
               </el-form-item>
             </el-col>
+            <el-col :span="24">
+              <el-form-item label="预计签约金额(元):" prop="signamount_due">
+                <el-input v-model="form.signamount_due" placeholder="请输入预计签约金额" disabled></el-input>
+              </el-form-item>
+            </el-col>
+
+
           </el-form>
         </el-row>
       </div>
@@ -106,6 +142,11 @@ export default {
   props:['data','btnType'],
   data(){
     return {
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now();
+        }
+      },
       dialogFormVisible:false,
       projectAddress:[],
       disabled:false,
@@ -219,6 +260,42 @@ export default {
       }
     },
     onSubmit(){
+      if (this.form.signdate_due !== ''){
+        const data = new Date(this.form.signdate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.signdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.signdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.signdate_due = ''
+      }
+      if (this.form.begdate_due !== ''){
+        const data = new Date(this.form.begdate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.begdate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.begdate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.begdate_due = ''
+      }
+      if (this.form.enddate_due !== ''){
+        const data = new Date(this.form.enddate_due)
+        console.log(data.getFullYear())
+        console.log(data.getMonth()+1)
+        if (data.getMonth() +1 < 10){
+          this.form.enddate_due = data.getFullYear() + '-0' + (data.getMonth() + 1)
+        }else {
+          this.form.enddate_due = data.getFullYear() + '-' + (data.getMonth() + 1)
+        }
+      }else {
+        this.form.enddate_due = ''
+      }
       this.$refs['form'].validate(async (valid) => {
         if (!valid) return false
         this.form.province = this.form.province[0]

+ 26 - 14
src/HDrpManagement/projectChange/modules/detail.vue

@@ -308,16 +308,28 @@ export default {
         baseInfo: [
           {label:'项目编号',value:this.mainData.projectnum ? this.mainData.projectnum : '--'},
           {label:'项目名称',value:this.mainData.projectname ? this.mainData.projectname : '--'},
-          {label:'项目地址',value:`${this.mainData.province} - ${this.mainData.city} - ${this.mainData.county}`},
-          {label:'详细地址',value:this.mainData.address},
-          // {label:'项目等级',value:this.projectLead.find(item => item.rowindex == this.mainData.grade).value},
-          {label: '项目等级',value: this.mainData.grade ? this.mainData.grade : '--'},
           {label:'项目类型',value:this.mainData.projecttype ? this.mainData.projecttype : '--'},
-          {label:'当前项目阶段',value:this.mainData.stagename ? this.mainData.stagename : '--'},
+          {label:'项目阶段',value:this.mainData.stagename ? this.mainData.stagename : '--'},
+          {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 : '--'},
+          {label:'项目预算(万元)',value:this.mainData.budgetary ? this.mainData.budgetary : '--'},
+          {label:'总投资额(百万)',value:this.mainData.totalinvestment ? this.mainData.totalinvestment : '--'},
+          {label:'造价(百万)',value:this.mainData.costofconstruction ? this.mainData.costofconstruction : '--'},
+          {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.mainData.signamount_due : '--'},
+          {label:'赢率',value:this.mainData.winrate ? this.mainData.winrate : '--'},
+          // {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.scale ? this.mainData.scale : '--'},
+
           {label:'项目状态',value:this.mainData.status ? this.mainData.status : '--',
             style:function () {
               let style = {}
@@ -338,22 +350,22 @@ export default {
 
             }},
          /* {label:'项目折扣',value:this.mainData.discountrate ? this.mainData.discountrate : '--'},*/
-          {label:'项目预算(万元)',value:this.mainData.budgetary ? this.mainData.budgetary : '--'},
-          {label:'预计签约金额(元)',value:this.mainData.signamount_due ? this.mainData.signamount_due : '--'},
-          {label:'预计成交时间',value:this.mainData.signdate_due ? this.mainData.signdate_due : '--'},
-          {label:'赢率',value:this.mainData.winrate ? this.mainData.winrate : '--'},
+
+
+
           {label:'负责人',value:this.mainData.name ? this.mainData.name : '--'},
         ],
         systemInfo: [
           {label:'创建人',value:this.mainData.createby ? this.mainData.createby : '--'},
           {label:'创建时间',value:this.mainData.createdate ? this.mainData.createdate : '--'},
-          {label:'项目报备人',value:this.mainData.reportby?this.mainData.reportby:'--'},
-          {label:'项目报备时间',value:this.mainData.reportdate?this.mainData.reportdate:'--'},
+          {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.changeby ? this.mainData.changeby : '--'},
-          {label:'最近编辑时间',value:this.mainData.changedate ? this.mainData.changedate : '--'},
+          {label:'作废原因',value:this.mainData.deletereason?this.mainData.deletereason:'--'},
           {label:'转手次数',value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'},
         ]
       }

+ 5 - 2
src/HDrpManagement/projectChange/modules/modules/productSet/index.vue

@@ -369,8 +369,11 @@ export default {
       console.log(this.data,"修改预计折扣")
       this.data.discountrate = this.data.discountrate / 100
       const res = await this.$api.requested({
-        "id": 20221020144202,
-        "content": this.data
+        "id": 20230207090702,
+        "content": {
+          "sa_projectid": this.$route.query.id,
+          "discountrate": this.data.discountrate
+        },
       })
       this.tool.showMessage(res,()=>{
         this.listData()

+ 7 - 7
src/SDrpManagement/QuotedPrice/components/edit/productTable.vue

@@ -222,8 +222,8 @@ export default {
           itemid:e.itemid,
           oldprice:e.marketprice,
           /*price:(e.marketprice * 100)/100,*/
-          price:0,
-          discountrate:0,
+          price:e.marketprice,
+          discountrate:1,
           qty:1
         }
       })
@@ -287,9 +287,9 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
-            qty:e.qty
+            price:e.marketprice,
+            discountrate:1,
+            qty:1
           }
         })
         this.selectData = obj
@@ -300,8 +300,8 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
+            price:e.marketprice,
+            discountrate:1,
             qty:1
           }
         })

+ 8 - 8
src/SDrpManagement/QuotedPrice/components/edit/productTableProject.vue

@@ -220,9 +220,9 @@ export default {
           itemid:e.itemid,
           oldprice:e.marketprice,
           /*price:(e.marketprice * 100)/100,*/
-          price:0,
-          discountrate:0,
-          qty:1
+          price:e.price,
+          discountrate:e.discountrate,
+          qty:e.qty
         }
       })
       this.selectData = obj
@@ -292,8 +292,8 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
+            price:e.price,
+            discountrate:e.discountrate,
             qty:e.qty
           }
         })
@@ -305,9 +305,9 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
-            qty:1
+            price:e.price,
+            discountrate:e.discountrate,
+            qty:e.qty
           }
         })
         this.selectData = obj

+ 3 - 3
src/SDrpManagement/QuotedPrice/components/edit/quotedPriceProduct.vue

@@ -259,7 +259,7 @@ export default {
         this.list[i].mindiscountrate = Math.round((res.data[i].mindiscountrate * 100) * 100)/100
         this.list[i].price = Math.round(res.data[i].price * 100)/100
         this.list[i].discountDifferenceAmount = Math.round(res.data[i].discountDifferenceAmount * 100)/100
-        this.totalPrice = this.totalPrice + res.data[i].qty * res.data[i].price
+        this.totalPrice = this.totalPrice + res.data[i].amount
       }
       this.totalPrice = Math.round(this.totalPrice * 100)/100
       this.$emit('productData',this.list)
@@ -312,7 +312,7 @@ export default {
       this.$set(this.list,index,data)
       this.totalPrice = 0
       for (var i=0 ;i<this.list.length;i++){
-        this.totalPrice = this.totalPrice + this.list[i].qty * this.list[i].price
+        this.totalPrice = this.totalPrice + this.list[i].amount
       }
       this.totalPrice = Math.round(this.totalPrice * 100)/100
       this.$emit('productData',this.list)
@@ -335,7 +335,7 @@ export default {
       this.$set(this.list,index,data)
       this.totalPrice = 0
       for (var i=0 ;i<this.list.length;i++){
-        this.totalPrice = this.totalPrice + this.list[i].qty * this.list[i].price
+        this.totalPrice = this.totalPrice + this.list[i].amount
       }
       this.totalPrice = Math.round(this.totalPrice * 100)/100
       this.$emit('productData',this.list)

+ 7 - 7
src/SDrpManagement/QuotedPrice/components/productTable.vue

@@ -221,8 +221,8 @@ export default {
           itemid:e.itemid,
           oldprice:e.marketprice,
           /*price:(e.marketprice * 100)/100,*/
-          price:0,
-          discountrate:0,
+          price:e.marketprice,
+          discountrate:1,
           qty:1
         }
       })
@@ -297,9 +297,9 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
-            qty:e.qty
+            price:e.marketprice,
+            discountrate:1,
+            qty:1
           }
         })
         this.selectData = obj
@@ -310,8 +310,8 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
+            price:e.marketprice,
+            discountrate:1,
             qty:1
           }
         })

+ 9 - 8
src/SDrpManagement/QuotedPrice/components/productTableProject.vue

@@ -196,6 +196,7 @@ export default {
       this.dialogProductVisible = false
     },
     async onSubmit(){
+      console.log(this.selectData,"添加选择的商品")
       const res = await this.$api.requested({
         "id": 20221021095403,
         "content": {
@@ -223,9 +224,9 @@ export default {
           itemid:e.itemid,
           oldprice:e.marketprice,
           /*price:(e.marketprice * 100)/100,*/
-          price:0,
-          discountrate:0,
-          qty:1
+          price:e.price,
+          discountrate:e.discountrate,
+          qty:e.qty
         }
       })
       this.selectData = obj
@@ -295,8 +296,8 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
+            price:e.price,
+            discountrate:e.discountrate,
             qty:e.qty
           }
         })
@@ -308,9 +309,9 @@ export default {
             itemid:e.itemid,
             oldprice:e.marketprice,
             /*price:(e.marketprice * 100)/100,*/
-            price:0,
-            discountrate:0,
-            qty:1
+            price:e.price,
+            discountrate:e.discountrate,
+            qty:e.qty
           }
         })
         this.selectData = obj

+ 4 - 2
src/SDrpManagement/QuotedPrice/detail/index.vue

@@ -152,7 +152,7 @@ export default {
         },
         {
           label:'总金额(元)',
-          value:this.totalPrice.toFixed(2)
+          value:this.totalPrice
         },
         {
           label:'联系人',
@@ -204,10 +204,12 @@ export default {
         }
       })
       this.totalPrice = 0
+      console.log(res.data,"产品配置信息")
       res.data.forEach((item)=> {
-        this.totalPrice = this.totalPrice + item.price * item.qty
+        this.totalPrice = this.totalPrice + item.amount
       })
       /*this.queryMainData(this.$route.query.id)*/
+      this.totalPrice = Math.round(this.totalPrice * 100) / 100
       this.changeDataStructure()
     },
     onSuccess(){

+ 29 - 4
src/SManagement/sales_forecast/modules/modelDetail.vue

@@ -32,7 +32,7 @@
             <div style="border-bottom:1px solid #f1f2f3;margin-bottom:16px"></div>
           </el-col>
           <el-col :span="24">
-            <product  :mainData="mainData" ref="prod" @onSuccess='queryMainData'></product>
+            <product  :mainData="mainData" ref="prod" @onSuccess='queryMainData' @discountrateSet="discountrateSet"></product>
           </el-col>
         </el-row>
       </div>
@@ -52,7 +52,9 @@ export default {
       drawer:false,
       mainData:{},
       mainAreaData:{},
-      detailInfo:{}
+      detailInfo:{},
+      sa_salesforecastprojectid:'',
+      sa_projectid:""
     }
   },
   components:{
@@ -111,8 +113,31 @@ export default {
       this.$router.replace({path:'/product_detail',query:{id:id,rowindex:rowindex}})
       this.queryMainData(id)
     },
-    queryProduct (id) {
-      this.$refs['prod'].listData(id)
+    queryProduct (id,discountrate,sa_salesforecastprojectid) {
+      discountrate = Math.round((discountrate * 100)*100) /100
+      this.$refs['prod'].listData(id,discountrate)
+      this.sa_salesforecastprojectid = sa_salesforecastprojectid
+      this.sa_projectid = id
+      console.log(sa_salesforecastprojectid,'sa_salesforecastprojectid')
+    },
+    async discountrateSet(val){
+      console.log(val,"新的折扣")
+      val = val / 100
+      const res = await this.$api.requested({
+        "id": 20220913154403,
+        "content": {
+          "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
+          "sa_salesforecastbillid":this.mainData.sa_salesforecastbillid,
+          "sa_projectids": [{
+            "sa_salesforecastprojectid":this.sa_salesforecastprojectid,
+            "sa_projectid":this.sa_projectid,
+            "discountrate":val
+          }]
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.queryMainData()
+      })
     }
   },
   mounted () {

+ 100 - 21
src/SManagement/sales_forecast/modules/product.vue

@@ -1,6 +1,10 @@
 <template>
   <div>
     <el-input class="mt-10" style="width:200px" prefix-icon="el-icon-search" size="small" placeholder="搜索产品名称" v-model="param.content.where.condition" @keyup.native.enter="search()" @clear="search()" clearable></el-input>
+    <div style="float: right">
+      <label class="search__label">折扣(%):</label>
+      <el-input style="width: 100px;" v-model="discountrate" size="small"   label="默认折扣"  @change="discountrateChange"></el-input>
+    </div>
     <el-table
       ref="multipleTable"
       :data="list"
@@ -69,12 +73,12 @@
         <el-tag size="mini" type="info" effect="plain">{{scope.row.unitname}}/{{scope.row.axunitname}}</el-tag>
       </template>
     </el-table-column>
-      <el-table-column
-          prop="marketprice"
-          label="牌价"
-          width="100"
-          fixed="right">
-      </el-table-column>
+    <el-table-column
+        prop="marketprice"
+        label="牌价"
+        width="100"
+        fixed="right">
+    </el-table-column>
      <el-table-column
       label="数量"
       width="180"
@@ -83,6 +87,15 @@
         <el-input-number :disabled="!checkDateOut" :controls="true" :step-strictly="true" size="mini" v-model="scope.row.outqty" @change="qtyChange" label="输入数量"></el-input-number>
       </template>
     </el-table-column>
+    <el-table-column
+        prop="price"
+        label="单价"
+        width="100"
+        fixed="right">
+      <template slot-scope="scope">
+        <el-input :disabled="!checkDateOut"  size="mini" v-model="scope.row.price" @change="priceChange" label="输入单价"></el-input>
+      </template>
+    </el-table-column>
     <el-table-column
         prop="outamount"
         label="金额"
@@ -141,51 +154,101 @@ export default {
       currentPage:0,
       total:0,
       checkDateOut:false,
-      time:null
+      time:null,
+      discountrate:0
     }
   },
   methods:{
-    async listData (sa_projectid) {
+    async listData (sa_projectid,discountrate) {
+      this.discountrate = discountrate
       this.param.content.where.sa_projectid = sa_projectid
       const res = await this.$api.requested(this.param)
       this.list = res.data
-      console.log(this.list,"产品列表信息")
       this.total = res.total
       this.currentPage = res.pageNumber
     },
     async search () {
       this.param.content.pageNumber = 1
-      this.listData(this.param.content.where.sa_projectid)
+      this.listData(this.param.content.where.sa_projectid,this.discountrate)
     },
     handleSizeChange(val) {
       // console.log(`每页 ${val} 条`);
       this.param.content.pageSize = val
-      this.listData(this.param.content.where.sa_projectid)
+      this.listData(this.param.content.where.sa_projectid,this.discountrate)
     },
     handleCurrentChange(val) {
       // console.log(`当前页: ${val}`);
       this.param.content.pageNumber = val
-      this.listData(this.param.content.where.sa_projectid)
+      this.listData(this.param.content.where.sa_projectid,this.discountrate)
     },
     qtyChange () {
+      console.log(this.list)
       this.list = this.list.filter(e=>{
-        e.outamount = e.outqty * e.marketprice
+        e.outamount = e.outqty * e.price
         return e
       })
       if(this.time !== null){
         clearTimeout(this.time);
       }
       this.time = setTimeout(async () => {
+        console.log(this.list)
         const res = await this.$api.requested({
           "id": 20220906155003,
-          "version":1,
           "content": {
             "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
             "sa_salesforecastbillid":this.$route.query.id,
             "sa_projectid": this.param.content.where.sa_projectid,
             "itemclassinfos": this.list.map(e=>{
               return {
+                /*"sa_salesforecastid":e.sa_salesforecastid,
+                "itemclassnum": e.itemclassnum,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "outamount": e.outamount,
+                "itemid":e.itemid*/
                 "sa_salesforecastid":e.sa_salesforecastid,
+                "itemid": e.itemid,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "price":e.price
+              }
+            })
+          }
+        })
+        console.log(this.param.content.where.sa_projectid)
+        this.listData(this.param.content.where.sa_projectid,this.discountrate)
+        this.$emit('onSuccess',this.param.content.where.sa_projectid)
+        /*this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('onSuccess')
+        })*/
+      },300)
+    },
+    priceChange(){
+      this.list = this.list.filter(e=>{
+        e.outamount = e.outqty * e.price
+        return e
+      })
+      if(this.time !== null){
+        clearTimeout(this.time);
+      }
+      this.time = setTimeout(async () => {
+        console.log(this.list)
+        const res = await this.$api.requested({
+          "id": 20220906155003,
+          "content": {
+            "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
+            "sa_salesforecastbillid":this.$route.query.id,
+            "sa_projectid": this.param.content.where.sa_projectid,
+            "itemclassinfos": this.list.map(e=>{
+              return {
+                /*"sa_salesforecastid":e.sa_salesforecastid,
                 "itemclassnum": e.itemclassnum,
                 "orderqty": e.orderqty,
                 "orderamount": e.orderamount,
@@ -193,21 +256,37 @@ export default {
                 "invoiceamount": e.invoiceamount,
                 "outqty": e.outqty,
                 "outamount": e.outamount,
-                "itemid":e.itemid
+                "itemid":e.itemid*/
+                "sa_salesforecastid":e.sa_salesforecastid,
+                "itemid": e.itemid,
+                "orderqty": e.orderqty,
+                "orderamount": e.orderamount,
+                "invoiceqty": e.invoiceqty,
+                "invoiceamount": e.invoiceamount,
+                "outqty": e.outqty,
+                "price":e.price
               }
             })
           }
         })
         console.log(this.param.content.where.sa_projectid)
-        this.listData(this.param.content.where.sa_projectid)
+        this.listData(this.param.content.where.sa_projectid,this.discountrate)
         this.$emit('onSuccess',this.param.content.where.sa_projectid)
         /*this.tool.showMessage(res,()=>{
           this.listData()
           this.$emit('onSuccess')
         })*/
-      },1000)
-     
-      
+      },300)
+    },
+    discountrateChange(){
+      if (this.discountrate > 100){
+        this.discountrate = 100
+      }else if(this.discountrate < 0){
+        this.discountrate = 0
+      }else {
+       this.discountrate = Math.round(this.discountrate * 100)/100
+      }
+      this.$emit('discountrateSet',this.discountrate)
     },
     /*amountChange (){
       this.list = this.list.filter(e=>{
@@ -260,7 +339,7 @@ export default {
         }
       })
       this.tool.showMessage(res,()=>{
-        this.listData(this.param.content.where.sa_projectid)
+        this.listData(this.param.content.where.sa_projectid,this.discountrate)
       })
     }
   },
@@ -276,7 +355,7 @@ export default {
     }
   },
   mounted () {
-    
+    console.log(this.mainData,"mainData")
   }
 }
 

+ 7 - 5
src/SManagement/sales_forecast/modules/project.vue

@@ -32,7 +32,7 @@
         label="操作"
         width="150">
         <template slot-scope="scope">
-          <addProduct v-if="checkDateOut && tool.checkAuth($route.name,'projectProductListManage')" class="inline-16" :id="scope.row.sa_projectid" :mainData="mainData" @onSuccess="rowClick(act_row)"></addProduct>
+          <addProduct v-if="checkDateOut && tool.checkAuth($route.name,'projectProductListManage')" class="inline-16" :id="scope.row.sa_projectid" :mainData="mainData"  @onSuccess="rowClick(act_row)"></addProduct>
           <el-button size="small" type="text" :disabled="!checkDateOut" @click="deleteProject(scope.row)">删 除{{scope.row.sa_salesforecastid}}</el-button>
         </template>
       </el-table-column>
@@ -80,17 +80,18 @@ export default {
       currentPage:0,
       total:0,
       checkDateOut:false,
+      discountrate:0
     }
   },
   methods:{
     async listData () {
       const res = await this.$api.requested(this.param)
+      console.log(res.data)
       this.list = res.data
       this.total = res.total
       this.currentPage = res.pageNumber
-      this.$emit('queryProduct',this.act_row?this.act_row.sa_projectid:res.data[0].sa_projectid)
+      this.$emit('queryProduct',this.act_row?this.act_row.sa_projectid:res.data[0].sa_projectid, this.act_row?res.data[this.act_row.rowindex -1].discountrate:res.data[0].discountrate,this.act_row?this.act_row.sa_salesforecastprojectid:res.data[0].sa_salesforecastprojectid)
       this.$nextTick(()=>{
-
         this.act_row?this.$refs.tableProject.setCurrentRow(this.list[this.act_row.rowindex -1]):this.$refs.tableProject.setCurrentRow(this.list[0])
       })
     },
@@ -118,9 +119,10 @@ export default {
       this.listData()
     },
     rowClick (row) {
+      console.log(row)
       this.act_row = row
-      this.listData()
-      this.$emit('queryProduct',row.sa_projectid)
+      // this.listData()
+      this.$emit('queryProduct',row.sa_projectid,row.discountrate,row.sa_salesforecastprojectid)
     },
     /*是否过期*/
     isOverdue(){

+ 41 - 19
src/template/salesForecastUseProject/addProduct.vue

@@ -27,7 +27,8 @@
               @selection-change="selectionChange">
             <el-table-column
                 type="selection"
-                width="55">
+                width="42"
+                fixed>
             </el-table-column>
             <el-table-column
                 align="center"
@@ -103,11 +104,33 @@
             <el-table-column
                 prop="marketprice"
                 label="牌价"
-                width="100">
+                width="80"
+                fixed="right">
+            </el-table-column>
+            <el-table-column
+                prop="qty"
+                label="数量"
+                width="80"
+                fixed="right">
+            </el-table-column>
+            <el-table-column
+                prop="price"
+                label="单价"
+                width="80"
+                fixed="right">
+            </el-table-column>
+            <el-table-column
+
+                label="金额"
+                width="80"
+                fixed="right">
+              <template slot-scope="scope">
+                <span>{{ scope.row.qty * scope.row.price }}</span>
+              </template>
             </el-table-column>
             <el-table-column
                 label="操作"
-                width="90"
+                width="80"
                 fixed="right">
               <template slot-scope="scope">
                 <el-button type="text" size="small" @click="batchSelect(scope.row)">添加</el-button>
@@ -179,6 +202,7 @@ export default {
     async listData () {
       this.param.content.sa_salesforecastbillid = this.$route.query.id
       const res = await this.$api.requested(this.param)
+      console.log(res.data,"添加商品信息")
       this.list = res.data
       this.total = res.total
       this.currentPage = res.pageNumber
@@ -209,14 +233,13 @@ export default {
             "sa_projectid":this.id,
             "itemclassinfos": [{
               "sa_salesforecastid":0,
-              "itemid":row.itemid,
-              "itemclassnum":'',
-              "orderqty": 1,
-              "orderamount": row.marketprice,
-              "invoiceqty": 1,
-              "invoiceamount": row.marketprice,
-              "outqty": 1,
-              "outamount": row.marketprice
+              "itemid": row.itemid,
+              "orderqty": 0,
+              "orderamount": 0,
+              "invoiceqty": 0,
+              "invoiceamount": 0,
+              "outqty": row.qty,
+              "price":row.price
             }]
         }
       })
@@ -251,14 +274,13 @@ export default {
       let obj = this.tableSelectData.map(e=>{
         return {
           "sa_salesforecastid":0,
-          "itemid":e.itemid,
-          "itemclassnum":'',
-          "orderqty": 1,
-          "orderamount": e.marketprice,
-          "invoiceqty": 1,
-          "invoiceamount": e.marketprice,
-          "outqty": 1,
-          "outamount": e.marketprice
+          "itemid": e.itemid,
+          "orderqty": 0,
+          "orderamount": 0,
+          "invoiceqty": 0,
+          "invoiceamount": 0,
+          "outqty": e.qty,
+          "price":e.price
         }
       })
       this.selectData = obj

+ 6 - 2
src/template/salesForecastUseProject/index.vue

@@ -63,7 +63,6 @@ export default {
       drawer:false,
       param:{
         "id": 20220906154803,
-        "version":1,
         "content": {
           "pageNumber":1,
           "pageSize":20,
@@ -106,12 +105,17 @@ export default {
       }, 300)()
     },
     async addProject (row) {
+      console.log(row,"row")
       const res = await this.$api.requested({
         "id": 20220913154403,
         "content": {
           "sa_salesforecastmodelid":this.mainData.sa_salesforecastmodelid,
           "sa_salesforecastbillid":this.$route.query.id,
-          "sa_projectids": [row.sa_projectid]
+          "sa_projectids": [{
+            "sa_salesforecastprojectid":row.sa_salesforecastprojectid,
+            "sa_projectid":row.sa_projectid,
+            "discountrate":1
+          }]
         }
       })
       this.tool.showMessage(res,()=>{