xiaohaizhao 9 hónapja
szülő
commit
4fccdb6113

+ 2 - 1
app.json

@@ -74,7 +74,8 @@
         "contract/index",
         "activity/index",
         "orderFormLine/index",
-        "contacts/index"
+        "contacts/index",
+        "address/addAndEdit"
       ]
     },
     {

+ 11 - 0
pages/tabbar/mine/index.wxml

@@ -33,6 +33,17 @@
     </view>
 </block>
 <view class='operating' hover>
+    <navigator class="item" url="/pages/tabbar/mine/address/index?id={{userMsg.enterprise.sys_enterpriseid}}">
+        <view class="con">
+            <view class="label">
+                <text class="iconfont icon-a-wodemendianxinxidizhi" style="color: #085CDF;" />
+                {{language['我的地址']||'我的地址'}}
+            </view>
+            <view class="item-right">
+                <van-icon size='30rpx' name="arrow" />
+            </view>
+        </view>
+    </navigator>
     <navigator class="item" url="{{item.name=='团队管理'?item.path+'?auth='+teamAuth:item.path}}" wx:for="{{pathList}}">
         <view class="con">
             <view class="label">

+ 9 - 2
project.private.config.json

@@ -9,12 +9,19 @@
   "condition": {
     "miniprogram": {
       "list": [
+        {
+          "name": "123123",
+          "pathName": "packageA/orderForm/detail",
+          "query": "id=70373",
+          "scene": null,
+          "launchMode": "default"
+        },
         {
           "name": "Eservice/installConfirmBill/index",
           "pathName": "Eservice/installConfirmBill/index",
           "query": "id=691",
-          "scene": null,
-          "launchMode": "default"
+          "launchMode": "default",
+          "scene": null
         },
         {
           "name": "Eservice/trainConfirmBill/index",

+ 135 - 0
select/address/addAndEdit.js

@@ -0,0 +1,135 @@
+const _Http = getApp().globalData.http;
+Page({
+  data: {
+    form: [{
+      label: "联系人",
+      error: false,
+      errMsg: "",
+      type: "text",
+      value: "",
+      placeholder: "联系人",
+      valueName: "name",
+      required: true,
+      checking: "base"
+    }, {
+      label: "联系方式",
+      error: false,
+      errMsg: "",
+      type: "number",
+      value: "",
+      placeholder: "联系方式",
+      valueName: "phonenumber",
+      required: true,
+      checking: "phone"
+    }, {
+      label: "省市县",
+      error: false,
+      errMsg: "",
+      type: "region",
+      value: [],
+      placeholder: "省,市,县",
+      valueName: "region",
+      required: true
+    }, {
+      label: "详细地址",
+      error: false,
+      errMsg: "",
+      type: "textarea",
+      value: "",
+      placeholder: "例: 科创园11栋1103室",
+      valueName: "address",
+      required: false,
+      checking: "base"
+    }, {
+      label: "备注",
+      error: false,
+      errMsg: "",
+      type: "textarea",
+      value: "",
+      placeholder: "备注",
+      valueName: "remarks",
+      required: false,
+      checking: "base"
+    }],
+    disabled: true,
+    "content": {
+      "contactsid": 0, //地址id
+      "sys_enterpriseid": 0, //绑定数据
+      "sex": "",
+      "depname": "",
+      "position": "",
+      "isleader": 0,
+      "birthday": "",
+      "email": "",
+      "remarks": "",
+      "workaddress": 1,
+      "isdefault": 0, //是否默认地址
+      "isprimary": 0 //是否为主地址
+    },
+    tags: [],
+  },
+  onLoad(options) {
+    getApp().globalData.Language.getLanguagePackage(this, '填写地址');
+    if (options.sys_enterpriseid) this.setData({
+      "content.sys_enterpriseid": options.sys_enterpriseid
+    })
+    if (options.data) {
+      let item = JSON.parse(options.data)
+      this.setData({
+        content: {
+          ...this.data.content,
+          ...item
+        },
+        "content.isdefault": item.isdefault,
+        'form[0].value': item.name,
+        'form[1].value': item.phonenumber,
+        'form[2].value': item.city ? [item.province, item.city, item.county] : "",
+        'form[3].value': item.address,
+        'form[4].value': item.remarks,
+        'content.isdefault': item.isdefault,
+        "disabled": false
+      })
+    };
+  },
+  /* 提交数据 */
+  submit() {
+    let data = this.selectComponent("#Form").submit();
+    if (!data || this.data.disabled) return;
+    const content = {
+      ...this.data.content,
+      ...data,
+      "province": data.region[0],
+      "city": data.region[1],
+      "county": data.region[2],
+    };
+    delete(content.region);
+    _Http.basic({
+      "id": "20221009155703",
+      content
+    }).then(res => {
+      console.log('新建地址', res)
+      wx.showToast({
+        title: res.code != '1' ? res.data : getApp().globalData.Language.getMapText('新建成功'),
+        icon: "none",
+        mask: res.code != '1'
+      });
+      if (res.code == '1') setTimeout(() => {
+        wx.navigateBack()
+      }, 300)
+    })
+  },
+  /* 设置默认 */
+  checkboxChange() {
+    this.setData({
+      "content.isdefault": this.data.content.isdefault == 1 ? 0 : 1
+    })
+  },
+  /* 表单是否填写完成 */
+  onConfirm({
+    detail
+  }) {
+    this.setData({
+      disabled: detail
+    })
+  }
+})

+ 4 - 0
select/address/addAndEdit.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "navigationBarTitleText": "填写地址"
+}

+ 37 - 0
select/address/addAndEdit.scss

@@ -0,0 +1,37 @@
+.radio-box {
+	display: flex;
+	padding-left: 20rpx;
+	padding-top: 10rpx;
+	height: 60rpx;
+	background-color: #fff;
+
+	.radio {
+			font-size: 26rpx;
+			font-family: PingFang SC-Regular, PingFang SC;
+			color: #666666;
+	}
+}
+
+.footer {
+	display: flex;
+	align-items: center;
+	justify-content: flex-end;
+	position: fixed;
+	width: 750rpx;
+	height: 130rpx;
+	background: #FFFFFF;
+	box-shadow: 0px -4rpx 16rpx 2rpx rgba(150, 157, 165, 0.16);
+	bottom: 0;
+
+	.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;
+			margin-right: 30rpx;
+	}
+}

+ 7 - 0
select/address/addAndEdit.wxml

@@ -0,0 +1,7 @@
+<Yl_Field id='Form' form="{{form}}" bind:onConfirm='onConfirm' />
+<view class="radio-box">
+	<van-checkbox icon-size='14' label-class='radio' value="{{ content.isdefault == 1 }}" bind:change="checkboxChange">{{language['设置为默认地址']||'设置为默认地址'}}</van-checkbox>
+</view>
+<view class="footer">
+	<van-button custom-class='but' disabled='{{disabled}}' bindtap="submit">{{language['保存']||'保存'}}</van-button>
+</view>

+ 96 - 7
select/address/index.js

@@ -7,7 +7,8 @@ Page({
     result: [], //返回结果
     radio: false, //是否为单选
     idname: "contactsid", //idkey
-    showName: "name"
+    showName: "name",
+    selected: 0,
   },
   onLoad(options) {
     if (options.item) {
@@ -17,15 +18,19 @@ Page({
         params: item.params
       });
     }
-    if (options.params) this.setData({
-      params: JSON.parse(options.params)
-    });
+    if (options.params) {
+      let params = JSON.parse(options.params);
+      this.setData({
+        params,
+        sys_enterpriseid: params.content.sys_enterpriseid
+      });
+    }
     this.setData({
       radio: options.radio ? true : false,
       idname: options.idname || this.data.idname,
       showName: options.showName || this.data.showName,
     });
-    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
+    getApp().globalData.Language.getLanguagePackage(this, 'E-订单');
     this.getList()
   },
   getList(init = false) {
@@ -42,16 +47,41 @@ Page({
         title: res.msg,
         icon: "none"
       })
+      let list = res.pageNumber == 1 ? res.data : this.data.list.concat(res.data),
+        selected = list.find(v => v.isdefault).contactsid || 0
 
       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),
+        selected: selected,
+        list,
         loading: false
       })
     })
   },
