95e05964b08e2fc26d606f4f0c5b3daa43df126f..0358677c06e86f05c992f406c9714a32b30a235d
2024-07-18 liukangdong
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/zbomyoujia
035867 对比 | 目录
2024-07-18 liukangdong
‘’
5b219a 对比 | 目录
已添加15个文件
已删除4个文件
已修改106个文件
3184 ■■■■ 文件已修改
wechat_jiaxuan/api/index.js 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/app.js 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/app.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/app.wxss 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/authCard/authCard.js 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/authCard/authCard.less 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/authCard/authCard.wxml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/authCard/authCard.wxss 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.js 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.less 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.wxml 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.wxss 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.js 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.less 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.wxml 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.wxss 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/package-lock.json 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/auth/auth.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/consult.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/consult.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/consult.less 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/consult.wxml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/consult.wxss 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.json 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.less 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.wxml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.wxss 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/design/design.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/design/design.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/design/design.wxml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.less 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.wxss 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.js 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.json 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.less 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.wxml 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.wxss 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.less 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.wxss 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/discover/discover.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/discover/discover.wxml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/homeId/index.js 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/homeId/index.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/homeId/index.less 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/homeId/index.wxml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/homeId/index.wxss 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/index/index.js 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/index/index.less 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/index/index.wxml 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/index/index.wxss 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/index.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/index.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/index.less 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/index.wxml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/service.js 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/service.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/service.wxml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/kefu/service.wxss 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/productVideo/index.js 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/productVideo/index.less 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/productVideo/index.wxml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/productVideo/index.wxss 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.js 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.less 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.wxml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.wxss 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staff.js 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staff.less 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staff.wxml 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staff.wxss 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staffList.js 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staffList.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staffList.less 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staffList.wxml 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/staffList.wxss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/store.js 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/store.less 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/store.wxml 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/store.wxss 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.js 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.wxml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/project.private.config.json 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/icon/download.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/icon/ic_play.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/icon/wechat.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/images/mendian_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/images/mingpian_bg_kehu.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/images/mingpian_bg_nianxian.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/utils/qqmap-wx-jssdk.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/utils/request.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/api/index.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/app.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/homeId/index.js 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/homeId/index.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/homeId/index.wxml 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/index/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/index/index.less 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/index/index.wxml 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/index/index.wxss 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/login/index.js 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/login/index.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/login/index.less 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/login/index.wxml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/login/index.wxss 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/promotion/index.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/work/index.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/project.config.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/project.private.config.json 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/icon/home_ic_anli@2x 2.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/icon/home_ic_chanpin@2x 2.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/icon/home_ic_shijing@2x 2.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/icon/home_ic_zixun.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/images/home_class_a@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/images/home_class_b2@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/images/home_class_b@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/static/images/home_class_c@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/api/index.js
@@ -39,6 +39,65 @@
    url: '/web/customer/getMemberInfo',
  })
}
// é¦–页 å¿—说装修
export const getZSZXCatalogs = () => {
  return request({
    url: '/web/customer/getZSZXCatalogs',
    method: "POST"
  })
}
//  ä¸­å°æ ‡ç­¾
export const getCataLogTagList = (data) => {
  return request({
    url: '/web/customer/getCataLogTagList',
    method: "POST",
    data
  })
}
// ä¸­å° åˆ†ç±»æ•°æ®
export const getCatalogList = (data) => {
  return request({
    url: '/web/customer/getCatalogList',
    method: "POST",
    data
  })
}
// ä¸­å° åˆ†ç±»äº§å“è¯¦æƒ…
export const getProductInfo = (data) => {
  return request({
    url: '/web/customer/getProductInfo',
    data
  })
}
// ä¸­å° åˆ†äº«
export const shareContent = (data) => {
  return request({
    url: '/web/customer/shareContent',
    data
  })
}
// å¿—说装修 å†…容
export const pageZSZXContentList = (data) => {
  return request({
    url: '/web/customer/getZhongTaiZbDecoPage',
    method: "POST",
    data
  })
}
// é¦–页 å®šåˆ¶æœåŠ¡ åˆ—表
export const getCustomizedNewsList = (data) => {
  return request({
    url: '/web/customer/getCustomizedNewsList',
    data
  })
}
//  å®šåˆ¶æœåŠ¡ è¯¦æƒ…
export const getCustomizedNewsDetail = (data) => {
  return request({
    url: '/web/customer/getCustomizedNewsDetail',
    data
  })
}
// èŽ·å–é—¨åº—åˆ—è¡¨
export const getShopPage = (data) => {
  return request({
@@ -54,6 +113,117 @@
    data
  })
}
// èŽ·å– å¯¼è´­åˆ—表
export const myUserPage = (data) => {
  return request({
    url: '/web/customer/myUserPage',
    method: "POST",
    data
  })
}
// èŽ·å– å¯¼è´­è¯¦æƒ…
export const usersDetailByIamId = (data) => {
  return request({
    url: '/web/customer/usersDetailByIamId',
    data
  })
}
// é¦–页 è½®æ’­ åˆ—表
export const getHomeBanner = (data) => {
  return request({
    url: '/web/customer/getZhongTaiCarouselImage',
    method: 'POST',
    data
  })
}
// é¦–页 è½®æ’­ è¯¦æƒ…
export const getHomeBannerDetail = (data) => {
  return request({
    url: '/web/customer/getZhongTaiCarouselImageDetail',
    method: 'POST',
    data
  })
}
// åˆ†ç±»äº§å“ åˆ†é¡µåˆ—表 ä¸­å°
export const getZhongTaiProductPage = (data) => {
  return request({
    url: '/web/customer/getZhongTaiProductPage',
    method: 'POST',
    data
  })
}
// åˆ†ç±»æ¡ˆä¾‹ åˆ†é¡µåˆ—表 ä¸­å°
export const getZhongTaiWholecasePage = (data) => {
  return request({
    url: '/web/customer/getZhongTaiWholecasePage',
    method: 'POST',
    data
  })
}
// æˆ‘的家 åˆ†é¡µåˆ—表 ä¸­å°
export const getZhongTaiVideoPage = (data) => {
  return request({
    url: '/web/customer/getZhongTaiVideoPage',
    method: 'POST',
    data
  })
}
// äº§å“èµ„讯 åˆ†é¡µåˆ—表 ä¸­å°
export const getZhongTaiProductNewsPage = (data) => {
  return request({
    url: '/web/customer/getZhongTaiProductNewsPage',
    method: 'POST',
    data
  })
}
// äº§å“èµ„讯 è¯¦æƒ…
export const getProductNewsInfo = (data) => {
  return request({
    url: '/web/customer/getProductNewsInfo',
    method: 'GET',
    data
  })
}
// æ“ä½œ è¡Œä¸ºå†…容
export const actionDo = (data) => {
  return request({
    url: '/web/customer/actionDo',
    data
  })
}
// æˆ‘çš„ é¢„约列表
export const customerLogPage = (data) => {
  return request({
    url: '/web/customer/customerLogPage',
    method: 'POST',
    data
  })
}
// å†…容 å–œæ¬¢
export const likeContent = (data) => {
  return request({
    url: '/web/customer/likeContent',
    method: 'GET',
    data
  })
}
// å†…容 æ”¶è—
export const collectContent = (data) => {
  return request({
    url: '/web/customer/collectContent',
    method: 'GET',
    data
  })
}
// æˆ‘çš„ å–œæ¬¢åˆ—表
export const getZhongTaiCusFavorite = (data) => {
  return request({
    url: '/web/customer/getZhongTaiCusFavorite',
    method: 'POST',
    data
  })
}
// æ›´æ–°ä¼šå‘˜ä¿¡æ¯
export const editMember = (data) => {
  return request({
@@ -89,8 +259,9 @@
// èŽ·å–çœå¸‚åŒº
export const getArea = (data) => {
  return request({
    url: '/web/common/getArea',
    data
    url: '/web/common/getAreaTree',
    data,
    method: "POST"
  })
}
// å°ç¨‹åºæ³¨é”€
wechat_jiaxuan/app.js
@@ -11,37 +11,31 @@
      this.globalData.bottomLift = WindowInfo.screenHeight - WindowInfo.safeArea.bottom;
    }
    // 
    const res = wx.getStorageSync('member')
    if (res) {
      this.globalData.userInfo = res
    } else {
      // ç™»å½•
      wx.login({
        timeout: 5000,
        success(res) {
          if (res.code) {
            //发起网络请求
            wxLoginCustomer({
              code: res.code
            }).then(res => {
              console.log(res)
              if (res && res.data.member) {
                wx.setStorageSync('member', res.data.member)
                wx.setStorageSync('openid', res.data.member.openid)
                wx.setStorageSync('sessionKey', res.data.sessionKey)
                wx.setStorageSync('token', res.data.token)
              } else {
                console.log('登录失败!')
              }
            })
          } else {
            console.log('登录失败!' + res)
          }
        },
        fail(err) {
          console.log(err)
    wx.login({
      timeout: 5000,
      success(res) {
        if (res.code) {
          //发起网络请求
          wxLoginCustomer({
            code: res.code
          }).then(res => {
            console.log(res)
            if (res && res.data.member) {
              wx.setStorageSync('member', res.data.member)
              wx.setStorageSync('openid', res.data.member.openid)
              wx.setStorageSync('sessionKey', res.data.sessionKey)
              wx.setStorageSync('token', res.data.token)
            } else {
              console.log('登录失败!')
            }
          })
        } else {
          console.log('登录失败!' + res)
        }
      })
    }
      },
      fail(err) {
        console.log(err)
      }
    })
  }
})
wechat_jiaxuan/app.json
@@ -16,6 +16,7 @@
    "pages/productVideo/index",
    "pages/homeId/index",
    "pages/kefu/index",
    "pages/kefu/service",
    "pages/detailDis/product",
    "pages/detailDis/case",
    "pages/detailDis/realpic",
