aa
jiangping
2024-08-01 3134c86bd9e7596db5ecb6aa2ca996483c3de6f0
aa
已添加12个文件
已修改3个文件
321 ■■■■■ 文件已修改
admin/admin/avatar/man.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/avatar/woman.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/faviconzb.ico 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/template/category.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/template/fcode.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/template/shop.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/template/users.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/areaSel/areaSel.js 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/areaSel/areaSel.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/areaSel/areaSel.wxml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/design/design.js 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/design/design.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/design/design.wxml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/admin/avatar/man.png
admin/admin/avatar/woman.png
admin/admin/favicon.ico
admin/admin/faviconzb.ico
admin/admin/index.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/admin/faviconzb.ico"><script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&libraries=service&key=HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ"></script><title>志邦优家信息管理系统</title><link href="/admin/static/css/app.54552c99.css" rel="preload" as="style"><link href="/admin/static/css/chunk-vendors.37d0bd45.css" rel="preload" as="style"><link href="/admin/static/js/app.a69f75f9.js" rel="preload" as="script"><link href="/admin/static/js/chunk-vendors.fb8b09e3.js" rel="preload" as="script"><link href="/admin/static/css/chunk-vendors.37d0bd45.css" rel="stylesheet"><link href="/admin/static/css/app.54552c99.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but å¿—邦优家信息管理系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/admin/static/js/chunk-vendors.fb8b09e3.js"></script><script src="/admin/static/js/app.a69f75f9.js"></script></body></html>
admin/admin/template/category.xlsx
Binary files differ
admin/admin/template/fcode.xlsx
Binary files differ
admin/admin/template/shop.xlsx
Binary files differ
admin/admin/template/users.xlsx
Binary files differ
wechat_jiaxuan/components/areaSel/areaSel.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,222 @@
import {
  getArea
} from '../../api/index'
Component({
  properties: {
      // placeholder为选择器的默认提示文字
      placeholder: {
          type: String,
          value: '请选择省市地区',
      },
      // value为选择器的默认值,类型为数组
      value: {
          type: Array,
          value: [],
          // observer监听value的变化,如果有值则调用setLabel方法设置选择器的label
          observer(selectedValues) {
              if (selectedValues && selectedValues.length) {
                  this.setLabel();
              }
          }
      }
  },
  data: {
      // label为选择器的显示值
      label: '',
      // range为选择器的可选项,类型为数组,包含三个数组,分别为省、市、区/县
      range: [],
      // pickerValue为选择器的选中值,类型为数组,包含三个数字,分别为省、市、区/县的下标
      pickerValue: [],
      // addressList为选择器的数据源,类型为数组,包含省、市、区/县的信息
      addressList: [],
  },
  // attached生命周期函数,在组件实例进入页面节点树时执行
  attached() {
    this.initData()
  },
  methods: {
    // wx.setStorageSync('addressList', tl)
    initData(){
      let list = wx.getStorageSync('addressList')
    if(list && list.length){
      this.setData({addressList: list})
      this.setLabel();
      if (!this.data.value.length) {
          this.initRange();
      }
      console.log(this.data.addressList)
    }else{
      getArea({
        "level": "",
        "pid": ""
      }).then(res => {
        var tl = []
        if(res && res.data && res.data.length){
            res.data.forEach(element => {
                let tc = []
                if(element.children &&element.children.length){
                  element.children.forEach(c => {
                    let ta = []
                    if(c.children &&c.children.length){
                      c.children.forEach(a => {
                        ta.push({
                          label: a.name,
                          value: a.id ,
                          regionLevel: '3',
                          parentRegionCode: c.id
                        })
                      })
                    }
                    tc.push({
                      label: c.name,
                      value: c.id,
                      regionLevel:"2",
                      children:ta,
                      parentRegionCode:element.id
                    })
                  })
                }
                tl.push({
                  label: element.name,
                  value: element.id,
                  regionLevel:"1",
                  children: tc,
                  parentRegionCode:"0"
                })
            });
        }
        wx.setStorageSync('addressList', tl)
        this.setData({addressList: tl})
        this.setLabel();
        if (!this.data.value.length) {
            this.initRange();
        }
        console.log(this.data.addressList)
      })
    }
    },
      // getAddressItem方法用于将地址信息转换为选择器可用的格式
      getAddressItem(data) {
          return {
              label: data.label,
              value: data.value
          };
      },
      // setAddressList方法用于将地址列表转换为选择器可用的格式
      setAddressList(list) {
          return list.map((v) => this.getAddressItem(v));
      },
      // getAddressByCode方法用于根据value值获取地址信息及其在数组中的下标
      getAddressByCode(list = [], value) {
          let index = list.findIndex(item => item.value === value);
          return [index, list[index] || {}];
      },
      // openChildren方法用于根据value值打开下一级选择器
      openChildren(list, keys) {
          let result = [];
          const handle = (arr, keys) => {
              let newarr = arr.map((v, index) => {
                  if (keys && keys.length) {
                      let [currentKey, ...nextKey] = keys;
                      if (currentKey === index && Array.isArray(v.children)) {
                          handle(v.children, nextKey);
                      }
                  }
                  return this.getAddressItem(v);
              });
              result.push(newarr);
          }
          handle(list, keys);
          return result.reverse();
      },
      // onChange方法为选择器的change事件处理函数,用于设置label和触发change事件
      onChange(e) {
          let [r1, r2, r3] = this.data.range;
          const [v1, v2, v3] = e.detail.value;
          const selected = [r1[v1], r2[v2], r3[v3]];
          const values = selected.map(v => v.value);
          const label = selected.map(v => v.label).join('-');
          this.triggerEvent("change", {
              value: values,
              label:label
          });
          this.setData({
            label:label
          });
          console.log("label1", label)
          console.log("label",this.data.label)
      },
      // columnChange方法为选择器的columnchange事件处理函数,用于设置range和pickerValue
      columnChange(e) {
          const {
              column,
              value
          } = e.detail;
          this.setColumn(column, value);
      },
      // setColumn方法用于设置range和pickerValue
      setColumn(column, value) {
          let addressList = this.data.addressList;
          if (!addressList || addressList.length === 0) return;
          let [r1, r2, r3] = this.data.range;
          if (column === 0) {
              r2 = this.setAddressList(addressList[value].children);
              r3 = this.setAddressList(addressList[value].children[0].children);
              this.setData({
                  pickerValue: [value, 0, 0]
              });
          } else if (column === 1) {
              const [v1] = this.data.pickerValue;
              r3 = this.setAddressList(addressList[v1].children[value].children);
              this.setData({
                  pickerValue: [v1, value, 0]
              });
          }
          this.setData({
              range: [r1, r2, r3]
          });
      },
      // setLabel方法用于设置label
      setLabel() {
          let addressList = this.data.addressList;
          if (addressList && addressList.length) {
              const [v1, v2, v3] = this.data.value;
              const [s1, {
                  label: t1,
                  children: l1
              }] = this.getAddressByCode(addressList, v1);
              const [s2, {
                  label: t2,
                  children: l2
              }] = this.getAddressByCode(l1, v2);
              const [s3, {
                  label: t3
              }] = this.getAddressByCode(l2, v3);
              const label = [t1, t2, t3].filter(v => v).join('-');
              const pickerValue = [s1, s2, s3];
              const range = this.openChildren(addressList, [s1, s2, s3]);
              if (label.length) {
                  this.setData({
                      label,
                      range,
                      pickerValue
                  });
              }
          } else {
          }
      },
      // initRange方法用于初始化range
      initRange() {
          if (!this.data.value.length) {
              const range = this.openChildren(this.data.addressList, [0, 0, 0]);
              this.setData({
                  range
              });
          }
      },
  },
});
wechat_jiaxuan/components/areaSel/areaSel.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "component": true,
  "usingComponents": {}
}
wechat_jiaxuan/components/areaSel/areaSel.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
<picker mode="multiSelector" model:value="{{pickerValue}}" range-key="label" range="{{range}}" bindchange="onChange"
    bindcolumnchange="columnChange">
    <view>
        <!-- å¦‚果已经选择了选项,则显示选项的label属性,否则显示placeholder属性。 -->
        <text wx:if="{{label}}"> {{ label }} </text>
        <text style="color: #999" wx:else> {{ placeholder }}</text>
    </view>
