Explorar o código

销售订单产品清单

zhaoxiaohai %!s(int64=2) %!d(string=hai) anos
pai
achega
abebbff743

+ 0 - 2
packageA/orderForm/add.js

@@ -42,7 +42,6 @@ Page({
     _Http.basic({
       "id": 20221223141802,
       "content": {
-        "sys_enterpriseid": 1,
         "pageNumber": 1,
         "pageSize": 99999,
         "where": {
@@ -77,7 +76,6 @@ Page({
       "id": 20221108111402,
       content: {
         sa_orderid: 0,
-        sys_enterpriseid: 1, //可以拿到
         sa_accountclassid: 0,
         rec_contactsid: 0,
         pay_enterpriseid: 0,

+ 154 - 112
packageA/orderForm/detail.js

@@ -1,117 +1,159 @@
 const _Http = getApp().globalData.http;
 
 Page({
-    data: {
-        sa_orderid: null,
-        tabsActive: 0,
-        tabsList: [{
-            label: "产品明细",
-            icon: "icon-tabxiangxixinxi1"
-        }, {
-            label: "附件",
-            icon: "icon-tabgenjinjilu"
-        }, {
-            label: "订单进度",
-            icon: "icon-tabcaozuojilu1"
-        }, {
-            label: "发票",
-            icon: "icon-tabgenjinjilu"
-        }],
-    },
-    onLoad(options) {
-        this.setData({
-            sa_orderid: options.id
-        });
-        this.getDetail();
-    },
-    /* 获取详情 */
-    getDetail() {
-        _Http.basic({
-            "id": 20221108151302,
-            "content": {
-                "sa_orderid": this.data.sa_orderid
-            }
-        }).then(res => {
-            console.log("订单详情", res)
-            if (res.msg != '成功') return wx.showToast({
-                title: res.msg,
-                icon: "none"
-            });
-            this.setData({
-                detail: res.data
-            })
-        })
-    },
-    /* 更新数据 */
-    changeDetail() {
-        let data = this.data.detail,
-            content = {
-                "sa_orderid": data.sa_orderid,
-                "sys_enterpriseid": data.sys_enterpriseid, //订货企业id
-                "sa_accountclassid": data.accountclass.sa_accountclassid, //营销账户类型ID
-                "sa_brandid": data.sa_brandid, //品牌ID
-                "sys_enterprise_financeid": data.finance.sys_enterprise_financeid, //合作企业财务信息ID(开票信息)
-                "sa_logiscompid": data.logiscomp.sa_logiscompid, //物流公司档案ID
-                "rec_contactsid": data.contacts.contactsid, //合作企业联系人表ID(收货信息)
-                "type": data.type, //订单类型
-                "typemx": data.typemx, // 明细分类,可选
-                "remarks": data.remarks,
-                "saler_hrid": data.saler_hrid, //销售人员hrid,业务员hrid
-                "tradefield": "消防", //必选
-                "pay_enterpriseid": data.pay_enterpriseid, //结算单位
-                "rebate_userate": data.accountclass.rebate_userate, //返利金使用比例
-                "rebate_used": data.accountclass.rebate_used, //默认0,是否使用返利金
-                "billdate": data.billdate, //单据日期,默认创建日期
-            };
-        if (content.type != '标准订单') {
-            //"sa_contractid": 1, 合同ID,标准订单不传
-            //"sa_projectid": 1, 工程项目表ID,标准订单不传
-        }
-        return new Promise((resolve, reject) => {
-            _Http.basic({
-                "id": 20221108111402,
-                content
-            }).then(res => {
-                console.log("修改订单数据", res);
-                if (res.msg != '成功') wx.showToast({
-                    title: res.msg,
-                    icon: "none"
-                });
-                resolve(res)
-            })
-        })
-    },
+	data: {
+		sa_orderid: null,
+		tabsActive: 0,
+		tabsList: [{
+			label: "产品明细",
+			icon: "icon-tabxiangxixinxi1"
+		}, {
+			label: "附件",
+			icon: "icon-tabgenjinjilu"
+		}, {
+			label: "订单进度",
+			icon: "icon-tabcaozuojilu1"
+		}, {
+			label: "发票",
+			icon: "icon-tabgenjinjilu"
+		}],
+	},
+	onLoad(options) {
+		this.setData({
+			sa_orderid: options.id
+		});
+		this.getDetail();
+	},
+	/* 获取详情 */
+	getDetail() {
+		_Http.basic({
+			"id": 20221108151302,
+			"content": {
+				"sa_orderid": this.data.sa_orderid
+			}
+		}).then(res => {
+			console.log("订单详情", res)
+			if (res.msg != '成功') return wx.showToast({
+				title: res.msg,
+				icon: "none"
+			});
+			this.setData({
+				detail: res.data
+			});
+			this.partialRenewal(true)
+		})
+	},
+	//tabs 切换
+	tabsChange({
+		detail
+	}) {
+		this.setData({
+			tabsActive: detail
+		});
+		this.partialRenewal();
+	},
+	//局部数据更新 tabs
+	partialRenewal(init = false) {
+		let id = this.data.detail.sa_orderid;
+		let model = '';
+		let name = this.data.tabsList[this.data.tabsActive].label;
+		switch (name) {
+			case "产品明细":
+				model = "#Product"
+				break;
+			case "附件":
+				model = "#Files"
+				break;
+		};
+		if (model) {
+			let Component = this.selectComponent(model);
+			const {
+				total,
+				pageNumber,
+				pageTotal
+			} = Component.data.content;
+			if (total == null || init) {
+				Component.getList(id, init);
+			} else if (pageNumber <= pageTotal) {
+				Component.getList(id, false);
+			} else {
+				//用来判断 在搜索页面修改,与tabs选项不一致 但是切换到该选项 重置数据
+			}
+		}
+	},
+	onReachBottom() {
+		this.partialRenewal();
+	},
+	/* 更新数据 */
+	changeDetail() {
+		let data = this.data.detail,
+			content = {
+				"sa_orderid": data.sa_orderid,
+				"sys_enterpriseid": data.sys_enterpriseid, //订货企业id
+				"sa_accountclassid": data.accountclass.sa_accountclassid || 0, //营销账户类型ID
+				"sa_brandid": data.sa_brandid, //品牌ID
+				"sys_enterprise_financeid": data.finance.sys_enterprise_financeid, //合作企业财务信息ID(开票信息)
+				"sa_logiscompid": data.logiscomp.sa_logiscompid, //物流公司档案ID
+				"rec_contactsid": data.contacts.contactsid || 0, //合作企业联系人表ID(收货信息)
+				"type": data.type, //订单类型
+				"typemx": data.typemx, // 明细分类,可选
+				"remarks": data.remarks,
+				"saler_hrid": data.saler_hrid, //销售人员hrid,业务员hrid
+				"tradefield": data.tradefield, //必选
+				"pay_enterpriseid": data.pay_enterpriseid, //结算单位
+				"rebate_userate": data.accountclass.rebate_userate, //返利金使用比例
+				"rebate_used": data.accountclass.rebate_used, //默认0,是否使用返利金
+				"billdate": data.billdate, //单据日期,默认创建日期
+			};
+		if (content.type != '标准订单') {
+			//"sa_contractid": 1, 合同ID,标准订单不传
+			//"sa_projectid": 1, 工程项目表ID,标准订单不传
+		}
+		return new Promise((resolve, reject) => {
+			_Http.basic({
+				"id": 20221108111402,
+				content
+			}).then(res => {
+				console.log("修改订单数据", res);
+				if (res.msg != '成功') wx.showToast({
+					title: res.msg,
+					icon: "none"
+				});
+				resolve(res)
+			})
+		})
+	},
 
-    /* 修改订单备注 */
-    changeRemarks(e) {
-        let value = e.detail.value,
-            remarks = this.data.detail.remarks,
-            that = this;
-        if (value == this.data.detail.remarks) return;
-        wx.showModal({
-            title: '提示',
-            content: '是否确定修改订单备注?',
-            complete: async (res) => {
-                if (res.cancel) that.setData({
-                    "detail.remarks": remarks
-                })
-                if (res.confirm) {
-                    let res = await that.changeDetail();
-                    that.setData({
-                        "detail.remarks": res.msg == '成功' ? value : remarks
-                    })
-                }
-            }
-        })
-    },
-    /* 设置是否使用返利金 */
-    async changeRebateUsed() {
-        this.setData({
-            "detail.accountclass.rebate_used": this.data.detail.accountclass.rebate_used == 0 ? 1 : 0
-        })
-        let res = await this.changeDetail();
-        if (res.msg != '成功') this.setData({
-            "detail.accountclass.rebate_used": this.data.detail.accountclass.rebate_used == 0 ? 1 : 0
-        });
-    },
+	/* 修改订单备注 */
+	changeRemarks(e) {
+		let value = e.detail.value,
+			remarks = this.data.detail.remarks,
+			that = this;
+		if (value == this.data.detail.remarks) return;
+		wx.showModal({
+			title: '提示',
+			content: '是否确定修改订单备注?',
+			complete: async (res) => {
+				if (res.cancel) that.setData({
+					"detail.remarks": remarks
+				})
+				if (res.confirm) {
+					let res = await that.changeDetail();
+					that.setData({
+						"detail.remarks": res.msg == '成功' ? value : remarks
+					})
+				}
+			}
+		})
+	},
+	/* 设置是否使用返利金 */
+	async changeRebateUsed() {
+		this.setData({
+			"detail.accountclass.rebate_used": this.data.detail.accountclass.rebate_used == 0 ? 1 : 0
+		})
+		let res = await this.changeDetail();
+		if (res.msg != '成功') this.setData({
+			"detail.accountclass.rebate_used": this.data.detail.accountclass.rebate_used == 0 ? 1 : 0
+		});
+	},
 })

+ 3 - 1
packageA/orderForm/detail.json

@@ -1,3 +1,5 @@
 {
-  "usingComponents": {}
+	"usingComponents": {
+		"Product": "./modules/product/index"
+	}
 }

+ 70 - 68
packageA/orderForm/detail.wxml

@@ -1,86 +1,88 @@
 <view class="intr">
-    <view class="num">
-        {{detail.sonum}}
-    </view>
-    <view class="tags">
-        <text wx:if="{{detail.brandname}}" style="background-color: #0079FE;">{{detail.brandname}}</text>
-        <text wx:if="{{detail.tradefield}}" style="background-color: #4BD863;">{{detail.tradefield}}</text>
-    </view>
-    <view class="exp">订单类型:{{detail.type}}</view>
-    <view class="exp">订单状态:{{detail.status}}</view>
-    <view class="exp">单据日期:{{detail.submitdate || '暂无'}}</view>
-    <view class="exp">创建日期:{{detail.createdate}}</view>
-    <view class="exp">核销状态:{{detail.writeoffstatus}}</view>
-    <view class="exp">开票状态:{{detail.invoicestatus}}</view>
-    <van-button custom-class='copy'>一键复制订单</van-button>
+	<view class="num">
+		{{detail.sonum}}
+	</view>
+	<view class="tags">
+		<text wx:if="{{detail.brandname}}" style="background-color: #0079FE;">{{detail.brandname}}</text>
+		<text wx:if="{{detail.tradefield}}" style="background-color: #4BD863;">{{detail.tradefield}}</text>
+	</view>
+	<view class="exp">订单类型:{{detail.type}}</view>
+	<view class="exp">订单状态:{{detail.status}}</view>
+	<view class="exp">单据日期:{{detail.submitdate || '暂无'}}</view>
+	<view class="exp">创建日期:{{detail.createdate}}</view>
+	<view class="exp">核销状态:{{detail.writeoffstatus}}</view>
+	<view class="exp">开票状态:{{detail.invoicestatus}}</view>
+	<van-button custom-class='copy'>一键复制订单</van-button>
 </view>
 
 <navigator url="#" class="box location">
-    <van-icon custom-class='icon' name="location" />
-    <view class="content">
-        <view class="name">
-            {{detail.contacts.name || '暂无'}}<text>{{detail.contacts.phonenumber}}</text>
-        </view>
-        <view class="address">
-            {{detail.contacts.address}}
-        </view>
-    </view>
-    <view class="iconfont icon-dibu-bianji" />
+	<van-icon custom-class='icon' name="location" />
+	<view class="content">
+		<view class="name">
+			{{detail.contacts.name || '暂无'}}<text>{{detail.contacts.phonenumber}}</text>
+		</view>
+		<view class="address">
+			{{detail.contacts.address}}
+		</view>
+	</view>
+	<view class="iconfont icon-dibu-bianji" />
 </navigator>
 
 <navigator url="#" class="box location">
-    <view class="content">
-        <view class="name">
-            开票单位
-        </view>
-        <view class="address">
-            {{detail.finance.enterprisename || '暂无'}}
-        </view>
-    </view>
-    <view class="iconfont icon-dibu-bianji" />
+	<view class="content">
+		<view class="name">
+			开票单位
+		</view>
+		<view class="address">
+			{{detail.finance.enterprisename || '暂无'}}
+		</view>
+	</view>
+	<view class="iconfont icon-dibu-bianji" />
 </navigator>
 
 <view class="box pay">
-    <view class="title">
-        支付信息
-    </view>
-    <navigator url="#" class="row">
-        <view class="label">结算人</view>
-        <view style="font-size: 28rpx;">
-            {{detail.finance.pay_enterprisename || '暂无'}}
-            <van-icon name="arrow" />
-        </view>
-    </navigator>
-    <navigator url="#" class="row">
-        <view class="label">支付账户</view>
-        <view style="font-size: 28rpx;">
-            {{detail.accountclass.accountname || '暂无'}}
-            <van-icon name="arrow" />
-        </view>
-    </navigator>
-    <navigator url="#" class="row" style="font-size: 0;" bindtap="changeRebateUsed">
-        <view class="label">是否使用返利金(余额:{{detail.accountclass.rebate_amount}})</view>
-        <checkbox checked="{{detail.accountclass.rebate_used==1}}" color='var(--assist)' />
-    </navigator>
-    <view class="row" wx:if="{{detail.accountclass.rebate_used==1}}">
-        <view class="label">返利金支付(最多订单金额20%)</view>
-        <input type="digit" class="remarks" placeholder-class='placeholder' value="{{detail.accountclass.rebate_amount}}" placeholder="使用金额" />
-    </view>
+	<view class="title">
+		支付信息
+	</view>
+	<navigator url="#" class="row">
+		<view class="label">结算人</view>
+		<view style="font-size: 28rpx;">
+			{{detail.finance.pay_enterprisename || '暂无'}}
+			<van-icon name="arrow" />
+		</view>
+	</navigator>
+	<navigator url="#" class="row">
+		<view class="label">支付账户</view>
+		<view style="font-size: 28rpx;">
+			{{detail.accountclass.accountname || '暂无'}}
+			<van-icon name="arrow" />
+		</view>
+	</navigator>
+	<navigator url="#" class="row" style="font-size: 0;" bindtap="changeRebateUsed">
+		<view class="label">是否使用返利金(余额:{{detail.accountclass.rebate_amount}})</view>
+		<checkbox checked="{{detail.accountclass.rebate_used==1}}" color='var(--assist)' />
+	</navigator>
+	<view class="row" wx:if="{{detail.accountclass.rebate_used==1}}">
+		<view class="label">返利金支付(最多订单金额20%)</view>
+		<input type="digit" class="remarks" placeholder-class='placeholder' value="{{detail.accountclass.rebate_amount}}" placeholder="使用金额" />
+	</view>
 </view>
 
 <view class="box" style="padding: 10rpx 30rpx;">
-    <view class="row">
-        <view class="label">订单备注</view>
-        <textarea class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" value="{{detail.remarks}}" auto-height placeholder="订单备注" />
-    </view>
-    <navigator url="#" class="row" style="font-size: 0;">
-        <view class="label">是否需要回签单</view>
-        <checkbox checked="{{true}}" color='var(--assist)' />
-    </navigator>
+	<view class="row">
+		<view class="label">订单备注</view>
+		<textarea class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" value="{{detail.remarks}}" auto-height placeholder="订单备注" />
+	</view>
+	<navigator url="#" class="row" style="font-size: 0;">
+		<view class="label">是否需要回签单</view>
+		<checkbox checked="{{true}}" color='var(--assist)' />
+	</navigator>
 </view>
 
 <view style="height: 20rpx;" />
 
 <Yl_FunTabs list='{{tabsList}}' active='{{tabsActive}}' bind:onChenge="tabsChange">
-    站务数据
-</Yl_FunTabs>
+	<Product slot='产品明细' id='Product' />
+	<view style="height: 40rpx;" />
+</Yl_FunTabs>
+

+ 184 - 0
packageA/orderForm/modules/product/index.js

@@ -0,0 +1,184 @@
+const _Http = getApp().globalData.http,
+	file = require("../../../../utils/FormatTheAttachment");
+let queue = [],
+	downCounter = null;
+Component({
+	properties: {
+		disabled: Boolean, //禁用
+	},
+	data: {
+		sa_orderid: 0,
+		"content": {
+			nocache: true,
+			"pageNumber": 1,
+			pageTotal: 1,
+			total: null
+		}
+	},
+	lifetimes: {
+		detached: function () {
+			if (downCounter) {
+				clearTimeout(downCounter);
+				this.changeItem(queue)
+			}
+		},
+	},
+	methods: {
+		/* 获取产品列表 */
+		getList(id, init) {
+			let content = this.data.content;
+			content.sa_orderid = id;
+			
+			if (init) content.pageNumber = 1;
+			_Http.basic({
+				"id": "20221109093902",
+				content
+			}).then(res => {
+				console.log("订货清单列表", res)
+				if (res.msg != '成功') return wx.showToast({
+					title: res.msg,
+					icon: "none"
+				})
+				res.data = res.data.map(value => {
+					if (value.attinfos.length != 0) {
+						value.attinfos = file.fileList(value.attinfos)
+						let image = value.attinfos.find(v => v.fileType == "image");
+						value.cover = image ? image.cover : "";
+					}
+					return value;
+				})
+				let page = getCurrentPages().find(v => v.__route__ == 'packageA/orderForm/detail').data.detail;
+				let base = {
+					sa_orderid: page.sa_orderid,
+					sys_enterpriseid: page.sys_enterpriseid,
+					sa_contractid: page.sa_contractid,
+					type: page.type,
+				};
+				this.setData({
+					list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+					"content.pageNumber": res.pageNumber + 1,
+					"content.pageSize": res.pageSize,
+					"content.pageTotal": res.pageTotal,
+					"content.total": res.total,
+					sa_orderid: id,
+					base
+				})
+			})
+		},
+		/* 修改 */
+		changeProduct({
+			detail
+		}) {
+			_Http.basic({
+				"id": 20221109093602,
+				"content": {
+					...this.data.base,
+					"items": [detail]
+				}
+			}).then(res => {
+				console.log("产品修改", res)
+				let obj = detail,
+					index = this.data.list.findIndex(v => v.itemid == detail.itemid);
+
+				if (res.msg != '成功') {
+					wx.showToast({
+						title: res.msg,
+						icon: "none"
+					});
+					obj = this.data.list[index];
+				};
+				this.data.list[index] = {
+					...this.data.list[index],
+					...obj
+				};
+				this.setData({
+					[`list[${index}]`]: this.data.list[index]
+				})
+			})
+
+		},
+		/* 删除 */
+		deleteItem({
+			detail
+		}) {
+			let that = this;
+			wx.showModal({
+				title: '提示',
+				content: `是否确认删除“${detail.itemname}”?`,
+				complete: (res) => {
+					if (res.confirm) _Http.basic({
+						"id": 20221108152102,
+						"content": {
+							"sa_orderids": [
+								detail.sa_orderid
+							],
+							"deletereason": "" //删除原因,可选
+						},
+						"accesstoken": "bde1f111b04ad5fbd8a4b0803e0d6df6"
+					}).then(s => {
+						if (s.msg != '成功') return wx.showToast({
+							title: res.msg,
+							icon: "none"
+						});
+						that.setData({
+							list: that.data.list.filter(v => v.itemid != detail.itemid)
+						})
+					})
+				}
+			})
+		},
+		/* 去添加产品 */
+		addProduct() {
+			wx.navigateTo({
+				url: `/select/product/index?params=${JSON.stringify({
+					"id": 20221109153502,
+					"content": {
+						nocache:true,
+						"sa_orderid": this.data.sa_orderid, //订单ID
+						"pageNumber": 1,
+						"pageTotal": 1,
+						"total": 0,
+						"pageSize": 20,
+						"where": {
+							"condition": ""
+						}
+					}
+				})}`
+			});
+			getApp().globalData.handleSelect = this.handleSelect.bind(this);
+		},
+		/* 处理新增产品 */
+		handleSelect(detail) {
+			let that = this;
+			wx.showModal({
+				title: '提示',
+				content: `是否确认添加${detail.result.length}件商品?`,
+				complete: (res) => {
+					if (res.confirm) _Http.basic({
+						"id": 20221109093602,
+						"content": {
+							...that.data.base,
+							"items": detail.list.map(v => {
+								return {
+									sa_orderitemsid: 0,
+									"itemid": v.itemid, //商品ID
+									"qty": 1, //数量
+								}
+							})
+						}
+					}).then(s => {
+						console.log('新增产品', s)
+						wx.showToast({
+							title: res.msg == '成功' ? '添加成功' : res.msg,
+							icon: "none"
+						});
+						if (res.msg == '成功') setTimeout(() => {
+							that.getList(that.data.sa_orderid, true);
+							wx.navigateBack();
+						}, 300)
+					})
+				}
+			});
+		}
+	}
+})

+ 6 - 0
packageA/orderForm/modules/product/index.json

@@ -0,0 +1,6 @@
+{
+    "component": true,
+    "usingComponents": {
+        "List": "./list/index"
+    }
+}

+ 1 - 0
packageA/orderForm/modules/product/index.scss

@@ -0,0 +1 @@
+@import "../../../../static/common-head.scss";

+ 10 - 0
packageA/orderForm/modules/product/index.wxml

@@ -0,0 +1,10 @@
+<view class="head">
+  <view class="count">产品明细</view>
+  <view class="expand">
+    <navigator url="#" class="but" bindtap="addProduct">
+      <van-icon name="plus" />
+    </navigator>
+  </view>
+</view>
+
+<List list='{{list}}' bindchangeProduct='changeProduct' binddeleteItem="deleteItem" />

+ 46 - 0
packageA/orderForm/modules/product/list/index.js

@@ -0,0 +1,46 @@
+Component({
+  properties: {
+    list: Array,
+    deleteItem: Function,
+    changeProduct: Function, //修改队列
+    disabled: Boolean
+  },
+  options: {
+    addGlobalClass: true
+  },
+  methods: {
+    onBlur(e) {
+      let {
+        data,
+        name
+      } = e.currentTarget.dataset;
+      this.triggerEvent("changeProduct", {
+        "sa_orderitemsid": data.sa_orderitemsid,
+        "itemid": data.itemid,
+        "qty": name == 'qty' ? e.detail.value : data.qty,
+        "remarks": name == 'remarks' ? e.detail.value : data.remarks,
+        needdate: data.needdate || "",
+        deliverydate: data.deliverydate || ""
+      })
+    },
+    changeDate(e) {
+      let {
+        data
+      } = e.currentTarget.dataset;
+      this.triggerEvent("changeProduct", {
+        "sa_orderitemsid": data.sa_orderitemsid,
+        "itemid": data.itemid,
+        "qty": data.qty,
+        "remarks": data.remarks,
+        needdate: e.detail.value || "",
+        deliverydate: data.deliverydate || ""
+      })
+    },
+    deleteProduct(e) {
+      let {
+        item
+      } = e.currentTarget.dataset;
+      this.triggerEvent("deleteItem", item)
+    }
+  }
+})

+ 5 - 0
packageA/orderForm/modules/product/list/index.json

@@ -0,0 +1,5 @@
+{
+    "component": true,
+    "usingComponents": {
+    }
+}

+ 168 - 0
packageA/orderForm/modules/product/list/index.scss

@@ -0,0 +1,168 @@
+.product-item {
+  background-color: #fff;
+  box-sizing: border-box;
+  border-bottom: 1rpx solid #DDDDDD;
+  margin-bottom: 20rpx;
+
+  .product {
+    padding: 20rpx 30rpx;
+    box-sizing: border-box;
+
+    .mian {
+      position: relative;
+      display: flex;
+      width: 100%;
+      box-sizing: border-box;
+
+      .img {
+        flex-shrink: 0;
+        width: 112rpx;
+        height: 112rpx;
+        border-radius: 16rpx;
+        margin-right: 20rpx;
+        overflow: hidden;
+
+        .err {
+          display: flex;
+          width: 100%;
+          height: 100%;
+          align-items: center;
+          justify-content: center;
+          font-size: 22rpx;
+          border: 1px solid #ddd;
+          box-sizing: border-box;
+          color: #666;
+        }
+      }
+
+      .dec {
+        flex: 1;
+        width: 0;
+        min-height: 128rpx;
+        height: 100%;
+        font-size: 24rpx;
+        font-family: PingFang SC-Regular, PingFang SC;
+        color: #999999;
+
+        .title {
+          display: flex;
+          width: 90%;
+          height: 40rpx;
+          font-size: 28rpx;
+          font-weight: 600;
+          color: #333333;
+
+          .line-1 {
+            max-width: 380rpx;
+          }
+
+          .tag {
+            display: inline-block;
+            color: #fff;
+            background-color: #F80700;
+            padding: 0 20rpx;
+            margin-left: 20rpx;
+            border-radius: 20rpx;
+            font-weight: normal;
+            font-size: 22rpx;
+            line-height: 40rpx;
+          }
+        }
+
+        .subfield {
+          display: flex;
+          margin-top: 8rpx;
+          height: 34rpx;
+          line-height: 34rpx;
+
+          text {
+            display: inline-block;
+            width: 48%;
+          }
+        }
+
+        .price {
+          font-size: 30rpx;
+          color: #FF3B30;
+        }
+
+        .old-price {
+          font-size: 24rpx;
+          font-family: PingFang SC-Regular, PingFang SC;
+          color: #999999;
+          margin-left: 8rpx;
+          text-decoration-line: line-through;
+        }
+
+      }
+
+      .delete {
+        position: absolute;
+        width: 68rpx;
+        height: 68rpx;
+        line-height: 68rpx;
+        right: -30rpx;
+        top: -20rpx;
+        text-align: center;
+        font-size: 32rpx;
+        color: #999;
+      }
+    }
+  }
+
+  .bot {
+    width: 690rpx;
+    border-top: 1rpx solid #ddd;
+    margin: 0 auto;
+    padding-bottom: 20rpx;
+
+    .row {
+      display: flex;
+      width: 100%;
+      margin-top: 20rpx;
+
+      view {
+        display: flex;
+        height: 54rpx;
+        align-items: center;
+
+        .label {
+          width: 144rpx;
+          font-size: 24rpx;
+          font-family: PingFang SC-Regular, PingFang SC;
+          color: #666666;
+          text-align-last: justify;
+        }
+      }
+
+      .input {
+        height: 54rpx;
+        background: #FFFFFF;
+        border-radius: 8rpx;
+        border: 1rpx solid #CCCCCC;
+        font-size: 28rpx;
+        font-family: PingFang SC-Regular, PingFang SC;
+        color: #333333;
+        line-height: 44px;
+        text-align: center;
+      }
+
+      .money {
+        flex: 1;
+        display: flex;
+        justify-content: flex-end;
+        font-size: 24rpx;
+        font-family: PingFang SC-Medium, PingFang SC;
+        color: #666666;
+        margin-right: 20rpx;
+
+        text {
+          font-size: 28rpx;
+          color: #FF3B30;
+          font-weight: 600;
+        }
+      }
+
+    }
+  }
+}

+ 74 - 0
packageA/orderForm/modules/product/list/index.wxml

@@ -0,0 +1,74 @@
+<view class="product-item" wx:for="{{list}}" wx:key="item.sa_quotedprice_itemsid">
+  <navigator class="product" url="#">
+    <view class="mian">
+      <view class="img" data-file="{{item.attinfos}}" catchtap="viewImage">
+        <van-image width="100%" height="100%" wx:if="{{item.cover}}" src="{{item.cover}}" use-loading-slot lazy-load>
+          <van-loading slot="loading" type="spinner" size="20" vertical />
+        </van-image>
+        <text wx:else class="err">暂无图片</text>
+      </view>
+      <view class="dec">
+        <view class="title">
+          <text class="line-1">{{item.itemname}}</text>
+          <text class="tag" wx:if="{{item.stockstatus}}">{{item.stockstatus}}</text>
+        </view>
+        <view class="subfield">
+          编号:{{item.itemno}}
+        </view>
+        <view class="subfield">
+          <text class="line-1" style="margin-right: 6rpx;">型号:{{item.model||' --'}}</text>
+          <text class="line-1">规格:{{item.spec||' --'}}</text>
+        </view>
+        <view class="subfield">
+          <text class="line-1" style="margin-right: 6rpx;">材质:{{item.material||' --'}}</text>
+          <text class="line-1">标准:{{item.standards||' --'}}</text>
+        </view>
+        <view class="subfield">
+          <text class="line-1" style="margin-right: 6rpx;">已发数量:{{item.deliedqty||' --'}}</text>
+          <text class="line-1" style="margin-right: 6rpx;">可退数量:{{item.returnqty||' --'}}</text>
+        </view>
+        <view style="margin-top: 8rpx;">
+          <text class="price">¥{{item.price}}</text>
+          <text class="old-price">¥{{item.marketprice}}</text>
+        </view>
+      </view>
+      <view class="delete" data-item="{{item}}" catchtap="deleteProduct">
+        <text class="iconfont icon-guanlian-shanchu" />
+      </view>
+    </view>
+  </navigator>
+  <view class="bot">
+    <view class="row">
+      <view>
+        <view class="label">数量<text wx:if="{{item.auxunit}}">({{item.auxunit}})</text>:</view>
+        <input class="input" style="width: 240rpx;" type="digit" value="{{item.qty}}" data-name="qty" data-data="{{item}}" bindblur="onBlur" />
+      </view>
+      <view class="money">
+        金额:<text>¥{{item.amount}}</text>
+      </view>
+    </view>
+
+    <view class="row">
+      <view style="width: 100%;">
+        <view class="label">产品备注:</view>
+        <input class="input" style="flex: 1; text-align: left;padding-left: 10rpx;" type="text" placeholder="备注" value="{{item.remarks}}" data-name="remarks" data-data="{{item}}" bindblur="onBlur" />
+      </view>
+    </view>
+
+    <view class="row">
+      <view>
+        <view class="label">期望交期:</view>
+        <picker mode="date" data-data="{{item}}" bindchange='changeDate'>
+          <view class="input" style="width: 240rpx;display: flex;justify-content: center;">
+            <text wx:if="{{item.needdate }}">{{item.needdate}}</text>
+            <text wx:else style="color: #999;">期望交期</text>
+          </view>
+        </picker>
+      </view>
+      <view class="money">
+        回复交期:{{item.deliverydate || ' --'}}
+      </view>
+    </view>
+  </view>
+</view>
+<Yl_Empty wx:if="{{list.length==0}}" />

+ 1 - 48
project.private.config.json

@@ -6,52 +6,5 @@
     "urlCheck": false
   },
   "libVersion": "2.26.2",
-  "condition": {
-    "miniprogram": {
-      "list": [
-        {
-          "name": "商城",
-          "pathName": "packageA/market/index",
-          "query": "",
-          "launchMode": "default",
-          "scene": null
-        },
-        {
-          "name": "商城",
-          "pathName": "packageA/market/index",
-          "query": "",
-          "launchMode": "default",
-          "scene": null
-        },
-        {
-          "name": "产品详情",
-          "pathName": "packageA/market/detail",
-          "query": "",
-          "launchMode": "default",
-          "scene": null
-        },
-        {
-          "name": "列表",
-          "pathName": "packageA/market/index",
-          "query": "",
-          "launchMode": "default",
-          "scene": null
-        },
-        {
-          "name": "购物车",
-          "pathName": "packageA/shopping/index",
-          "query": "",
-          "launchMode": "default",
-          "scene": null
-        },
-        {
-          "name": "订单详情",
-          "pathName": "packageA/orderForm/detail",
-          "query": "id=12",
-          "launchMode": "default",
-          "scene": null
-        }
-      ]
-    }
-  }
+  "condition": {}
 }