Browse Source

报价单添加"报价金额"

xiaohaizhao 1 năm trước cách đây
mục cha
commit
0491316074

+ 86 - 28
packageA/offers/addProjectOffer.js

@@ -8,6 +8,7 @@ Page({
 	data: {
 		loading: false,
 		showAll: false,
+		accessory: true,
 		form: [{
 			label: "项目",
 			error: false,
@@ -31,6 +32,16 @@ Page({
 			valueName: "sa_projectid",
 			checking: "base",
 			required: true
+		}, {
+			label: "报价金额(元)",
+			error: false,
+			errMsg: "",
+			type: "digit",
+			value: "",
+			placeholder: "请填写金额",
+			valueName: "quotedpriceamount",
+			checking: "base",
+			required: true
 		}, {
 			label: "产品系列",
 			error: false,
@@ -121,7 +132,7 @@ Page({
 					interrupt: true
 				});
 				//业务员
-				form.splice(6, 0, {
+				form.splice(form.findIndex(v => v.label == '备注'), 0, {
 					label: "业务员",
 					error: false,
 					errMsg: "",
@@ -163,6 +174,7 @@ Page({
 					v.value = [data1.begdate, data1.enddate]
 				} else {
 					v.value = data1[v.valueName] || "";
+					if (v.valueName == "quotedpriceamount") v.disabled = data1.iseditamount == 0
 				}
 				return v
 			})
@@ -217,9 +229,9 @@ Page({
 				placeholder: "选择客户联系人",
 				valueName: "sys_phonebookid",
 				checking: "base",
-				required: false
+				required: true
 			});
-			form.splice(6, 0, {
+			form.splice(form.findIndex(v => v.label == '备注'), 0, {
 				label: "业务员",
 				error: false,
 				errMsg: "",
@@ -245,6 +257,7 @@ Page({
 			});
 			this.setData({
 				form,
+				accessory: false
 			})
 		}
 	},
@@ -312,7 +325,7 @@ Page({
 					checking: "base",
 					required: true
 				};
-				form.splice(6, form[6].label == "业务员" ? 1 : 0, hr);
+				form.splice(form.findIndex(v => v.label == '备注'), form.some(v => v.label == '业务员') ? 1 : 0, hr);
 				break;
 			case "sys_enterpriseid":
 				obj = {
@@ -341,9 +354,9 @@ Page({
 					placeholder: "选择客户联系人",
 					valueName: "sys_phonebookid",
 					checking: "base",
-					required: false
+					required: true
 				};
-				form.splice(2, form[2].label == "联系人" ? 1 : 0, obj);
+				form.splice(2, form.some(v => v.label == '联系人') ? 1 : 0, obj);
 				break;
 		}
 		form[temporary.index] = temporary.item;
@@ -352,6 +365,60 @@ Page({
 			form
 		})
 	},
+	/* 绑定媒体 */
+	insertImgEdit({
+		detail
+	}) {
+		this.handleFileLink(detail)
+	},
+	handleFileLink(attachmentids, ownertable = "temporary", ownerid = 1, data) {
+		_Http.basic({
+			"classname": "system.attachment.Attachment",
+			"method": "createFileLink",
+			"content": {
+				ownertable,
+				ownerid,
+				usetype: 'default',
+				attachmentids
+			}
+		}).then(res => {
+			console.log('跟进记录绑定附件', res)
+			if (res.msg != '成功') return wx.showToast({
+				title: res.msg,
+				icon: "none"
+			})
+			if (ownertable == 'temporary') {
+				this.selectComponent("#Yl_files").handleFiles(res.data)
+			} else {
+				if (res.data.length) data.attinfos = res.data;
+				this.changeItem(data)
+				setTimeout(() => {
+					wx.navigateBack()
+				}, 500)
+			}
+		})
+	},
+	changeItem(data) {
+		this.setData({
+			loading: false
+		})
+		let pages = getCurrentPages(),
+			page = pages[pages.length - 2];
+		if (page.__route__ == 'packageA/offers/detail') {
+			page.getDetail(true);
+			wx.navigateBack()
+		} else {
+			if (page.__route__ == 'packageA/offers/index') {
+				page.getList(true);
+			} else if (page.__route__ == 'packageA/project/detail') {
+				let model = page.selectComponent("#Offers");
+				model.getList(model.data.sa_projectid, true);
+			}
+			wx.redirectTo({
+				url: '/packageA/offers/detail?sa_quotedpriceid=' + data.sa_quotedpriceid
+			})
+		}
+	},
 	submit() {
 		this.setData({
 			loading: true
@@ -377,33 +444,24 @@ Page({
 			"version": 1,
 			content
 		}).then(res => {
-			this.setData({
-				loading: false
-			})
 			console.log("添加项目报价单", res)
 			wx.showToast({
 				title: res.msg != '成功' ? res.msg : '保存成功',
-				icon: "none"
+				icon: "none",
+				mask: true
 			})
-			if (res.msg != '成功') return;
+			if (res.msg != '成功') return this.setData({
+				loading: false
+			});
+			try {
+				let attachmentids = this.selectComponent("#Yl_files").getFiles().attachmentids;
+				if (attachmentids.length) return this.handleFileLink(attachmentids, 'sa_quotedprice', res.data.sa_quotedpriceid, res.data);
+			} catch (error) {
+
+			}
 			setTimeout(() => {
-				let pages = getCurrentPages(),
-					page = pages[pages.length - 2];
-				if (page.__route__ == 'packageA/offers/detail') {
-					page.getDetail(true);
-					wx.navigateBack()
-				} else {
-					if (page.__route__ == 'packageA/offers/index') {
-						page.getList(true);
-					} else if (page.__route__ == 'packageA/project/detail') {
-						let model = page.selectComponent("#Offers");
-						model.getList(model.data.sa_projectid, true);
-					}
-					wx.redirectTo({
-						url: '/packageA/offers/detail?sa_quotedpriceid=' + res.data.sa_quotedpriceid
-					})
-				}
-			}, 300)
+				this.changeItem(res.data)
+			}, 500)
 		})
 	},
 	// 是否显示全部

+ 3 - 1
packageA/offers/addProjectOffer.json

@@ -1,4 +1,6 @@
 {
-    "usingComponents": {},
+    "usingComponents": {
+        "My_upload": "/components/My_upload/index"
+    },
     "navigationBarTitleText": "项目报价"
 }

+ 38 - 0
packageA/offers/addProjectOffer.scss

@@ -20,4 +20,42 @@
         color: #FFFFFF;
         margin-right: 30rpx;
     }
+}
+
+.box {
+    width: 100vw;
+    box-sizing: border-box;
+    margin-top: 20rpx;
+    background-color: #fff;
+
+    .content {
+        border-radius: 8rpx;
+        padding: 0 30rpx;
+        box-sizing: border-box;
+
+        .upload {
+            display: flex;
+            align-items: center;
+            width: 100%;
+            height: 88rpx;
+            box-sizing: border-box;
+
+            .title {
+                flex: 1;
+                font-size: 28rpx;
+                font-family: PingFang SC-Regular, PingFang SC;
+                color: #333333;
+                font-weight: bold;
+            }
+
+            navigator {
+                width: 100rpx;
+                height: 80rpx;
+                line-height: 80rpx;
+                text-align: center;
+                padding: 0;
+            }
+        }
+
+    }
 }

+ 23 - 1
packageA/offers/addProjectOffer.wxml

@@ -2,7 +2,29 @@
 <Yl_field id='Form' form='{{form}}' showAll='{{!showAll}}' bind:onConfirm='onConfirm' bind:interrupt="interrupt">
 	<view slot='discountrate' style="margin-right: 36rpx;">%</view>
 </Yl_field>
-<view style="height: 100rpx;" />
+
+<view class="box" wx:if="{{accessory}}">
+  <view class="content">
+    <view class="upload">
+      <view class="title">附件上传</view>
+      <My_upload accept='media' binduploadCallback="insertImgEdit">
+        <navigator url="#">
+          <text class="iconfont icon-a-tonggaofujian" />
+        </navigator>
+      </My_upload>
+
+      <My_upload accept='file' binduploadCallback="insertImgEdit">
+        <navigator url="#">
+          <text class="iconfont icon-a-biaoqianlanzhiku" />
+        </navigator>
+      </My_upload>
+    </view>
+  </view>
+  <Yl_Files delete id="Yl_files" />
+</view>
+
+
+<view style="height: 130rpx;" />
 <view class="new-footer">
 	<van-button custom-class='new-submit' disabled='{{disabled || loading}}' loading='{{loading}}' bindclick='submit'>提交</van-button>
 </view>

+ 86 - 26
packageA/offers/addSetclientOffer.js

@@ -8,6 +8,7 @@ Page({
 	data: {
 		loading: false,
 		showAll: false,
+		accessory: true,
 		form: [{
 			label: "客户",
 			error: false,
@@ -33,6 +34,16 @@ Page({
 			valueName: "sys_enterpriseid",
 			checking: "base",
 			required: true
+		}, {
+			label: "报价金额(元)",
+			error: false,
+			errMsg: "",
+			type: "digit",
+			value: "",
+			placeholder: "请填写金额",
+			valueName: "quotedpriceamount",
+			checking: "base",
+			required: true
 		}, {
 			label: "产品系列",
 			error: false,
@@ -105,6 +116,7 @@ Page({
 					v.value = [data.begdate, data.enddate]
 				} else {
 					v.value = data[v.valueName] || "";
+					if (v.valueName == "quotedpriceamount") v.disabled = data.iseditamount == 0
 				}
 				return v
 			})
@@ -132,9 +144,9 @@ Page({
 				placeholder: "选择客户联系人",
 				valueName: "sys_phonebookid",
 				checking: "base",
-				required: false
+				required: true
 			});
-			form.splice(6, 0, {
+			form.splice(form.findIndex(v => v.label == '备注'), 0, {
 				label: "业务员",
 				error: false,
 				errMsg: "",
@@ -159,7 +171,8 @@ Page({
 				required: true
 			});
 			this.setData({
-				form
+				form,
+				accessory: false
 			});
 			this.selectComponent("#Form").confirm();
 		}
@@ -202,9 +215,9 @@ Page({
 				query: "&radio=true&idname=sys_phonebookid",
 				valueName: "sys_phonebookid",
 				checking: "base",
-				required: false
+				required: true
 			};
-			form.splice(1, form[1].label == "联系人" ? 1 : 0, contacts);
+			form.splice(1, form.some(v => v.label == '联系人') ? 1 : 0, contacts);
 
 			//业务员
 			let hr = {
@@ -231,7 +244,7 @@ Page({
 				checking: "base",
 				required: true
 			};
-			form.splice(6, form[6].label == "业务员" ? 1 : 0, hr);
+			form.splice(form.findIndex(v => v.label == '备注'), form.some(v => v.label == '业务员') ? 1 : 0, hr);
 		}
 		form[temporary.index] = temporary.item;
 		wx.navigateBack()
@@ -239,6 +252,59 @@ Page({
 			form
 		})
 	},
+	/* 绑定媒体 */
+	insertImgEdit({
+		detail
+	}) {
+		this.handleFileLink(detail)
+	},
+	handleFileLink(attachmentids, ownertable = "temporary", ownerid = 1, data) {
+		_Http.basic({
+			"classname": "system.attachment.Attachment",
+			"method": "createFileLink",
+			"content": {
+				ownertable,
+				ownerid,
+				usetype: 'default',
+				attachmentids
+			}
+		}).then(res => {
+			console.log('跟进记录绑定附件', res)
+			if (res.msg != '成功') return wx.showToast({
+				title: res.msg,
+				icon: "none"
+			})
+			if (ownertable == 'temporary') {
+				this.selectComponent("#Yl_files").handleFiles(res.data)
+			} else {
+				if (res.data.length) data.attinfos = res.data;
+				this.changeItem(data)
+				setTimeout(() => {
+					wx.navigateBack()
+				}, 500)
+			}
+		})
+	},
+	changeItem(data) {
+		this.setData({
+			loading: false
+		})
+		let pages = getCurrentPages(),
+			page = pages[pages.length - 2];
+		if (page.__route__ == 'packageA/offers/detail') {
+			page.getDetail(true);
+			wx.navigateBack()
+		} else {
+			if (['packageA/setclient/detail', 'packageA/publicCustomer/detail'].includes(page.__route__)) {
+				let model = page.selectComponent("#Offers");
+				model.getList(model.data.sys_enterpriseid, true);
+			}
+			wx.redirectTo({
+				url: '/packageA/offers/detail?sa_quotedpriceid=' + data.sa_quotedpriceid
+			})
+		}
+
+	},
 	submit() {
 		this.setData({
 			loading: true
@@ -264,30 +330,24 @@ Page({
 			content
 		}).then(res => {
 			console.log("添加客户报价单", res)
-			this.setData({
-				loading: false
-			})
+
 			wx.showToast({
 				title: res.msg != '成功' ? res.msg : '保存成功',
-				icon: "none"
+				icon: "none",
+				mask: true
 			})
-			if (res.msg != '成功') return;
+			if (res.msg != '成功') return this.setData({
+				loading: false
+			});
+			try {
+				let attachmentids = this.selectComponent("#Yl_files").getFiles().attachmentids;
+				if (attachmentids.length) return this.handleFileLink(attachmentids, 'sa_quotedprice', res.data.sa_quotedpriceid, res.data);
+			} catch (error) {
+
+			}
 			setTimeout(() => {
-				let pages = getCurrentPages(),
-					page = pages[pages.length - 2];
-				if (page.__route__ == 'packageA/offers/detail') {
-					page.getDetail(true);
-					wx.navigateBack()
-				} else {
-					if (['packageA/setclient/detail', 'packageA/publicCustomer/detail'].includes(page.__route__)) {
-						let model = page.selectComponent("#Offers");
-						model.getList(model.data.sys_enterpriseid, true);
-					}
-					wx.redirectTo({
-						url: '/packageA/offers/detail?sa_quotedpriceid=' + res.data.sa_quotedpriceid
-					})
-				}
-			}, 300)
+				this.changeItem(res.data)
+			}, 500)
 		})
 	},
 	// 是否显示全部

+ 3 - 1
packageA/offers/addSetclientOffer.json

@@ -1,4 +1,6 @@
 {
-    "usingComponents": {},
+    "usingComponents": {
+        "My_upload": "/components/My_upload/index"
+    },
     "navigationBarTitleText": "客户报价"
 }

+ 38 - 0
packageA/offers/addSetclientOffer.scss

@@ -20,4 +20,42 @@
         color: #FFFFFF;
         margin-right: 30rpx;
     }
+}
+
+.box {
+    width: 100vw;
+    box-sizing: border-box;
+    margin-top: 20rpx;
+    background-color: #fff;
+
+    .content {
+        border-radius: 8rpx;
+        padding: 0 30rpx;
+        box-sizing: border-box;
+
+        .upload {
+            display: flex;
+            align-items: center;
+            width: 100%;
+            height: 88rpx;
+            box-sizing: border-box;
+
+            .title {
+                flex: 1;
+                font-size: 28rpx;
+                font-family: PingFang SC-Regular, PingFang SC;
+                color: #333333;
+                font-weight: bold;
+            }
+
+            navigator {
+                width: 100rpx;
+                height: 80rpx;
+                line-height: 80rpx;
+                text-align: center;
+                padding: 0;
+            }
+        }
+
+    }
 }

+ 22 - 1
packageA/offers/addSetclientOffer.wxml

@@ -2,7 +2,28 @@
 <Yl_field id='Form' form='{{form}}' showAll='{{!showAll}}' bind:onConfirm='onConfirm' bind:interrupt="interrupt">
 	<view slot='discountrate' style="margin-right: 36rpx;">%</view>
 </Yl_field>
-<view style="height: 100rpx;" />
+
+<view class="box" wx:if="{{accessory}}">
+  <view class="content">
+    <view class="upload">
+      <view class="title">附件上传</view>
+      <My_upload accept='media' binduploadCallback="insertImgEdit">
+        <navigator url="#">
+          <text class="iconfont icon-a-tonggaofujian" />
+        </navigator>
+      </My_upload>
+
+      <My_upload accept='file' binduploadCallback="insertImgEdit">
+        <navigator url="#">
+          <text class="iconfont icon-a-biaoqianlanzhiku" />
+        </navigator>
+      </My_upload>
+    </view>
+  </view>
+  <Yl_Files delete id="Yl_files" />
+</view>
+
+<view style="height: 130rpx;" />
 <view class="new-footer">
 	<van-button custom-class='new-submit' disabled='{{disabled || loading}}' loading='{{loading}}' bindclick='submit'>提交</van-button>
 </view>

+ 1 - 1
packageA/offers/detail.wxml

@@ -13,7 +13,7 @@
 <Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
     <Preview slot='详细信息' list1='{{list1}}' list2='{{list2}}' />
     <Trace slot='跟进动态' id='Trace' ownertable='sa_quotedprice' ownerid='{{detail.sa_quotedpriceid}}' />
-    <Product slot='产品明细折扣' id='Product' synchronous='{{detail.quotedpricetype=="项目报价" && isLeader && detail.status=="新建"}}' sa_projectid="{{detail.sa_projectid}}" type="{{detail.quotedpricetype}}" disabled="{{(per.query(options,'product')||isAdmin||isLeader)&&detail.status=='新建'}}" />
+    <Product slot='产品明细折扣' bind:getDetail="getDetail" id='Product' synchronous='{{detail.quotedpricetype=="项目报价" && isLeader && detail.status=="新建"}}' sa_projectid="{{detail.sa_projectid}}" type="{{detail.quotedpricetype}}" disabled="{{(per.query(options,'product')||isAdmin||isLeader)&&detail.status=='新建'}}" />
     <PiscountType slot='产品类别折扣' id='PiscountType' synchronous='{{detail.quotedpricetype=="项目报价" && isLeader && detail.status=="新建"}}' disabled="{{(isAdmin||isLeader)&&detail.status=='新建'}}" type="报价单" />
     <PettyExpense slot='其他费用' id='PettyExpense' quotedpricenotes='{{detail.quotedpricenotes}}' disabled="{{(isAdmin||isLeader)&&detail.status=='新建'}}" />
     <History slot='历史报价' id="History" isproject="{{detail.quotedpricetype=='项目报价'?1:0}}" />

+ 6 - 0
packageA/offers/modules/product/index.js

@@ -29,6 +29,9 @@ Component({
         synchronous: {
             type: Boolean
         }, //是否同步按钮显示
+        getDetail: {
+            type: Function
+        }
     },
     observers: {
         sumamount(newData) {
@@ -211,6 +214,7 @@ Component({
                             title: res.msg != '成功' ? res.msg : '添加成功!',
                             icon: "none"
                         });
+                        that.triggerEvent("getDetail")
                         if (res.msg == '成功') setTimeout(() => {
                             that.getList(sa_quotedpriceid, true)
                             wx.navigateBack()
@@ -252,6 +256,7 @@ Component({
                             title: res.msg != '成功' ? res.msg : '添加成功!',
                             icon: "none"
                         });
+                        that.triggerEvent("getDetail")
                         if (res.msg == '成功') setTimeout(() => {
                             that.getList(sa_quotedpriceid, true)
                             wx.navigateBack()
@@ -277,6 +282,7 @@ Component({
                     icon: "none"
                 })
                 if (res.msg == '成功') {
+                    this.triggerEvent("getDetail")
                     let i = this.data.list.findIndex(v => v.sa_quotedprice_itemsid == detail);
                     let sumamount = CNY(currency(this.data.sumamount).subtract(this.data.list[i].amount));
                     this.data.list.splice(i, 1);