+  // 修改默认
+  radioChange({
+    detail
+  }) {
+    let list = this.data.list,
+      data = list.find(v => v.contactsid == detail)
+    if (data.isdefault == 1) return;
+    data.isdefault = 1;
+    _Http.basic({
+      "id": "20221009155703",
+      "content": data
+    }, false).then(res => {
+      console.log(res)
+      if (res.code != '1') return wx.showToast({
+        title: res.data,
+        icon: "none"
+      });
+      this.setData({
+        list
+      })
+    })
+  }, //处理操作
   /* 选中 */
   changeResult(e) {
     let {
@@ -84,6 +114,47 @@ Page({
       }
     getApp().globalData.handleSelect && getApp().globalData.handleSelect(obj)
   },
+  handleItem(e) {
+    const {
+      name,
+      item
+    } = e.target.dataset;
+    if (name == 'edit') {
+      wx.navigateTo({
+        url: '/select/address/addAndEdit?sys_enterpriseid=' + this.data.sys_enterpriseid + "&data=" + JSON.stringify(item),
+      })
+    } else {
+      wx.showModal({
+        cancelText: getApp().globalData.Language.getMapText('取消'),
+        confirmText: getApp().globalData.Language.getMapText('确定'),
+        title: getApp().globalData.Language.getMapText('提示'),
+        content: getApp().globalData.Language.getMapText('是否确定删除') + `“${item.name}”`,
+        complete: (res) => {
+          if (res.confirm) _Http.basic({
+            "id": "20221009155903",
+            "content": {
+              "contactsids": [item.contactsid]
+            },
+          }).then(res => {
+            console.log("删除明细", res)
+            wx.showToast({
+              title: res.code == '1' ? getApp().globalData.Language.getMapText('删除成功') : res.msg,
+              icon: "none"
+            });
+            this.setData({
+              "params.content.total": this.data.params.content.total - 1,
+              list: this.data.list.filter(v => v.contactsid != item.contactsid)
+            })
+          })
+        }
+      })
+    }
+  },
+  add() {
+    wx.navigateTo({
+      url: '/select/address/addAndEdit?sys_enterpriseid=' + this.data.sys_enterpriseid,
+    })
+  },
   /* 开始搜索 */
   startSearch({
     detail
@@ -96,6 +167,24 @@ Page({
     });
     this.getList(true);
   },
+  onShow() {
+    let params = JSON.parse(JSON.stringify(this.data.params));
+    params.content.pageSize = params.content.pageSize * (params.content.pageNumber - 1);
+    params.content.pageNumber = 1;
+
+    _Http.basic(params).then(res => {
+      this.selectComponent('#ListBox').RefreshToComplete();
+      if (res.code != '1') return;
+      let list = res.data,
+        selected = list.find(v => v.isdefault).contactsid || 0
+      this.setData({
+        'params.content.total': res.total,
+        selected: selected,
+        list
+      })
+    })
+
+  },
   /* 取消搜索 */
   onClear() {
     this.setData({
@@ -110,6 +199,6 @@ Page({
   onUnload() {
     //回收数据
     getApp().globalData.handleSelect = null;
-    
+
   }
 })

+ 4 - 1
select/address/index.json

@@ -1,3 +1,6 @@
 {
-  "usingComponents": {}
+  "usingComponents": {
+    "van-radio": "@vant/weapp/radio/index",
+    "van-radio-group": "@vant/weapp/radio-group/index"
+  }
 }

+ 56 - 1
select/address/index.scss

@@ -1,4 +1,5 @@
 @import "./index.skeleton.wxss";
+
 page {
 	height: 100vh;
 	overflow: hidden;
@@ -15,9 +16,10 @@ page {
 
 .item {
 	display: flex;
+	flex-wrap: wrap;
 	align-items: center;
 	width: 100vw;
-	padding: 20rpx 30rpx;
+	padding: 20rpx 30rpx 0;
 	background-color: #FFFFFF;
 	box-sizing: border-box;
 	border-bottom: 1rpx solid #DDDDDD;
@@ -28,6 +30,8 @@ page {
 		width: 100%;
 		padding-right: 20rpx;
 		box-sizing: border-box;
+		padding-bottom: 20rpx;
+		border-bottom: 1px solid #DDDDDD;
 
 		.title {
 			height: 40rpx;
@@ -46,8 +50,38 @@ page {
 			color: #999999;
 		}
 	}
+
+	.editor {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		width: 100%;
+		padding: 10rpx 0;
+
+		.radio {
+			font-size: 24rpx;
+			font-family: PingFang SC-Regular, PingFang SC;
+			color: #666666;
+			margin-left: -10rpx;
+		}
+
+		.icon-but {
+			padding-right: 30rpx;
+
+			navigator {
+				display: inline-block;
+				width: 60rpx;
+				line-height: 60rpx;
+				text-align: center;
+				margin-left: 30rpx;
+				width: 32px;
+				color: #707070;
+			}
+		}
+	}
 }
 
+
 .footer {
 	display: flex;
 	justify-content: space-between;
@@ -77,4 +111,25 @@ page {
 		font-weight: bold;
 		color: #FFFFFF;
 	}
+}
+
+.footer {
+	display: flex;
+	justify-content: center;
+	position: fixed;
+	bottom: 0;
+	width: 100vw;
+	min-height: 130rpx;
+	background-color: #fff;
+	box-shadow: rgba(0, 0, 0, 0.15) 0px 5rpx 15rpx 0px;
+
+	.but {
+		width: 690rpx;
+		height: 90rpx;
+		background: #3774F6;
+		border-radius: 16rpx;
+		font-size: 28rpx;
+		font-weight: 600;
+		color: #FFFFFF;
+	}
 }

+ 29 - 18
select/address/index.wxml

@@ -4,25 +4,30 @@
 <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.name}}</view>
-            <view class="subfield line-1">
-                {{language['手机号码']||'手机号码'}}:{{item.phonenumber || ' --'}}
-            </view>
-            <!-- 
-			<view class="subfield line-1">
-				职位:{{item.position || ' --'}}
-			</view> -->
-            <view class="subfield line-1">
-                {{language['省市县']||'省市县'}}:{{item.province + item.city + item.county || " --"}}
-            </view>
-            <view class="subfield line-1">
-                {{language['地址']||'地址'}}:{{ item.address}}
+    <van-radio-group value="{{ selected }}" bind:change="radioChange">
+        <view class="item" url="#" wx:for="{{list}}" wx:key="itemno">
+            <van-checkbox wx:if="{{!radio}}" value="{{ handle.isCheck(item[idname],result) }}" shape="square" icon-size='28rpx' />
+            <navigator class="main" style="padding-left: {{!radio?'10rpx':''}};" data-id="{{item[idname]}}" bindtap="changeResult">
+                <view class="title line-1">{{item.name}}</view>
+                <view class="subfield line-1">
+                    {{language['手机号码']||'手机号码'}}:{{item.phonenumber || ' --'}}
+                </view>
+                <view class="subfield line-1">
+                    {{language['省市县']||'省市县'}}:{{item.province + item.city + item.county || " --"}}
+                </view>
+                <view class="subfield line-1">
+                    {{language['地址']||'地址'}}:{{ item.address}}
+                </view>
+            </navigator>
+            <view class="editor">
+                <van-radio icon-size='14' label-class='radio' name="{{item.contactsid}}">{{language['默认收货地址']||'默认收货地址'}}</van-radio>
+                <view class="icon-but" bindtap="handleItem">
+                    <navigator url="#" data-item="{{item}}" data-name="edit" class="iconfont icon-bianji" />
+                    <navigator url="#" data-item="{{item}}" data-name="delete" class="iconfont icon-shanchu" />
+                </view>
             </view>
         </view>
-    </navigator>
+    </van-radio-group>
     <view wx:if="{{!radio}}" style="height: 130rpx;" />
     <Yl_Empty wx:if="{{list.length==0}}" />
 </Yl_ListBox>
@@ -43,4 +48,10 @@
             },
         }
     </wxs>
-</block>
+</block>
+
+<!-- 底部 -->
+<view style="height: 170rpx;" />
+<view class="footer">
+    <van-button custom-class='but' bindtap="add">{{language['新增地址']||'新增地址'}}</van-button>
+</view>