@@ -52,7 +53,7 @@
        "pagePath": "pages/consult/consult",
        "iconPath": "static/tabbar/nav_mendian.png",
        "selectedIconPath": "static/tabbar/nav_mendianAc.png",
        "text": "咨询"
        "text": "资讯"
      },
      {
        "pagePath": "pages/mine/mine",
@@ -71,8 +72,7 @@
  },
  "requiredPrivateInfos": [
    "getLocation",
    "chooseLocation",
    "getFuzzyLocation"
    "chooseLocation"
  ],
  "permission": {
    "scope.userLocation": {
wechat_jiaxuan/app.wxss
@@ -65,4 +65,18 @@
.flex-column {
  flex-direction: column;
}
button {
  margin: 0;
  padding: 0;
  background-color: inherit;
  position: static;
}
button:after {
  content: none;
}
button::after {
  border: none;
}
wechat_jiaxuan/components/authCard/authCard.js
@@ -1,4 +1,6 @@
import { getShopPage } from '../../api/index'
import {
  getShopPage
} from '../../api/index'
Component({
  /**
   * ç»„件的属性列表
@@ -8,18 +10,52 @@
      type: String,
      value: '0',
      observer(val) {
        if(val === '1'){
          this.getShops()
        if (val === '1') {
          let that = this
          wx.getLocation({
            type: 'wgs84',
            success(res) {
              const latitude = res.latitude
              const longitude = res.longitude
              that.getShops(latitude, longitude)
            }
          })
        }
      }
    },
  },
  data: {
    shopList: []
  },
  methods: {
    getShops() {
      getShopPage()
    getShops(latitude, longitude) {
      getShopPage({
        model: {
          longitude,
          latitude
        }
      }).then(res => {
        this.setData({
          shopList: res.data.records
        })
      })
    },
    shopDetail(e) {
      const id = e.currentTarget.dataset.id
      wx.navigateTo({
        url: `/pages/store/info?id=${id}`,
      })
    },
    jumpStaff() {
      wx.navigateTo({
        url: '/pages/store/staffList',
      })
    },
    jumpAuth() {
      wx.navigateTo({
        url: '/pages/auth/auth',
      })
    },
    jumpStore() {
      wx.navigateTo({
@@ -27,4 +63,4 @@
      })
    }
  }
})
})
wechat_jiaxuan/components/authCard/authCard.less
@@ -1,7 +1,8 @@
.container{
  width: 750rpx;
  width: 670rpx;
  margin: 0 auto;
  background-color: #fff;
  padding: 10rpx 40rpx;
  padding: 10rpx 10rpx;
}
.wrap1{
  display: flex;
@@ -98,6 +99,7 @@
      .name{
        display: flex;
        margin-bottom: 20rpx;
        font-size: 28rpx;
        .icon{
          width: 60rpx;
          height: 60rpx;
wechat_jiaxuan/components/authCard/authCard.wxml
@@ -8,7 +8,7 @@
      <view class="name">AI找设计</view>
      <view class="desc">你身边的全屋设计专家</view>
    </view>
    <view class="btn">
    <view class="btn" bindtap="jumpAuth">
      <view>去</view>
      <view>看</view>
      <view>看</view>
@@ -25,22 +25,22 @@
        <view class="desc">您身边的全屋设计专家~</view>
      </view>
      <image class="right" src="../../static/icon/arrow_right.png" mode="widthFix"></image>
    </view>
    <view class="list">
      <view class="item" wx:for="{{6}}">
      <view class="item" wx:for="{{shopList}}">
        <view class="name">
          <view class="icon">
            <image src="../../static/icon/mendian_item.png" mode="widthFix"></image>
          </view>
          <text>合肥红星新品关</text>
          <text>{{ item.name }}</text>
        </view>
        <view class="addr">
          <view class="left">
            <image class="icon" src="../../static/icon/location.png" mode="widthFix"></image>
            <text>3.9km</text>
            <text wx:if="{{ item.distanceStr }}">{{ item.distanceStr }}</text>
            <text wx:else>--</text>
          </view>
          <view class="right">
          <view class="right" data-id="{{ item.id }}" bindtap="shopDetail">
            <text>进入门店</text>
            <van-icon  name="arrow" />
          </view>
@@ -49,7 +49,7 @@
    </view>
  </view>
  <!-- å·²æŽˆæƒ å·²ç»‘定 -->
  <view wx:if="{{ type == '2' }}" class="wrap1 wrap3">
  <view bindtap="jumpStaff" wx:if="{{ type == '2' }}" class="wrap1 wrap3">
    <view class="ai df_ct">
      <image src="../../static/icon/home_ic_guwen@2x.png" mode="widthFix"></image>
    </view>
wechat_jiaxuan/components/authCard/authCard.wxss
@@ -1,7 +1,8 @@
.container {
  width: 750rpx;
  width: 670rpx;
  margin: 0 auto;
  background-color: #fff;
  padding: 10rpx 40rpx;
  padding: 10rpx 10rpx;
}
.wrap1 {
  display: flex;
@@ -98,6 +99,7 @@
.wrap2 .list .item .name {
  display: flex;
  margin-bottom: 20rpx;
  font-size: 28rpx;
}
.wrap2 .list .item .name .icon {
  width: 60rpx;
wechat_jiaxuan/components/disCase/index.js
@@ -1,4 +1,4 @@
// components/disCase/index.js
import { getCataLogTagList, getZhongTaiWholecasePage, actionDo } from '../../api/index'
Component({
  /**
   * ç»„件的属性列表
@@ -7,18 +7,112 @@
  },
  data: {
    showParams: false,
    activeStatus: '0'
    activeIndex: -1,
    activeParam: [],
    selParam: '',
    tagCodes: [],
    cateList: [],
    dataList: [],
    pageNum: 1,
    pageSize: 10,
    search: '',
    sortType: 'NORMAL',
    catalogCode: 'whole_case'
  },
  attached() {
    this.getCatelist()
  },
  methods: {
    getCatelist(){
      const { catalogCode } = this.data
      getCataLogTagList({
        catalogCode: 'real_case'
      }).then(res => {
        if(res.data && res.data.length > 0){
          this.setData({
            cateList: res.data
          })
          setTimeout(() => {
            this.getList()
          }, 300)
        }
      })
    },
    getList() {
      const { sortType, search, tagCodes, pageNum, pageSize } = this.data
      getZhongTaiWholecasePage({
        catalogCode: 'whole_case',tagCodes,pageNum,pageSize, sortType,search
      }).then(res => {
        this.setData({ dataList: res.data.records })
      })
    },
    statusChange(e) {
      const sortType = e.currentTarget.dataset.status
      this.setData({sortType})
      this.getList()
    },
    handleAction(e){
      const actionType = e.currentTarget.dataset.code
      const id = e.currentTarget.dataset.id
      actionDo({
        actionType,
        id
      }).then(res => {
        this.getList()
      })
    },
    handleDetail(e) {
      wx.navigateTo({
        url: '/pages/detailDis/case',
      })
    },
    changeShowParams(){
      const showParams = !this.data.showParams
      this.setData({showParams})
    tagClick(e) {
      const code = e.currentTarget.dataset.code
      const paramIndex = e.currentTarget.dataset.index
      const { cateList, tagCodes, activeParam, activeIndex } = this.data
      const index = tagCodes.indexOf(code)
      if(index === -1){
        tagCodes.push(code)
        cateList[activeIndex].paramIndex = paramIndex
        cateList[activeIndex].paramName = activeParam[paramIndex].labelValueName
      }else{
        tagCodes.splice(index, 1)
        cateList[activeIndex].paramIndex = -1
        cateList[activeIndex].paramName = ''
      }
      this.setData({ tagCodes, cateList })
      console.log('tagCodes', tagCodes);
    },
    cancelParam() {
      const { cateList } = this.data
      cateList.forEach(item => {
        item.paramIndex = -1
        item.paramName = ''
      })
      this.setData({ tagCodes: [],activeParam: [],cateList,activeIndex: -1 })
    },
    bindblur() {
      this.getList()
    },
    subParam() {
      this.setData({ activeParam: [] })
      this.getList()
    },
    changeShowParams(e){
      const { cateList } = this.data
      const activeIndex = e.currentTarget.dataset.index
      if(activeIndex === this.data.activeIndex){
        this.setData({ activeIndex: -1, activeParam: [], selParam: '' })
      }else{
        this.setData({
          activeIndex,
          activeParam: cateList[activeIndex].valueVos
        })
      }
      // this.setData({showTwo: false})
    },
    changeTwo(){
@@ -26,9 +120,5 @@
      this.setData({showTwo})
      this.setData({showOne: false})
    },
    statusChange(e) {
      const activeStatus = e.currentTarget.dataset.status
      this.setData({activeStatus})
    }
  }
})
wechat_jiaxuan/components/disCase/index.less
@@ -22,16 +22,20 @@
.main_content {
  height: calc(100% - 120rpx);
  .query_wrap_scroll{
    width: 670rpx;
    padding: 0 40rpx;
  }
  .query_wrap {
    display: flex;
    padding: 0 16rpx;
    .item {
      margin-right: 36rpx;
      height: 88rpx;
      display: flex;
      flex-shrink: 0;
      align-items: center;
      justify-content: center;
      color: #666666;
      flex: 1;
      .name {
        margin-right: 6rpx;
      }
wechat_jiaxuan/components/disCase/index.wxml
@@ -1,115 +1,50 @@
<view class="app">
  <view class="search_wrap">
    <image src="../../static/icon/ic_search@2x.png" mode="widthFix"></image>
    <input type="text" placeholder="搜索产品名称" />
    <input bindblur="bindblur" model:value="{{ search }}" type="text" placeholder="搜索案例名称" />
  </view>
  <!--  -->
  <view class="main_content">
    <view class="query_wrap">
      <view class="item" bindtap="changeShowParams">
        <view class="name">风格</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
    <scroll-view class="query_wrap_scroll" scroll-x>
      <view class="query_wrap">
        <view data-index="{{ index }}" wx:for="{{ cateList }}" class="item" bindtap="changeShowParams">
          <view class="name">{{ item.paramName || item.labelName }}</view>
          <van-icon name="{{ activeIndex === index ? 'arrow-up' : 'arrow-down' }}" />
        </view>
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">空间</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">间名</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">间称</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">空称</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
    </view>
    <view wx:if="{{ showParams }}" class="query_param">
    </scroll-view>
    <!--  param -->
    <view wx:if="{{ activeParam && activeParam.length > 0 }}" class="query_param">
      <view class="list">
        <view class="item active">东芝电视</view>
        <view class="item">东芝啊的时撒的代电视</view>
        <view class="item">东芝电视</view>
        <view class="item">东芝电视</view>
        <view class="item">东芝电视</view>
        <view data-index="{{index}}" data-code="{{ item.labelValueCode }}" bindtap="tagClick" wx:for="{{ activeParam }}" class="item {{ cateList[activeIndex].paramIndex === index ? 'active' : '' }}">{{ item.labelValueName }}</view>
      </view>
      <view class="btns">
        <view class="btn" bindtap="changeShowParams">取消</view>
        <view class="btn sub">确认</view>
        <view class="btn" bindtap="cancelParam">取消</view>
        <view bindtap="subParam" class="btn sub">确认</view>
      </view>
    </view>
    <view class="status">
      <view class="item {{ activeStatus == '0' ? 'active' : '' }}" data-status="0" bindtap="statusChange">默认</view>
      <view class="item {{ sortType == 'NORMAL' ? 'active' : '' }}" data-status="NORMAL" bindtap="statusChange">默认</view>
      <view class="separate"></view>
      <view class="item {{ activeStatus == '1' ? 'active' : '' }}" data-status="1" bindtap="statusChange">最热</view>
      <view class="item {{ sortType == 'HOT' ? 'active' : '' }}" data-status="HOT" bindtap="statusChange">最热</view>
      <view class="separate"></view>
      <view class="item {{ activeStatus == '2' ? 'active' : '' }}" data-status="2" bindtap="statusChange">最新</view>
      <view class="item {{ sortType == 'LATEST' ? 'active' : '' }}" data-status="LATEST" bindtap="statusChange">最新</view>
    </view>
    <!-- goods_list -->
    <view class="goods_list">
      <view class="item" bindtap="handleDetail">
      <view wx:for="{{ dataList }}" class="item" bindtap="handleDetail">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image src="{{ item.coverImage }}" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="name">{{ item.title }}</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image wx:if="{{ !item.isCollection }}" data-code="like" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else data-code="like_cancel" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">{{ item.collectCount }}</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
            <text>{{ item.viewCount }}</text>
          </view>
        </view>
      </view>
wechat_jiaxuan/components/disCase/index.wxss
@@ -20,17 +20,21 @@
.main_content {
  height: calc(100% - 120rpx);
}
.main_content .query_wrap_scroll {
  width: 670rpx;
  padding: 0 40rpx;
}
.main_content .query_wrap {
  display: flex;
  padding: 0 16rpx;
}
.main_content .query_wrap .item {
  margin-right: 36rpx;
  height: 88rpx;
  display: flex;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  color: #666666;
  flex: 1;
}
.main_content .query_wrap .item .name {
  margin-right: 6rpx;
wechat_jiaxuan/components/disProduct/index.js
@@ -1,4 +1,4 @@
// components/disProduct/index.js
import { getCatalogList, getZhongTaiProductPage } from '../../api/index'
Component({
  /**
   * ç»„件的属性列表
@@ -13,12 +13,62 @@
  data: {
    showOne: false,
    showTwo: false,
    activeStatus: '0'
    cateList: [],
    datalist: [],
    pageNum: 1,
    pageSize: 10,
    search: '',
    sortType: 'NORMAL',
    catalogCode: ""
  },
  attached() {
    this.getCatelist()
  },
  methods: {
    getCatelist(){
      getCatalogList({
        catalogCode: 'product_intro'
      }).then(res => {
        if(res.data && res.data.length > 0){
          this.setData({
            catalogCode: res.data[0].code,
            cateList: res.data
          })
          setTimeout(() => {
            this.getList()
          }, 300)
        }
      })
    },
    bindblur() {
      this.getList()
    },
    getList() {
      const { catalogCode, pageNum, pageSize, sortType, search } = this.data
      getZhongTaiProductPage({
        catalogCode,pageNum,pageSize,sortType,search
      }).then(res => {
        this.setData({
          datalist: [...this.data.datalist, ...res.data.records],
          total: res.data.total
        })
      })
    },
    cateClick(e) {
      const catalogCode = e.currentTarget.dataset.code
      this.setData({ catalogCode })
      this.getList()
    },
    statusChange(e) {
      const sortType = e.currentTarget.dataset.status
      this.setData({sortType})
      this.getList()
    },
    handleDetail(e) {
      const id = e.currentTarget.dataset.id
      wx.navigateTo({
        url: '/pages/detailDis/product',
        url: '/pages/detailDis/product?id=' + id,
      })
    },
    changeOne(){
@@ -31,9 +81,5 @@
      this.setData({showTwo})
      this.setData({showOne: false})
    },
    statusChange(e) {
      const activeStatus = e.currentTarget.dataset.status
      this.setData({activeStatus})
    }
  }
})
wechat_jiaxuan/components/disProduct/index.less
@@ -131,17 +131,16 @@
      justify-content: space-between;
      padding: 12rpx 40rpx;
      .item{
        width: 50%;
        flex-shrink: 0;
        margin-bottom: 32rpx;
        .img_wrap{
          width: 242rpx;
          height: 136rpx;
          border-radius: 8rpx;
          overflow: hidden;
          position: relative;
          .img{
            width: 100%;
            height: 100%;
          }
          .new{
            width: 72rpx;
@@ -153,6 +152,10 @@
        }
        .name{
          margin: 12rpx 0 8rpx;
          display: -webkit-box;//将盒子转换为弹性盒子
          -webkit-box-orient: vertical;//文本显示方式,默认水平
          -webkit-line-clamp: 1;//设置显示多少行
          overflow: hidden;
        }
        .info{
          display: flex;
wechat_jiaxuan/components/disProduct/index.wxml
@@ -1,25 +1,11 @@
<view class="app">
  <view class="search_wrap">
    <image src="../../static/icon/ic_search@2x.png" mode="widthFix"></image>
    <input type="text" placeholder="搜索产品名称" />
    <input bindblur="bindblur" model:value="{{ search }}" type="text" placeholder="搜索产品名称" />
  </view>
  <view class="main_content">
    <view class="main_left">
      <view class="item active">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view class="item">全屋定制</view>
      <view data-code="{{item.code}}" bindtap="cateClick" wx:for="{{cateList}}" class="item {{ catalogCode == item.code ? 'active' : '' }}">{{ item.name }}</view>
    </view>
    <view class="main_right">
      <view class="query_wrap">
@@ -59,53 +45,25 @@
        </view>
      </view>
      <view class="status">
        <view class="item {{ activeStatus == '0' ? 'active' : '' }}" data-status="0" bindtap="statusChange">默认</view>
        <view class="item {{ sortType == 'NORMAL' ? 'active' : '' }}" data-status="NORMAL" bindtap="statusChange">默认</view>
        <view class="separate"></view>
        <view class="item {{ activeStatus == '1' ? 'active' : '' }}" data-status="1" bindtap="statusChange">最热</view>
        <view class="item {{ sortType == 'HOT' ? 'active' : '' }}" data-status="HOT" bindtap="statusChange">最热</view>
        <view class="separate"></view>
        <view class="item {{ activeStatus == '2' ? 'active' : '' }}" data-status="2" bindtap="statusChange">最新</view>
        <view class="item {{ sortType == 'LATEST' ? 'active' : '' }}" data-status="LATEST" bindtap="statusChange">最新</view>
      </view>
      <view class="goods_list">
        <view class="item" bindtap="handleDetail">
        <view wx:for="{{ datalist }}" data-id="{{item.id}}" class="item" bindtap="handleDetail">
          <view class="img_wrap">
            <image src="../../static/icon/test.png" class="img"></image>
            <image src="{{ item.coverImage }}" class="img" mode="widthFix"></image>
            <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
          </view>
          <view class="name">钢琴曲</view>
          <view class="name">{{ item.title }}</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <text class="num {{true ? 'primary' : ''}}">{{ item.favoriteCount     }}</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
        <view class="item">
          <view class="img_wrap">
            <image src="../../static/icon/test.png" class="img"></image>
            <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
          </view>
          <view class="name">钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
        <view class="item">
          <view class="img_wrap">
            <image src="../../static/icon/test.png" class="img"></image>
            <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
          </view>
          <view class="name">钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
            <text>{{ item.readCount }}</text>
          </view>
        </view>
      </view>
wechat_jiaxuan/components/disProduct/index.wxss
@@ -133,19 +133,18 @@
  padding: 12rpx 40rpx;
}
.main_content .main_right .goods_list .item {
  width: 50%;
  flex-shrink: 0;
  margin-bottom: 32rpx;
}
.main_content .main_right .goods_list .item .img_wrap {
  width: 242rpx;
  height: 136rpx;
  border-radius: 8rpx;
  overflow: hidden;
  position: relative;
}
.main_content .main_right .goods_list .item .img_wrap .img {
  width: 100%;
  height: 100%;
}
.main_content .main_right .goods_list .item .img_wrap .new {
  width: 72rpx;
@@ -156,6 +155,10 @@
}
.main_content .main_right .goods_list .item .name {
  margin: 12rpx 0 8rpx;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  overflow: hidden;
}
.main_content .main_right .goods_list .item .info {
  display: flex;
wechat_jiaxuan/package-lock.json
@@ -1,13 +1,39 @@
{
  "name": "party",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "lockfileVersion": 3,
  "requires": true,
  "dependencies": {
    "@vant/weapp": {
  "packages": {
    "": {
      "name": "party",
      "version": "1.0.0",
      "license": "ISC",
      "dependencies": {
        "@vant/area-data": "^1.1.3",
        "@vant/weapp": "^1.11.6",
        "mp-html": "^2.5.0",
        "vant-weapp": "^0.5.28"
      }
    },
    "node_modules/@vant/area-data": {
      "version": "1.5.1",
      "resolved": "https://registry.npmjs.org/@vant/area-data/-/area-data-1.5.1.tgz",
      "integrity": "sha512-gR5TPEzTbxN1cTK1aDhCoyikSCLX7DAacxyXoKyI4SAsYYTZrDl/nLgQFIm9vLsvWzlPIda8xV8/U3x7M9k6ww=="
    },
    "node_modules/@vant/weapp": {
      "version": "1.11.6",
      "resolved": "https://registry.npmjs.org/@vant/weapp/-/weapp-1.11.6.tgz",
      "integrity": "sha512-a3heReWYT2gNdsyj6x1hBwsM8V8NrjcPAmle86NH2CD2V/i/h0le75piW6KntSfOPCwekVWMBKhysNrBpJeKdw=="
    },
    "node_modules/mp-html": {
      "version": "2.5.0",
      "resolved": "https://registry.npmjs.org/mp-html/-/mp-html-2.5.0.tgz",
      "integrity": "sha512-uvBH5tIaDIlj8qaxsvNXU3RKX0jvXOo3J6FAi/notUv/ds6j79UUTE82aDkxxUk0eLUU0CiCqMrR7WWnytk30Q=="
    },
    "node_modules/vant-weapp": {
      "version": "0.5.29",
      "resolved": "https://registry.npmjs.org/vant-weapp/-/vant-weapp-0.5.29.tgz",
      "integrity": "sha512-RMc0Ga914XFwspw2WuOMU8bOHlIkua8X1DoQ/KPnGQzjwT1uEL4S7W186EmaHF1wN2krB9BVd0LdRRt39dGh6Q=="
    }
  }
}
wechat_jiaxuan/package.json
@@ -5,6 +5,7 @@
  "dependencies": {
    "@vant/area-data": "^1.1.3",
    "@vant/weapp": "^1.11.6",
    "mp-html": "^2.5.0",
    "vant-weapp": "^0.5.28"
  },
  "scripts": {
wechat_jiaxuan/pages/auth/auth.js
@@ -4,7 +4,6 @@
  binDingPhone
} from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
wechat_jiaxuan/pages/consult/consult.js
@@ -1,39 +1,55 @@
// pages/consult/consult.js
import { getZhongTaiProductNewsPage, getCatalogList } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    category: ['新品上市', '专利证书', '大牌授权','新品上市', '专利证书', '大牌授权'],
    category: [],
    secondCategory: ['级分类','级分类','级分类','级分类','级分类','级分类'],
    activeCate: '',
    seActiveCate: '',
    dataList: []
  },
    dataList: [],
    total: 0,
    pageNum: 1,
    pageSize: 10,
  },
  onLoad(options) {
    this.getCate()
    this.getList()
  },
  getCate() {
    getCatalogList({catalogCode: 'product_info'}).then(res => {
      this.setData({ category: res.data })
    })
  },
  itemClick(e) {
    const { id } = e.target.dataset
    console.log(e.target.dataset);
    const { id } = e.currentTarget.dataset
    wx.navigateTo({
      url: '/pages/consult/detail',
      url: '/pages/consult/detail?id='+id,
    })
  },
  getList() {
    const { pageNum, pageSize, activeCate } = this.data
    getZhongTaiProductNewsPage({
      pageNum, pageSize, catalogCode: activeCate
    }).then(res => {
      if(res.data){
        this.setData({ dataList: res.data.records,total: res.data.records.total })
      }
    })
  },
  cateClick(e) {
    const { index } = e.target.dataset
    console.log(index);
    const { code } = e.currentTarget.dataset
    this.setData({ activeCate: code })
    this.getList()
  },
  seCateClick(e) {
    const { index } = e.target.dataset
    const { index } = e.currentTarget.dataset
    console.log(index);
  },
  onLoad(options) {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
wechat_jiaxuan/pages/consult/consult.json
@@ -1,4 +1,3 @@
{
  "navigationStyle": "custom",
  "navigationBarTextStyle": "white"
  "navigationBarTitleText": "资讯"
}
wechat_jiaxuan/pages/consult/consult.less
@@ -1,7 +1,21 @@
.container {
  background-color: #fff;
}
.search_wrap{
  width: 670rpx;
  height: 72rpx;
  margin: 0rpx auto 24rpx;
  background: #F7F7F7;
  border-radius: 8rpx;
  padding: 0 40rpx;
  display: flex;
  align-items: center;
  background-color: #F7F7F7;
  image{
    width: 28rpx;
    margin-right: 16rpx;
  }
}
.scroll_cate {
  display: flex;
  align-items: center;
@@ -42,6 +56,7 @@
.content{
  padding: 0 40rpx 40rpx;
  .item{
    margin-bottom: 60rpx;
    .img{
      width: 100%;
    }
wechat_jiaxuan/pages/consult/consult.wxml
@@ -1,10 +1,13 @@
<view class="container">
  <navBar showBack="{{ false }}" title="咨询"></navBar>
  <view class="search_wrap">
    <image src="../../static/icon/ic_search@2x.png" mode="widthFix"></image>
    <input type="text" placeholder="搜索咨询标题" />
  </view>
  <!-- åˆ†ç±» -->
  <view>
    <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 30rpx;">
      <view class="scroll_cate">
        <view bindtap="cateClick" data-index="{{index}}" wx:for="{{ category }}" class="item {{ index == 0 ? 'active': '' }}">{{ item }}</view>
        <view bindtap="cateClick" data-code="{{item.code}}" wx:for="{{ category }}" class="item {{ activeCate == item.code ? 'active': '' }}">{{ item.name }}</view>
      </view>
    </scroll-view>
    <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 28rpx;">
@@ -15,14 +18,14 @@
  </view>
  <!-- content -->
  <view class="content">
    <view class="item" bindtap="itemClick" data-abg="qwe">
      <image class="img" src="../../static/icon/test.png" mode="widthFix"></image>
      <view class="title">吊灯实用特辑 | ä¸€æ­¥å­¦ä¼šç†æƒ³å…‰å½±å¸ƒå±€</view>
    <view wx:for="{{ dataList }}" class="item" bindtap="itemClick" data-id="{{item.id}}">
      <image class="img" src="{{ item.coverImage }}" mode="widthFix"></image>
      <view class="title">{{ item.title }}</view>
      <view class="df_sb static">
        <view>{{ '2021-08-21 12:00:00' }}</view>
        <view>{{ item.publishDt || '' }}</view>
        <view class="df_sb">
          <image class="liulan" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
          <text>1000</text>
          <text>{{ item.viewCount }}</text>
        </view>
      </view>
    </view>
wechat_jiaxuan/pages/consult/consult.wxss
@@ -1,6 +1,21 @@
.container {
  background-color: #fff;
}
.search_wrap {
  width: 670rpx;
  height: 72rpx;
  margin: 0rpx auto 24rpx;
  background: #F7F7F7;
  border-radius: 8rpx;
  padding: 0 40rpx;
  display: flex;
  align-items: center;
  background-color: #F7F7F7;
}
.search_wrap image {
  width: 28rpx;
  margin-right: 16rpx;
}
.scroll_cate {
  display: flex;
  align-items: center;
@@ -37,6 +52,9 @@
.content {
  padding: 0 40rpx 40rpx;
}
.content .item {
  margin-bottom: 60rpx;
}
.content .item .img {
  width: 100%;
}
wechat_jiaxuan/pages/consult/detail.js
@@ -1,12 +1,14 @@
// pages/consult/detail.js
import { shareContent, getProductNewsInfo } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    navTitle: '详情',
    bottomLift: 0
    bottomLift: 0,
    info: {},
    showShare: false
  },
  /**
@@ -17,25 +19,30 @@
    this.setData({
      bottomLift: app.bottomLift
    })
    this.getDetail(options.id)
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  getDetail(id) {
    getProductNewsInfo({ id }).then(res => {
      this.setData({ detail: res.data })
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  openShare() {
    this.setData({showShare: true})
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  handleShare() {
    console.log('点击了分享');
    shareContent(this.data.info.id)
  },
  // onShareAppMessage: function () {
  //   // let { productDetail, userInfo } = this.data
  //   return {
  //     title: productDetail.title,
  //     path: '/pages/index/index?id=' + productDetail.id + '&shareuserid=' + userInfo.id + '&type=0'
  //   }
  // },
  onClose() {
    this.setData({showShare: false})
  },
  onHide() {
  },
wechat_jiaxuan/pages/consult/detail.json
@@ -1,3 +1,6 @@
{
  "usingComponents": {}
  "usingComponents": {
    "van-popup": "@vant/weapp/popup/index"
  },
  "navigationBarTitleText": "详情"
}
wechat_jiaxuan/pages/consult/detail.less
@@ -46,6 +46,7 @@
    }
  }
  .item {
    margin-top: 18rpx;
    display: flex;
    flex-direction: column;
    justify-content: center;
@@ -58,4 +59,34 @@
      width: 44rpx;
    }
  }
}
.share_modal{
  .btns{
    display: flex;
    min-height: 320rpx;
    display: flex;
    align-items: center;
    .item{
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      flex: 1;
      font-size: 26rpx;
      background-color: #fff;
      image{
        width: 80rpx;
        height: 80rpx;
        margin-bottom: 10rpx;
      }
    }
  }
  .cancel{
    height: 80rpx;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1rpx solid #e5e5e5;
  }
}
wechat_jiaxuan/pages/consult/detail.wxml
@@ -1,5 +1,5 @@
<view>
  <navBar title="{{ navTitle }}"></navBar>
  <!-- <navBar title="{{ navTitle }}"></navBar> -->
  <view class="main_content">
    <view class="main_title">三种美好玄关,进屋瞬间卸载疲惫</view>
    <view class="datetime">发布时间:2021-08-21 10:0</view>
@@ -11,18 +11,34 @@
  <!-- footer -->
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <view class="item">
      <!-- <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
      </view> -->
      <button open-type="share" class="item" bindtap="handleShare">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
      </button>
      <view class="sub_btn">
        <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
        <view>免费预约专属设计</view>
      </view>
    </view>
  </view>
  <!--  -->
  <van-popup position="bottom" show="{{ showShare }}" bind:close="onClose">
    <view class="share_modal">
      <view class="btns">
        <button open-type="share" class="item" bindtap="handleShare">
          <image src="../../static/icon/wechat.png"></image>
          <view>发送好友</view>
        </button>
        <button class="item">
          <image src="../../static/icon/download.png"></image>
          <view>下载海报</view>
        </button>
      </view>
      <view bindtap="onClose" class="cancel">取消</view>
    </view>
  </van-popup>
</view>
wechat_jiaxuan/pages/consult/detail.wxss
@@ -44,6 +44,7 @@
  margin-right: 8rpx;
}
.footer .item {
  margin-top: 18rpx;
  display: flex;
  flex-direction: column;
  justify-content: center;
@@ -55,3 +56,30 @@
.footer .item .icon {
  width: 44rpx;
}
.share_modal .btns {
  min-height: 320rpx;
  display: flex;
  align-items: center;
}
.share_modal .btns .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex: 1;
  font-size: 26rpx;
  background-color: #fff;
}
.share_modal .btns .item image {
  width: 80rpx;
  height: 80rpx;
  margin-bottom: 10rpx;
}
.share_modal .cancel {
  height: 80rpx;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1rpx solid #e5e5e5;
}
wechat_jiaxuan/pages/design/design.js
@@ -1,5 +1,6 @@
import {
  getDictData,
  getArea,
  saveFreeCustomizationApply
} from '../../api/index'
Page({
@@ -14,6 +15,8 @@
    showAreaList: false,
    areaList: [],
    cascaderValue: '',
    DESIGN_BANNER: '',
    WechatIMG558: '',
  },
@@ -47,6 +50,7 @@
  // æ˜¾ç¤ºåˆ‡æ¢åŸŽå¸‚弹窗
  chooseCity () {
    this.setData({ showAreaList: !this.data.showAreaList })
    console.log('chooseCity', chooseCity);
  },
  // åˆ‡æ¢åŸŽå¸‚
  confirmChange(e) {
@@ -64,7 +68,19 @@
    this.getShopList()
    this.chooseCity()
  },
  onFinish() {
  },
  onClose() {
    this.setData({ showAreaList: false })
  },
  initData() {
    getArea({
      "level": "",
      "pid": ""
    }).then(res => {
      this.setData({areaList: res.data})
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'DESIGN_BANNER'
wechat_jiaxuan/pages/design/design.json
@@ -1,7 +1,7 @@
{
  "usingComponents": {
    "van-field": "@vant/weapp/field/index",
    "van-area": "@vant/weapp/area/index",
    "van-cascader": "@vant/weapp/cascader/index",
    "van-popup": "@vant/weapp/popup/index"
  },
  "navigationBarTitleText": "0元免费设计"
wechat_jiaxuan/pages/design/design.wxml
@@ -19,7 +19,5 @@
  </view>
  <image class="banner" src="{{ WechatIMG558 }}" mode="widthFix"></image>
  <!--  -->
  <van-popup show="{{ showAreaList }}" position="bottom" round>
    <van-area class="area-list" area-list="{{ areaList }}"  bind:confirm="confirmChange" bind:cancel="chooseCity" />
  </van-popup>
  <van-cascader wx:if="{{ showAreaList }}" value="{{ cascaderValue }}" title="请选择所在地区" options="{{ areaList }}" bind:close="onClose" bind:finish="onFinish" />
</view>
wechat_jiaxuan/pages/detailDis/case.js
@@ -1,11 +1,12 @@
// pages/detailDis/case.js
import { shareContent } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
    bottomLift: 0,
    showShare: false
  },
  /**
@@ -18,11 +19,22 @@
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  openShare() {
    this.setData({showShare: true})
  },
  handleShare() {
    console.log('点击了分享');
    shareContent(this.data.info.id)
  },
  // onShareAppMessage: function () {
  //   // let { productDetail, userInfo } = this.data
  //   return {
  //     title: productDetail.title,
  //     path: '/pages/index/index?id=' + productDetail.id + '&shareuserid=' + userInfo.id + '&type=0'
  //   }
  // },
  onClose() {
    this.setData({showShare: false})
  },
  /**
wechat_jiaxuan/pages/detailDis/case.json
@@ -1,4 +1,6 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "案例详情"
  "usingComponents": {
    "van-popup": "@vant/weapp/popup/index"
  },
  "navigationBarTitleText": ""
}
wechat_jiaxuan/pages/detailDis/case.less
@@ -58,6 +58,20 @@
  }
}
.spaceList{
  .item{
    margin-bottom: 60rpx;
    .name{
      font-weight: 600;
      font-size: 36rpx;
      color: #111111;
    }
    .img{
      width: 100%;
      border-radius: 8rpx;
    }
  }
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
@@ -100,4 +114,34 @@
      width: 44rpx;
    }
  }
}
.share_modal{
  .btns{
    display: flex;
    min-height: 320rpx;
    display: flex;
    align-items: center;
    .item{
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      flex: 1;
      font-size: 26rpx;
      background-color: #fff;
      image{
        width: 80rpx;
        height: 80rpx;
        margin-bottom: 10rpx;
      }
    }
  }
  .cancel{
    height: 80rpx;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1rpx solid #e5e5e5;
  }
}
wechat_jiaxuan/pages/detailDis/case.wxml
@@ -34,7 +34,7 @@
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
      <view class="item" bindtap="openShare">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
wechat_jiaxuan/pages/detailDis/case.wxss
@@ -45,6 +45,18 @@
  font-size: 28rpx;
  color: #333333;
}
.spaceList .item {
  margin-bottom: 60rpx;
}
.spaceList .item .name {
  font-weight: 600;
  font-size: 36rpx;
  color: #111111;
}
.spaceList .item .img {
  width: 100%;
  border-radius: 8rpx;
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
@@ -88,3 +100,30 @@
.footer .item .icon {
  width: 44rpx;
}
.share_modal .btns {
  min-height: 320rpx;
  display: flex;
  align-items: center;
}
.share_modal .btns .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex: 1;
  font-size: 26rpx;
  background-color: #fff;
}
.share_modal .btns .item image {
  width: 80rpx;
  height: 80rpx;
  margin-bottom: 10rpx;
}
.share_modal .cancel {
  height: 80rpx;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1rpx solid #e5e5e5;
}
wechat_jiaxuan/pages/detailDis/product.js
@@ -1,11 +1,15 @@
// pages/detailDis/product.js
import { shareContent, getProductInfo, actionDo } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
    bottomLift: 0,
    id: '',
    info: {},
    member: {},
    showShare: false
  },
  /**
@@ -16,46 +20,116 @@
    this.setData({
      bottomLift: app.bottomLift
    })
    this.getDetail(options.id)
    actionDo({
      actionType: 'view',
      id: options.id
    })
    const member = wx.getStorageSync('member')
    this.setData({id: options.id, member})
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  handleAction(e){
    const actionType = e.currentTarget.dataset.code
    const { info } = this.data
    actionDo({
      actionType,
      id: this.data.info.id
    }).then(res => {
      info.isCollection = info.isCollection || info.isCollection == 'true' ? 'false' : 'true'
      this.setData({info})
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  getDetail(id) {
    getProductInfo({id}).then(res => {
      this.setData({ info: res.data })
      wx.setNavigationBarTitle({
        title: res.data.title
     })
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  playVideo() {
    wx.previewMedia({
      sources: [{ url: this.data.info.video, type: 'video' }]
    })
  },
  bannerbindload(e) {
    const { height, width } = e.detail
    let activeHeight = height * 670 / width
    this.setData({
      bannerHeight: activeHeight
    })
  },
  handleDesign() {
    wx.navigateTo({
      url: '/pages/design/design',
    })
  },
  openShare() {
    this.setData({showShare: true})
  },
  handleShare() {
    console.log('点击了分享');
    actionDo({ actionType: 'share', id: this.data.info.id })
    // shareContent({id: this.data.info.id || this.data.id}).then(res => {
    //   this.setData({showShare: false})
    // })
  },
  // onShareAppMessage: function () {
  //   // let { productDetail, userInfo } = this.data
  //   return {
  //     title: productDetail.title,
  //     path: '/pages/index/index?id=' + productDetail.id + '&shareuserid=' + userInfo.id + '&type=0'
  //   }
  // },
  onClose() {
    this.setData({showShare: false})
  },
  handleDown() {
    let { info } = this.data
    wx.showToast({
      title: '下载中',
      icon: 'loading'
    })
    console.log('info.picUrls', info)
    wx.downloadFile({
      url: info.picUrls,
      success (res) {
        // console.log(res)
        wx.saveImageToPhotosAlbum({
          filePath: res.tempFilePath,
          success(data) {
            that.toSaveCaseShare()
            wx.showToast({
              title: '下载成功',
            })
          },
          fail(error) {
            console.log(error)
            wx.showToast({
              title: '下载失败',
              icon: 'error'
            })
          }
        })
      },
      fail (err) {
        console.log(err.errMsg)
        wx.showToast({
          title: '下载失败',
          icon: 'error'
        })
      }
    })
  },
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
wechat_jiaxuan/pages/detailDis/product.json
@@ -1,3 +1,8 @@
{
  "usingComponents": {}
  "usingComponents": {
    "van-popup": "@vant/weapp/popup/index",
    "authCard": "/components/authCard/authCard",
    "mp-html": "mp-html"
  },
  "navigationBarTitleText": ""
}
wechat_jiaxuan/pages/detailDis/product.less
@@ -44,22 +44,26 @@
page {
  background-color: #f7f7f7;
}
.banner_swiper{
  image{
    width: 100%;
  }
}
.main_content {
  padding: 52rpx 40rpx 40rpx;
  border-radius: 16rpx 16rpx 0rpx 0rpx;
  background-color: #fff;
  margin-bottom: 20rpx;
  .title {
    font-weight: 500;
    font-size: 36rpx;
    margin-bottom: 16rpx;
  }
  .desc {
    font-size: 26rpx;
    color: #555555;
    margin: 16rpx 0 26rpx;
    margin-bottom: 26rpx;
  }
  .text {
@@ -68,7 +72,18 @@
    margin-bottom: 40rpx;
  }
}
.spaceList{
  .item{
    .name{
      font-weight: 600;
      font-size: 36rpx;
      color: #111111;
    }
    .img{
      width: 100%;
    }
  }
}
.counselor {
  width: 670rpx;
  padding: 0 0 0 30rpx;
@@ -121,11 +136,27 @@
    font-size: 36rpx;
    margin-bottom: 32rpx;
  }
  video {
  .img_wrap{
    width: 100%;
    border: 1px solid;
    border-radius: 8rpx;
    position: relative;
    .img{
      width: 100%;
    }
    .play{
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width: 136rpx;
      height: 58rpx;
      line-height: 56rpx;
      text-align: center;
      background: rgba(0,0,0,0.54);
      border-radius: 30rpx;
      font-size: 26rpx;
      color: rgba(255,255,255,0.8);
    }
  }
}
@@ -141,15 +172,17 @@
  .line {
    display: flex;
    height: 62rpx;
    height: 32rpx;
    margin-bottom: 24rpx;
    .label {
      width: 120rpx;
      font-size: 24rpx;
      color: #666666;
    }
    .val {
      flex: 1;
      font-size: 24rpx;
      color: #333333;
    }
@@ -167,6 +200,10 @@
    display: flex;
    align-items: center;
    height: 100rpx;
    .btn{
      padding: 0;
      margin-top: 16rpx;
    }
  }
  .sub_btn {
    display: flex;
@@ -197,4 +234,34 @@
      width: 44rpx;
    }
  }
}
.share_modal{
  .btns{
    display: flex;
    min-height: 320rpx;
    display: flex;
    align-items: center;
    .item{
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      flex: 1;
      font-size: 26rpx;
      background-color: #fff;
      image{
        width: 80rpx;
        height: 80rpx;
        margin-bottom: 10rpx;
      }
    }
  }
  .cancel{
    height: 80rpx;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1rpx solid #e5e5e5;
  }
}
wechat_jiaxuan/pages/detailDis/product.wxml
@@ -1,5 +1,5 @@
<view>
  <view class="user">
  <view class="user" wx:if="{{ false }}">
    <view class="avatar"></view>
    <view class="content">
      <view class="name">丁梓林</view>
@@ -7,55 +7,78 @@
    </view>
    <view class="btn">联系TA</view>
  </view>
  <!-- banner轮播 -->
  <swiper class="banner_swiper" circular indicator-dots autoplay style="height:{{bannerHeight}}rpx" duration>
    <block wx:for="{{ info.bannerImgList }}">
      <swiper-item>
        <image bindload="bannerbindload" mode="widthFix" src="{{ item }}"></image>
      </swiper-item>
    </block>
  </swiper>
  <view class="main_content">
    <view class="title">莫西假日-餐厅</view>
    <view class="desc">简欧风格</view>
    <view class="text">家居风格不囿于固有形式,厨房功能不局限于一日三餐。
      å…ƒç´ ä¸Žæè´¨ç¢°æ’žå‡ºçš„不仅是设计感,更是一种鲜明的不拘
      ä¸€æ ¼çš„现代态度,融合当下流行美学,构设空间的无风格
      åŒ–。</view>
    <view class="user counselor">
      <view class="avatar_wrap">
        <image class="avatar" mode="widthFix" src="../../static/icon/home_ic_guwen@2x.png"></image>
      </view>
      <view class="content">
        <view class="name">您的专属家居顾问</view>
        <view class="desc">您身边的全屋设计专家</view>
      </view>
      <view class="btn">去看看</view>
    </view>
    <view class="title">{{ info.title }}</view>
    <view class="desc" wx:if="{{ info.subtitle }}">{{ info.subtitle }}</view>
    <view class="text">{{ info.intro }}</view>
    <authCard type="{{ member.authStatus }}" />
  </view>
  <!-- video -->
  <view class="video">
  <view wx:if="{{ info.video }}" class="video">
    <view class="title">产品视频</view>
    <video src=""></video>
    <view class="img_wrap">
      <image class="img" src="{{ info.coverImage }}" mode="widthFix"></image>
      <view bindtap="playVideo" class="play">播放</view>
    </view>
  </view>
  <view class="detail">
    <view class="title">产品详情</view>
    <view class="line">
      <view class="label">品名:</view>
      <view class="val">莫西假日-餐厅</view>
    <view class="line" wx:for="{{ info.productParamList }}">
      <view class="label">{{ item.paramName }}:</view>
      <view class="val">{{ item.paramValue }}</view>
    </view>
    <view class="line">
      <view class="label">工艺:</view>
      <view class="val">莫西假日-餐厅</view>
  </view>
  <!-- å¯Œæ–‡æœ¬ -->
  <view>
    <!-- <mp-html content="{{info.content}}"></mp-html> -->
  </view>
  <view class="spaceList">
    <view class="item" wx:for="{{ info.spaceList }}">
      <!-- <view class="name">{{ item.spaceName }}</view> -->
      <image src="{{ item.spaceImg }}" mode="widthFix" class="img"></image>
      <!-- <mp-html content="{{item.spaceContent}}"></mp-html> -->
    </view>
  </view>
  <!-- footer -->
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
      <button class="item btn">
        <image data-code="like_cancel" bindtap="handleAction" wx:if="{{ info.isCollection }}" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <image wx:else data-code="like" bindtap="handleAction" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
      </button>
      <button open-type="share" class="item btn" bindtap="handleShare">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
      <view class="sub_btn">
      </button>
      <view class="sub_btn" bindtap="handleDesign">
        <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
        <view>免费预约专属设计</view>
      </view>
    </view>
  </view>
  <!--  -->
  <van-popup position="bottom" show="{{ showShare }}" bind:close="onClose">
    <view class="share_modal">
      <view class="btns">
        <button open-type="share" class="item" bindtap="handleShare">
          <image src="../../static/icon/wechat.png"></image>
          <view>发送好友</view>
        </button>
        <button class="item" bindtap="handleDown">
          <image src="../../static/icon/download.png"></image>
          <view>下载海报</view>
        </button>
      </view>
      <view bindtap="onClose" class="cancel">取消</view>
    </view>
  </van-popup>
</view>
wechat_jiaxuan/pages/detailDis/product.wxss
@@ -38,6 +38,9 @@
page {
  background-color: #f7f7f7;
}
.banner_swiper image {
  width: 100%;
}
.main_content {
  padding: 52rpx 40rpx 40rpx;
  border-radius: 16rpx 16rpx 0rpx 0rpx;
@@ -47,16 +50,25 @@
.main_content .title {
  font-weight: 500;
  font-size: 36rpx;
  margin-bottom: 16rpx;
}
.main_content .desc {
  font-size: 26rpx;
  color: #555555;
  margin: 16rpx 0 26rpx;
  margin-bottom: 26rpx;
}
.main_content .text {
  font-size: 26rpx;
  color: #555555;
  margin-bottom: 40rpx;
}
.spaceList .item .name {
  font-weight: 600;
  font-size: 36rpx;
  color: #111111;
}
.spaceList .item .img {
  width: 100%;
}
.counselor {
  width: 670rpx;
@@ -102,10 +114,27 @@
  font-size: 36rpx;
  margin-bottom: 32rpx;
}
.video video {
.video .img_wrap {
  width: 100%;
  border: 1px solid;
  border-radius: 8rpx;
  position: relative;
}
.video .img_wrap .img {
  width: 100%;
}
.video .img_wrap .play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 136rpx;
  height: 58rpx;
  line-height: 56rpx;
  text-align: center;
  background: rgba(0, 0, 0, 0.54);
  border-radius: 30rpx;
  font-size: 26rpx;
  color: rgba(255, 255, 255, 0.8);
}
.detail {
  padding: 52rpx 40rpx 40rpx;
@@ -118,14 +147,16 @@
}
.detail .line {
  display: flex;
  height: 62rpx;
  height: 32rpx;
  margin-bottom: 24rpx;
}
.detail .line .label {
  width: 120rpx;
  font-size: 24rpx;
  color: #666666;
}
.detail .line .val {
  flex: 1;
  font-size: 24rpx;
  color: #333333;
}
@@ -142,6 +173,10 @@
  display: flex;
  align-items: center;
  height: 100rpx;
}
.footer .btns .btn {
  padding: 0;
  margin-top: 16rpx;
}
.footer .sub_btn {
  display: flex;
@@ -172,3 +207,30 @@
.footer .item .icon {
  width: 44rpx;
}
.share_modal .btns {
  min-height: 320rpx;
  display: flex;
  align-items: center;
}
.share_modal .btns .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex: 1;
  font-size: 26rpx;
  background-color: #fff;
}
.share_modal .btns .item image {
  width: 80rpx;
  height: 80rpx;
  margin-bottom: 10rpx;
}
.share_modal .cancel {
  height: 80rpx;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1rpx solid #e5e5e5;
}
wechat_jiaxuan/pages/detailDis/realpic.js
@@ -1,11 +1,12 @@
// pages/detailDis/realpic.js
import { shareContent } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
    bottomLift: 0,
    showShare: false
  },
  /**
@@ -17,19 +18,22 @@
      bottomLift: app.bottomLift
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  openShare() {
    this.setData({showShare: true})
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  handleShare() {
    console.log('点击了分享');
    shareContent(this.data.info.id)
  },
  // onShareAppMessage: function () {
  //   // let { productDetail, userInfo } = this.data
  //   return {
  //     title: productDetail.title,
  //     path: '/pages/index/index?id=' + productDetail.id + '&shareuserid=' + userInfo.id + '&type=0'
  //   }
  // },
  onClose() {
    this.setData({showShare: false})
  },
  /**
wechat_jiaxuan/pages/detailDis/realpic.json
@@ -1,4 +1,6 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "实景详情"
  "usingComponents": {
    "van-popup": "@vant/weapp/popup/index"
  },
  "navigationBarTitleText": ""
}
wechat_jiaxuan/pages/detailDis/realpic.less
@@ -70,4 +70,34 @@
      width: 44rpx;
    }
  }
}
.share_modal{
  .btns{
    display: flex;
    min-height: 320rpx;
    display: flex;
    align-items: center;
    .item{
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      flex: 1;
      font-size: 26rpx;
      background-color: #fff;
      image{
        width: 80rpx;
        height: 80rpx;
        margin-bottom: 10rpx;
      }
    }
  }
  .cancel{
    height: 80rpx;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    border: 1rpx solid #e5e5e5;
  }
}
wechat_jiaxuan/pages/detailDis/realpic.wxml
@@ -22,7 +22,7 @@
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
      <view class="item" bindtap="openShare">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
wechat_jiaxuan/pages/detailDis/realpic.wxss
@@ -64,3 +64,30 @@
.footer .item .icon {
  width: 44rpx;
}
.share_modal .btns {
  min-height: 320rpx;
  display: flex;
  align-items: center;
}
.share_modal .btns .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  flex: 1;
  font-size: 26rpx;
  background-color: #fff;
}
.share_modal .btns .item image {
  width: 80rpx;
  height: 80rpx;
  margin-bottom: 10rpx;
}
.share_modal .cancel {
  height: 80rpx;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 1rpx solid #e5e5e5;
}
wechat_jiaxuan/pages/discover/discover.js
@@ -1,4 +1,4 @@
// pages/discover/discover.js
import { getCataLogTagList, getCatalogList } from '../../api/index'
Page({
  /**
@@ -6,20 +6,15 @@
   */
  data: {
    menuButtonInfo: {},
    activeTabs: '0'
    catalogCode: "whole_case"
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    let menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    this.setData({menuButtonInfo})
    console.log('WindowInfo', menuButtonInfo);
  },  
  tabsClick(e) {
    const activeTabs = e.currentTarget.dataset.tab
    this.setData({activeTabs})
    const catalogCode = e.currentTarget.dataset.code
    this.setData({catalogCode})
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
wechat_jiaxuan/pages/discover/discover.wxml
@@ -1,23 +1,23 @@
<view class="container">
  <view style="height: {{ menuButtonInfo.top }}px;"></view>
  <view class="main_tab">
    <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-tab="0" bindtap="tabsClick">
    <view class="item {{ catalogCode == 'product_intro' ? 'active' : '' }}" data-code="product_intro" bindtap="tabsClick">
      <view class="name">产品</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '1' ? 'active' : '' }}" data-tab="1" bindtap="tabsClick">
    <view class="item {{ catalogCode == 'whole_case' ? 'active' : '' }}" data-code="whole_case" bindtap="tabsClick">
      <view class="name">案例</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '2' ? 'active' : '' }}" data-tab="2" bindtap="tabsClick">
    <view class="item {{ catalogCode == 'real_case' ? 'active' : '' }}" data-code="real_case" bindtap="tabsClick">
      <view class="name">实景</view>
      <view class="border"></view>
    </view>
  </view>
  <!--  -->
  <view class="main_content" style="height: calc( 100vh - {{menuButtonInfo.top}}px - 88rpx )">
    <disProduct wx:if="{{ activeTabs == '0' }}" />
    <disCase wx:if="{{ activeTabs == '1' }}" />
    <disRealpic wx:if="{{ activeTabs == '2' }}" />
    <disProduct wx:if="{{ catalogCode == 'product_intro' }}" />
    <disCase wx:if="{{ catalogCode == 'whole_case' }}" />
    <disRealpic wx:if="{{ catalogCode == 'real_case' }}" />
  </view>
</view>
wechat_jiaxuan/pages/homeId/index.js
@@ -1,17 +1,27 @@
// pages/consult/consult.js
import { getCataLogTagList, pageZSZXContentList } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    category: ['新品上市', '专利证书', '大牌授权','新品上市', '专利证书', '大牌授权'],
    secondCategory: ['级分类','级分类','级分类','级分类','级分类','级分类'],
    tagList: [],
    activeCate: '',
    seActiveCate: '',
    dataList: []
  },
    dataList: [],
    pageNum: 1,
    pageSize: 10,
    code: '',
    tagCodes: ''
  },
  onLoad(options) {
    wx.setNavigationBarTitle({
      title: options.name
   })
    this.setData({ code: options.code})
    this.getTabList()
    this.getList()
  },
  itemClick(e) {
    const { id } = e.target.dataset
    console.log(e.target.dataset);
@@ -20,20 +30,42 @@
    })
  },
  cateClick(e) {
    const { index } = e.target.dataset
    console.log(index);
    const { code } = e.target.dataset
    this.setData({
      tagCodes: code,
      pageNum: 1,
      dataList: []
    })
    this.getList()
  },
  seCateClick(e) {
    const { index } = e.target.dataset
    console.log(index);
  getTabList() {
    getCataLogTagList({
      catalogCode: this.data.code
    }).then(res => {
      if(res && res.data && res.data.length > 0){
        this.setData({
          tagList: res.data[0].valueVos
        })
      }
    })
  },
  onLoad(options) {
  getList(){
    const { code, tagCodes, pageSize, pageNum } = this.data
    pageZSZXContentList({
      catalogCode: code,
      tagCodes,
      pageSize,
      pageNum
    }).then(res => {
      this.setData({
        dataList: [ ...this.data.dataList, ...res.data.records ]
      })
    })
  },
  onReachBottom() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
wechat_jiaxuan/pages/homeId/index.json
@@ -1,3 +1,3 @@
{
  "navigationBarTitleText": "家的ID"
  "navigationBarTitleText": ""
}
wechat_jiaxuan/pages/homeId/index.less
@@ -56,10 +56,15 @@
.content{
  padding: 0 40rpx 40rpx;
  .item{
    margin-bottom: 60rpx;
    .img{
      width: 100%;
    }
    .title{
      width: 100%;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      font-size: 30rpx;
      color: #111111;
      margin: 24rpx 0 12rpx;
wechat_jiaxuan/pages/homeId/index.wxml
@@ -4,20 +4,20 @@
  <view>
    <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 30rpx;">
      <view class="scroll_cate">
        <view bindtap="cateClick" data-index="{{index}}" wx:for="{{ category }}" class="item {{ index == 0 ? 'active': '' }}">{{ item }}</view>
        <view bindtap="cateClick" data-code="{{item.labelValueCode}}" wx:for="{{ tagList }}" class="item {{ tagCodes == item.labelValueCode ? 'active': '' }}">{{ item.labelValueName }}</view>
      </view>
    </scroll-view>
  </view>
  <!-- content -->
  <view class="content">
    <view class="item" bindtap="itemClick" data-abg="qwe">
      <image class="img" src="../../static/icon/test.png" mode="widthFix"></image>
      <view class="title">吊灯实用特辑 | ä¸€æ­¥å­¦ä¼šç†æƒ³å…‰å½±å¸ƒå±€</view>
    <view wx:for="{{ dataList }}" class="item" bindtap="itemClick" data-abg="qwe">
      <image class="img" src="{{ item.coverImage }}" mode="widthFix"></image>
      <view class="title">{{ item.title }}</view>
      <view class="df_sb static">
        <view>{{ '2021-08-21 12:00:00' }}</view>
        <view>{{ item.publishDt }}</view>
        <view class="df_sb">
          <image class="liulan" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
          <text>1000</text>
          <text>{{ item.viewCount || 0 }}</text>
        </view>
      </view>
    </view>
wechat_jiaxuan/pages/homeId/index.wxss
@@ -52,10 +52,17 @@
.content {
  padding: 0 40rpx 40rpx;
}
.content .item {
  margin-bottom: 60rpx;
}
.content .item .img {
  width: 100%;
}
.content .item .title {
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 30rpx;
  color: #111111;
  margin: 24rpx 0 12rpx;
wechat_jiaxuan/pages/index/index.js
@@ -1,4 +1,13 @@
import { getDictData, getMemberInfo } from '../../api/index'
import {
  getDictData,
  getMemberInfo,
  getZSZXCatalogs,
  getCustomizedNewsList,
  getHomeBanner,
  getHomeBannerDetail,
  getZhongTaiVideoPage,
  getZhongTaiProductNewsPage
} from '../../api/index'
Page({
  /**
@@ -7,17 +16,20 @@
  data: {
    // é¡¶éƒ¨nav
    topHeadStyle: 1,
    showWhiteHead: true,
    top: 0,
    font_color: '#ffffff',
    ZSZXCata: {},
    showWhiteHead: false,
    topHeadBorder: false,
    member: {},
    
    bannerList: [
      {imgurl: ''},
      {imgurl: 'adsa.png'},
      {imgurl: 'adsa.png'},
      {imgurl: 'adsa.png'},
    ],
    bannerList: [],
    bannerImgHeight: 0,
    consultList: [],
    consultImgHeight: 0,
    productVideo: {},
    bannerSwiperOption: {
      indicatorDots: true,
      vertical: false,
@@ -25,31 +37,35 @@
      interval: 3000,
      duration: 500
    },
    serviceList: [],
    testUrl: '',
    HOME_CLASS_A: '',
    HOME_CLASS_B: '',
    HOME_CLASS_B2: '',
    HOME_CLASS_C: '',
  },
  toSearch() {},
  onShow() {
    getMemberInfo().then(res => {
      this.setData({member: res.data})
    })
    const member = wx.getStorageSync('member')
    if(member && (member.authStatus == '1' || member.authStatus == '2')){
      getMemberInfo().then(res => {
        this.setData({member: res.data})
      })
    }else{
      this.setData({member})
    }
  },
  onLoad(options) {
    this.initData()
  },
  changePath(e) {
    let index = e.currentTarget.dataset.type
    console.log(index);
    switch (index) {
      case '0':
        wx.navigateTo({
          url: '/pages/webView/index',
          success: function (res) {
            // é€šè¿‡eventChannel向被打开页面传送数据
            res.eventChannel.emit('acceptDataFromOpenerPage', { link: 'https://m.zbom.com/mobile/styleTest.html?type=1' })
            res.eventChannel.emit('acceptDataFromOpenerPage', { link: this.data.testUrl })
            // saveBehavior({ type: 1 })
          }
        })
@@ -79,7 +95,47 @@
        break;
    }
  },
  changeStrategy(e) {
    let item = e.currentTarget.dataset.item
    wx.navigateTo({
      url: `/pages/homeId/index?code=${item.code}&name=${item.name}` ,
    })
  },
  initData() {
    // è½®æ’­
    getHomeBanner().then(res => {
      this.setData({ bannerList: res.data })
    })
    // äº§å“è§†é¢‘
    getZhongTaiVideoPage({ pageSize: 1, pageNum: 1 }).then(res => {
      if(res.data.records && res.data.records.length > 0){
        this.setData({ productVideo: res.data.records })
      }
    })
    getZSZXCatalogs().then(res => { //志说装修
      this.setData({
        ZSZXCata: res.data || {}
      })
    })
    // èµ„讯
    getZhongTaiProductNewsPage({
      catalogCode: 'product_info',
      pageSize: 5, pageNum: 1
    }).then(res => {
      if(res.data){
        this.setData({ consultList: res.data.records })
      }
    })
    getCustomizedNewsList().then(res => { // å®šåˆ¶æœåŠ¡
      this.setData({serviceList: res.data || []})
    })
    // é£Žæ ¼æµ‹è¯•
    getDictData({
      code: 'WX_MINI_CONFIG',
      label: 'ZBOM_STYLE_TEST_URL'
    }).then(res => {
      this.setData({ testUrl: res.data.code })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_A'
@@ -110,10 +166,47 @@
      url: '/pages/productVideo/index',
    })
  },
  jumpProKefu() {
    wx.navigateTo({
      url: '/pages/kefu/index',
  videoClick(e) {
    const { videourl } = e.currentTarget.dataset
    wx.previewMedia({
      sources: [{ url: videourl, type: 'video' }]
    })
  },
  goserHeight:function (e) {
    const serviceHeight = e.detail.height
    this.setData({
      serviceHeight: serviceHeight
    })
  },
  bannerbindload(e) {
    const height = e.detail.height
    this.setData({
      bannerImgHeight: height
    })
  },
  consultbindload(e) {
    const { height, width } = e.detail
    let activeHeight = height * 670 / width
    this.setData({
      consultImgHeight: activeHeight
    })
  },
  bannerClick(e) {
    const { id } = e.currentTarget.dataset
    getHomeBannerDetail({id})
  },
  seriveClick(e) {
    const { id, title } = e.currentTarget.dataset
    if(title === '专属客服'){
      wx.navigateTo({
        url: `/pages/kefu/index?title=${title}&id=${id}`,
      })
    }else{
      wx.navigateTo({
        url: `/pages/kefu/service?title=${title}&id=${id}`,
      })
    }
  },
  jumpProConsult() {
    wx.switchTab({
@@ -126,7 +219,36 @@
  onReady() {
  },
  onPageScroll(e) {
    let scrollTop = e.scrollTop / 100
    if (scrollTop <= 0.1) {
      this.setData({ font_color: '#ffffff' })
    } else if (scrollTop >= 0.1 && scrollTop < 0.2) {
      this.setData({ font_color: '#d0d0d0' })
    } else if (scrollTop >= 0.2 && scrollTop < 0.3) {
      this.setData({ font_color: '#bdbdbd' })
    } else if (scrollTop >= 0.3 && scrollTop < 0.4) {
      this.setData({ font_color: '#a1a1a1' })
    } else if (scrollTop >= 0.4 && scrollTop < 0.5) {
      this.setData({ font_color: '#878787' })
    } else if (scrollTop >= 0.5 && scrollTop < 0.6) {
      this.setData({ font_color: '#6d6d6d' })
    } else if (scrollTop >= 0.6 && scrollTop < 0.7) {
      this.setData({ font_color: '#535353' })
    } else if (scrollTop >= 0.7 && scrollTop < 0.8) {
      this.setData({ font_color: '#3b3b3b' })
    } else if (scrollTop >= 0.8 && scrollTop < 0.9) {
      this.setData({ font_color: '#282828' })
    } else if (scrollTop >= 0.9) {
      this.setData({ font_color: '#000000' })
    }
    if (scrollTop > 0) {
      this.setData({ showWhiteHead: true })
    } else{
      this.setData({ showWhiteHead: false })
    }
    this.setData({ topHeadStyle: scrollTop, top: scrollTop })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
wechat_jiaxuan/pages/index/index.less
@@ -1,7 +1,8 @@
.container {
  background-color: #f7f7f7;
  overflow-y: auto;
  height: 100vh;
  min-height: 100vh;
  .banner_swiper {
    height: 600rpx;
    width: 100%;
@@ -14,13 +15,9 @@
  }
  .consult_swiper {
    height: 420rpx;
    width: 100%;
    image {
      width: 100%;
      height: 100%;
      display: block;
    }
  }
@@ -31,6 +28,7 @@
    align-items: center;
    padding: 60rpx 0;
    background-color: #fff;
    .logo {
      width: 246rpx;
    }
@@ -87,20 +85,47 @@
    padding: 72rpx 40rpx;
    background-color: #fff;
    video {
    .video_wrap {
      width: 670rpx;
      height: 300rpx;
      border: 1px solid;
      position: relative;
      .play {
        width: 60rpx;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        z-index: 1;
      }
      .img {
        width: 100%;
      }
    }
  }
  .strategy {
    padding: 80rpx 40rpx;
    background: #F7F7F7;
    image {
      width: 100%;
      height: 100%;
    .item {
      position: relative;
      image {
        width: 100%;
        height: 100%;
        position: absolute;
      }
      text {
        color: #fff;
        position: absolute;
        bottom: 40rpx;
        left: 40rpx;
        font-size: 32rpx;
        font-weight: 500;
      }
    }
    .line {
@@ -180,4 +205,19 @@
    }
  }
}
.top-head-transparent {
  background-color: transparent !important;
  .van-nav-bar__title {
    /* color: #fff; */
    width: calc(100% - 80rpx);
    max-width: 100%;
    padding: 0 40rpx;
    text-align: left;
    color: #fff;
    font-weight: bold;
    font-size: 40rpx;
  }
}
wechat_jiaxuan/pages/index/index.wxml
@@ -1,18 +1,23 @@
<!-- é¡¶éƒ¨nav -->
<view class="container">
  <van-nav-bar wx:if="{{ showWhiteHead }}" border="{{ topHeadBorder }}" custom-class="top-head" fixed custom-style="opacity: {{ topHeadStyle }}">
    <view slot="left" class="flex-cc search" bindtap="toSearch">
      <text>志邦家选</text>
    <view slot="left" class="flex-cc search">
      <text  style="color: {{font_color}};">志邦家选</text>
      <van-icon name="search" size="23px" color="#fff" />
      <!-- <image src="/static/icon/home_ic_search_black.png" mode="widthFix"></image> -->
      <!-- <text>搜索</text> -->
    </view>
  </van-nav-bar>
  <van-nav-bar wx:else border="{{ topHeadBorder }}" custom-class="top-head-transparent" fixed>
    <view slot="left" class="flex-cc search">
      <text style="color: {{font_color}};">志邦家选</text>
    </view>
  </van-nav-bar>
  <!-- banner轮播 -->
  <swiper class="banner_swiper" circular indicator-dots="{{ bannerSwiperOption.indicatorDots }}" autoplay="{{ bannerSwiperOption.autoplay }}" interval="{{ bannerSwiperOption.interval }}" duration="{{ bannerSwiperOption.duration }}">
  <swiper class="banner_swiper" circular indicator-dots="{{ bannerSwiperOption.indicatorDots }}" autoplay="{{ bannerSwiperOption.autoplay }}" interval="{{ bannerSwiperOption.interval }}" style="height:{{bannerImgHeight}}rpx" duration="{{ bannerSwiperOption.duration }}">
    <block wx:for="{{ bannerList }}" wx:key="index">
      <swiper-item>
        <image mode="aspectFill" src="../../static/icon/test.png"></image>
        <image data-id="{{ item.id }}" bindtap="bannerClick" bindload="bannerbindload" mode="widthFix" src="{{ item.coverImage }}"></image>
      </swiper-item>
    </block>
  </swiper>
@@ -36,9 +41,10 @@
  </view>
  <!--  -->
  <authCard type="{{ member.authStatus }}" />
  <!-- <authCard type="1" /> -->
  <!-- äº§å“è§†é¢‘  -->
  <view class="product_video" bindtap="jumpProVideo">
    <view class="com_header">
  <view class="product_video">
    <view bindtap="jumpProVideo" class="com_header">
      <view class="left">
        <view class="name">
          <image class="icon" src="../../static/icon/home_ic_zhutihuodong.png"></image>
@@ -48,7 +54,10 @@
      </view>
      <image class="ar_right" src="../../static/icon/home_ar@2x.png"></image>
    </view>
    <video controls class="main_video" src="https://vdept3.bdstatic.com/mda-njed6187hpegim0d/cae_h264/1665826435448713448/mda-njed6187hpegim0d.mp4?v_from_s=hkapp-haokan-hbe&auth_key=1720440602-0-0-f249e56273037ad05b8f7066fd0973ca&bcevod_channel=searchbox_feed&pd=1&cr=0&cd=0&pt=3&logid=0601949156&vid=646246476325419292&klogid=0601949156&abtest=101830_1-17451_2"></video>
    <view class="video_wrap">
      <image class="img" src="{{ productVideo[0].coverImage }}" mode="widthFix"></image>
      <image bindtap="videoClick" data-videourl="{{ productVideo[0].videoUrl }}" class="play" src="../../static/icon/ic_play.png" mode="widthFix"></image>
    </view>
  </view>
  <!-- æ”»ç•¥ -->
  <view class="strategy">
@@ -62,16 +71,24 @@
      </view>
    </view>
    <view class="line">
      <view class="line_left">
      <view class="line_left item" data-item="{{ ZSZXCata.jdId }}" bindtap="changeStrategy">
        <image src="{{HOME_CLASS_A}}"></image>
        <text>{{ ZSZXCata.jdId.name }}</text>
      </view>
      <view class="line_right">
        <view class="item"><image src="{{ HOME_CLASS_B }}"></image></view>
        <view class="item"><image src="{{ HOME_CLASS_B2 }}"></image></view>
        <view class="item" data-item="{{ ZSZXCata.cfsj }}" bindtap="changeStrategy">
          <image src="{{ HOME_CLASS_B }}"></image>
          <text>{{ ZSZXCata.cfsj.name }}</text>
        </view>
        <view class="item" data-item="{{ ZSZXCata.snsj }}" bindtap="changeStrategy">
          <image src="{{ HOME_CLASS_B2 }}"></image>
          <text>{{ ZSZXCata.snsj.name }}</text>
        </view>
      </view>
    </view>
    <view class="home_id">
    <view data-item="{{ ZSZXCata.qwsj.code }}" bindtap="changeStrategy" class="home_id item">
      <image src="{{HOME_CLASS_C}}"></image>
      <text>{{ ZSZXCata.qwsj.name }}</text>
    </view>
  </view>
  <!-- å’¨è¯¢ -->
@@ -86,16 +103,16 @@
      </view>
      <image class="ar_right" src="../../static/icon/home_ar@2x.png"></image>
    </view>
    <swiper class="consult_swiper" circular indicator-dots="{{ bannerSwiperOption.indicatorDots }}" autoplay="{{ bannerSwiperOption.autoplay }}" interval="{{ bannerSwiperOption.interval }}" duration="{{ bannerSwiperOption.duration }}">
    <block wx:for="{{ bannerList }}" wx:key="index">
    <swiper class="consult_swiper" circular indicator-dots="{{ bannerSwiperOption.indicatorDots }}" autoplay="{{ bannerSwiperOption.autoplay }}" interval="{{ bannerSwiperOption.interval }}" style="height:{{consultImgHeight}}rpx" duration="{{ bannerSwiperOption.duration }}">
    <block wx:for="{{ consultList }}" wx:key="index">
      <swiper-item>
        <image mode="aspectFill" src="../../static/icon/test.png"></image>
        <image bindload="consultbindload"  mode="widthFix" src="{{ item.coverImage }}"></image>
      </swiper-item>
    </block>
  </swiper>
  </view>
  <!-- service -->
  <view class="consult" bindtap="jumpProKefu">
  <view class="consult">
    <view class="com_header">
      <view class="left">
        <view class="name">
@@ -105,10 +122,10 @@
        <view class="desc">设身处地为你思虑更多,陪伴你的美好生活</view>
      </view>
    </view>
    <swiper class="consult_swiper" circular indicator-dots="{{ bannerSwiperOption.indicatorDots }}" autoplay="{{ bannerSwiperOption.autoplay }}" interval="{{ bannerSwiperOption.interval }}" duration="{{ bannerSwiperOption.duration }}">
    <block wx:for="{{ bannerList }}" wx:key="index">
    <swiper class="consult_swiper" circular indicator-dots="{{ bannerSwiperOption.indicatorDots }}" autoplay="{{ bannerSwiperOption.autoplay }}" interval="{{ bannerSwiperOption.interval }}" style="height:{{serviceHeight}}rpx" duration="{{ bannerSwiperOption.duration }}">
    <block wx:for="{{ serviceList }}" wx:key="index">
      <swiper-item>
        <image mode="aspectFill" src="../../static/icon/test.png"></image>
        <image bindload='goserHeight' data-id="{{ item.id }}" data-title="{{item.title}}" bindtap="seriveClick" mode="widthFix" src="{{ item.fileList[0].fileurlFull }}"></image>
      </swiper-item>
    </block>
  </swiper>
wechat_jiaxuan/pages/index/index.wxss
@@ -1,7 +1,7 @@
.container {
  background-color: #f7f7f7;
  overflow-y: auto;
  height: 100vh;
  min-height: 100vh;
}
.container .banner_swiper {
  height: 600rpx;
@@ -13,13 +13,10 @@
  display: block;
}
.container .consult_swiper {
  height: 420rpx;
  width: 100%;
}
.container .consult_swiper image {
  width: 100%;
  height: 100%;
  display: block;
}
.container .logo_wrap {
  width: 100%;
@@ -75,18 +72,40 @@
  padding: 72rpx 40rpx;
  background-color: #fff;
}
.container .product_video video {
.container .product_video .video_wrap {
  width: 670rpx;
  height: 300rpx;
  border: 1px solid;
  position: relative;
}
.container .product_video .video_wrap .play {
  width: 60rpx;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}
.container .product_video .video_wrap .img {
  width: 100%;
}
.container .strategy {
  padding: 80rpx 40rpx;
  background: #F7F7F7;
}
.container .strategy image {
.container .strategy .item {
  position: relative;
}
.container .strategy .item image {
  width: 100%;
  height: 100%;
  position: absolute;
}
.container .strategy .item text {
  color: #fff;
  position: absolute;
  bottom: 40rpx;
  left: 40rpx;
  font-size: 32rpx;
  font-weight: 500;
}
.container .strategy .line {
  display: flex;
@@ -148,3 +167,16 @@
  width: 44rpx;
  height: 44rpx;
}
.top-head-transparent {
  background-color: transparent !important;
}
.top-head-transparent .van-nav-bar__title {
  /* color: #fff; */
  width: calc(100% - 80rpx);
  max-width: 100%;
  padding: 0 40rpx;
  text-align: left;
  color: #fff;
  font-weight: bold;
  font-size: 40rpx;
}
wechat_jiaxuan/pages/kefu/index.js
@@ -1,11 +1,12 @@
// pages/kefu/index.js
import { getCustomizedNewsDetail } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
    bottomLift: 0,
    info: {}
  },
  /**
@@ -16,11 +17,17 @@
    this.setData({
      bottomLift: app.bottomLift
    })
    if(options && options.id){
      this.getDetail(options.id)
    }
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  getDetail(id) {
    getCustomizedNewsDetail({id}).then(res => {
      this.setData({
        info: { ...res.data }
      })
    })
  },
  onReady() {
  },
wechat_jiaxuan/pages/kefu/index.json
@@ -1,4 +1,6 @@
{
  "usingComponents": {},
  "usingComponents": {
    "mp-html": "mp-html"
  },
  "navigationBarTitleText": "专属客服"
}
wechat_jiaxuan/pages/kefu/index.less
@@ -42,4 +42,4 @@
      width: 44rpx;
    }
  }
}
}
wechat_jiaxuan/pages/kefu/index.wxml
@@ -1,4 +1,8 @@
<view class="container">
  <view>
    <!-- <rich-text nodes="{{ info.content }}"></rich-text> -->
    <mp-html content="{{info.content}}"></mp-html>
  </view>
  <!-- footer -->
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
wechat_jiaxuan/pages/kefu/service.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
import { getCustomizedNewsDetail } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    info: {}
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    if(options && options.id){
      this.getDetail(options.id)
    }
    wx.setNavigationBarTitle({
      title: options.title
   })
  },
  getDetail(id) {
    getCustomizedNewsDetail({id}).then(res => {
      this.setData({
        info: { ...res.data }
      })
    })
  },
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/kefu/service.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
  "usingComponents": {
    "mp-html": "mp-html"
  },
  "navigationBarTitleText": ""
}
wechat_jiaxuan/pages/kefu/service.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
<view class="container">
  <mp-html content="{{info.content}}"></mp-html>
</view>
wechat_jiaxuan/pages/kefu/service.wxss
wechat_jiaxuan/pages/productVideo/index.js
@@ -1,22 +1,39 @@
// pages/consult/consult.js
import { getZhongTaiVideoPage, getCataLogTagList } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    category: ['新品上市', '专利证书', '大牌授权','新品上市', '专利证书', '大牌授权'],
    secondCategory: ['级分类','级分类','级分类','级分类','级分类','级分类'],
    category: [],
    activeCate: '',
    seActiveCate: '',
    dataList: []
  },
    dataList: [],
    total: 0,
    pageSize: 10,
    pageNum: 1,
  },
  getList() {
    const { pageSize, pageNum } = this.data
    getZhongTaiVideoPage({
      pageSize,pageNum
    }).then(res => {
      this.setData({ dataList: res.data.records })
    })
  },
  getTagList() {
    getCataLogTagList({
      catalogCode: 'video_rec'
    }).then(res => {
      this.setData({ category: res.data.valueVos })
    })
  },
  itemClick(e) {
    const { id } = e.target.dataset
    console.log(e.target.dataset);
    wx.navigateTo({
      url: '/pages/consult/detail',
    const { videourl } = e.currentTarget.dataset
    wx.previewMedia({
      sources: [{ url: videourl, type: 'video' }]
    })
  },
  cateClick(e) {
@@ -28,7 +45,8 @@
    console.log(index);
  },
  onLoad(options) {
    this.getTagList()
    this.getList()
  },
  /**
wechat_jiaxuan/pages/productVideo/index.less
@@ -56,8 +56,22 @@
.content{
  padding: 0 40rpx 40rpx;
  .item{
    .img{
    margin-bottom: 60rpx;
    position: relative;
    .play{
      width: 60rpx;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      z-index: 1;
    }
    .img_wrap{
      width: 100%;
      position: relative;
      .img{
        width: 100%;
      }
    }
    .title{
      font-size: 30rpx;
wechat_jiaxuan/pages/productVideo/index.wxml
@@ -1,8 +1,4 @@
<view class="container">
  <view class="search_wrap">
    <image src="../../static/icon/ic_search@2x.png" mode="widthFix"></image>
    <input type="text" placeholder="搜索咨询标题" />
  </view>
  <!-- åˆ†ç±» -->
  <view>
    <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 30rpx;">
@@ -10,22 +6,26 @@
        <view bindtap="cateClick" data-index="{{index}}" wx:for="{{ category }}" class="item {{ index == 0 ? 'active': '' }}">{{ item }}</view>
      </view>
    </scroll-view>
    <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 28rpx;">
    <!-- <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 28rpx;">
      <view class="scroll_cate second_list">
        <view bindtap="seCateClick" data-index="{{index}}" wx:for="{{ secondCategory }}" class="item {{ index == 0 ? 'active': '' }}">{{ index }}{{ item }}</view>
      </view>
    </scroll-view>
    </scroll-view> -->
  </view>
  <!-- content -->
  <view class="content">
    <view class="item" bindtap="itemClick" data-abg="qwe">
      <image class="img" src="../../static/icon/test.png" mode="widthFix"></image>
      <view class="title">吊灯实用特辑 | ä¸€æ­¥å­¦ä¼šç†æƒ³å…‰å½±å¸ƒå±€</view>
    <view wx:for="{{ dataList }}" class="item">
      <view class="img_wrap">
        <image class="img" src="{{ item.coverImage }}" mode="widthFix"></image>
        <image bindtap="itemClick" data-videourl="{{ item.videoUrl }}" class="play" src="../../static/icon/ic_play.png" mode="widthFix"></image>
      </view>
      <view class="title">{{ item.title }}</view>
      <view class="df_sb static">
        <view>{{ '2021-08-21 12:00:00' }}</view>
        <view>{{ item.publishDt }}</view>
        <view class="df_sb">
          <image class="liulan" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
          <text>1000</text>
          <text>{{ item.viewCount }}</text>
        </view>
      </view>
    </view>
wechat_jiaxuan/pages/productVideo/index.wxss
@@ -52,7 +52,23 @@
.content {
  padding: 0 40rpx 40rpx;
}
.content .item .img {
.content .item {
  margin-bottom: 60rpx;
  position: relative;
}
.content .item .play {
  width: 60rpx;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}
.content .item .img_wrap {
  width: 100%;
  position: relative;
}
.content .item .img_wrap .img {
  width: 100%;
}
.content .item .title {
wechat_jiaxuan/pages/store/info.js
@@ -1,26 +1,64 @@
// pages/store/info.js
import {
  getShopDetail
} from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
    bottomLift: 0,
    clientHeight: 0,
    clientTop: 0,
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    this.getDetail(options.id)
    var app = getApp().globalData
    this.setData({
      bottomLift: app.bottomLift
    })
    const res = wx.getMenuButtonBoundingClientRect()
    this.setData({clientHeight: res.height})
    this.setData({clientTop: res.top})
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  navback() {
    wx.navigateBack()
  },
  makePhone(e) {
    const { linkPhone } = this.data.info
    wx.makePhoneCall({ phoneNumber: linkPhone })
  },
  handleDetail(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: '/pages/store/staff?id=' + id,
    })
  },
  handleNavigation() {
    wx.getLocation({
      type: 'gcj02', //返回可以用于wx.openLocation的经纬度
      success (res) {
        const latitude = res.latitude
        const longitude = res.longitude
        wx.openLocation({
          latitude,
          longitude,
          scale: 18
        })
      }
     })
  },
  getDetail(id) {
    getShopDetail({shopId: id}).then(res => {
      this.setData({ info: res.data })
    })
  },
  onReady() {
  },
wechat_jiaxuan/pages/store/info.json
@@ -1,3 +1,4 @@
{
  "usingComponents": {}
  "usingComponents": {},
  "navigationStyle": "custom"
}
wechat_jiaxuan/pages/store/info.less
@@ -1,7 +1,9 @@
.header {
  position: relative;
  z-index: 999;
  width: 670rpx;
  margin: 40rpx auto 48rpx;
  height: 224rpx;
  height: 170rpx;
  background: #FFFFFF;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.2);
  border-radius: 8rpx;
@@ -10,18 +12,25 @@
  .name {
    font-weight: 500;
    font-size: 36rpx;
    margin-bottom: 16rpx;
  }
  .desc {
    font-size: 26rpx;
    color: #666666;
    margin: 16rpx 0 24rpx;
    margin-bottom: 24rpx;
  }
  .addr {
    font-size: 26rpx;
    color: #888888;
  }
}
.navback{
  padding-left: 30rpx;
  font-weight: 600;
  font-size: 38rpx;
  color: #FFFFFF;
}
.bg_wrap{
  width: 750rpx;
@@ -33,14 +42,16 @@
  z-index: -1;
}
.main_content {
  position: relative;
  bottom: 80rpx;
  padding: 0 40rpx 40rpx;
  background-color: #fff;
  padding-top: 80rpx;
  .title {
    font-weight: 600;
    font-size: 36rpx;
    margin-bottom: 38rpx;
  }
  .list {
    .item {
      width: 670rpx;
wechat_jiaxuan/pages/store/info.wxml
@@ -1,36 +1,23 @@
<view>
  <navBar title=""></navBar>
  <view class="bg_wrap"></view>
  <!-- <view class="bg_wrap"></view> -->
  <image class="bg_wrap" src="../../static/images/mendian_bg.png" mode="widthFix"></image>
  <view class="navback" style="padding-top: {{ clientTop }}px;height: {{clientHeight + clientTop}}px;">
    <van-icon bindtap="navback" name="arrow-left" />
  </view>
  <view class="container">
    <view class="header">
      <view class="name">合肥方林店</view>
      <view class="desc">全屋定制、整体厨房、木门墙板、卫阳定制</view>
      <view class="addr">2.4km|合肥市金寨路琥珀五环国际A座</view>
      <view class="name">{{ info.name }}</view>
      <!-- <view class="desc">全屋定制、整体厨房、木门墙板、卫阳定制</view> -->
      <view class="addr">2.4|{{ info.address || '--' }}</view>
    </view>
    <view class="main_content">
      <view class="title">门店导购</view>
      <view class="list">
        <view class="item">
          <view class="avatar"></view>
        <view class="item" data-id="{{ item.iamId }}" bindtap="handleDetail" wx:for="{{ info.usersList }}">
          <image src="{{ item.imgurlFull }}" class="avatar"></image>
          <view class="content">
            <view class="name">丁梓林</view>
            <view class="desc">导购|5年经验</view>
          </view>
          <view class="btn">联系TA</view>
        </view>
        <view class="item">
          <view class="avatar"></view>
          <view class="content">
            <view class="name">丁梓林</view>
            <view class="desc">导购|5年经验</view>
          </view>
          <view class="btn">联系TA</view>
        </view>
        <view class="item">
          <view class="avatar"></view>
          <view class="content">
            <view class="name">丁梓林</view>
            <view class="desc">导购|5年经验</view>
            <view class="name">{{ item.name }}</view>
            <view class="desc">导购|{{ info.jobDate || '-'}}年经验</view>
          </view>
          <view class="btn">联系TA</view>
        </view>
@@ -39,11 +26,11 @@
  </view>
  <!-- footer -->
  <view class="footer" style="bottom: {{bottomLift}}px;">
    <view class="btn">
    <view bindtap="handleNavigation" class="btn">
      <image src="../../static/icon/mendian_ic_daohang@2x.png" mode="widthFix"></image>
      <view>导航</view>
    </view>
    <view class="btn phone">
    <view bindtap="makePhone" class="btn phone">
      <image src="../../static/icon/call.png" mode="widthFix"></image>
      <view>门店电话</view>
    </view>
wechat_jiaxuan/pages/store/info.wxss
@@ -1,7 +1,9 @@
.header {
  position: relative;
  z-index: 999;
  width: 670rpx;
  margin: 40rpx auto 48rpx;
  height: 224rpx;
  height: 170rpx;
  background: #FFFFFF;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.2);
  border-radius: 8rpx;
@@ -10,15 +12,22 @@
.header .name {
  font-weight: 500;
  font-size: 36rpx;
  margin-bottom: 16rpx;
}
.header .desc {
  font-size: 26rpx;
  color: #666666;
  margin: 16rpx 0 24rpx;
  margin-bottom: 24rpx;
}
.header .addr {
  font-size: 26rpx;
  color: #888888;
}
.navback {
  padding-left: 30rpx;
  font-weight: 600;
  font-size: 38rpx;
  color: #FFFFFF;
}
.bg_wrap {
  width: 750rpx;
@@ -30,7 +39,11 @@
  z-index: -1;
}
.main_content {
  position: relative;
  bottom: 80rpx;
  padding: 0 40rpx 40rpx;
  background-color: #fff;
  padding-top: 80rpx;
}
.main_content .title {
  font-weight: 600;
wechat_jiaxuan/pages/store/staff.js
@@ -1,4 +1,4 @@
// pages/store/staff.js
import { usersDetailByIamId } from '../../api/index'
Page({
  /**
@@ -6,7 +6,9 @@
   */
  data: {
    bottomLift: 0,
    isShow: false
    isShow: false,
    info: {}
  },
  /**
@@ -17,6 +19,16 @@
    this.setData({
      bottomLift: app.bottomLift
    })
    this.getDetail(options.id)
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    })
  },
  getDetail(id) {
    usersDetailByIamId({iamId: id}).then(res => {
      this.setData({ info: res.data })
    })
  },
  openModal() {
    this.setData({isShow: true})
@@ -24,6 +36,7 @@
  onClose() {
    this.setData({isShow: false})
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
wechat_jiaxuan/pages/store/staff.less
@@ -78,16 +78,23 @@
  display: flex;
  justify-content: space-between;
  margin-bottom: 60rpx;
  .card {
    width: 320rpx;
    height: 156rpx;
    padding: 28rpx 40rpx;
    background-color: #f7f7f7;
    border-radius: 8rpx;
    font-size: 26rpx;
    color: #333333;
    position: relative;
    .bg{
      width: 100%;
      height: 100%;
      position: absolute;
      z-index: -1;
      top: 0;
      left: 0;
    }
    .num {
      color: var(--themeColor);
      margin-top: 8rpx;
wechat_jiaxuan/pages/store/staff.wxml
@@ -2,28 +2,31 @@
  <!-- <navBar></navBar> -->
  <image src="../../static/images/design_banner@2x.png" mode="widthFix" class="bg_wrap"></image>
  <view class="container">
    <image class="avatar" src=""></image>
    <image class="avatar" src="{{ info.imgurlFull }}"></image>
    <view class="name_wrap">
      <view class="left">
        <view class="name">姓名</view>
        <view class="name">{{ info.name }}</view>
        <view class="tag">导购</view>
        <view class="tag">5年经验</view>
        <!-- <view class="tag">{{ info.jobDate || '-' }}年经验</view> -->
      </view>
      <image class="qrcode" src="../../static/icon/mingpian_erweima@2x.png" mode="widthFix"></image>
      <image bindtap="openModal" class="qrcode" src="../../static/icon/mingpian_erweima@2x.png" mode="widthFix"></image>
    </view>
    <view class="desc">
      <image src="../../static/icon/mingpian_ic_edit@2x.png" mode="widthFix"></image>
      <view>用心服务每一位顾客</view>
      <view>{{ info.slogans }}</view>
      <view class="icon"></view>
    </view>
    <view class="static">
      <view class="card">
        <image src="../../static/images/mingpian_bg_nianxian.png" class="bg"></image>
        <view>从业年限</view>
        <view class="num">5</view>
        <view class="num">{{ info.jobDate || '-' }}</view>
      </view>
      <view class="card">
      <image src="../../static/images/mingpian_bg_kehu.png" class="bg"></image>
        <view>服务客户</view>
        <view class="num">500+</view>
        <view class="num" wx:if="{{ info.costomerNum || info.costomerNum == 0 }}">{{ info.costomerNum || '-' }}+</view>
        <view wx:else class="num">--</view>
      </view>
    </view>
    <view class="guide">
@@ -31,38 +34,38 @@
      <view class="line">
        <image class="icon" src="../../static/icon/mingpian_ic_phone@2x.png" mode="widthFix"></image>
        <text class="label">联系电话</text>
        <text class="val">1888888888888</text>
        <text class="val">{{ info.phone }}</text>
      </view>
      <view class="line">
        <image class="icon" src="../../static/icon/mingpian_ic_mendian@2x.png" mode="widthFix"></image>
        <text class="label">门店名称</text>
        <text class="val">1888888888888</text>
        <text class="val">{{ info.shopName }}</text>
      </view>
      <view class="line">
        <image class="icon" src="../../static/icon/mingpian_ic_dizhi@2x.png" mode="widthFix"></image>
        <text class="label">门店地址</text>
        <text class="val">1888888888888</text>
        <text class="val">{{ info.shopAddress }}</text>
      </view>
    </view>
  </view>
  <!-- footer -->
  <view class="footer" style="bottom: {{bottomLift}}px;">
  <view bindtap="openModal" class="footer" style="bottom: {{bottomLift}}px;">
    <view class="btn">
      <image src="../../static/icon/call.png" mode="widthFix"></image>
      <view bindtap="openModal">联系TA</view>
      <view>联系TA</view>
    </view>
  </view>
  <!-- è¯¦æƒ… -->
  <van-popup show="{{ isShow }}"  closeable round bind:close="onClose">
    <view class="modal">
      <view class="header">
        <image class="avatar" src=""></image>
        <image class="avatar" src="{{ info.imgurlFull }}"></image>
        <view class="content">
            <view class="name">姓名</view>
            <view class="desc">导购 ï½œ 5年经验</view>
            <view class="name">{{ info.name }}</view>
            <view class="desc">导购 ï½œ {{ info.jobDate || '--' }}年经验</view>
        </view>
      </view>
      <image class="qrcode" src=""></image>
      <image class="qrcode" src="{{ info.qrcodeImgFull }}"></image>
      <view class="text">长按图片识别二维码</view>
    </view>
  </van-popup>
wechat_jiaxuan/pages/store/staff.wxss
@@ -75,10 +75,18 @@
  width: 320rpx;
  height: 156rpx;
  padding: 28rpx 40rpx;
  background-color: #f7f7f7;
  border-radius: 8rpx;
  font-size: 26rpx;
  color: #333333;
  position: relative;
}
.static .card .bg {
  width: 100%;
  height: 100%;
  position: absolute;
  z-index: -1;
  top: 0;
  left: 0;
}
.static .card .num {
  color: var(--themeColor);
wechat_jiaxuan/pages/store/staffList.js
@@ -1,20 +1,36 @@
// pages/store/staffList.js
import { myUserPage } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    dataList: '',
    capacity: 10,
    page: 1,
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    this.getList()
  },
  handleDetail(e) {
    const id = e.currentTarget.dataset.iamId
    wx.navigateTo({
      url: '/pages/store/staff?id=' + id,
    })
  },
  getList() {
    const { page, capacity } = this.data
    myUserPage({
      model: {},
      page,capacity
    }).then(res => {
      this.setData({ dataList: res.data.records, total: res.data.total })
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
wechat_jiaxuan/pages/store/staffList.json
@@ -1,3 +1,4 @@
{
  "usingComponents": {}
  "usingComponents": {},
  "navigationBarTitleText": "导购列表"
}
wechat_jiaxuan/pages/store/staffList.less
@@ -49,7 +49,6 @@
      width: 88rpx;
      height: 88rpx;
      border-radius: 50%;
      border: 1rpx solid #cccccc;
      margin-right: 24rpx;
    }
wechat_jiaxuan/pages/store/staffList.wxml
@@ -1,5 +1,4 @@
<view>
  <navBar title="导购列表" />
  <view class="header">
    <view class="line">
      <image src="../../static/icon/home_ic_guwen@2x.png" mode="widthFix"></image>
@@ -8,29 +7,13 @@
    <view class="desc">您身边的全屋设计专家~</view>
  </view>
  <view class="list">
        <view class="item">
          <view class="avatar"></view>
          <view class="content">
            <view class="name">丁梓林</view>
            <view class="desc">导购|5年经验</view>
          </view>
          <view class="btn">联系TA</view>
        </view>
        <view class="item">
          <view class="avatar"></view>
          <view class="content">
            <view class="name">丁梓林</view>
            <view class="desc">导购|5年经验</view>
          </view>
          <view class="btn">联系TA</view>
        </view>
        <view class="item">
          <view class="avatar"></view>
          <view class="content">
            <view class="name">丁梓林</view>
            <view class="desc">导购|5年经验</view>
          </view>
          <view class="btn">联系TA</view>
        </view>
    <view wx:for="{{ dataList }}" class="item">
      <image class="avatar" src="{{ item.imgurlFull ? imgurlFull : '../../static/images/default_avatar.png' }}"></image>
      <view class="content">
        <view class="name">{{ item.name || '' }}</view>
        <view class="desc">导购|{{ item.jobDate || '--' }}年经验</view>
      </view>
      <view data-iamId="{{ item.iamId }}" bindtap="handleDetail" class="btn">联系TA</view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/store/staffList.wxss
@@ -49,7 +49,6 @@
  width: 88rpx;
  height: 88rpx;
  border-radius: 50%;
  border: 1rpx solid #cccccc;
  margin-right: 24rpx;
}
.list .item .btn {
wechat_jiaxuan/pages/store/store.js
@@ -1,32 +1,80 @@
// pages/store/store.js
import {
  getShopPage
} from '../../api/index'
var QQMapWX = require('../../utils/qqmap-wx-jssdk.min');
var qqmapsdk;
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    shopList: [],
    address: '',
    latitude: '',
    longitude: '',
  },
  selAddress() {
    console.log('点击了');
    wx.chooseLocation({
      type: 'wgs84',
      success: (res)=> {
      success: (res) => {
        this.setData({
          city: res.name
          address: res.address,
          latitude: res.latitude,
          longitude: res.longitude,
        })
        console.log('res', res);
      }
    })
  },
  onLoad(options) {
    let that = this
    qqmapsdk = new QQMapWX({
      key: 'HIDBZ-2QXL4-TAWUD-XET6Q-EKTJE-CCBSQ'
    });
    qqmapsdk.reverseGeocoder({
      success: (res) => {
        console.log('res', res);
        this.setData({
          address: res.result.address,
          latitude: res.result.latitude,
          longitude: res.result.longitude,
        })
      }
    })
    wx.getLocation({
      type: 'wgs84',
      success(res) {
        const latitude = res.latitude
        const longitude = res.longitude
        that.getShops(latitude, longitude)
      }
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  getShops(latitude, longitude) {
    getShopPage({
      model: {
        longitude,
        latitude
      }
    }).then(res => {
      this.setData({
        shopList: res.data.records
      })
    })
  },
  handleDetail(e) {
    const id =  e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/store/info?id=${id}`,
    })
  },
  makePhone(e) {
    console.log('e', e);
    const phoneNumber = e.currentTarget.dataset.phone
    wx.makePhoneCall({ phoneNumber })
  },
  onReady() {
  },
wechat_jiaxuan/pages/store/store.less
@@ -110,10 +110,15 @@
            .avatar{
              width: 72rpx;
              height: 72rpx;
              border: 1px solid;
              border-radius: 50%;
              margin-right: 16rpx;
            }
            .name{
              width: 120rpx;
              overflow: hidden;
              text-overflow: ellipsis; //文本溢出显示省略号
              white-space: nowrap; //文本不会换行
            }
            .ex{
              font-size: 24rpx;
              color: #999999;
wechat_jiaxuan/pages/store/store.wxml
@@ -1,8 +1,8 @@
<view>
  <view class="app_header">
    <image class="location" src="../../static/icon/location.png" mode="widthFix"></image>
    <view bindtap="selAddress" class="add">{{ 111 }}阿大使大赛的阿大使大赛的阿大使大赛的阿大使大赛的</view>
    <view class="right">
    <view class="add">{{ address }}</view>
    <view bindtap="selAddress" class="right">
      <image src="../../static/icon/ic_dingwei@2x.png" mode="widthFix"></image>
      <text class="primary">重新定位</text>
    </view>
@@ -10,50 +10,29 @@
  <view class="main_content">
    <view class="app_title">AI为您推荐以下门店:</view>
    <view class="shops">
      <view class="shop">
      <view class="shop" wx:for="{{ shopList }}">
        <view class="header">
          <view class="left">
            <view class="title">title</view>
            <view class="address">
              <text>1</text>
            <view class="title" data-id="{{ item.id }}" bindtap="handleDetail">{{ item.name }}</view>
            <view class="address" data-id="{{ item.id }}" bindtap="handleDetail">
              <text wx:if="{{ item.distanceStr }}">{{ item.distanceStr }} | {{ item.address || '' }}</text>
              <text wx:else>--</text>
              <image src="../../static/icon/arrow_right.png" mode="widthFix"></image>
            </view>
          </view>
          <view class="right">
            <image class="phone" src="../../static/icon/phone.png" mode="widthFix"></image>
            <image data-phone="{{ item.phone }}" bindtap="makePhone" class="phone" src="../../static/icon/phone.png" mode="widthFix"></image>
            <view>电话</view>
          </view>
        </view>
        <scroll-view scroll-x style="width: 640rpx">
          <view class="user_list">
            <view class="item">
            <view class="item" wx:for="{{ item.usersList }}" wx:for-item="user">
              <view class="info">
                <image class="avatar" src="" mode="widthFix"></image>
                <image class="avatar" src="{{ user.imgurlFull }}" mode="widthFix"></image>
                <view class="text">
                  <view class="name">name</view>
                  <view class="ex">5年经验</view>
                </view>
              </view>
              <view class="btn">联系TA</view>
            </view>
            <view class="item">
              <view class="info">
                <image class="avatar" src="" mode="widthFix"></image>
                <view class="text">
                  <view class="name">name</view>
                  <view class="ex">5年经验</view>
                </view>
              </view>
              <view class="btn">联系TA</view>
            </view>
            <view class="item">
              <view class="info">
                <image class="avatar" src="" mode="widthFix"></image>
                <view class="text">
                  <view class="name">name</view>
                  <view class="ex">5年经验</view>
                  <view class="name">{{ user.name }}</view>
                  <view class="ex" wx:if="{{user.jobDate}}">{{ user.jobDate }}年经验</view>
                </view>
              </view>
              <view class="btn">联系TA</view>
wechat_jiaxuan/pages/store/store.wxss
@@ -109,10 +109,15 @@
.main_content .shops .shop .user_list .item .info .avatar {
  width: 72rpx;
  height: 72rpx;
  border: 1px solid;
  border-radius: 50%;
  margin-right: 16rpx;
}
.main_content .shops .shop .user_list .item .info .name {
  width: 120rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.main_content .shops .shop .user_list .item .info .ex {
  font-size: 24rpx;
  color: #999999;
wechat_jiaxuan/pages/userinfo/mysub.js
@@ -1,18 +1,31 @@
// pages/userinfo/mysub.js
import { customerLogPage } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    activeTabs: '0'
    activeTabs: '0',
    dataList: [],
    total: 0,
    page: 0,
    capacity: 10,
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    this.getList()
  },
  getList() {
    const { page,  capacity} = this.data
    customerLogPage({
      model: {},page,capacity
    }).then(res => {
      this.setData({ dataList: res.data.records })
    })
  },
  tabsChange(e) {
    const activeTabs = e.currentTarget.dataset.val
wechat_jiaxuan/pages/userinfo/mysub.wxml
@@ -1,14 +1,14 @@
<view class="container">
  <view class="tabs">
    <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-val="0" bindtap="tabsChange">
    <!-- <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-val="0" bindtap="tabsChange">
      <view class="name">需求</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '1' ? 'active' : '' }}" data-val="1" bindtap="tabsChange">
    </view> -->
    <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-val="1" bindtap="tabsChange">
      <view class="name">预约量尺</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '2' ? 'active' : '' }}" data-val="2" bindtap="tabsChange">
    <view class="item {{ activeTabs == '1' ? 'active' : '' }}" data-val="2" bindtap="tabsChange">
      <view class="name">预算</view>
      <view class="border"></view>
    </view>
wechat_jiaxuan/project.private.config.json
@@ -5,7 +5,7 @@
    "urlCheck": false
  },
  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json ä¸­çš„相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
  "libVersion": "2.30.4",
  "libVersion": "3.4.10",
  "condition": {
    "miniprogram": {
      "list": [
@@ -39,7 +39,14 @@
        },
        {
          "name": "",
          "pathName": "pages/auth/auth",
          "pathName": "pages/store/staffList",
          "query": "",
          "launchMode": "default",
          "scene": null
        },
        {
          "name": "",
          "pathName": "pages/discover/discover",
          "query": "",
          "launchMode": "default",
          "scene": null
@@ -47,7 +54,7 @@
        {
          "name": "",
          "pathName": "pages/store/store",
          "query": "",
          "query": "code=zb_deco_jdid&name=家的iD",
          "launchMode": "default",
          "scene": null
        }
wechat_jiaxuan/static/icon/download.png
wechat_jiaxuan/static/icon/ic_play.png
wechat_jiaxuan/static/icon/wechat.png
wechat_jiaxuan/static/images/mendian_bg.png
wechat_jiaxuan/static/images/mingpian_bg_kehu.png
wechat_jiaxuan/static/images/mingpian_bg_nianxian.png
wechat_jiaxuan/utils/qqmap-wx-jssdk.min.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
var ERROR_CONF = { KEY_ERR: 311, KEY_ERR_MSG: 'key格式错误', PARAM_ERR: 310, PARAM_ERR_MSG: '请求参数信息有误', SYSTEM_ERR: 600, SYSTEM_ERR_MSG: '系统错误', WX_ERR_CODE: 1000, WX_OK_CODE: 200 }; var BASE_URL = 'https://apis.map.qq.com/ws/'; var URL_SEARCH = BASE_URL + 'place/v1/search'; var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; var URL_CITY_LIST = BASE_URL + 'district/v1/list'; var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; var URL_DISTANCE = BASE_URL + 'distance/v1/'; var URL_DIRECTION = BASE_URL + 'direction/v1/'; var MODE = { driving: 'driving', transit: 'transit' }; var EARTH_RADIUS = 6378136.49; var Utils = { safeAdd(x, y) { var lsw = (x & 0xffff) + (y & 0xffff); var msw = (x >> 16) + (y >> 16) + (lsw >> 16); return (msw << 16) | (lsw & 0xffff) }, bitRotateLeft(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)) }, md5cmn(q, a, b, x, s, t) { return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b) }, md5ff(a, b, c, d, x, s, t) { return this.md5cmn((b & c) | (~b & d), a, b, x, s, t) }, md5gg(a, b, c, d, x, s, t) { return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t) }, md5hh(a, b, c, d, x, s, t) { return this.md5cmn(b ^ c ^ d, a, b, x, s, t) }, md5ii(a, b, c, d, x, s, t) { return this.md5cmn(c ^ (b | ~d), a, b, x, s, t) }, binlMD5(x, len) { x[len >> 5] |= 0x80 << (len % 32); x[((len + 64) >>> 9 << 4) + 14] = len; var i; var olda; var oldb; var oldc; var oldd; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; for (i = 0; i < x.length; i += 16) { olda = a; oldb = b; oldc = c; oldd = d; a = this.md5ff(a, b, c, d, x[i], 7, -680876936); d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586); c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819); b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330); a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897); d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426); c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341); b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983); a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416); d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417); c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063); b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162); a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682); d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101); c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290); b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329); a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510); d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632); c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713); b = this.md5gg(b, c, d, a, x[i], 20, -373897302); a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691); d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083); c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335); b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848); a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438); d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690); c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961); b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501); a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467); d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784); c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473); b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734); a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558); d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463); c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562); b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556); a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060); d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353); c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632); b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640); a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174); d = this.md5hh(d, a, b, c, x[i], 11, -358537222); c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979); b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189); a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487); d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835); c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520); b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651); a = this.md5ii(a, b, c, d, x[i], 6, -198630844); d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415); c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905); b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055); a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571); d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606); c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523); b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799); a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359); d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744); c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380); b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649); a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070); d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379); c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259); b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551); a = this.safeAdd(a, olda); b = this.safeAdd(b, oldb); c = this.safeAdd(c, oldc); d = this.safeAdd(d, oldd) } return [a, b, c, d] }, binl2rstr(input) { var i; var output = ''; var length32 = input.length * 32; for (i = 0; i < length32; i += 8) { output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff) } return output }, rstr2binl(input) { var i; var output = []; output[(input.length >> 2) - 1] = undefined; for (i = 0; i < output.length; i += 1) { output[i] = 0 } var length8 = input.length * 8; for (i = 0; i < length8; i += 8) { output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32) } return output }, rstrMD5(s) { return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8)) }, rstrHMACMD5(key, data) { var i; var bkey = this.rstr2binl(key); var ipad = []; var opad = []; var hash; ipad[15] = opad[15] = undefined; if (bkey.length > 16) { bkey = this.binlMD5(bkey, key.length * 8) } for (i = 0; i < 16; i += 1) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5c5c5c5c } hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8); return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128)) }, rstr2hex(input) { var hexTab = '0123456789abcdef'; var output = ''; var x; var i; for (i = 0; i < input.length; i += 1) { x = input.charCodeAt(i); output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f) } return output }, str2rstrUTF8(input) { return unescape(encodeURIComponent(input)) }, rawMD5(s) { return this.rstrMD5(this.str2rstrUTF8(s)) }, hexMD5(s) { return this.rstr2hex(this.rawMD5(s)) }, rawHMACMD5(k, d) { return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d)) }, hexHMACMD5(k, d) { return this.rstr2hex(this.rawHMACMD5(k, d)) }, md5(string, key, raw) { if (!key) { if (!raw) { return this.hexMD5(string) } return this.rawMD5(string) } if (!raw) { return this.hexHMACMD5(key, string) } return this.rawHMACMD5(key, string) }, getSig(requestParam, sk, feature, mode) { var sig = null; var requestArr = []; Object.keys(requestParam).sort().forEach(function (key) { requestArr.push(key + '=' + requestParam[key]) }); if (feature == 'search') { sig = '/ws/place/v1/search?' + requestArr.join('&') + sk } if (feature == 'suggest') { sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk } if (feature == 'reverseGeocoder') { sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk } if (feature == 'geocoder') { sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk } if (feature == 'getCityList') { sig = '/ws/district/v1/list?' + requestArr.join('&') + sk } if (feature == 'getDistrictByCityId') { sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk } if (feature == 'calculateDistance') { sig = '/ws/distance/v1/?' + requestArr.join('&') + sk } if (feature == 'direction') { sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk } sig = this.md5(sig); return sig }, location2query(data) { if (typeof data == 'string') { return data } var query = ''; for (var i = 0; i < data.length; i++) { var d = data[i]; if (!!query) { query += ';' } if (d.location) { query = query + d.location.lat + ',' + d.location.lng } if (d.latitude && d.longitude) { query = query + d.latitude + ',' + d.longitude } } return query }, rad(d) { return d * Math.PI / 180.0 }, getEndLocation(location) { var to = location.split(';'); var endLocation = []; for (var i = 0; i < to.length; i++) { endLocation.push({ lat: parseFloat(to[i].split(',')[0]), lng: parseFloat(to[i].split(',')[1]) }) } return endLocation }, getDistance(latFrom, lngFrom, latTo, lngTo) { var radLatFrom = this.rad(latFrom); var radLatTo = this.rad(latTo); var a = radLatFrom - radLatTo; var b = this.rad(lngFrom) - this.rad(lngTo); var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); distance = distance * EARTH_RADIUS; distance = Math.round(distance * 10000) / 10000; return parseFloat(distance.toFixed(0)) }, getWXLocation(success, fail, complete) { wx.getLocation({ type: 'gcj02', success: success, fail: fail, complete: complete }) }, getLocationParam(location) { if (typeof location == 'string') { var locationArr = location.split(','); if (locationArr.length === 2) { location = { latitude: location.split(',')[0], longitude: location.split(',')[1] } } else { location = {} } } return location }, polyfillParam(param) { param.success = param.success || function () { }; param.fail = param.fail || function () { }; param.complete = param.complete || function () { } }, checkParamKeyEmpty(param, key) { if (!param[key]) { var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key + '参数格式有误'); param.fail(errconf); param.complete(errconf); return true } return false }, checkKeyword(param) { return !this.checkParamKeyEmpty(param, 'keyword') }, checkLocation(param) { var location = this.getLocationParam(param.location); if (!location || !location.latitude || !location.longitude) { var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); param.fail(errconf); param.complete(errconf); return false } return true }, buildErrorConfig(errCode, errMsg) { return { status: errCode, message: errMsg } }, handleData(param, data, feature) { if (feature == 'search') { var searchResult = data.data; var searchSimplify = []; for (var i = 0; i < searchResult.length; i++) { searchSimplify.push({ id: searchResult[i].id || null, title: searchResult[i].title || null, latitude: searchResult[i].location && searchResult[i].location.lat || null, longitude: searchResult[i].location && searchResult[i].location.lng || null, address: searchResult[i].address || null, category: searchResult[i].category || null, tel: searchResult[i].tel || null, adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, province: searchResult[i].ad_info && searchResult[i].ad_info.province || null }) } param.success(data, { searchResult: searchResult, searchSimplify: searchSimplify }) } else if (feature == 'suggest') { var suggestResult = data.data; var suggestSimplify = []; for (var i = 0; i < suggestResult.length; i++) { suggestSimplify.push({ adcode: suggestResult[i].adcode || null, address: suggestResult[i].address || null, category: suggestResult[i].category || null, city: suggestResult[i].city || null, district: suggestResult[i].district || null, id: suggestResult[i].id || null, latitude: suggestResult[i].location && suggestResult[i].location.lat || null, longitude: suggestResult[i].location && suggestResult[i].location.lng || null, province: suggestResult[i].province || null, title: suggestResult[i].title || null, type: suggestResult[i].type || null }) } param.success(data, { suggestResult: suggestResult, suggestSimplify: suggestSimplify }) } else if (feature == 'reverseGeocoder') { var reverseGeocoderResult = data.result; var reverseGeocoderSimplify = { address: reverseGeocoderResult.address || null, latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null }; if (reverseGeocoderResult.pois) { var pois = reverseGeocoderResult.pois; var poisSimplify = []; for (var i = 0; i < pois.length; i++) { poisSimplify.push({ id: pois[i].id || null, title: pois[i].title || null, latitude: pois[i].location && pois[i].location.lat || null, longitude: pois[i].location && pois[i].location.lng || null, address: pois[i].address || null, category: pois[i].category || null, adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, city: pois[i].ad_info && pois[i].ad_info.city || null, district: pois[i].ad_info && pois[i].ad_info.district || null, province: pois[i].ad_info && pois[i].ad_info.province || null }) } param.success(data, { reverseGeocoderResult: reverseGeocoderResult, reverseGeocoderSimplify: reverseGeocoderSimplify, pois: pois, poisSimplify: poisSimplify }) } else { param.success(data, { reverseGeocoderResult: reverseGeocoderResult, reverseGeocoderSimplify: reverseGeocoderSimplify }) } } else if (feature == 'geocoder') { var geocoderResult = data.result; var geocoderSimplify = { title: geocoderResult.title || null, latitude: geocoderResult.location && geocoderResult.location.lat || null, longitude: geocoderResult.location && geocoderResult.location.lng || null, adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, province: geocoderResult.address_components && geocoderResult.address_components.province || null, city: geocoderResult.address_components && geocoderResult.address_components.city || null, district: geocoderResult.address_components && geocoderResult.address_components.district || null, street: geocoderResult.address_components && geocoderResult.address_components.street || null, street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, level: geocoderResult.level || null }; param.success(data, { geocoderResult: geocoderResult, geocoderSimplify: geocoderSimplify }) } else if (feature == 'getCityList') { var provinceResult = data.result[0]; var cityResult = data.result[1]; var districtResult = data.result[2]; param.success(data, { provinceResult: provinceResult, cityResult: cityResult, districtResult: districtResult }) } else if (feature == 'getDistrictByCityId') { var districtByCity = data.result[0]; param.success(data, districtByCity) } else if (feature == 'calculateDistance') { var calculateDistanceResult = data.result.elements; var distance = []; for (var i = 0; i < calculateDistanceResult.length; i++) { distance.push(calculateDistanceResult[i].distance) } param.success(data, { calculateDistanceResult: calculateDistanceResult, distance: distance }) } else if (feature == 'direction') { var direction = data.result.routes; param.success(data, direction) } else { param.success(data) } }, buildWxRequestConfig(param, options, feature) { var that = this; options.header = { "content-type": "application/json" }; options.method = 'GET'; options.success = function (res) { var data = res.data; if (data.status === 0) { that.handleData(param, data, feature) } else { param.fail(data) } }; options.fail = function (res) { res.statusCode = ERROR_CONF.WX_ERR_CODE; param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)) }; options.complete = function (res) { var statusCode = +res.statusCode; switch (statusCode) { case ERROR_CONF.WX_ERR_CODE: { param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); break } case ERROR_CONF.WX_OK_CODE: { var data = res.data; if (data.status === 0) { param.complete(data) } else { param.complete(that.buildErrorConfig(data.status, data.message)) } break } default: { param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)) } } }; return options }, locationProcess(param, locationsuccess, locationfail, locationcomplete) { var that = this; locationfail = locationfail || function (res) { res.statusCode = ERROR_CONF.WX_ERR_CODE; param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)) }; locationcomplete = locationcomplete || function (res) { if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)) } }; if (!param.location) { that.getWXLocation(locationsuccess, locationfail, locationcomplete) } else if (that.checkLocation(param)) { var location = Utils.getLocationParam(param.location); locationsuccess(location) } } }; class QQMapWX { constructor(options) { if (!options.key) { throw Error('key值不能为空') } this.key = options.key }; search(options) { var that = this; options = options || {}; Utils.polyfillParam(options); if (!Utils.checkKeyword(options)) { return } var requestParam = { keyword: options.keyword, orderby: options.orderby || '_distance', page_size: options.page_size || 10, page_index: options.page_index || 1, output: 'json', key: that.key }; if (options.address_format) { requestParam.address_format = options.address_format } if (options.filter) { requestParam.filter = options.filter } var distance = options.distance || "1000"; var auto_extend = options.auto_extend || 1; var region = null; var rectangle = null; if (options.region) { region = options.region } if (options.rectangle) { rectangle = options.rectangle } var locationsuccess = function (result) { if (region && !rectangle) { requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'search') } } else if (rectangle && !region) { requestParam.boundary = "rectangle(" + rectangle + ")"; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'search') } } else { requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'search') } } wx.request(Utils.buildWxRequestConfig(options, { url: URL_SEARCH, data: requestParam }, 'search')) }; Utils.locationProcess(options, locationsuccess) }; getSuggestion(options) { var that = this; options = options || {}; Utils.polyfillParam(options); if (!Utils.checkKeyword(options)) { return } var requestParam = { keyword: options.keyword, region: options.region || '全国', region_fix: options.region_fix || 0, policy: options.policy || 0, page_size: options.page_size || 10, page_index: options.page_index || 1, get_subpois: options.get_subpois || 0, output: 'json', key: that.key }; if (options.address_format) { requestParam.address_format = options.address_format } if (options.filter) { requestParam.filter = options.filter } if (options.location) { var locationsuccess = function (result) { requestParam.location = result.latitude + ',' + result.longitude; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_SUGGESTION, data: requestParam }, "suggest")) }; Utils.locationProcess(options, locationsuccess) } else { if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_SUGGESTION, data: requestParam }, "suggest")) } }; reverseGeocoder(options) { var that = this; options = options || {}; Utils.polyfillParam(options); var requestParam = { coord_type: options.coord_type || 5, get_poi: options.get_poi || 0, output: 'json', key: that.key }; if (options.poi_options) { requestParam.poi_options = options.poi_options } var locationsuccess = function (result) { requestParam.location = result.latitude + ',' + result.longitude; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_GET_GEOCODER, data: requestParam }, 'reverseGeocoder')) }; Utils.locationProcess(options, locationsuccess) }; geocoder(options) { var that = this; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'address')) { return } var requestParam = { address: options.address, output: 'json', key: that.key }; if (options.region) { requestParam.region = options.region } if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_GET_GEOCODER, data: requestParam }, 'geocoder')) }; getCityList(options) { var that = this; options = options || {}; Utils.polyfillParam(options); var requestParam = { output: 'json', key: that.key }; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_CITY_LIST, data: requestParam }, 'getCityList')) }; getDistrictByCityId(options) { var that = this; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'id')) { return } var requestParam = { id: options.id || '', output: 'json', key: that.key }; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_AREA_LIST, data: requestParam }, 'getDistrictByCityId')) }; calculateDistance(options) { var that = this; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'to')) { return } var requestParam = { mode: options.mode || 'walking', to: Utils.location2query(options.to), output: 'json', key: that.key }; if (options.from) { options.location = options.from } if (requestParam.mode == 'straight') { var locationsuccess = function (result) { var locationTo = Utils.getEndLocation(requestParam.to); var data = { message: "query ok", result: { elements: [] }, status: 0 }; for (var i = 0; i < locationTo.length; i++) { data.result.elements.push({ distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), duration: 0, from: { lat: result.latitude, lng: result.longitude }, to: { lat: locationTo[i].lat, lng: locationTo[i].lng } }) } var calculateResult = data.result.elements; var distanceResult = []; for (var i = 0; i < calculateResult.length; i++) { distanceResult.push(calculateResult[i].distance) } return options.success(data, { calculateResult: calculateResult, distanceResult: distanceResult }) }; Utils.locationProcess(options, locationsuccess) } else { var locationsuccess = function (result) { requestParam.from = result.latitude + ',' + result.longitude; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance') } wx.request(Utils.buildWxRequestConfig(options, { url: URL_DISTANCE, data: requestParam }, 'calculateDistance')) }; Utils.locationProcess(options, locationsuccess) } }; direction(options) { var that = this; options = options || {}; Utils.polyfillParam(options); if (Utils.checkParamKeyEmpty(options, 'to')) { return } var requestParam = { output: 'json', key: that.key }; if (typeof options.to == 'string') { requestParam.to = options.to } else { requestParam.to = options.to.latitude + ',' + options.to.longitude } var SET_URL_DIRECTION = null; options.mode = options.mode || MODE.driving; SET_URL_DIRECTION = URL_DIRECTION + options.mode; if (options.from) { options.location = options.from } if (options.mode == MODE.driving) { if (options.from_poi) { requestParam.from_poi = options.from_poi } if (options.heading) { requestParam.heading = options.heading } if (options.speed) { requestParam.speed = options.speed } if (options.accuracy) { requestParam.accuracy = options.accuracy } if (options.road_type) { requestParam.road_type = options.road_type } if (options.to_poi) { requestParam.to_poi = options.to_poi } if (options.from_track) { requestParam.from_track = options.from_track } if (options.waypoints) { requestParam.waypoints = options.waypoints } if (options.policy) { requestParam.policy = options.policy } if (options.plate_number) { requestParam.plate_number = options.plate_number } } if (options.mode == MODE.transit) { if (options.departure_time) { requestParam.departure_time = options.departure_time } if (options.policy) { requestParam.policy = options.policy } } var locationsuccess = function (result) { requestParam.from = result.latitude + ',' + result.longitude; if (options.sig) { requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction', options.mode) } wx.request(Utils.buildWxRequestConfig(options, { url: SET_URL_DIRECTION, data: requestParam }, 'direction')) }; Utils.locationProcess(options, locationsuccess) } }; module.exports = QQMapWX;
wechat_jiaxuan/utils/request.js
@@ -19,7 +19,7 @@
        if (res.data.code === 200) {
          resolve(res.data || true)
        } else {
          if(res.data.code && res.data.code == 5112){
          if(res.data.code == 5111 && res.data.code == 5112){
            wx.navigateTo({
              url: '/pages/auth/auth',
            })
wechat_staff/api/index.js
@@ -2,10 +2,24 @@
import { baseUrl } from '../utils/config'
export const uploadUrl = baseUrl + '/public/upload'
// å°ç¨‹åºç™»å½•
// å°ç¨‹åº é»˜è®¤ç™»å½•
export const wxLoginCustomer = (data) => {
  return request({
    url: '/web/customer/wxLoginCustomer',
    url: '/web/personnel/loginByWx',
    data
  })
}
// éªŒè¯ç ç™»å½•
export const loginByPhone = (data) => {
  return request({
    url: '/web/personnel/loginByPhone',
    data
  })
}
// å‘送验证码
export const sendSms = (data) => {
  return request({
    url: '/web/personnel/sendSms',
    data
  })
}
@@ -36,7 +50,53 @@
// èŽ·å–ä¼šå‘˜ä¿¡æ¯
export const getMemberInfo = () => {
  return request({
    url: '/web/customer/getMemberInfo',
    url: '/web/personnel/getUserDetail',
  })
}
// é¦–页 æ¯æ—¥ä¸Šæ–°
export const getDailyUpdates = (data) => {
  return request({
    url: '/web/customer/getDailyUpdates',
    data
  })
}
// é¦–页  æŽ¨å¹¿å’¨è¯¢åˆ†é¡µ
export const newsPage = (data) => {
  return request({
    url: '/web/customer/newsPage',
    data,
    method: "POST"
  })
}
// é¦–页 å¿—说装修
export const getZSZXCatalogs = () => {
  return request({
    url: '/web/customer/getZSZXCatalogs',
    method: "POST"
  })
}
// å¿—说装修 æ ‡ç­¾
export const getCataLogTagList = (data) => {
  return request({
    url: '/web/customer/getCataLogTagList',
    method: "POST",
    data
  })
}
// ä¸­æ³° åˆ†ç±»æ•°æ®
export const getCatalogList = (data) => {
  return request({
    url: '/web/customer/getCatalogList',
    method: "POST",
    data
  })
}
// å¿—说装修 å†…容
export const pageZSZXContentList = (data) => {
  return request({
    url: '/web/customer/pageContentList',
    method: "POST",
    data
  })
}
// èŽ·å–é—¨åº—åˆ—è¡¨
wechat_staff/app.js
@@ -1,4 +1,4 @@
// app.js
import { wxLoginCustomer } from './api/index'
App({
  globalData: {
    primary: '#B08771',
@@ -11,6 +11,38 @@
      this.globalData.bottomLift = WindowInfo.screenHeight - WindowInfo.safeArea.bottom;
    }
    // 
    // let menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    return
    const res = wx.getStorageSync('member')
    if (res) {
      this.globalData.userInfo = res
    } else {
      // ç™»å½•
      wx.login({
        timeout: 5000,
        success(res) {
          if (res.code) {
            //发起网络请求
            wxLoginCustomer({
              code: res.code
            }).then(res => {
              console.log(res)
              if (res && res.data.member) {
                wx.setStorageSync('member', res.data.member)
                wx.setStorageSync('openid', res.data.member.openid)
                wx.setStorageSync('sessionKey', res.data.sessionKey)
                wx.setStorageSync('token', res.data.token)
              } else {
                console.log('登录失败!')
              }
            })
          } else {
            console.log('登录失败!' + res)
          }
        },
        fail(err) {
          console.log(err)
        }
      })
    }
  }
})
wechat_staff/pages/homeId/index.js
@@ -1,17 +1,27 @@
// pages/consult/consult.js
import { getCataLogTagList, pageZSZXContentList } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    category: ['新品上市', '专利证书', '大牌授权','新品上市', '专利证书', '大牌授权'],
    secondCategory: ['级分类','级分类','级分类','级分类','级分类','级分类'],
    tagList: [],
    activeCate: '',
    seActiveCate: '',
    dataList: []
  },
    dataList: [],
    pageNum: 1,
    pageSize: 10,
    code: '',
    tagCodes: ''
  },
  onLoad(options) {
    wx.setNavigationBarTitle({
      title: options.name
   })
    this.setData({ code: options.code})
    this.getTabList()
    this.getList()
  },
  itemClick(e) {
    const { id } = e.target.dataset
    console.log(e.target.dataset);
@@ -20,20 +30,42 @@
    })
  },
  cateClick(e) {
    const { index } = e.target.dataset
    console.log(index);
    const { code } = e.target.dataset
    this.setData({
      tagCodes: code,
      pageNum: 1,
      dataList: []
    })
    this.getList()
  },
  seCateClick(e) {
    const { index } = e.target.dataset
    console.log(index);
  getTabList() {
    getCataLogTagList({
      catalogCode: this.data.code
    }).then(res => {
      if(res && res.data && res.data.length > 0){
        this.setData({
          tagList: res.data[0].valueVos
        })
      }
    })
  },
  onLoad(options) {
  getList(){
    const { code, tagCodes, pageSize, pageNum } = this.data
    pageZSZXContentList({
      catalogCode: code,
      tagCodes,
      pageSize,
      pageNum
    }).then(res => {
      this.setData({
        dataList: [ ...this.data.dataList, ...res.data.records ]
      })
    })
  },
  onReachBottom() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
wechat_staff/pages/homeId/index.json
@@ -1,3 +1,3 @@
{
  "navigationBarTitleText": "家的ID"
  "navigationBarTitleText": ""
}
wechat_staff/pages/homeId/index.wxml
@@ -1,25 +1,25 @@
<view class="container">
  <!-- åˆ†ç±» -->
  <view>
    <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 30rpx;">
      <view class="scroll_cate">
        <view bindtap="cateClick" data-index="{{index}}" wx:for="{{ category }}" class="item {{ index == 0 ? 'active': '' }}">{{ item }}</view>
      </view>
    </scroll-view>
  </view>
  <!-- content -->
  <view class="content">
    <view class="item" bindtap="itemClick" data-abg="qwe">
      <image class="img" src="../../static/icon/test.png" mode="widthFix"></image>
      <view class="title">吊灯实用特辑 | ä¸€æ­¥å­¦ä¼šç†æƒ³å…‰å½±å¸ƒå±€</view>
      <view class="df_sb static">
        <view>{{ '2021-08-21 12:00:00' }}</view>
        <view class="df_sb">
          <image class="liulan" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
          <text>1000</text>
        </view>
<!-- åˆ†ç±» -->
<view>
  <scroll-view scroll-x="true" style="weight: 710rpx;margin-bottom: 30rpx;">
    <view class="scroll_cate">
      <view bindtap="cateClick" data-code="{{item.labelValueCode}}" wx:for="{{ tagList }}" class="item {{ tagCodes == item.labelValueCode ? 'active': '' }}">{{ item.labelValueName }}</view>
    </view>
  </scroll-view>
</view>
<!-- content -->
<view class="content">
  <view wx:for="{{ dataList }}" class="item" bindtap="itemClick" data-abg="qwe">
    <image class="img" src="{{ item.coverImage }}" mode="widthFix"></image>
    <view class="title">{{ item.title }}</view>
    <view class="df_sb static">
      <view>{{ item.publishDate }}</view>
      <view class="df_sb">
        <image class="liulan" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>{{ item.readCount }}</text>
      </view>
    </view>
  </view>
</view>
</view>
wechat_staff/pages/index/index.js
@@ -1,10 +1,12 @@
// index.js
import { getDictData, getDailyUpdates, getZSZXCatalogs } from '../../api/index'
Page({
  data: {
    searchValue: '',
    clientHeight: 0,
    clientTop: 0,
    DailyUpdates: {}, //每日上新
    everydayTop: ['../../static/ic_top1@2x.png', '../../static/ic_top2@2x.png', '../../static/ic_top3@2x.png'],
    bannerList: [
      {imgurl: ''},
      {imgurl: 'adsa.png'},
@@ -24,5 +26,50 @@
    const res = wx.getMenuButtonBoundingClientRect()
    this.setData({clientHeight: res.height})
    this.setData({clientTop: res.top})
  }
    this.initData()
  },
  initData() {
    // æ¯æ—¥ä¸Šæ–°
    getDailyUpdates({
      fileType: '0'
    }).then(res => {
      this.setData({ DailyUpdates: res.data })
    })
    getZSZXCatalogs().then(res => { //志说装修
      this.setData({
        ZSZXCata: res.data || {}
      })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_A'
    }).then(res => {
      this.setData({ HOME_CLASS_A: res.data.code })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_B'
    }).then(res => {
      this.setData({ HOME_CLASS_B: res.data.code })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_B2'
    }).then(res => {
      this.setData({ HOME_CLASS_B2: res.data.code })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'HOME_CLASS_C'
    }).then(res => {
      this.setData({ HOME_CLASS_C: res.data.code })
    })
  },
  changeStrategy(e) {
    let item = e.currentTarget.dataset.item
    wx.navigateTo({
      url: `/pages/homeId/index?code=${item.code}&name=${item.name}` ,
    })
  },
})
wechat_staff/pages/index/index.less
@@ -72,7 +72,7 @@
      width: 192rpx;
      height: 280rpx;
      border-radius: 8rpx;
      border: 1px solid;
      overflow: hidden;
      position: relative;
      .img{
        width: 100%;
@@ -101,7 +101,6 @@
    image{
      width: 88rpx;
      height: 88rpx;
      border: 1px solid;
    }
    .text{
      font-size: 26rpx;
@@ -124,10 +123,21 @@
.strategy {
  padding: 80rpx 40rpx;
  background: #F7F7F7;
  image {
    width: 100%;
    height: 100%;
  .item{
    position: relative;
    image {
      width: 100%;
      height: 100%;
      position: absolute;
    }
    text{
      color: #fff;
      position: absolute;
      bottom: 40rpx;
      left: 40rpx;
      font-size: 32rpx;
      font-weight: 500;
    }
  }
  .line {
wechat_staff/pages/index/index.wxml
@@ -15,41 +15,33 @@
    <view class="desc">
      <view class="left">
        <text>今日上新:</text>
        <text class="num">5</text>
        <text class="num">{{ DailyUpdates.dailyUpdateNum }}</text>
        <text>条</text>
      </view>
      <view class="right">1w加已转发</view>
      <view class="right">{{ DailyUpdates.shareNum }}w加已转发</view>
    </view>
    <view class="imgs">
      <view class="img_wrap">
        <image class="img" mode="widthFix" src=""></image>
        <image class="icon" src="../../static/ic_top1@2x.png" mode="widthFix"></image>
      </view>
      <view class="img_wrap">
        <image class="img" mode="widthFix" src=""></image>
        <image class="icon" src="../../static/ic_top2@2x.png" mode="widthFix"></image>
      </view>
      <view class="img_wrap">
        <image class="img" mode="widthFix" src=""></image>
        <image class="icon" src="../../static/ic_top3@2x.png" mode="widthFix"></image>
      <view wx:for="{{ DailyUpdates.newsList}}" class="img_wrap">
        <image class="img" src="{{ item.fileList[0].fileurlFull }}" mode="widthFix"></image>
        <image class="icon" src="{{everydayTop[index]}}" mode="widthFix"></image>
      </view>
    </view>
  </view>
  <!--  -->
  <view class="func_lsit">
    <view class="item">
      <image></image>
      <image src="../../static/icon/home_ic_chanpin@2x 2.png"></image>
      <view class="text">产品</view>
    </view>
    <view class="item">
      <image></image>
      <image src="../../static/icon/home_ic_anli@2x 2.png"></image>
      <view class="text">案例</view>
    </view>
    <view class="item">
      <image></image>
      <image src="../../static/icon/home_ic_shijing@2x 2.png"></image>
      <view class="text">实景</view>
    </view><view class="item">
      <image></image>
      <image src="../../static/icon/home_ic_zixun.png"></image>
      <view class="text">资讯</view>
    </view>
@@ -74,23 +66,31 @@
    <view class="com_header">
      <view class="left">
        <view class="name">
          <image class="icon" src="../../static/home_ic_zhuangxiu@2x.png"></image>
          <image class="icon" src="../../static/icon/home_ic_zhuangxiu@2x.png"></image>
          <view>志说装修</view>
        </view>
        <view class="desc">最全的装修攻略来了,快来get起来</view>
      </view>
    </view>
    <view class="line">
      <view class="line_left">
        <image src="../../static/images/home_class_a@2x.png"></image>
      <view class="line_left item" data-item="{{ ZSZXCata.jdId }}" bindtap="changeStrategy">
        <image src="{{HOME_CLASS_A}}"></image>
        <text>{{ ZSZXCata.jdId.name }}</text>
      </view>
      <view class="line_right">
        <view class="item"><image src="../../static/images/home_class_b@2x.png"></image></view>
        <view class="item"><image src="../../static/images/home_class_b2@2x.png"></image></view>
        <view class="item" data-item="{{ ZSZXCata.cfsj }}" bindtap="changeStrategy">
          <image src="{{ HOME_CLASS_B }}"></image>
          <text>{{ ZSZXCata.cfsj.name }}</text>
        </view>
        <view class="item" data-item="{{ ZSZXCata.snsj }}" bindtap="changeStrategy">
          <image src="{{ HOME_CLASS_B2 }}"></image>
          <text>{{ ZSZXCata.snsj.name }}</text>
        </view>
      </view>
    </view>
    <view class="home_id">
      <image src="../../static/images/home_class_c@2x.png"></image>
    <view data-item="{{ ZSZXCata.qwsj.code }}" bindtap="changeStrategy" class="home_id item">
      <image src="{{HOME_CLASS_C}}"></image>
      <text>{{ ZSZXCata.qwsj.name }}</text>
    </view>
  </view>
  <!-- service -->
wechat_staff/pages/index/index.wxss
@@ -65,7 +65,7 @@
  width: 192rpx;
  height: 280rpx;
  border-radius: 8rpx;
  border: 1px solid;
  overflow: hidden;
  position: relative;
}
.everyday .imgs .img_wrap .img {
@@ -93,7 +93,6 @@
.func_lsit .item image {
  width: 88rpx;
  height: 88rpx;
  border: 1px solid;
}
.func_lsit .item .text {
  font-size: 26rpx;
@@ -112,9 +111,21 @@
  padding: 80rpx 40rpx;
  background: #F7F7F7;
}
.strategy image {
.strategy .item {
  position: relative;
}
.strategy .item image {
  width: 100%;
  height: 100%;
  position: absolute;
}
.strategy .item text {
  color: #fff;
  position: absolute;
  bottom: 40rpx;
  left: 40rpx;
  font-size: 32rpx;
  font-weight: 500;
}
.strategy .line {
  display: flex;
wechat_staff/pages/login/index.js
@@ -1,4 +1,4 @@
// pages/auth/auth.js
import { sendSms,loginByPhone, getDictData } from '../../api/index'
Page({
  /**
@@ -9,21 +9,65 @@
    primary: '',
    status: '0', // æ ‡è¯†
    countDown: 0,
    phone: '',
    password: '',
    phone: '13663966099',
    code: '',
    showModal: false,
    activeHtml: '',
  },
  getCode() {
    let countDown = this.data.countDown
    if(countDown > 0) return
    this.setData({ countDown: 60 })
    let timer = setInterval(() => {
      let countDown = this.data.countDown
      if(countDown === 0){
        return clearInterval(timer)
      }
      countDown --
      this.setData({ countDown })
    }, 1000)
    const { phone } = this.data
    if(!phone || phone.length != 11){
      return wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      })
    }
    sendSms({
      phone
    }).then(res => {
      wx.showToast({
        title: '验证码发送成功',
        icon: 'none'
      })
      this.setData({ countDown: 60 })
      let timer = setInterval(() => {
        let countDown = this.data.countDown
        if(countDown === 0){
          return clearInterval(timer)
        }
        countDown --
        this.setData({ countDown })
      }, 1000)
    })
  },
  loginPhone() {
    const { code, phone } = this.data
    loginByPhone({code, phone}).then(res => {
      wx.setStorageSync('member', res.data.users)
      wx.setStorageSync('token', res.data.token)
      wx.showToast({
        title: '登录成功',
      })
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/index/index',
        })
      }, 300)
    })
  },
  changeStatus() {
    if(!this.data.agreementFalg){
      return wx.showToast({
        title: '请先阅读并同意相关协议',
        icon: 'none'
      })
    }
    this.setData({
      status: '1'
    })
  },
  agreementChange(e) {
    this.setData({
@@ -35,6 +79,37 @@
    this.setData({
      primary: app.primary
    })
    this.initData()
  },
  onOpen(e){
    const { serviceHtml, privacyHtml } = this.data
    const { index } = e.target.dataset
    let activeHtml = index == '0' ? serviceHtml : privacyHtml
    this.setData({
      activeHtml,
      showModal: true
    })
  },
  onClose() {
    this.setData({showModal: false})
  },
  initData(){
    getDictData({
      code: 'ZBOM_CUSTOMIZED',
      label: 'SERVER_AGREEMENT'
    }).then(res => {
      this.setData({
        serviceHtml: res.data.code
      })
    })
    getDictData({
      code: 'ZBOM_CUSTOMIZED',
      label: 'PRIVACY_AGREEMENT'
    }).then(res => {
      this.setData({
        privacyHtml: res.data.code
      })
    })
  },
  /**
wechat_staff/pages/login/index.json
@@ -1,7 +1,8 @@
{
  "usingComponents": {
    "van-checkbox": "@vant/weapp/checkbox/index",
    "van-field": "@vant/weapp/field/index"
    "van-field": "@vant/weapp/field/index",
    "van-popup": "@vant/weapp/popup/index"
  },
  "navigationStyle": "default",
  "navigationBarTitleText": "登录"
wechat_staff/pages/login/index.less
@@ -58,4 +58,9 @@
      flex: 1;
    }
  }
}
.modal{
  width: 600rpx;
  min-height: 600rpx;
  padding: 30rpx;
}
wechat_staff/pages/login/index.wxml
@@ -6,30 +6,35 @@
  <view class="btns">
    <block wx:if="{{ status == '0' }}">
      <view class="btn speedy">手机号快捷登录</view>
      <view class="btn">手机验证码登录</view>
      <view bindtap="changeStatus" class="btn">手机验证码登录</view>
    </block>
    <block wx:if="{{ status == '1' }}">
      <view class="line">
        <image class="icon" src="../../static/login_ic_phone@2x.png" mode="widthFix"></image>
        <van-field class="input" border="{{false}}" model:value="{{ phone }}" placeholder="请输入手机号" />
        <van-field class="input"  maxlength="{{ 11 }}" border="{{false}}" model:value="{{ phone }}" placeholder="请输入手机号" />
        <view bindtap="getCode" wx:if="{{ countDown === 0 }}" class="get_code primary">获取验证码</view>
        <view wx:else class="placeholder9">{{ countDown }}s</view>
      </view>
      <view class="line">
        <image class="icon" src="../../static/login_ic_password@2x.png" mode="widthFix"></image>
        <van-field class="input" border="{{false}}" model:value="{{ password }}" placeholder="请输入验证码" />
        <van-field class="input" maxlength="{{ 6 }}" border="{{false}}" model:value="{{ code }}" placeholder="请输入验证码" />
      </view>
      <view class="btn speedy sub_btn">立即登录</view>
      <view bindtap="loginPhone" class="btn speedy sub_btn">立即登录</view>
    </block>
    <view class="protocol">
      <van-checkbox value="{{ agreementFalg }}" checked-color="{{primary}}" shape="round" bind:change="agreementChange"></van-checkbox>
      <view class="content">
        <text>我已阅读并同意</text>
        <text class="primary">《ZBOM用户服务协议》</text>
        <text data-index="0" bindtap="onOpen" class="primary">《ZBOM用户服务协议》</text>
        <text>及</text>
        <text class="primary">《ZBOM用户隐私政策》</text>
        <text data-index="1" bindtap="onOpen" class="primary">《ZBOM用户隐私政策》</text>
      </view>
    </view>
  </view>
  <!--  -->
  <van-popup show="{{ showModal }}" round bind:close="onClose">
    <view class="modal">
      <rich-text nodes="{{activeHtml}}"></rich-text>
    </view>
  </van-popup>
</view>
wechat_staff/pages/login/index.wxss
@@ -59,3 +59,8 @@
.btns .protocol .content {
  flex: 1;
}
.modal {
  width: 600rpx;
  min-height: 600rpx;
  padding: 30rpx;
}
wechat_staff/pages/promotion/index.js
@@ -1,11 +1,14 @@
// pages/promotion/index.js
import { newsPage } from '../../api/index'
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    capacity: 10,
    page: 0,
    list: [],
    total: 0,
  },
  /**
@@ -14,10 +17,9 @@
  onLoad(options) {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  getList() {
    newsPage()
  },
  onReady() {
  },
wechat_staff/pages/work/index.js
@@ -1,4 +1,4 @@
// pages/mine/mine.js
import { getMemberInfo } from '../../api/index'
Page({
  /**
@@ -7,6 +7,8 @@
  data: {
    clientHeight: 0,
    clientTop: 0,
    uesrInfo: {}
  },
  /**
@@ -16,6 +18,8 @@
    const res = wx.getMenuButtonBoundingClientRect()
    this.setData({clientHeight: res.height})
    this.setData({clientTop: res.top})
    this.initData()
  },
  changePath(e) {
    // é¡µé¢è·³è½¬
@@ -31,9 +35,13 @@
      url: `${temp[index]}`,
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  initData() {
    getMemberInfo().then(res => {
      this.setData({
        uesrInfo: res.data
      })
    })
  },
  onReady() {
  },
wechat_staff/project.config.json
@@ -1,5 +1,5 @@
{
  "appid": "wx9c8b22ccc4642e07",
  "appid": "wx208dd1edc0be24ee",
  "compileType": "miniprogram",
  "libVersion": "3.4.10",
  "packOptions": {
wechat_staff/project.private.config.json
@@ -24,7 +24,14 @@
        },
        {
          "name": "",
          "pathName": "pages/kefu/select",
          "pathName": "pages/login/index",
          "query": "",
          "launchMode": "default",
          "scene": null
        },
        {
          "name": "",
          "pathName": "pages/promotion/index",
          "query": "",
          "launchMode": "default",
          "scene": null
wechat_staff/static/icon/home_ic_anli@2x 2.png
wechat_staff/static/icon/home_ic_chanpin@2x 2.png
wechat_staff/static/icon/home_ic_shijing@2x 2.png
wechat_staff/static/icon/home_ic_zixun.png
wechat_staff/static/images/home_class_a@2x.png
Binary files differ
wechat_staff/static/images/home_class_b2@2x.png
Binary files differ
wechat_staff/static/images/home_class_b@2x.png
Binary files differ
wechat_staff/static/images/home_class_c@2x.png
Binary files differ