</picker>
wechat_jiaxuan/pages/design/design.js
@@ -1,3 +1,4 @@
// import { areaList } from '@vant/area-data';
import {
  getDictData,
  getArea,
@@ -12,8 +13,8 @@
   */
  data: {
    name: '',
    phone: '',
    phone: '',
    showAreaList: false,
    areaList: [],
    addr: {},
@@ -47,8 +48,23 @@
      }
    })
  },
  regionChange(e) {
    console.log(e)
    if(e.detail.value &&e.detail.value.length ==3){
      var tn = e.detail.label.split("-")
      const addr = {
        provinceCode: e.detail.value[0] ,
        provinceName: tn[0],
        cityCode:  e.detail.value[1] ,
        cityName:  tn[1],
        areaCode: e.detail.value[2] ,
        areaName:  tn[2]
      }
      this.setData({ addr, showAreaList: false })
      console.log('selectedOptions', addr);
    }
  },
  onSubmit() {
    const {
      name,
@@ -70,6 +86,11 @@
    if (!addr.areaCode || !addr.cityCode) return wx.showToast({
      title: '请选择城市',
      icon: 'none'
    })
    console.log({
      name,
      phone,
      ...addr
    })
    saveFreeCustomizationApply({
      name,
@@ -122,13 +143,46 @@
  onClose() {
    this.setData({ showAreaList: false })
  },
  onClick() {
    this.setData({ showAreaList: true })
  },
  initData() {
    getArea({
      "level": "",
      "pid": ""
    }).then(res => {
      this.setData({areaList: res.data})
    })
    // getArea({
    //   "level": "",
    //   "pid": ""
    // }).then(res => {
    //   var tl = []
    //   if(res && res.data && res.data.length){
    //       res.data.forEach(element => {
    //           let tc = []
    //           if(element.children &&element.children.length){
    //             element.children.forEach(c => {
    //               let ta = []
    //               if(c.children &&c.children.length){
    //                 c.children.forEach(a => {
    //                   ta.push({
    //                     name: a.name,
    //                     id: a.id
    //                   })
    //                 })
    //               }
    //               tc.push({
    //                 name: c.name,
    //                 id: c.id,
    //                 children:ta,
    //               })
    //             })
    //           }
    //           tl.push({
    //             name: element.name,
    //             id: element.id,
    //             children: tc,
    //           })
    //       });
    //   }
    //   this.setData({areaList: tl})
    //   console.log(this.data.areaList)
    // })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'DESIGN_BANNER'
wechat_jiaxuan/pages/design/design.json
@@ -1,7 +1,9 @@
{
  "usingComponents": {
    "van-cascader": "@vant/weapp/field/index",
    "van-field": "@vant/weapp/field/index",
    "van-popup": "@vant/weapp/popup/index"
    "van-popup": "@vant/weapp/popup/index",
    "areaSel": "/components/areaSel/areaSel"
  },
  "navigationBarTitleText": "0元免费设计"
}
wechat_jiaxuan/pages/design/design.wxml
@@ -12,16 +12,20 @@
    </view>
    <view class="line">
      <image class="icon" src="../../static/icon/design_ic_city.png" mode="widthFix"></image>
      <picker class="city_picler" mode="region" value="{{ addr }}"  bindchange="positionChange">
      <!-- <picker class="city_picler" mode="region" value="{{ addr }}"  bindchange="positionChange">
        <view class="placeholder9" hidden="{{ addr.cityName }}">请选择地址</view>
        <view class="picker" hidden="{{ !addr.cityName }}">
          {{ addr.provinceName }}{{ addr.cityName }}{{ addr.areaName }}
        </view>
      </picker>
      </picker> -->
      <areaSel  bindchange="regionChange" placeholder="请选择所在区域" value="{{['210000000','210500000','210501000']}}"  />
      <image class="arrow_right" src="../../static/icon/arrow_right.png" mode="widthFix"></image>
    </view>
    </view>
    <view class="btn" bindtap="onSubmit">立即报名</view>
  </view>
  <image class="banner" src="{{ WechatIMG558 }}" mode="widthFix"></image>
  <!--  -->
  <!-- æç¤º:vant组件给的样式,可以根据需求更改 -->
<view style="height:30rpx;"></view>
</view>