Kaynağa Gözat

标准订单添加关联项目

xiaohaizhao 3 ay önce
ebeveyn
işleme
4d634b8ff9

+ 54 - 9
packageA/orderForm/detail.js

@@ -40,7 +40,8 @@ Page({
             isRecall: checkPermission("recall"),
             isSure: checkPermission("sure"),
             ProductFile: checkPermission("ProductFile"),
-            siteid: wx.getStorageSync('userMsg').siteid
+            siteid: wx.getStorageSync('userMsg').siteid,
+            setproject:checkPermission("setproject"),
         });
         this.getDetail(true);
         //销售分类
@@ -381,6 +382,55 @@ Page({
             }
         })
     },
+    /* 设置项目 */
+    selectProject() {
+        if (this.isEdit()) return;
+        wx.navigateTo({
+            url: `/select/project/index?params=${JSON.stringify({ 
+				"id":2026011416113702,
+				"content": {
+					nocache:true,
+					sys_enterpriseid:2784||this.data.detail.sys_enterpriseid,
+					"pageNumber": 1, 
+					"pageTotal": 1, 
+					"pageSize": 20,
+					"where": {
+						"condition": ""
+						}, 
+				}
+			 })}&radio=true`,
+        });
+        let that = this;
+        getApp().globalData.handleSelect = function ({
+            item
+        }) {
+            wx.showModal({
+                cancelText: getApp().globalData.Language.getMapText('取消'),
+                confirmText: getApp().globalData.Language.getMapText('确定'),
+                title: getApp().globalData.Language.getMapText('提示'),
+                content: getApp().globalData.Language.getMapText('是否确定关联项目') + ':' + item.projectname,
+                complete: ({
+                    confirm
+                }) => {
+                    if (confirm) {
+                        that.data.detail.sa_projectid = item.sa_projectid;
+                        that.changeDetail().then(s => {
+                            if (s.code == '1') {
+                                wx.showToast({
+                                    title: getApp().globalData.Language.getMapText('关联成功'),
+                                    icon: "none"
+                                });
+                                setTimeout(() => {
+                                    wx.navigateBack();
+                                    that.getDetail();
+                                }, 500)
+                            }
+                        })
+                    }
+                }
+            })
+        }.bind(this)
+    },
     //tabs 切换
     tabsChange({
         detail
@@ -419,6 +469,7 @@ Page({
                 "sys_enterpriseid": data.sys_enterpriseid, //订货企业id
                 "sa_accountclassid": data.accountclass.sa_accountclassid || 0, //营销账户类型ID
                 projectnote: data.projectnote || "", //项目备注
+                sa_projectid: data.sa_projectid || 0, //关联项目
                 "sa_brandid": data.sa_brandid, //品牌ID
                 "sys_enterprise_financeid": data.sys_enterprise_financeid || 0, //合作企业财务信息ID(开票信息)
                 //"sa_logiscompid": data.logiscomp.sa_logiscompid || 0, 物流公司档案ID
@@ -451,7 +502,7 @@ Page({
             })
         })
     },
-    /* 修改订单备注 */
+    /* 修改对外备注 */
     changeRemarks(e) {
         let name = e.currentTarget.dataset.name,
             value = e.detail.value,
@@ -464,13 +515,7 @@ Page({
             title: getApp().globalData.Language.getMapText('提示'),
             content: getApp().globalData.Language.joint([{
                 t: 1,
-                v: '是否确定修改',
-                r: " "
-            }, {
-                t: 1,
-                v: name == 'remarks' ? '订单' : '项目',
-                f: "“",
-                r: "”"
+                v: '是否确定修改'
             }, {
                 t: 1,
                 v: '备注',

+ 13 - 2
packageA/orderForm/detail.wxml

@@ -99,9 +99,20 @@
 		<textarea disabled="{{detail.status!='新建'||detail.type=='特殊订单'}}" bindtap="isEdit" class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" data-name="projectnote" value="{{detail.projectnote}}" auto-height placeholder="{{language['项目备注']||'项目备注'}}" />
 	</view>
 	<view class="row">
-		<view class="label">{{language['订单备注']||'订单备注'}}</view>
-		<textarea disabled="{{detail.status!='新建'||detail.type=='特殊订单'}}" bindtap="isEdit" class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" data-name="remarks" value="{{detail.remarks}}" auto-height placeholder="{{language['订单备注']||'订单备注'}}" />
+		<view class="label">{{language['对外备注']||'对外备注'}}</view>
+		<textarea disabled="{{detail.status!='新建'||detail.type=='特殊订单'}}" bindtap="isEdit" class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" data-name="remarks" value="{{detail.remarks}}" auto-height placeholder="{{language['对外备注']||'对外备注'}}" />
 	</view>
+	<view class="row">
+		<view class="label">{{language['对内备注']||'对内备注'}}</view>
+		<textarea disabled="{{detail.status!='新建'||detail.type=='特殊订单'}}" bindtap="isEdit" class="remarks" placeholder-class='placeholder' bindblur="changeRemarks" data-name="remarks_in" value="{{detail.remarks_in}}" auto-height placeholder="{{language['对内备注']||'对内备注'}}" />
+	</view>
+	<navigator wx:if="{{detail.type=='标准订单' && setproject}}" url="#" class="row" bindtap="selectProject">
+		<view class="label">{{language['关联项目']||'关联项目'}}</view>
+		<view style="font-size: 28rpx;">
+			{{detail.projectname ? detail.projectname :language['前往设置']|| '前往设置'}}
+			<van-icon name="arrow" />
+		</view>
+	</navigator>
 	<view class="row">
 		<view class="label">{{language['回签单']||'回签单'}}</view>
 		<van-radio-group direction='horizontal' disabled="{{detail.status!='新建'|| detail.type=='特殊订单' || siteid=='HY'}}" value="{{ detail.signbackstatus }}" bind:change="changeSignbackstatus">

+ 1 - 1
packageA/orderForm/index.wxml

@@ -4,7 +4,7 @@
 <van-tabs active="{{ active }}" color='var(--assist)' title-active-color='var(--assist)' bind:change="tabsChange">
     <van-tab name="全部" title="{{language['全部']||'全部'}}" />
     <van-tab name="新建" title="{{language['新建']||'新建'}}" />
-    <van-tab name="预提交" title="{{language['预提交']||'预提交'}}" />
+    <!-- <van-tab name="预提交" title="{{language['预提交']||'预提交'}}" /> -->
     <van-tab name="提交" title="{{language['提交']||'提交'}}" />
     <van-tab name="待确认" title="{{language['待确认']||'待确认'}}" />
     <van-tab name="交期确认" title="{{language['交期确认']||'交期确认'}}" />

+ 124 - 0
select/project/index.js

@@ -0,0 +1,124 @@
+const _Http = getApp().globalData.http;
+import currency from "../../utils/currency";
+const CNY = num => currency(num, {
+    symbol: "¥",
+    precision: 2
+}).format();
+
+Page({
+    data: {
+        loading: true,
+        params: {}, //请求体
+        result: [], //返回结果
+        radio: false, //是否为单选
+        idname: "sa_projectid", //idkey
+        showName: "billno"
+    },
+    onLoad(options) {
+        if (options.item) {
+            let item = JSON.parse(options.item);
+            this.setData({
+                item,
+                params: item.params
+            });
+        }
+        if (options.params) this.setData({
+            params: JSON.parse(options.params)
+        });
+        this.setData({
+            radio: options.radio ? true : false,
+            idname: options.idname || this.data.idname,
+            showName: options.showName || this.data.showName,
+        });
+        this.getList()
+        getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    },
+    getList(init = false) {
+        //init 用于初始化分页
+        if (init.detail != undefined) init = init.detail;
+        let params = this.data.params;
+        if (init) params.content.pageNumber = 1
+        if (params.content.pageNumber > params.content.pageTotal) return;
+
+        _Http.basic(params).then(res => {
+            console.log("选择项目列表", res)
+            this.selectComponent('#ListBox').RefreshToComplete();
+            if (res.code != '1') return wx.showToast({
+                title: res.msg,
+                icon: "none"
+            })
+            res.data = res.data.map(v => {
+                v.signamount_due = CNY(v.signamount_due)
+                return v
+            })
+
+            this.setData({
+                'params.content.pageNumber': res.pageNumber + 1,
+                'params.content.pageTotal': res.pageTotal,
+                'params.content.total': res.total,
+                list: res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+                loading: false
+            })
+        })
+    },
+    /* 选中 */
+    changeResult(e) {
+        let {
+            id
+        } = e.currentTarget.dataset, result = this.data.result;
+        if (this.data.radio) {
+            result = [id];
+        } else {
+            result.some(v => v == id) ? result = result.filter(v => v != id) : result.push(id)
+        }
+        this.setData({
+            result
+        });
+        if (this.data.radio) this.submit();
+    },
+    /* 提交 */
+    submit() {
+        let result = this.data.result,
+            obj = this.data.radio ? {
+                id: result,
+                item: this.data.list.find(value => value[this.data.idname] == result),
+                value: [this.data.list.find(value => value[this.data.idname] == result)[this.data.showName], result]
+            } : {
+                result,
+                list: result.map(v => this.data.list.find(value => value[this.data.idname] == v)),
+                value: [result.map(v => {
+                    let data = this.data.list.find(value => value[this.data.idname] == v);
+                    return data ? data[this.data.showName] : ""
+                }), result]
+            }
+        getApp().globalData.handleSelect && getApp().globalData.handleSelect(obj)
+    },
+    /* 开始搜索 */
+    startSearch({
+        detail
+    }) {
+        let condition = this.data.content ? this.data.content.where.condition : this.data.params.content.where.condition;
+        if (detail == condition) return;
+        this.setData({
+            'content.where.condition': detail,
+            'params.content.where.condition': detail
+        });
+        this.getList(true);
+    },
+    /* 取消搜索 */
+    onClear() {
+        this.setData({
+            'content.where.condition': "",
+            'params.content.where.condition': ""
+        });
+        this.getList(true);
+    },
+    onReady() {
+        this.selectComponent("#ListBox").setHeight(".total", this);
+    },
+    onUnload() {
+        //回收数据
+        getApp().globalData.handleSelect = null;
+
+    }
+})

+ 3 - 0
select/project/index.json

@@ -0,0 +1,3 @@
+{
+  "usingComponents": {}
+}

+ 79 - 0
select/project/index.scss

@@ -0,0 +1,79 @@
+page {
+	height: 100vh;
+	overflow: hidden;
+}
+
+.total {
+	height: 60rpx;
+	line-height: 60rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	color: #666666;
+	padding-left: 30rpx;
+}
+
+.item {
+	display: flex;
+	align-items: center;
+	width: 100vw;
+	padding: 20rpx 30rpx;
+	background-color: #FFFFFF;
+	box-sizing: border-box;
+	border-bottom: 1rpx solid #DDDDDD;
+	margin-bottom: 20rpx;
+	overflow: hidden;
+
+	.main {
+		width: 100%;
+		padding-right: 20rpx;
+		box-sizing: border-box;
+
+		.title {
+			height: 40rpx;
+			line-height: 40rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC-Semibold, PingFang SC;
+			font-weight: 600;
+			color: #333333;
+		}
+
+		.subfield {
+			margin-top: 6rpx;
+			height: 34rpx;
+			line-height: 34rpx;
+			font-size: 24rpx;
+			color: #999999;
+		}
+	}
+}
+
+.footer {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	padding: 0 30rpx;
+	position: fixed;
+	width: 100vw;
+	height: 130rpx;
+	background: #FFFFFF;
+	box-shadow: 0px -4rpx 16rpx 2rpx rgba(150, 157, 165, 0.16);
+	bottom: 0;
+	box-sizing: border-box;
+
+	.count {
+		font-size: 28rpx;
+		font-family: PingFang SC-Regular, PingFang SC;
+		color: #333333;
+	}
+
+	.but {
+		width: 156rpx;
+		height: 90rpx;
+		background: #3874F6;
+		border-radius: 8rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC-Bold, PingFang SC;
+		font-weight: bold;
+		color: #FFFFFF;
+	}
+}

+ 45 - 0
select/project/index.wxml

@@ -0,0 +1,45 @@
+
+<van-search class="search" value="{{ params.content.where.condition }}" shape="round" placeholder="{{language['关键字']||'请输入搜索关键词'}}" bind:search='startSearch' bind:clear='onClear' />
+<view class="total">{{language['共']||'共'}}{{params.content.total}}{{language['个']||'个'}}</view>
+
+<Yl_ListBox id='ListBox' bind:getlist='getList'>
+	<navigator class="item" url="#" wx:for="{{list}}" wx:key="itemno" data-id="{{item[idname]}}" bindtap="changeResult">
+		<van-checkbox wx:if="{{!radio}}" value="{{ handle.isCheck(item[idname],result) }}" shape="square" icon-size='28rpx' />
+		<view class="main" style="padding-left: {{!radio?'10rpx':''}};">
+			<view class="title line-1">{{item.projectname}}</view>
+			<view class="subfield line-1">
+				{{language['项目编号']||'项目编号'}}:{{item.projectnum || ' --'}}
+                <text style="margin-left: 30rpx;">{{language['负责人']||'负责人'}}:{{item.leader[0].name || ' --'}}</text>
+			</view>
+			<view class="subfield line-1">
+				{{language['项目阶段']||'项目阶段'}}:{{item.stagename || " --"}}
+			</view>
+			<view class="subfield line-1">
+				{{language['预计签约金额']||'预计签约金额'}}:{{item.signamount_due || " --"}}
+			</view>
+			<view class="subfield line-1">
+				{{language['预计签约时间']||'预计签约时间'}}:{{item.signdate_due || ' --'}}
+			</view>
+		</view>
+	</navigator>
+	<view wx:if="{{!radio}}" style="height: 130rpx;" />
+	<Yl_Empty wx:if="{{list.length==0}}" />
+</Yl_ListBox>
+
+<block wx:if="{{!radio}}">
+	<view class="footer">
+		<view class="count">
+			{{language['已选']||'已选'}}:{{result.length}}
+		</view>
+		<van-button custom-class='but' disabled='{{result.length==0}}' bind:click="submit">{{language['确定']||'确定'}}</van-button>
+	</view>
+	<wxs module="handle">
+		module.exports = {
+			isCheck: function (id, list) {
+				return list.some(function (v) {
+					return v == id
+				});
+			},
+		}
+	</wxs>
+</block>