Jelajahi Sumber

迁移项目

lijie 2 tahun lalu
melakukan
9e82a9ee1d
100 mengubah file dengan 4423 tambahan dan 0 penghapusan
  1. 25 0
      .gitignore
  2. 3 0
      README.md
  3. 155 0
      api.js
  4. 524 0
      app.js
  5. 87 0
      app.json
  6. 505 0
      app.wxss
  7. 8 0
      filter/money.wxs
  8. TEMPAT SAMPAH
      images/contract-pdf.png
  9. TEMPAT SAMPAH
      images/copy-code-pic.png
  10. TEMPAT SAMPAH
      images/footer-logo.png
  11. TEMPAT SAMPAH
      images/ico_baoming.png
  12. TEMPAT SAMPAH
      images/ico_shangcheng.png
  13. TEMPAT SAMPAH
      images/ico_shuiwu.png
  14. TEMPAT SAMPAH
      images/ico_xianxia.png
  15. TEMPAT SAMPAH
      images/icon-step-next-white.png
  16. TEMPAT SAMPAH
      images/icon-tab-classify-active.png
  17. TEMPAT SAMPAH
      images/icon-tab-classify-default.png
  18. TEMPAT SAMPAH
      images/icon-tab-home-active.png
  19. TEMPAT SAMPAH
      images/icon-tab-home-default.png
  20. TEMPAT SAMPAH
      images/icon-tab-my-active.png
  21. TEMPAT SAMPAH
      images/icon-tab-my-default.png
  22. TEMPAT SAMPAH
      images/icon-time-grey.png
  23. TEMPAT SAMPAH
      images/invitation/down_24x24.png
  24. TEMPAT SAMPAH
      images/invoice/index/banner-top.png
  25. TEMPAT SAMPAH
      images/invoice/index/ico_1@2x.png
  26. TEMPAT SAMPAH
      images/invoice/index/ico_2@2x.png
  27. TEMPAT SAMPAH
      images/invoice/index/ico_3@2x.png
  28. TEMPAT SAMPAH
      images/invoice/index/ico_4@2x.png
  29. TEMPAT SAMPAH
      images/invoice/index/ico_5@2x.png
  30. TEMPAT SAMPAH
      images/invoice/index/ico_6@2x.png
  31. TEMPAT SAMPAH
      images/invoice/index/ico_7@2x.png
  32. TEMPAT SAMPAH
      images/invoice/index/ico_8@2x.png
  33. TEMPAT SAMPAH
      images/invoice/index/ico_9@2x.png
  34. TEMPAT SAMPAH
      images/invoice/index/icon-ing-active.png
  35. TEMPAT SAMPAH
      images/invoice/index/icon-ing-default.png
  36. TEMPAT SAMPAH
      images/invoice/index/icon-jilu.png
  37. TEMPAT SAMPAH
      images/invoice/index/icon-over-active.png
  38. TEMPAT SAMPAH
      images/invoice/index/icon-over-default.png
  39. TEMPAT SAMPAH
      images/invoice/index/icon-qb-active.png
  40. TEMPAT SAMPAH
      images/invoice/index/icon-qb-default.png
  41. TEMPAT SAMPAH
      images/invoice/index/icon-tj-active.png
  42. TEMPAT SAMPAH
      images/invoice/index/icon-tj-default.png
  43. TEMPAT SAMPAH
      images/invoice/index/icon-wykp.png
  44. TEMPAT SAMPAH
      images/pic_shangcheng.png
  45. TEMPAT SAMPAH
      images/pic_shuiwu.png
  46. TEMPAT SAMPAH
      images/sale/icon-company.png
  47. TEMPAT SAMPAH
      images/sale/icon-curator.png
  48. TEMPAT SAMPAH
      images/sale/icon-personal.png
  49. 6 0
      jsconfig.json
  50. 63 0
      pages/agreement/agreement.js
  51. 4 0
      pages/agreement/agreement.json
  52. 17 0
      pages/agreement/agreement.wxml
  53. 106 0
      pages/agreement/agreement.wxss
  54. 225 0
      pages/classify/classify.js
  55. 4 0
      pages/classify/classify.json
  56. 120 0
      pages/classify/classify.wxml
  57. 98 0
      pages/classify/classify.wxss
  58. 66 0
      pages/copyright/copyright.js
  59. 4 0
      pages/copyright/copyright.json
  60. 21 0
      pages/copyright/copyright.wxml
  61. 55 0
      pages/copyright/copyright.wxss
  62. 66 0
      pages/guanyuan/demonstrate/demonstrate.js
  63. 3 0
      pages/guanyuan/demonstrate/demonstrate.json
  64. 26 0
      pages/guanyuan/demonstrate/demonstrate.wxml
  65. 84 0
      pages/guanyuan/demonstrate/demonstrate.wxss
  66. 179 0
      pages/guanyuan/exhibition/exhibition.js
  67. 4 0
      pages/guanyuan/exhibition/exhibition.json
  68. 28 0
      pages/guanyuan/exhibition/exhibition.wxml
  69. 10 0
      pages/guanyuan/exhibition/exhibition.wxss
  70. 163 0
      pages/guanyuan/list/list.js
  71. 4 0
      pages/guanyuan/list/list.json
  72. 91 0
      pages/guanyuan/list/list.wxml
  73. 165 0
      pages/guanyuan/list/list.wxss
  74. 66 0
      pages/guanyuan/logisticsService/logisticsService.js
  75. 4 0
      pages/guanyuan/logisticsService/logisticsService.json
  76. 8 0
      pages/guanyuan/logisticsService/logisticsService.wxml
  77. 13 0
      pages/guanyuan/logisticsService/logisticsService.wxss
  78. 74 0
      pages/guanyuan/mount/mount.js
  79. 4 0
      pages/guanyuan/mount/mount.json
  80. 103 0
      pages/guanyuan/mount/mount.wxml
  81. 177 0
      pages/guanyuan/mount/mount.wxss
  82. 68 0
      pages/guanyuan/success/success.js
  83. 4 0
      pages/guanyuan/success/success.json
  84. 12 0
      pages/guanyuan/success/success.wxml
  85. 52 0
      pages/guanyuan/success/success.wxss
  86. 81 0
      pages/guanyuan/webview/webview.js
  87. 5 0
      pages/guanyuan/webview/webview.json
  88. 1 0
      pages/guanyuan/webview/webview.wxml
  89. 0 0
      pages/guanyuan/webview/webview.wxss
  90. 178 0
      pages/index/index.js
  91. 4 0
      pages/index/index.json
  92. 163 0
      pages/index/index.wxml
  93. 216 0
      pages/index/index.wxss
  94. 96 0
      pages/invitation/evidence/index.js
  95. 3 0
      pages/invitation/evidence/index.json
  96. 11 0
      pages/invitation/evidence/index.wxml
  97. 84 0
      pages/invitation/evidence/index.wxss
  98. 64 0
      pages/invitation/index/index.js
  99. 3 0
      pages/invitation/index/index.json
  100. 10 0
      pages/invitation/index/index.wxml

+ 25 - 0
.gitignore

@@ -0,0 +1,25 @@
+.DS_Store
+node_modules/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+**/*.log
+
+tests/**/coverage/
+tests/e2e/reports
+selenium-debug.log
+
+
+# Editor directories and files
+.idea
+.vscode
+.history
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+
+package-lock.json
+yarn.lock

+ 3 - 0
README.md

@@ -0,0 +1,3 @@
+# shyaf-artist-platform-miniapp
+
+上海艺术家平台-小程序

+ 155 - 0
api.js

@@ -0,0 +1,155 @@
+/***
+ * 文档地址 http://shyaf-artist-platform.suggest.vip/swagger-ui.html#/
+ * **/
+
+//生产环境
+const host = "https://artist-platform.artouchstone.com/";
+
+//开发环境
+// const host = "https://platform-dev.artouchstone.com/artist/";  
+
+//const host = "http://192.168.0.33:8080/";
+
+const socket="wss://cmcstudymp.suggest.vip/websocket/course/ware/study/";
+
+
+
+const api = {
+
+  socket:socket,
+
+  apiName: `api_url`, //注释
+
+  //code 换取 wxcode
+  code:`api/weixin/sdk/ma/WxMaCommandController/code2session`,
+
+  //获取用户token
+  getUserToken:`api/weixin/sdk/ma/WxMaCommandController/getUserToken`,
+
+  //登录
+  login:"api/auth/sdk/loginByUserToken",
+
+  //微信小程序更新并创建微信用户
+  updateWxUserInfo:`/api/weixin/sdk/ma/WxMaCommandController/updateWxUserInfo`,
+
+  //上传文件
+  upload:"api/file/sdk/upload",
+
+  //获取销售方信息
+  findSale:"api/sale/SaleInfoRestReadFacade/findSale",
+
+  //获取销售方列表
+  querySale:"api/sale/SaleInfoRestReadFacade/querySale",
+
+  //删除销售方信息
+  removeSale:"api/sale/SaleInfoRestWriteFacade/removeSale",
+
+  //新增/更新销售方
+  updateSale:"api/sale/SaleInfoRestWriteFacade/updateSale",
+
+
+
+
+  //艺术家开票身份验证
+  updateArtistUserInvoice:"api/artist/ArtistUserRestWriteFacade/updateArtistUserInvoice",
+
+  //艺术家开票合同模板下载
+  downloadArtistUserInvoice:"api/contract/ContractRestWriteFacade/downloadArtistUserInvoice",
+
+  //艺术家开票合同上传
+  uploadArtistUserInvoice:"api/contract/ContractRestWriteFacade/uploadArtistUserInvoice",
+
+  //开票信息填写
+  addInvoice:"api/invoice/InvoiceRestWriteFacade/addInvoice",
+
+  //获取发票抬头列表
+  queryInvoiceBuy:"api/invoice/InvoiceRestReadFacade/queryInvoiceBuy",
+
+  //发票订单信息列表
+  queryOrderInvoiceBuy:"api/order/InvoiceOrderRestReadFacade/queryInvoiceBuy",
+
+  //获取发票订单详细信息
+  queryOrderInvoiceInfo:"api/invoice/InvoiceRestReadFacade/queryInvoiceInfo",
+
+  //更新发票订单状态
+  updateInvoiceOrder:"api/order/InvoiceOrderRestWriteFacade/updateInvoiceOrder",
+
+  //获取服务费发票信息
+  queryInvoiceServiceInfo:"api/invoice/InvoiceRestReadFacade/queryInvoiceServiceInfo",
+
+  //开具服务费发票
+  updateInvoiceServiceOrder:"api/order/InvoiceOrderRestWriteFacade/updateInvoiceServiceOrder",
+
+  //学历字典接口
+  findByCode:"api/DicReadFacade/findByCode",
+
+  findTreeByType:"api/CategoryRestReadFacade/findTreeByType",
+
+  //通过id查找作品详情
+  artFindById:"api/OpusRestReadFacade/findById",
+
+  //查询用户的作品列表
+  artFindPage:"api/OpusRestReadFacade/findPage",
+
+  //新增作品
+  artAdd:"api/OpusRestWriteFacade/add",
+
+  //更新作品
+  artUpdate:"api/OpusRestWriteFacade/update",
+
+  //获取基本信息(个人中心页展示)
+  getBaseInfo:"api/UserRestReadFacade/getBaseInfo",
+
+  //获取详细公司入驻信息
+  getCompanySettledInfo:"api/UserRestReadFacade/getCompanySettledInfo",
+
+  //获取消息
+  getMessage:"api/UserRestReadFacade/getMessage",
+
+  //获取详细个人入驻信息
+  getPersonalSettledInfo:"api/UserRestReadFacade/getPersonalSettledInfo",
+
+  //获取用户的一些认证信息
+  getUserSettleInfo:"api/UserRestReadFacade/getUserSettleInfo",
+
+  //添加(更新)公司详情
+  addCompanyDetails:"api/UserRestWriteFacade/addCompanyDetails",
+
+  //添加(更新)个人详情
+  addPersonalDetails: "/api/UserRestWriteFacade/addPersonalDetails",
+
+  // 同意协议  员工0 企业1 策展2 SettledTypeEnum
+  agreement:"api/UserRestWriteFacade/agreement",
+
+  readMsg:"api/UserRestWriteFacade/readMsg",
+
+  getBanner:"api/BannerRestReadFacade/findList",
+
+  getUserPhone:"api/weixin/sdk/ma/WxMaCommandController/getUserPhone",
+
+  //服务留资
+  addLeaveInfo:"api/LeaveInfoRestWriteFacade/add",
+
+  //物流追踪
+  findExpressList:"api/express/InvoiceExpressReadFacade/findExpressList",
+
+  /**
+   * 邀请函
+   * add by yangkun 20211023
+   */
+  InvitationSave: "api/InvitesFacade/add", // 登记信息提交
+  InvitationUpdate: "/api/InvitesFacade/update", // 登记信息修改
+  InvitationGet: "/api/InvitesFacade/findByUid", // 个人登记信息查询
+  InvitationGetId: "/api/InvitesFacade/findById", // 管理登记信息查询
+  InvitationVerification: "api/InvitesFacade/updateInvites" // 登记信息核销
+};
+
+const apiInit={};
+Object.keys(api).forEach(key => {
+  apiInit[key]=`${host}${api[key]}`
+});
+
+apiInit.socket=socket;
+
+export default apiInit;
+

+ 524 - 0
app.js

@@ -0,0 +1,524 @@
+//app.js
+import api from './api'
+let mta = require('/utils/mta_analysis.js')
+import regeneratorRuntime from '/utils/runtime'
+
+const FILE_BASE_NAME = 'tmp_base64src';
+
+App({
+  onLaunch: function (options) {
+    wx.removeStorageSync("loginInfo");
+   // this.getToken();
+    const scene = decodeURIComponent(options.query.scene);
+    mta.App.init({
+      "appID": "500719713",
+      "eventID": "500719847",
+      "autoReport": true,
+      "statParam": true,
+      "ignoreParams": [],
+      "statPullDownFresh": true,
+      "statShareApp": true,
+      "statReachBottom": true
+    });
+    if(scene){
+      const  sceneQuery=scene.split(':');
+      if(sceneQuery.length==2){
+        mta.Event.stat(sceneQuery[0],{
+          [sceneQuery[1]]:'true'
+        })
+      }
+    }
+  },
+  api:api,
+  isLogin:false,
+  loginCallBack:[],
+  onShow:function(){
+    //this.post(api.findSale)
+    //this.post(api.querySale)
+  },
+  /**获取用户登录的后的一些信息**/
+  getToken: function (isJump=true) {
+    var loginInfo = wx.getStorageSync("loginInfo");
+    //console.log('loginInfo',loginInfo);
+    return new Promise((resolve, reject) => {
+      var that=this;
+      //登录成功回调
+      let SuccessBack = function (res, loginType){
+        // 发送 res.code 到后台换取 openId, sessionKey, unionId
+        let code = res.code;
+        //console.info("微信请求token1"+code);
+        that.request({
+          url:api.code,
+          data:{
+            code: code,
+           // uuid:new Date().getTime(),
+            wxAppId:"wxe0bc848feb0176a9"
+          },
+          method: 'POST',
+          header:{
+            'content-type': 'application/json'
+          }, // 默认值
+        }).then((data)=>{
+          //console.log(data);
+          return Promise.resolve(data)
+        }).then(res=>{
+          //console.log('userToken3',res);
+         // let isGoLogin=false;
+         /* if(isJump&&!res.data.auth){
+            //reject('未注册');
+            isGoLogin=true
+            wx.navigateTo({
+              url:"/pages/login/login"
+            });
+            //return false
+          }*/
+           //res.data.auth=false; //测试未注册状态
+           wx.setStorageSync("loginInfo",res.data)
+           that.isLogin=false;
+           resolve(res.data);
+           while (that.loginCallBack.length>0){
+               that.loginCallBack.pop()()
+           }
+        }).catch(error=>{
+          console.log('登录失败',error);
+         /* reject(error)*/
+        });
+      }
+      //个人微信登录逻辑
+      let LoginWx = function(){
+        wx.login({
+          success: res=>SuccessBack(res,1),
+          fail:error=>{
+            that.isLogin=false;
+            console.info("wx.login error={}",JSON.stringify(error));
+            reject(error);
+          }
+        });
+      };
+      wx.checkSession({
+        success:r=> {
+          //console.log('wx.checkSession')
+          if (loginInfo) {
+            resolve(loginInfo);
+            return;
+          }
+          this.isLogin=true;
+          LoginWx();
+        },
+        fail:e=>{
+          console.log('checkSession',false)
+          this.isLogin=true;
+          LoginWx();
+        }
+      });
+    });
+  },
+
+    //判断用户是否注册
+   authorization: async function () {
+        const userInfo = await this.getToken();
+        if (!userInfo.auth) {
+            wx.navigateTo({
+                url: "/pages/login/login"
+            })
+            return Promise.resolve(false)
+        }
+        return Promise.resolve(true)
+    },
+
+  /** 微信request 封装 **/
+  request: function (options) {
+    var that = this;
+    return (function (options) {
+      var promise = new Promise((resolve, reject) => {
+        //init
+        let i=0, maxRequest=3;
+        let request=function(refres=false){
+            i++;
+           //登录过期刷新headerToekn
+           if(refres){
+             const loginInfo=wx.getStorageSync('loginInfo');
+             options.header.wxToken= loginInfo.wxToken;
+             if (loginInfo.extraToken && loginInfo.extraToken.AdminAuthorization){
+              options.header.AdminAuthorization = loginInfo.extraToken.AdminAuthorization.token
+             }
+           }
+          wx.request({
+            url: options.url,
+            data: options.data,
+            method: options.method,
+            header: options.header,
+            success: function (res) {
+              if (res.header.RefreshAdminAuthorization){
+                //todo 刷新本地token token值=res.header.RefreshAdminAuthorization
+                const loginInfo=wx.getStorageSync('loginInfo');
+                if(loginInfo.extraToken){
+                  loginInfo.extraToken={
+                    AdminAuthorization:{
+                      token:res.header.RefreshAdminAuthorization
+                    }
+                  }
+                  wx.setStorageSync('loginInfo',loginInfo)
+                }
+              }
+              wx.hideLoading();
+              if(res.statusCode>='500'){
+                wx.showToast({
+                  title: res.data.message||"服务器异常",
+                  icon: 'none',
+                  duration: 3000,
+                });
+                reject('服务器异常');
+                return
+              }
+              //登录过期
+                if (res.data.code == "ACSDK10000003") {
+                    wx.removeStorageSync('loginInfo');
+                    that.getToken().then(res => {
+                        //console.log('登录过期重试',res);
+                        request(true);
+                    }).catch(error => {
+                        wx.showToast({
+                            title: '登录失败',
+                            icon: 'none',
+                            duration: 3000,
+                        });
+                    });
+                } else if (res.data.code == "ACSDK10000005") {
+                    //接口未授权
+                    wx.removeStorageSync('loginInfo');
+                    that.getToken().then(res => {
+                        console.log('ACSDK10000005',res);
+                        //临时拦截
+                        console.log(typeof options.data.noLogin == 'undefined')
+                        if(typeof options.data.noLogin == 'undefined'){
+                          if(!res.auth){
+                              wx.navigateTo({
+                                  url:"/pages/login/login"
+                              });
+                          }
+                        }
+                    }).catch(error => {
+                        wx.showToast({
+                            title: '登录失败',
+                            icon: 'none',
+                            duration: 3000,
+                        });
+                    });
+                }else if(res.data.success==false){
+                    // wx.showToast({
+                    //     title: res.data.message,
+                    //     icon: 'none',
+                    //     duration: 3000,
+                    // });
+                    reject(res);
+                }else{
+                    resolve(res.data);
+                }
+                return false;
+            },
+            fail: function (e) {
+              wx.hideLoading();
+              wx.showToast({
+                title: "网络错误",
+                icon: 'none',
+                duration: 3000,
+              });
+              reject('网络出错');
+            }
+          });
+        };
+
+        request();
+
+      });
+      return promise;
+    })(options);
+  },
+
+  /** 微信request.get 封装 **/
+  get: async function (url, data) {
+    return this.request({
+      url: url,
+      data: data,
+      method: 'GET',
+      header: {
+        'content-type': 'application/json', // 默认值
+      }
+    })
+  },
+
+  /** 微信request.post 封装 **/
+  post: async function (url, data={},opt) {
+    let that=this;
+    const peddingFun=async ()=>{
+
+      //let postData;
+      let options=Object.assign(
+          {
+            showLoading:true,
+            needToken:true
+          },
+          opt);
+
+
+
+      //console.log('loginInfo', loginInfo);
+
+      let header = {
+        'content-type': 'application/json', // 默认值
+      };
+        let loginInfo = await this.getToken(options.needToken);
+        header.wxToken= loginInfo.wxToken;
+        if(options.needToken&&!loginInfo.auth){
+          wx.navigateTo({
+            url:"/pages/login/login"
+          })
+          return Promise.reject('未注册');
+        }
+
+        if (loginInfo.extraToken && loginInfo.extraToken.AdminAuthorization){
+          //console.log('AdminAuthorization');
+          header.AdminAuthorization = loginInfo.extraToken.AdminAuthorization.token
+        }
+      // postData = Object.assign({}, data);
+      if(options.showLoading){
+        wx.showLoading({
+          title:"正在加载"
+        });
+      }
+      //临时拦截
+      data.noLogin = options.noLogin;
+      return this.request({
+        url: url,
+        data: data,
+        method: 'POST',
+        header: header
+      });
+    };
+    // login ing wait
+    if(this.isLogin){
+      this.loginCallBack.push(peddingFun)
+      return
+    }
+    return peddingFun()
+  },
+
+  /** 微信request.post 封装 **/
+  postForm: async function (url, data) {
+    var openid = await this.getToken();
+    return this.request({
+      url:url,
+      data: data,
+      method: 'POST',
+      header: {
+        'content-type': 'x-www-form-urlencoded', // 默认值
+        'X-Auth-Code': openid
+      }
+    });
+  },
+
+  /** connectSocket **/
+  connectSocket:async function (url){
+    let loginInfo = await this.getToken();
+    let header = {
+      [loginInfo.authHeaderName]:loginInfo.token
+    };
+    return new Promise(function(resolve ,reject){
+      wx.connectSocket({
+        url: url,
+        header:header,
+        success:(res)=>{
+          console.log('socket连接成功',res)
+          resolve(res)
+        },
+        fail:(error)=>{
+          console.log('socket连接失败',error)
+          reject(error)
+        }
+      });
+    });
+  },
+
+  /**上传文件**/
+  uploadFile:async function(options={}){
+    return  new  Promise( (resolve ,reject)=>{
+      wx.chooseImage({
+       count: 1, // 默认9
+       extension:options.extension?options.extension:['pdf','jpg','png','jpeg','gif'],
+        success: async (res)=> {
+          wx.showLoading({
+            title:"正在上传文件..."
+          })
+          // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
+          var tempFilePaths = res.tempFiles;
+          var imgInfo = await this.getImageInfo(tempFilePaths[0].path);
+          //验证图片
+          if(options.validate){
+            if(!options.validate(imgInfo)){
+              reject(new Error('上传图片不符合规范'))
+              return false
+            }
+          }
+          const uploadTask = wx.uploadFile({
+            url: api.upload, //仅为示例,非真实的接口地址
+            filePath: tempFilePaths[0].path,
+            name: 'file',
+            success: (res)=>{
+              resolve(res)
+            },
+            fail:(error)=>{
+              resolve(error)
+            },
+            complete:(res)=>{
+              wx.hideLoading();
+            }
+          })
+          uploadTask.onProgressUpdate((res) => {
+            wx.showLoading({
+              title:`上传中${res.progress}%..`
+            })
+          })
+        },
+        fail:(error)=>{
+          reject(error)
+        }
+      })
+    });
+  },
+
+  /**获取图片基本信息**/
+  getImageInfo(url){
+    return new Promise((resolve,reject)=>{
+      wx.getImageInfo({
+        src: url,
+        success : res => {
+          resolve(res)
+        },
+        fail:error => {
+          resolve(error)
+        }
+      })
+    })
+  },
+  //从聊天中选择文件
+  uploadFileMsg:async function(url,options={}){
+    return new  Promise((resolve ,reject)=>{
+      wx.chooseMessageFile({
+        count: 1, // 默认9,
+        type:'file',
+        extension:options.extension?options.extension:['pdf','jpg','png','jpeg'],
+        success: (res)=> {
+          wx.showLoading({
+            title:"正在上传文件..."
+          })
+          // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
+          var tempFilePaths = res.tempFiles;
+         // console.log(tempFilePaths)
+          const uploadTask = wx.uploadFile({
+            url: api.upload, //仅为示例,非真实的接口地址
+            filePath: tempFilePaths[0].path,
+            name: 'file',
+            success: (res)=>{
+              resolve(res)
+            },
+            fail:(error)=>{
+              resolve(error)
+            },
+            complete:(res)=>{
+              wx.hideLoading();
+            }
+          });
+          uploadTask.onProgressUpdate((res) => {
+            wx.showLoading({
+              title:`上传中${res.progress}%..`
+            })
+          })
+        },
+        fail:(error)=>{
+          reject(error)
+        }
+      });
+    });
+  },
+
+  globalData: {
+    userInfo: null
+  },
+  //base64图片路径
+  base64src: function(base64data, cb) {
+    const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
+    if(!format) {
+      return (new Error('ERROR_BASE64SRC_PARSE'));
+    }
+    const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
+    const buffer = wx.base64ToArrayBuffer(bodyData);
+    const fsm = wx.getFileSystemManager();
+    fsm.writeFile({
+      filePath,
+      data: buffer,
+      encoding: 'binary',
+      success() {
+        cb(filePath);
+      },
+      fail() {
+        return (new Error('ERROR_BASE64SRC_WRITE'));
+      },
+    });
+  },
+  //预览文档
+  openDocument:function(src){
+    wx.showLoading({
+      title:"正在加载文件..."
+    })
+    wx.downloadFile({
+      url: src,
+      success:  (res)=> {
+        const filePath = res.tempFilePath
+        wx.openDocument({
+          filePath: filePath,
+          success: function (res) {
+            console.log('打开文档成功')
+          },
+          fail:(e)=>{
+            console.log('文件预览失败',e);
+            wx.showToast({
+              title:"预览失败",
+              duration:2000,
+              icon:"none"
+            })
+          }
+        })
+      },
+      fail:e=>{
+        console.log(e);
+        wx.showToast({
+          title:"预览失败",
+          duration:2000,
+          icon:"none"
+        })
+      },
+      complete:(res)=>{
+        wx.hideLoading();
+      }
+    })
+  },
+  //预览图片
+  previewImg:function(imgs){
+      wx.previewImage({
+          current: imgs[0], // 当前显示图片的http链接
+          urls: imgs // 需要预览的图片http链接列表
+      })
+  },
+  //设置标题
+  setNavTitle(title) {
+    wx.setNavigationBarTitle({
+      title: title
+    })
+    let pages = getCurrentPages() // 获取加载的页面
+    let currentPage = pages[pages.length - 1] // 获取当前页面的对象
+    currentPage.setData({
+      navigationBarTitle: title
+    })
+  },
+})

+ 87 - 0
app.json

@@ -0,0 +1,87 @@
+{
+  "pages": [
+    "pages/index/index",
+    "pages/classify/classify",
+    "pages/user/user/user",
+    "pages/agreement/agreement",
+    "pages/copyright/copyright",
+    "pages/user/myArtist/myArtist",
+    "pages/user/artUpload/artUpload",
+    "pages/user/artPreview/artPreview",
+    "pages/user/success/success",
+    "pages/user/personalSettle/personalSettle",
+    "pages/user/personalInfo/personalInfo",
+    "pages/user/personalInfoPreview/personalInfoPreview",
+    "pages/user/myNews/myNews",
+    "pages/invoice/index/index",
+    "pages/invoice/agreement/agreement",
+    "pages/invoice/authentication/authentication",
+    "pages/invoice/contract/contract",
+    "pages/invoice/downContract/downContract",
+    "pages/invoice/editInvoice/editInvoice",
+    "pages/invoice/saleList/saleList",
+    "pages/invoice/editSale/editSale",
+    "pages/invoice/myInvoice/myInvoice",
+    "pages/invoice/invoiceDetail/invoiceDetail",
+    "pages/invoice/myNews/myNews",
+    "pages/invoice/preview/preview",
+    "pages/invoice/editServiceInvoice/editServiceInvoice",
+    "pages/invoice/logisticsDetail/logisticsDetail",
+    "pages/settled/index/index",
+    "pages/settled/curatorStep/curatorStep",
+    "pages/settled/companyStep/companyStep",
+    "pages/settled/agreement/agreement",
+    "pages/settled/authenticationCompany/authenticationCompany",
+    "pages/settled/curatorInfo/curatorInfo",
+    "pages/settled/success/success",
+    "pages/settled/contacts/contacts",
+    "pages/guanyuan/list/list",
+    "pages/guanyuan/mount/mount",
+    "pages/guanyuan/demonstrate/demonstrate",
+    "pages/guanyuan/exhibition/exhibition",
+    "pages/guanyuan/webview/webview",
+    "pages/guanyuan/success/success",
+    "pages/guanyuan/logisticsService/logisticsService",
+    "pages/login/login",
+    "pages/logs/logs",
+    "pages/invitation/protocol/index",
+    "pages/invitation/letter/index",
+    "pages/invitation/evidence/index",
+    "pages/invitation/navigation/index",
+    "pages/invitation/index/index",
+    "pages/invitation/verify/index"
+  ],
+  "tabBar": {
+    "color": "#D0D0D0",
+    "selectedColor": "#161616",
+    "borderStyle": "white",
+    "list": [
+      {
+        "pagePath": "pages/index/index",
+        "iconPath": "images/icon-tab-home-default.png",
+        "selectedIconPath": "images/icon-tab-home-active.png",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/classify/classify",
+        "iconPath": "images/icon-tab-classify-default.png",
+        "selectedIconPath": "images/icon-tab-classify-active.png",
+        "text": "分类"
+      },
+      {
+        "pagePath": "pages/user/personalSettle/personalSettle",
+        "iconPath": "images/icon-tab-my-default.png",
+        "selectedIconPath": "images/icon-tab-my-active.png",
+        "text": "我的"
+      }
+    ]
+  },
+  "window": {
+    "backgroundTextStyle": "light",
+    "navigationBarBackgroundColor": "#fff",
+    "navigationBarTitleText": "WeChat",
+    "navigationBarTextStyle": "black"
+  },
+  "style": "v2",
+  "sitemapLocation": "sitemap.json"
+}

+ 505 - 0
app.wxss

@@ -0,0 +1,505 @@
+/**app.wxss**/
+.img-full{
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+
+.default-btn{
+  height:100rpx;
+  background:rgba(236,238,243,1);
+  line-height: 100rpx;
+  color:rgba(178,178,191,1);
+  font-size: 32rpx;
+  text-align: center;
+  border: 0;
+  padding: 0;
+}
+
+.default-btn.primary{
+  background: #161616;
+  color: #fff !important;
+}
+.default-btn.disable{
+  background:rgba(236,238,243,1);
+  color: #B2B2BF !important;
+}
+/****/
+.planer-box{
+  background: #fff;
+  margin-bottom: 20rpx;
+  padding: 1rpx 0;
+}
+.planer-box.none{
+  margin-bottom: 0;
+}
+.planer-box .planer-header{
+  position: relative;
+  margin-bottom: 20rpx;
+}
+
+.planer-box .planer-header .name{
+  height: 100rpx;
+  line-height: 100rpx;
+  font-size: 40rpx;
+  color: #161616;
+  padding-left: 50rpx;
+}
+.planer-box .planer-header.title{
+  position: relative;
+  padding-top: 10rpx;
+  margin-bottom: 10rpx;
+}
+.planer-box .planer-header.title .name{
+  font-size:28rpx;
+  color:rgba(22,22,22,1);
+}
+.planer-box .planer-header.title .name>text{
+  color: #707377;
+  font-size: 24rpx;
+}
+.planer-box .planer-header.title::after{
+  display: none;
+}
+
+.planer-box .planer-header.title .add{
+  position: absolute;
+  right:50rpx;
+  top:40rpx;
+  width: 50rpx;
+  height: 50rpx;
+}
+
+.planer-box .planer-header:after{
+  position: absolute;
+  left: 0;
+  top:50%;
+  width:6rpx;
+  height:40rpx;
+  transform: translate(0,-50%);
+  background:rgba(22,22,22,1);
+  content: "";
+}
+
+.planer-box .planer-content{
+  padding: 0 50rpx;
+}
+.planer-box .form-box{
+  margin-bottom: 40rpx;
+}
+
+/** 表单样式 **/
+.form-box{
+  margin-bottom: 40rpx;
+}
+.form-box .form-list{
+  position: relative;
+  border-bottom: 1rpx solid rgba(236,238,243,1);
+  margin-bottom: 20rpx;
+}
+.form-box.none .form-list{
+  border-bottom: 0;
+}
+.form-box .form-list .form-label{
+  font-size: 24rpx;
+  color: #707377;
+}
+.form-box .form-list .input-text{
+  position: relative;
+  z-index: 2;
+  display: block;
+  font-size: 28rpx;
+  color: #161616;
+  height: 80rpx;
+  line-height: 80rpx;
+  margin-top: -6rpx;
+}
+.form-box .form-list .textarea-text{
+  width: 100%;
+  display: block;
+  height:202rpx;
+  background:rgba(255,255,255,1);
+  border:1rpx solid rgba(236,238,243,1);
+  margin-top: 30rpx;
+  box-sizing: border-box;
+  padding: 20rpx;
+  font-size: 28rpx;
+  color: #161616;
+}
+.form-box .form-list .get-phone{
+  position: absolute;
+  z-index: 3;
+  right: 0;
+  bottom: 12rpx;
+  width:160rpx;
+  height:54rpx;
+  line-height: 54rpx;
+  text-align: center;
+  background:rgba(236,238,243,1);
+  color: #9B9B9B;
+  font-size: 24rpx;
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+.form-box .form-list .icon-arrow{
+  position: absolute;
+  right: 0;
+  top:50%;
+  transform: translate(0,-50%);
+  z-index: 2;
+  display: inline-block;
+  vertical-align: middle;
+  width: 12rpx;
+  height: 20rpx;
+}
+.form-box .form-list .add-file{
+  padding:100rpx 0 60rpx 0;
+}
+
+.form-box .form-list .add-file .img-wrap{
+  position: relative;
+  height: 300rpx;
+}
+
+.form-box .form-list .add-file .img-wrap .close{
+  position: absolute;
+  top: -24rpx;
+  right: -24rpx;
+  width: 46rpx;
+  height: 46rpx;
+}
+
+.form-box .form-list .add-file .icon{
+  display: block;
+  width: 62rpx;
+  height: 62rpx;
+  margin: 0 auto 20rpx auto;
+}
+.form-box .form-list .add-file .text{
+  text-align: center;
+  font-size:24rpx;
+  color:rgba(22,22,22,1);
+}
+
+.step-tool{
+  display: flex;
+  justify-content: space-between;
+  background: #fff;
+  padding: 30rpx;
+}
+
+.step-tool .step-btn{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width:100rpx;
+  height:100rpx;
+  background:rgba(236,238,243,1);
+}
+.step-tool .step-btn:hover{
+  background:rgba(236,238,243,0.8);
+}
+.step-tool .step-btn.disable{
+  background: none;
+}
+
+.step-tool .step-btn.active{
+  background:rgba(29,182,150,1);
+}
+.step-tool .step-btn.active{
+  background:rgba(29,182,150,.8) url("https://resource.artouchstone.com/miniapp/artist/images/next-green@2x.png");
+  background-size:cover;
+}
+.step-tool .step-btn.active .icon{
+  display: none;
+}
+.step-tool .step-btn .icon{
+  display: inline-block;
+  vertical-align: middle;
+  width: 32rpx;
+  height: 32rpx;
+  margin-right: 10rpx;
+  margin-top: -4rpx;
+}
+.step-tool .step-btn.text{
+  width: 200rpx;
+  padding: 0 30rpx;
+  white-space: nowrap;
+
+}
+.step-tool .step-btn.text .text-view{
+  display: inline-block;
+  vertical-align: middle;
+  color: #fff;
+  margin-right: 20rpx;
+  margin-top: -6rpx;
+}
+.step-tool .step-btn.text .icon{
+  display: inline-block;
+}
+.footer-btn{
+  height: 160rpx;
+}
+
+.footer-btn .footer-btn-content{
+  width: 100%;
+  padding: 30rpx 50rpx;
+  background: #fff;
+  position: fixed;
+  left: 0;
+  bottom:0;
+  box-sizing: border-box;
+}
+
+/**身份证上传框**/
+
+.user-card-box{
+  /*height:790rpx;*/
+  background:rgba(255,255,255,1);
+  box-shadow:0px 10rpx 20rpx 0px rgba(0,0,0,0.08);
+  padding: 50rpx 50rpx 50rpx 50rpx;
+  margin-bottom: 50rpx;
+}
+.user-card-box .card-img-box{
+  position: relative;
+  height:348rpx;
+  background:rgba(255,255,255,1);
+  border:1rpx dashed rgba(233,233,233,1);
+  margin-bottom: 30rpx;
+}
+.user-card-box .card-img-box .img-wrap{
+    position: relative;
+    height: 100%;
+}
+.user-card-box .card-img-box .img-wrap>image{
+    display: block;
+    width: 100%;
+    height: 100%;
+}
+.user-card-box .card-img-box.big{
+  height:628rpx;
+}
+.user-card-box .card-img-box.big .img-wrap{
+  position: relative;
+  height: 400rpx;
+}
+.user-card-box .card-img-box .close,
+.user-card-box .card-img-box.big .img-wrap .close{
+  position: absolute;
+  right:-23rpx;
+  top:-23rpx;
+  width: 46rpx;
+  height: 46rpx;
+}
+
+.user-card-box .card-img-box.big .img-wrap>image{
+  display: block;
+  width: 100%;
+  height: 100%;
+}
+.user-card-box .card-img-box.big  .item-info{
+
+}
+.user-card-box .card-img-box.big  .item-info{
+  top: 36%;
+}
+.user-card-box .card-img-box .item-info{
+  position: absolute;
+  left: 50%;
+  top:50%;
+  transform: translate(-50%,-50%);
+}
+
+
+.user-card-box .card-img-box .item-info .text{
+  font-size: 24rpx;
+  color: #262628;
+  line-height: 62rpx;
+  padding-top: 10rpx;
+  text-align: center;
+}
+.user-card-box .card-img-box .icon{
+  margin: 0 auto;
+  width: 124rpx;
+  height: 124rpx;
+  display: block;
+  z-index: 2;
+}
+.user-card-box .card-img-box .info{
+  color: #9B9B9B;
+  font-size: 24rpx;
+  white-space: nowrap;
+}
+.user-card-box .card-info-text{
+  position: absolute;
+  left: 50%;
+  transform: translate(-50%,0);
+  bottom: 60rpx;
+  width: 80%;
+  margin: 0 auto;
+}
+.user-card-box .card-info-text .text{
+  color:rgba(38,38,40,1);
+  line-height:34rpx;
+  font-size: 24rpx;
+  text-align: center;
+}
+
+.user-card-box .card-info-text .info{
+  color:rgba(155,155,155,1);
+  line-height:34rpx;
+  font-size: 24rpx;
+  text-align: center;
+}
+
+.user-card-box .look-sample{
+  display: block;
+  margin:50rpx auto 0 auto;
+  width:200rpx;
+  height:64rpx;
+  line-height: 64rpx;
+  text-align: center;
+  background:rgba(255,255,255,1);
+  border:1rpx solid rgba(22,22,22,1);
+  color: #161616;
+  font-size: 26rpx;
+}
+
+/**弹框样式**/
+.pop-box{
+  position: fixed;
+  top:0;
+  right: 0;
+  bottom:0;
+  left: 0;
+  background:rgba(29,33,41,0.67);
+  z-index: 11;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.pop-box .pop-inner{
+  position: absolute;
+  left: 50%;
+  transform: translate(-50%,0);
+  background:rgba(255,255,255,1);
+  border-radius:4rpx;
+  width: 540rpx;
+  padding: 40rpx;
+  box-sizing: border-box;
+}
+
+.pop-box .pop-inner .img-simple{
+
+}
+
+.pop-box .pop-inner .img-simple>image{
+  display: block;
+  width: 100%;
+}
+.pop-box .pop-inner .pop-close{
+  position: absolute;
+  top:100%;
+  left: 50%;
+  transform: translate(-50%,80rpx);
+  display: block;
+  width: 100rpx;
+  height: 100rpx;
+  cursor: pointer;
+}
+.pop-box .pop-inner-text{
+    padding: 60rpx 0;
+}
+.pop-box .pop-inner .title{
+  padding-top: 10rpx;
+  height:44rpx;
+  font-size:32rpx;
+  font-family:PingFangSC-Regular,PingFang SC;
+  font-weight:400;
+  color:rgba(22,22,22,1);
+  line-height:44rpx;
+  text-align: center;
+}
+.pop-box .pop-inner-text> view{
+    color:rgba(22,22,22,1);
+    line-height:44rpx;
+    font-size: 28rpx;
+    text-align: center;
+}
+
+.pop-box .pop-inner-text>view.pop-choose-item{
+  font-size: 32rpx;
+  color: #161616;
+  border-bottom: 1rpx solid #ECEEF3;
+  height: 100rpx;
+  line-height: 100rpx;
+}
+
+.pop-box .pop-inner-text>view.pop-choose-item .icon{
+  display: inline-block;
+  vertical-align: middle;
+  margin-right: 12rpx;
+  width: 52rpx;
+  height: 52rpx;
+}
+
+.pop-box .pop-inner-text>view.pop-choose-item .icon.icon-01{
+  background: url("https://resource.artouchstone.com/miniapp/artist/images/icon-choose-file-chat.png");
+  background-size: 100% 100%;
+}
+
+.pop-box .pop-inner-text>view.pop-choose-item .icon.icon-02{
+  background: url("https://resource.artouchstone.com/miniapp/artist/images/icon-choose-file.png");
+  background-size: 100% 100%;
+}
+
+/**纳税人识别号列表**/
+.rise-list-box{
+  max-height:552rpx;
+  background: #fff;
+  /*background:rgba(44,48,57,1);*/
+  overflow: auto;
+  padding:50rpx 30rpx;
+  border:1rpx solid rgba(236,238,243,0.3);
+}
+.rise-list-box .item{
+  position: relative;
+  color: #333;
+  font-size: 28rpx;
+  height: 50rpx;
+  line-height: 50rpx;
+  margin-bottom: 10rpx;
+  border-bottom:1rpx solid rgba(236,238,243,0.3);
+}
+.rise-list-box .item .close{
+  position: absolute;
+  right: 0;
+  top:50%;
+  transform: translate(0,-50%);
+  width: 24rpx;
+  height: 24px;
+}
+.rise-list-box .delete{
+  width: 36rpx;
+  height: 36rpx;
+}
+.fixed-zx{
+  position: fixed;
+  right: 10rpx;
+  top:560rpx;
+  width: 113rpx !important;
+  height: 113rpx;
+  background: url("https://resource.artouchstone.com/miniapp/artist/images/index/index-zx.png");
+  background-size: 100% 100%;
+  z-index: 10;
+  border: 0 solid rgba(0,0,0,0) !important;
+  padding: 0;
+}
+
+.red{
+  color: #ff0000;
+  padding-right: 6rpx;
+}

+ 8 - 0
filter/money.wxs

@@ -0,0 +1,8 @@
+var money = function (money) {
+  var num=0;
+  if(typeof money ==='number'){
+    num = (money / 100).toFixed(2);
+  }
+  return num;
+}
+module.exports.money = money

TEMPAT SAMPAH
images/contract-pdf.png


TEMPAT SAMPAH
images/copy-code-pic.png


TEMPAT SAMPAH
images/footer-logo.png


TEMPAT SAMPAH
images/ico_baoming.png


TEMPAT SAMPAH
images/ico_shangcheng.png


TEMPAT SAMPAH
images/ico_shuiwu.png


TEMPAT SAMPAH
images/ico_xianxia.png


TEMPAT SAMPAH
images/icon-step-next-white.png


TEMPAT SAMPAH
images/icon-tab-classify-active.png


TEMPAT SAMPAH
images/icon-tab-classify-default.png


TEMPAT SAMPAH
images/icon-tab-home-active.png


TEMPAT SAMPAH
images/icon-tab-home-default.png


TEMPAT SAMPAH
images/icon-tab-my-active.png


TEMPAT SAMPAH
images/icon-tab-my-default.png


TEMPAT SAMPAH
images/icon-time-grey.png


TEMPAT SAMPAH
images/invitation/down_24x24.png


TEMPAT SAMPAH
images/invoice/index/banner-top.png


TEMPAT SAMPAH
images/invoice/index/ico_1@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_2@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_3@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_4@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_5@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_6@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_7@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_8@2x.png


TEMPAT SAMPAH
images/invoice/index/ico_9@2x.png


TEMPAT SAMPAH
images/invoice/index/icon-ing-active.png


TEMPAT SAMPAH
images/invoice/index/icon-ing-default.png


TEMPAT SAMPAH
images/invoice/index/icon-jilu.png


TEMPAT SAMPAH
images/invoice/index/icon-over-active.png


TEMPAT SAMPAH
images/invoice/index/icon-over-default.png


TEMPAT SAMPAH
images/invoice/index/icon-qb-active.png


TEMPAT SAMPAH
images/invoice/index/icon-qb-default.png


TEMPAT SAMPAH
images/invoice/index/icon-tj-active.png


TEMPAT SAMPAH
images/invoice/index/icon-tj-default.png


TEMPAT SAMPAH
images/invoice/index/icon-wykp.png


TEMPAT SAMPAH
images/pic_shangcheng.png


TEMPAT SAMPAH
images/pic_shuiwu.png


TEMPAT SAMPAH
images/sale/icon-company.png


TEMPAT SAMPAH
images/sale/icon-curator.png


TEMPAT SAMPAH
images/sale/icon-personal.png


+ 6 - 0
jsconfig.json

@@ -0,0 +1,6 @@
+{
+	"compilerOptions": {
+		"target": "es2015",
+		"module": "commonjs"
+	}	
+}

+ 63 - 0
pages/agreement/agreement.js

@@ -0,0 +1,63 @@
+// pages/invoice/agreement/agreement.js
+const app = getApp();
+const api = app.api;
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+  },
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/agreement/agreement.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "免责声明",
+  "usingComponents": {}
+}

+ 17 - 0
pages/agreement/agreement.wxml

@@ -0,0 +1,17 @@
+<!--pages/invoice/agreement/agreement.wxml-->
+<view class="page-agreement">
+    <view class="top-tip">
+        <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/icon-warring.png"></image></view>
+        免责声明
+    </view>
+    <view class="agreement-content">
+        <view class="view-text">1、任何人因使用本网站而可能遭致的意外及其造成的损失(包括因下载本网站可能链接的第三方网站内容而感染电脑病毒),我们对此概不负责,亦不承担任何法律责任。
+        </view>
+        <view class="view-text">2、本网站禁止制作、复制、发布、传播等具有反动、色情、暴力、淫秽等内容的信息,一经发现,立即删除。若您因此触犯法律,我们对此不承担任何法律责任。
+        </view>
+        <view class="view-text">3、本网站会员自行上传或通过网络收集的资源,我们仅提供一个展示、交流的平台,不对其内容的准确性、真实性、正当性、合法性负责,也不承担任何法律责任。
+        </view>
+        <view class="view-text">4、任何单位或个人认为通过本网站网页内容可能涉嫌侵犯其著作权,应该及时向我们提出书面权利通知,并提供身份证明、权属证明及详细侵权情况证明。我们收到上述法律文件后,将会依法尽快处理。</view>
+    </view>
+</view>
+

+ 106 - 0
pages/agreement/agreement.wxss

@@ -0,0 +1,106 @@
+/* pages/invoice/agreement/agreement.wxss */
+page{
+    height: 100%;
+}
+.page-agreement{
+    display: flex;
+    height: 100%;
+    padding: 0 60rpx;
+    box-sizing: border-box;
+    flex-direction: column;
+}
+.page-agreement .top-tip{
+    height:114rpx;
+    line-height: 114rpx;
+    background:rgba(44,48,57,1);
+    text-align: center;
+    color: #ffffff;
+    font-size: 32rpx;
+    margin: 30rpx 0 40rpx 0;
+}
+.page-agreement .top-tip .icon{
+    display: inline-block;
+    vertical-align: middle;
+    width: 40rpx;
+    height: 40rpx;
+    margin-top: -6rpx;
+    margin-right: 20rpx;
+}
+
+.page-agreement .agreement-content{
+    flex: 1;
+    border:2px solid rgba(151,151,151,.18);
+    padding: 40rpx;
+    overflow: scroll;
+    margin-bottom: 20rpx;
+    box-sizing: border-box;
+}
+
+.page-agreement .agreement-content .view-text{
+    font-size: 24rpx;
+    color: #161616;
+    line-height: 2;
+}
+
+.page-agreement .agreement-tool{
+    color: #9B9B9B;
+    font-size: 24rpx;
+    height: 50rpx;
+    line-height: 50rpx;
+    margin-bottom: 30rpx;
+}
+
+.page-agreement .agreement-tool .icon{
+    display: inline-block;
+    vertical-align: middle;
+    width: 32rpx;
+    height: 32rpx;
+    margin-right: 10rpx;
+    margin-top: -4rpx;
+}
+
+.page-agreement .step-tool{
+    margin-left: -40rpx;
+    margin-right: -40rpx;
+}
+
+/*.step-tool{
+    display: flex;
+   justify-content: space-between;
+    margin-bottom: 40rpx;
+}*/
+
+/*
+.step-tool .step-btn{
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width:100rpx;
+    height:100rpx;
+    background:rgba(236,238,243,1);
+}
+.step-tool .step-btn:hover{
+    background:rgba(236,238,243,0.8);
+}
+.step-tool .step-btn.disable{
+    background: none;
+}
+
+.step-tool .step-btn.active{
+    background:rgba(29,182,150,1);
+}
+.step-tool .step-btn.active{
+    background:rgba(29,182,150,.8);
+}
+
+.step-tool .step-btn .icon{
+    display: inline-block;
+    vertical-align: middle;
+    width: 32rpx;
+    height: 32rpx;
+    margin-right: 10rpx;
+    margin-top: -4rpx;
+}
+*/
+
+

+ 225 - 0
pages/classify/classify.js

@@ -0,0 +1,225 @@
+// pages/classify/classify.js
+import regeneratorRuntime from '../../utils/runtime'
+const app = getApp();
+const api = app.api;
+
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    isLogin:false,
+    isShowPop:false,
+    settleInfo:{
+
+      artistCaStatus: 0, //艺术家认证状态 0未提交,1已提交,2认证通过,3认证不通过
+      companyCaStatus: 0, //司认证状态 0未提交,1已提交,2认证通过,3认证不通过
+      curatorCaStatus: 0, //策展人认证状态 0未提交,1已提交,2认证通过,3认证不通过
+      isArtist: 0,
+      isArtistAgree: 0, // 艺术家协议 0未同意,1已同意
+      isArtistInvoiceAgree: 0, //发票协议
+
+      isCompany: 0,
+      isCompanyAgree: 0, //公司认证协议 0未同意,1已同意
+      isCurator: 0,
+      isCuratorAgree: 0, // 策展人协议 0未同意,1已同意
+      isVerification: null,  //身份认证
+      isWeChatLogin: null
+
+     }
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow:async function () {
+    //hasLogins();
+  },
+  async hasLogins(){
+    if(!this.data.isLogin){
+      if(await app.authorization()){
+        this.notLoginGo();
+      }
+      this.setData({
+        isLogin:true
+      });
+      return
+    }else {
+      this.notLoginGo();
+    }
+  },
+  getData(opt){
+    app.post(api.getUserSettleInfo,{
+    },{showLoading:false, needToken:false}).then(res=>{
+      console.log(res);
+      this.setData({
+        settleInfo:res.data
+      })
+      if(opt){
+          opt()
+      }
+    })
+  },
+  notLoginGo: async function(){
+    const userInfo = await app.getToken();
+    if (!userInfo.auth) {
+      wx.switchTab({
+        url:"/pages/index/index",
+        success:(res)=>{
+          this.setData({
+            isLogin:false
+          });
+        }
+      })
+    }else{
+      this.getData();
+    }
+  },
+  handlerTap(e){
+    const that = this;
+    that.getData(function(){
+      const  {index}=e.currentTarget.dataset;
+      const settleInfo = that.data.settleInfo;
+      if(settleInfo.isVerification==0){
+        that.showPop()
+      }else if(settleInfo.artistCaStatus && settleInfo.artistCaStatus === 2){
+        //艺术家认证通过
+        wx.navigateTo({
+          url: '/pages/user/artUpload/artUpload'
+        })
+      }else if(settleInfo.curatorCaStatus && settleInfo.curatorCaStatus === 2){
+        //策展人认证通弄过过
+        wx.navigateTo({
+          // url: '/pages/user/artUpload/artUpload'
+          url: '/pages/settled/contacts/contacts'
+        })
+      }else if(settleInfo.companyCaStatus && settleInfo.companyCaStatus == 1){
+        //公司入驻审核中
+        wx.navigateTo({
+          url: '/pages/settled/success/success'
+        })
+      }else if(settleInfo.companyCaStatus && settleInfo.companyCaStatus == 2){
+        //公司入驻审核通过
+        wx.navigateTo({
+          url: '/pages/settled/contacts/contacts'
+        })
+      }else{
+        if(index==0){
+          this.artistGo();
+        }else if(index==1){
+          this.companyGo();
+        }else{
+          this.curatorGO();
+        }
+      }
+    })
+
+  },
+  artistGo(){
+    const {settleInfo}=this.data;
+    if(!settleInfo.isVerification&&settleInfo.isArtistAgree){
+      wx.navigateTo({
+        url:"/pages/invoice/authentication/authentication?id=0"
+      })
+      return
+    }else if(settleInfo.isArtistAgree){
+      wx.navigateTo({
+        url:"/pages/user/personalInfo/personalInfo"
+      })
+    }else{
+      wx.navigateTo({
+        url:`/pages/settled/agreement/agreement?id=0`
+      })
+    }
+  },
+  companyGo(){
+   // console.log(company)
+    const {settleInfo}=this.data;
+    if(settleInfo.isCompanyAgree){
+      wx.navigateTo({
+        url:"/pages/settled/authenticationCompany/authenticationCompany"
+      })
+    }else{
+      wx.navigateTo({
+        url:`/pages/settled/agreement/agreement?id=1`
+      })
+    }
+  },
+  curatorGO(){
+    const {settleInfo}=this.data;
+    if(!settleInfo.isVerification&&settleInfo.isArtistAgree){
+      wx.navigateTo({
+        url:"/pages/invoice/authentication/authentication?id=2"
+      })
+    }else if(settleInfo.isArtistAgree){
+      wx.navigateTo({
+       // url:"/pages/settled/curatorInfo/curatorInfo"
+        url:"/pages/user/personalInfo/personalInfo?type=2"
+      })
+    }else{
+      wx.navigateTo({
+        url:`/pages/settled/agreement/agreement?id=2`
+      })
+    }
+
+  },
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  },
+  showPop(){
+    this.setData({
+      isShowPop:true
+    });
+  },
+  hidePop(){
+    this.setData({
+      isShowPop:false
+    });
+  }
+})

+ 4 - 0
pages/classify/classify.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "分类",
+  "usingComponents": {}
+}

+ 120 - 0
pages/classify/classify.wxml

@@ -0,0 +1,120 @@
+<!--pages/classify/classify.wxml-->
+<view class="page-classify">
+    <view class="classify-item">
+        <view class="item-media">
+            <view class="icon icon-01"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_shangcheng@2x.png"></image></view>
+            <view class="text">入驻商城</view>
+        </view>
+        <view class="item-content">
+            <view bindtap="handlerTap" data-index="0" url="/pages/settled/agreement/agreement?id=0" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/icon_user@2x.png"></image></view>
+                <view class="text">个人入驻</view>
+            </view>
+            <view bindtap="handlerTap" data-index="1" url="/pages/settled/agreement/agreement?id=1" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_qiye@2x.png"></image></view>
+                <view class="text">企业入驻</view>
+            </view>
+            <view bindtap="handlerTap" data-index="2" url="/pages/settled/agreement/agreement?id=2" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_cezhanren@2x.png"></image></view>
+                <view class="text">策展人入驻</view>
+            </view>
+        </view>
+    </view>
+    <view class="classify-item">
+        <view class="item-media">
+            <view class="icon icon-02"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_shuiwu@2x.png"></image></view>
+            <view class="text">税务服务</view>
+        </view>
+        <view class="item-content">
+            <navigator url="/pages/invoice/index/index" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/icon_kaipiao@2x.png"></image></view>
+                <view class="text">税务服务</view>
+            </navigator>
+            <navigator  url="/pages/invoice/myInvoice/myInvoice" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/icon_kaipiao@2x(1).png"></image></view>
+                <view class="text">服务申请记录</view>
+            </navigator>
+        </view>
+    </view>
+
+    <view class="classify-item">
+        <view class="item-media">
+            <view class="icon icon-02"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_fuwu@2x.png"></image></view>
+            <view class="text">相关服务</view>
+        </view>
+        <view class="item-content">
+            <navigator url="/pages/guanyuan/list/list" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_zhanlan@2x.png"></image></view>
+                <view class="text">展览展示服务</view>
+            </navigator>
+            <navigator  url="/pages/copyright/copyright" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/icon_banquan@2x.png"></image></view>
+                <view class="text">版权登记</view>
+            </navigator>
+            <navigator  url="/pages/guanyuan/mount/mount" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_zhuangbiao@2x.png"></image></view>
+                <view class="text">装裱服务</view>
+            </navigator>
+            <navigator  url="/pages/guanyuan/logisticsService/logisticsService" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_wuliu@2x.png"></image></view>
+                <view class="text">物流服务</view>
+            </navigator>
+        </view>
+    </view>
+
+   <!-- <view class="classify-item">
+        <view class="item-media">
+            <view class="icon icon-03"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_guanyuan@2x.png"></image></view>
+            <view class="text">观缘</view>
+        </view>
+        <view class="item-content">
+            <navigator url="/pages/guanyuan/list/list" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/icon_zhanlan@2x.png"></image></view>
+                <view class="text">展览展示服务</view>
+            </navigator>
+            <navigator url="/pages/guanyuan/list/list" class="item">
+                <view class="icon"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/icon_zhuangbiao@2x.png"></image></view>
+                <view class="text">装裱</view>
+            </navigator>
+        </view>
+    </view>
+    <view class="classify-item">
+        <view class="item-media">
+            <view class="icon icon-04"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_banquan@2x.png"></image></view>
+            <view class="text">版权登记</view>
+        </view>
+        <view class="item-content">
+            <view class="item">
+                <view class="text">了解作品版权相关信息</view>
+            </view>
+        </view>
+    </view>
+    <view class="classify-item">
+        <view class="item-media ">
+            <view class="icon icon-05"><image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/classify/ico_wuliu@2x.png"></image></view>
+            <view class="text">物流服务</view>
+        </view>
+        <view class="item-content">
+            <view class="item">
+                <view class="text">业内最可靠的艺术品物流</view>
+            </view>
+        </view>
+    </view>-->
+
+</view>
+
+<!--身份验证弹框-->
+<view wx:if="{{isShowPop}}" class="pop-box">
+    <view class="pop-inner">
+        <view>
+            <view class="pop-inner-text">
+                <view>您还未进行身份证验证</view>
+                <view>请点击下面的按钮“立即身份验证”</view>
+            </view>
+            <navigator bindtap="hidePop" url="/pages/invoice/authentication/authentication?id=-1" class="default-btn primary">立即验证</navigator>
+        </view>
+        <view bindtap="hidePop" class="pop-close"><image  class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/close.png"></image></view>
+    </view>
+</view>
+
+<view style="width:100%;height:96rpx;position:fixed;bottom:-96rpx;left:0;box-shadow:0rpx 4rpx 24rpx 0rpx rgba(121,127,158,0.15);background:#fff;z-index:999999"></view>

+ 98 - 0
pages/classify/classify.wxss

@@ -0,0 +1,98 @@
+/* pages/classify/classify.wxss */
+.page-classify{
+
+}
+.page-classify .classify-item{
+    border-bottom:1rpx solid rgba(236,238,243,1);
+    display: flex;
+    padding: 50rpx 0;
+    align-items: center;
+}
+.page-classify .classify-item:last-child{
+    border-bottom: 0;
+}
+.page-classify .classify-item:last-child .item-media{
+    min-height:280rpx;
+}
+.page-classify .classify-item .item-media{
+    position: relative;
+    min-height:176rpx;
+    background:rgba(255,255,255,1);
+    border-right:1rpx solid rgba(236,238,243,1);
+    text-align: center;
+    width: 300rpx;
+    padding-top: 20rpx;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+}
+.page-classify .classify-item .item-media::after{
+    position: absolute;
+    left: 100%;
+    top:50%;
+    margin-left: -10rpx;
+    transform: translate(0,-50%) rotate(45deg);
+    display: block;
+    width: 20rpx;
+    height: 20rpx;
+    background: #fff;
+    content: "";
+    border-top:1rpx solid rgba(236,238,243,1);
+    border-right:1rpx solid rgba(236,238,243,1);
+    z-index: 2;
+}
+.page-classify .classify-item .item-media .icon{
+    display: none;
+ /*   width: 116rpx;
+    height: 100rpx;
+    background: #f1f1f1;*/
+    margin: 0 auto;
+}
+.page-classify .classify-item .item-media .icon-01,
+.page-classify .classify-item .item-media .icon-02,
+.page-classify .classify-item .item-media .icon-04,
+.page-classify .classify-item .item-media .icon-05{
+    width: 78rpx;
+    height: 78rpx;
+}
+.page-classify .classify-item .item-media .icon-03{
+    width: 116rpx;
+    height: 56rpx;
+}
+
+
+.page-classify .classify-item .item-media .text{
+    font-size: 32rpx;
+    color: #161616;
+   /* margin-top: 20rpx;*/
+}
+.page-classify .classify-item  .item-content{
+    flex: 1;
+    padding-left: 60rpx;
+}
+.page-classify .classify-item  .item-content .item{
+    display: flex;
+    height:50rpx;
+    line-height: 50rpx;
+    margin-bottom: 30rpx;
+}
+.page-classify .classify-item  .item-content>view.item:last-child,
+.page-classify .classify-item  .item-content>navigator.item:last-child
+{
+    margin-bottom: 0;
+}
+.page-classify .classify-item  .item-content .item .icon{
+    width:50rpx;
+    height:50rpx;
+    background:rgba(235,235,235,1);
+    border-radius:25px;
+    margin-right: 30rpx;
+}
+
+.page-classify .classify-item  .item-content .item .text{
+    font-size: 24rpx;
+    color: #161616;
+}
+.page-classify .classify-item  .item-content .item.disable .text{
+    color:#D0D0D0;
+}

+ 66 - 0
pages/copyright/copyright.js

@@ -0,0 +1,66 @@
+// pages/copyright/copyright.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/copyright/copyright.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "版权登记",
+  "usingComponents": {}
+}

+ 21 - 0
pages/copyright/copyright.wxml

@@ -0,0 +1,21 @@
+<!--pages/copyright/copyright.wxml-->
+<view class="page-copyright">
+    <view class="copyright-item">
+        <view class="title">权威</view>
+        <view class="info">直接对接国家版权保护中心</view>
+    </view>
+    <view class="copyright-item">
+        <view class="title">迅捷</view>
+        <view class="info">受理发证时间7天</view>
+    </view>
+    <view class="copyright-item">
+        <view class="title">坚固</view>
+        <view class="info">区块链技术保障下的数字版权</view>
+    </view>
+    <view class="copyright-code">
+        <view class="img-wrap">
+            <image class="img-full" src="/images/copy-code-pic.png"></image>
+        </view>
+        <view class="info">扫一扫,进入版权登记</view>
+    </view>
+</view>

+ 55 - 0
pages/copyright/copyright.wxss

@@ -0,0 +1,55 @@
+/* pages/copyright/copyright.wxss */
+.page-copyright{
+
+}
+.page-copyright .copyright-item{
+    margin-bottom: 40rpx;
+}
+
+.page-copyright .copyright-item .title{
+    position: relative;
+    color: #111111;
+    font-size: 32rpx;
+    padding: 0 50rpx;
+    line-height: 90rpx;
+    font-weight:500;
+}
+
+.page-copyright .copyright-item .title::after{
+    position: absolute;
+    left: 0;
+    top:50%;
+    transform: translate(0,-50%);
+    width:4rpx;
+    height:40rpx;
+    background:rgba(22,22,22,1);
+    content: "";
+   
+}
+
+.page-copyright .copyright-item .info{
+    font-size: 24rpx;
+    color: #111111;
+    padding: 0 50rpx;
+}
+.page-copyright .copyright-code{
+   margin-top: 100rpx;
+}
+.page-copyright .copyright-code .img-wrap{
+    width:296rpx;
+    height:280rpx;
+    margin: 0 auto;
+    box-sizing: border-box;
+    padding:20rpx;
+    border:1rpx solid rgba(236,238,243,1);
+    /* border:1rpx solid rgba(236,238,243,1);
+   
+    box-sizing: border-box;
+    padding:20rpx; */
+}
+.page-copyright .copyright-code .info{
+    text-align: center;
+    font-size: 32rpx;
+    color: #111111;
+    margin-top: 30rpx;
+}

+ 66 - 0
pages/guanyuan/demonstrate/demonstrate.js

@@ -0,0 +1,66 @@
+// pages/guanyuan/demonstrate/demonstrate.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 3 - 0
pages/guanyuan/demonstrate/demonstrate.json

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

+ 26 - 0
pages/guanyuan/demonstrate/demonstrate.wxml

@@ -0,0 +1,26 @@
+<view class="demonstrate-box">
+  <view class="top">
+    <view class="subtitle">中国国际进口博览会艺术作品装裱</view>
+    <view class="time-box">
+      <image class="" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/demonstrate/clock.png" mode="widthFix" />
+      <view class="text">2018年11月5日-10日</view>
+    </view>
+    <view class="adr-box">
+      <image class="" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/demonstrate/adr.png" mode="widthFix" />
+      <view class="text">上海国家会展中心  上海市青浦区崧泽大道333号</view>
+    </view>
+  </view>
+
+  <view class="main">
+    <view class="item-title">
+      <view class="left-line"></view>
+      <view class="title">国画、版画装裱</view>
+    </view>
+    <view class="paragraph">巨幅国画《春风又绿江南岸》在中国国际进口博览会的主会场亮相,江南水乡秀景为进博会添上了精彩的一笔。这幅巨制是目前最大的青绿山水画作品之一,由上海中国画院的四位著名艺术家陈琪、江宏、车鹏飞和汪家芳在观缘文化创作而成,并由观缘团队完成装裱和安装。</view>
+    <view class="pic-box">
+      <image class="" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/demonstrate/demonstrate01.png" mode="widthFix" class="pic"/>
+      <image class="" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/demonstrate/demonstrate02.png" mode="widthFix" class="pic" />
+      <image class="" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/demonstrate/demonstrate03.png" mode="widthFix" class="pic" />
+    </view>
+  </view>
+</view>

+ 84 - 0
pages/guanyuan/demonstrate/demonstrate.wxss

@@ -0,0 +1,84 @@
+.demonstrate-box{
+  display: flex;
+  height: 100%;
+  padding:0;
+  box-sizing: border-box;
+  flex-direction: column;
+}
+.top{
+  padding:0 60rpx;
+  padding-top: 40rpx;
+}
+.top .subtitle{
+  color:#111111;
+  font-size:32rpx;
+}
+.top .time-box{
+  display: flex;
+  height: 40rpx;
+  align-items: center;
+  margin-top: 15rpx;
+}
+.top .time-box .text{
+  display: flex;
+  height: 40rpx;
+  align-items: center;
+  color:#8D8D8D;
+  font-size:24rpx;
+}
+.top .time-box image{
+  width: 26rpx;
+  height: 26rpx;
+  margin-right: 12rpx;
+}
+.top .adr-box{
+  display: flex;
+  height: 40rpx;
+  align-items: center;
+  margin-top: 10rpx;
+}
+.top .adr-box .text{
+  display: flex;
+  height: 40rpx;
+  align-items: center;
+  color:#8D8D8D;
+  font-size:24rpx;
+}
+.top .adr-box image{
+  width: 26rpx;
+  height: 26rpx;
+  margin-right: 12rpx;
+}
+.main{
+  margin-top: 52rpx;
+}
+.main .item-title{
+  position: relative;
+  font-size:28rpx;
+  color:#111111;
+  padding-left: 60rpx;
+  padding-bottom: 34rpx;
+}
+.main .item-title .left-line{
+  position: absolute;
+  left: 0;
+  top: 0;
+  width:4rpx;
+  height:40rpx;
+  background:rgba(22,22,22,1);
+}
+.main .paragraph{
+  line-height:48rpx;
+  padding:0 60rpx;
+  font-size:24rpx;
+  color:#111111;
+  padding-bottom: 20rpx;
+}
+.main .pic-box{
+  padding:0 60rpx;
+  padding-bottom: 36rpx;
+}
+.main .pic-box .pic{
+  width: 100%;
+  margin-top: 32rpx;
+}

+ 179 - 0
pages/guanyuan/exhibition/exhibition.js

@@ -0,0 +1,179 @@
+// pages/guanyuan/exhibition/exhibition.js
+const app = getApp();
+const api = app.api;
+import WxValidate from '../../../utils/WxValidate'
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    type:undefined, //留资类型 0装裱 1布展
+    formData:{
+      nickname: null, //称谓
+      phone: null, //电话
+      content: null //内容
+    },
+    rules: {
+      nickname: {
+        required: true,
+      },
+      phone: {
+        required: true,
+        tel: true,
+      }
+    },
+    messages: {
+      nickname: {
+        required: '请输入姓名',
+      },
+      phone: {
+        required: '请输入手机号',
+        tel: '请输入正确的手机号',
+      }
+    },
+    isValidate:false,
+    isSubmit:false,
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+    const { rules, messages } = this.data;
+    this.WxValidate = new WxValidate(rules, messages);
+    this.setData({
+      type:options.type
+    })
+  },
+
+  getPhoneNumber(e) {
+    console.log(e);
+    if (e.detail.errMsg !== "getPhoneNumber:ok"){
+      return;
+    }
+    const { encryptedData, iv } = e.detail;
+    app.post(api.getUserPhone, {
+      wxPhoneEncrypted: {
+        encryptedData,
+        ivStr: iv
+      }
+    }).then(res => {
+      this.setData({
+        'formData.phone': res.data.phone
+      },()=>{
+        this.validateForm()
+      })
+    });
+  },
+
+  validateForm(showInfo=false){
+    const {formData} = this.data;
+    let flag=true;
+    if (!this.WxValidate.checkForm(formData)) {
+      flag=false
+      if(showInfo===true){
+        const error = this.WxValidate.errorList[0];
+        wx.showToast({
+          title: error.msg,
+          icon: 'none',
+          duration: 2000
+        })
+      }
+    }
+    this.setData({
+      isValidate:flag
+    });
+    return flag
+  },
+
+  saveData: function (){
+    const {formData,isSubmit} = this.data;
+    // 传入表单数据,调用验证方法
+    console.info(formData)
+    //重复提交
+    if(isSubmit){
+      return;
+    }
+    let flag=this.validateForm(true);
+    if(!flag){
+      return;
+    }
+
+    formData.leaveInfoType = this.data.type;
+    this.setData({
+      isSubmit:true,
+    });
+    app.post(api.addLeaveInfo, formData).then(res => {
+      //console.log(res);
+      wx.redirectTo({
+        url:"/pages/guanyuan/success/success"
+      })
+      this.setData({
+        isSubmit:false,
+      });
+    }).catch(()=>{
+      this.setData({
+        isSubmit:false,
+      });
+    })
+  },
+  changeInput(e) {
+    console.log(e);
+    const id = e.currentTarget.id;
+    const value = e.detail.value;
+    this.setData({
+      [id]: value
+    },()=>{
+      this.validateForm()
+    });
+  },
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/guanyuan/exhibition/exhibition.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "服务申请",
+  "usingComponents": {}
+}

+ 28 - 0
pages/guanyuan/exhibition/exhibition.wxml

@@ -0,0 +1,28 @@
+<!-- pages/guanyuan/exhibition/exhibition.wxml -->
+<view>
+    <view class="container">
+        <view class="icon-edit">
+            <image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/icon-edit.png"></image>
+        </view>
+        <view class="form-box">
+            <view class="form-list">
+                <view class="form-label">姓名</view>
+                <input class="input-text" placeholder="请输入您的姓名" bindchange="changeInput" bindblur="validateForm" id="formData.nickname" value="{{formData.nickname}}" type="text" />
+            </view>
+            <view class="form-list">
+                <view class="form-label">电话</view>
+                <input class="input-text" disabled bindchange="changeInput" bindblur="validateForm" id="formData.mobile" value="{{formData.phone}}" placeholder="请输入您的电话" type="text" />
+                <button class="get-phone" bindgetphonenumber="getPhoneNumber" open-type="getPhoneNumber">获取手机号</button>
+            </view>
+            <view class="form-list">
+                <view class="form-label">备注</view>
+                <textarea class="textarea-text" bindinput="changeInput" bindblur="validateForm" id="formData.content" value="{{formData.content}}" placeholder="请输入"></textarea>
+            </view>
+        </view>
+    </view>
+    <view class="footer-btn">
+        <view class="footer-btn-content">
+            <view bindtap="saveData" class="default-btn {{isValidate?'primary':''}}">提交</view>
+        </view>
+    </view>
+</view>

+ 10 - 0
pages/guanyuan/exhibition/exhibition.wxss

@@ -0,0 +1,10 @@
+/* pages/guanyuan/exhibition/exhibition.wxss */
+.container{
+    padding: 1rpx 50rpx;
+}
+.icon-edit{
+    display: block;
+    width: 128rpx;
+    height: 128rpx;
+    margin: 60rpx auto;
+}

+ 163 - 0
pages/guanyuan/list/list.js

@@ -0,0 +1,163 @@
+// pages/guanyuan/list/list.js
+const app = getApp();
+const api = app.api;
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    activeIndex:0,
+    listData:[]
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+    let listData =
+    [
+      [
+          {
+            title: '中国国际进口博览会艺术作品装裱',
+            time: '2018年11月5日-10日',
+            banner: 'exhibition/banner_1.png',
+            href: 'https://resource.artouchstone.com/miniapp/artist/html/exhibition/msg_1.html'
+          },
+          {
+            title: '大英博物馆百物展:浓缩的世界史',
+            time: '2017年6月29日-2017年10月8日',
+            banner: 'exhibition/banner_4.png',
+            href: 'https://resource.artouchstone.com/miniapp/artist/html/exhibition/msg_4.html'
+          },
+          {
+            title: '她们·风华绝代——宋氏三姐妹特展',
+            time: '2016年4月28日-2016年7月31日',
+            banner: 'exhibition/banner_3.png',
+            href: 'https://resource.artouchstone.com/miniapp/artist/html/exhibition/msg_3.html'
+          },
+          {
+            title: '我们的时代——上海油画雕塑院建院50周年文献展',
+            time: '2015年12月28日-2016年1月26日',
+            banner: 'exhibition/banner_2.png',
+            href: 'https://resource.artouchstone.com/miniapp/artist/html/exhibition/msg_2.html'
+          }
+      ],
+      [
+        {
+          title:'陈家泠艺术大展',
+          time:'2017年9月17日-2017年10月15日',
+          banner:'exhibition_people/banner_1.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_people/msg_1.html'
+        },
+        {
+          title: '寻觅江南——陆春涛乐震文双个展',
+          time: '2019年9月3日-2019年9月18日',
+          banner: 'exhibition_people/banner_2.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_people/msg_2.html'
+        },
+        {
+          title:'精神的融洽——周碧初文献展',
+          time:'2016年7月23日-2016年8月25日',
+          banner:'exhibition_people/banner_3.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_people/msg_3.html'
+        },
+        {
+          title: '诗意地思辨——殷雄油画艺术研究展',
+          time: '2017年12月23日-2018年3月10日',
+          banner: 'exhibition_people/banner_4.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_people/msg_4.html'
+        }
+      ],
+      [
+        {
+          title:'重新定义——2019上海青年艺术博览会',
+          time:'2019年11月13日-2019年11月17日',
+          banner:'exhibition_group/banner_1.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_group/msg_1.html'
+        },
+        {
+          title:'文史翰墨——第三届中华诗书画展',
+          time:'2016年11月10日-2016年11月20日',
+          banner: 'exhibition_group/banner_2.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_group/msg_2.html'
+        },
+        {
+          title:'博物致知——首届长三角博物馆教育博览会',
+          time:'2018年5月18日-2018年5月22日',
+          banner:'exhibition_group/banner_3.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_group/msg_3.html'
+        },
+        {
+          title:'刘海粟美术馆海派绘画年度研究展',
+          time:'2019年1月19日-2019年3月17日',
+          banner: 'exhibition_group/banner_4.png',
+          href:'https://resource.artouchstone.com/miniapp/artist/html/exhibition_group/msg_4.html'
+        }
+      ]
+    ]
+    this.setData({
+      listData:listData
+    })
+  },
+  msgClick(e){
+    let data = this.data.listData[this.data.activeIndex][e.currentTarget.dataset.index]
+    wx.navigateTo({
+      url: `/pages/guanyuan/webview/webview?src=${data.href}&title=${data.title}`
+    })
+  },
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  changeTab(e){
+    this.setData({
+      activeIndex:e.currentTarget.dataset.index
+    })
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/guanyuan/list/list.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "观缘文化·展览展示服务",
+  "usingComponents": {}
+}

+ 91 - 0
pages/guanyuan/list/list.wxml

@@ -0,0 +1,91 @@
+<!--pages/guanyuan/list/list.wxml-->
+<view class="page-list">
+<!--    <view class="bread-nav">-->
+<!--        <text class="text-01">展览展示服务</text>-->
+<!--        <text class="split">/</text>-->
+<!--        <text class="text-02">装裱服务</text>-->
+<!--    </view>-->
+    <view class="tab-box">
+        <view bindtap="changeTab" data-index="0" class="item {{activeIndex==0?'active':''}}">专业场馆布展</view>
+        <view bindtap="changeTab" data-index="1" class="item {{activeIndex==1?'active':''}}">个展</view>
+        <view bindtap="changeTab" data-index="2" class="item {{activeIndex==2?'active':''}}">群展</view>
+        <view bindtap="changeTab" data-index="3" class="item {{activeIndex==3?'active':''}}">关于观缘文化</view>
+    </view>
+    <view wx:if="{{activeIndex==0}}" class="guanyuan-list">
+        <view  wx:for="{{listData[0]}}" wx:key="id">
+            <view class="item" bindtap="msgClick" data-index="{{index}}">
+                <view class="text-wrap">
+                    <view class="home"><view class="icon-home"><image class="img-full" mode="widthFix" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-home.png"></image></view></view>
+                    <view class="name">{{item.title}}</view>
+                    <view class="time"><view class="icon-time"><image class="img-full" mode="widthFix" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-time.png"></image></view>{{item.time}}</view>
+                </view>
+                <view class="img-wrap">
+                    <image mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/{{item.banner}}"></image>
+                </view>
+            </view>
+        </view>
+    </view>
+    <view wx:if="{{activeIndex==1}}" class="guanyuan-list">
+        <view  wx:for="{{listData[1]}}" wx:key="id">
+            <view class="item" bindtap="msgClick" data-index="{{index}}">
+                <view class="text-wrap">
+                    <view class="home"><view class="icon-home"><image class="img-full" mode="widthFix" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-people.png"></image></view></view>
+                    <view class="name">{{item.title}}</view>
+                    <view class="time"><view class="icon-time"><image class="img-full" mode="widthFix" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-time.png"></image></view>{{item.time}}</view>
+                </view>
+                <view class="img-wrap">
+                    <image mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/{{item.banner}}"></image>
+                </view>
+            </view>
+        </view>
+    </view>
+    <view wx:if="{{activeIndex==2}}" class="guanyuan-list">
+        <view  wx:for="{{listData[2]}}" wx:key="id">
+            <view class="item" bindtap="msgClick" data-index="{{index}}">
+                <view class="text-wrap">
+                    <view class="home"><view class="icon-home"><image class="img-full" mode="widthFix" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-picture.png"></image></view></view>
+                    <view class="name">{{item.title}}</view>
+                    <view class="time"><view class="icon-time"><image lazy-load="true" class="img-full" mode="widthFix" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-time.png"></image></view>{{item.time}}</view>
+                </view>
+                <view class="img-wrap">
+                    <image mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/{{item.banner}}"></image>
+                </view>
+            </view>
+        </view>
+    </view>
+    <view wx:if="{{activeIndex==3}}" class="guanyuan-list">
+          <view class="guanyuan-list-title">
+              <view class="title-zh">关于观缘文化</view>
+              <view class="title-eg">About GuanYuan</view>
+          </view>
+          <view class="paragraph">上海观缘文化传播有限公司成立于2006年,具有多年探索艺术与空间的交换经验,同时又将创新及优质融入于观缘最擅长的装帧装裱技术之中。而在新新时代探究艺术融入空间生活的主题下,观缘始终坚守新理念、新创意、新玩法,在完善装帧装裱行业技术的同时,又汇集多位知名艺术家,以艺术的角度,探索、开创、营造空间内容下的新变量,诠释空间中更深层的艺术与生活的特殊意义。</view>
+          <view class="paragraph">
+          观缘通过整合国内装裱行业顶尖能手、全国知名艺术家及上海青年艺术博览会等相关资源,以为原创艺术品及其文创衍生品提供专业“配套一体化”服务体系为目标,打造具有时代特色、具有艺术价值及商业价值的原创艺术品市场。</view>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/1.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/2.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/3.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/4.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/5.png"></image>
+    </view>
+    <view class="footer-tool">
+        <view class="footer-tool-content">
+            <navigator url="/pages/guanyuan/exhibition/exhibition?type=1" class="apply-btn">
+                <image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-apply.png"></image>
+                <view class="text">我要布展</view>
+            </navigator>
+<!--            <navigator url="/pages/guanyuan/exhibition/exhibition" wx:if="{{activeIndex==0}}" class="apply-btn">-->
+<!--                    <image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-apply.png"></image>-->
+<!--                    <view class="text">我要布展</view>-->
+<!--            </navigator>-->
+<!--            <navigator url="/pages/guanyuan/exhibition/exhibition" wx:if="{{activeIndex==1}}" class="apply-btn">-->
+<!--                    <image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-apply.png"></image>-->
+<!--                    <view class="text">我要布展</view>-->
+<!--            </navigator>-->
+<!--            <navigator url="/pages/guanyuan/exhibition/exhibition" wx:if="{{activeIndex==2}}" class="apply-btn">-->
+<!--                    <image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-apply.png"></image>-->
+<!--                    <view class="text">我要布展</view>-->
+<!--            </navigator>-->
+        </view>
+    </view>
+
+</view>

+ 165 - 0
pages/guanyuan/list/list.wxss

@@ -0,0 +1,165 @@
+/* pages/guanyuan/list/list.wxss */
+.bread-nav{
+    border-bottom: 1rpx solid #ECEEF3;
+    color: #161616;
+    font-size: 32rpx;
+    height: 100rpx;
+    line-height: 100rpx;
+    padding: 0 50rpx;
+}
+.bread-nav .split{
+     color: #8D8D8D;
+     padding: 0 30rpx;
+}
+.bread-nav .text-02{
+    color: #8D8D8D;
+}
+
+.tab-box{
+    padding: 10rpx 50rpx;
+    margin-bottom: 10rpx;
+    display: flex;
+
+}
+
+.tab-box .item{
+    position: relative;
+    color: #8D8D8D;
+    font-size: 24rpx;
+    height: 60rpx;
+    line-height: 60rpx;
+    padding: 0 15rpx;
+    margin-right: 10rpx;
+}
+
+.tab-box .item.active{
+    color: #161616;
+}
+.tab-box .item.active::after{
+    position: absolute;
+    bottom: 0;
+    left: 15rpx;
+    display: block;
+    content:"";
+    width:50rpx;
+    height:4rpx;
+    background:rgba(29,182,150,1);
+}
+
+.guanyuan-list{
+    padding: 0 50rpx;
+}
+
+.guanyuan-list .item{
+    background:rgba(255,255,255,1);
+    box-shadow:0px 6rpx 26rpx 0px rgba(62,65,74,0.08);
+    border-radius:8rpx;
+    margin-bottom: 50rpx;
+}
+
+.guanyuan-list .item .text-wrap{
+    padding:70rpx 50rpx 50rpx 50rpx
+}
+
+.guanyuan-list .item .icon-home{
+    width: 32rpx;
+    height: 32rpx;
+}
+.guanyuan-list .item .icon-gy{
+    width: 32rpx;
+    height: 42rpx;
+}
+.guanyuan-list .item .name{
+    color: #111111;
+    font-size: 28rpx;
+    line-height: 1.6;
+    padding: 16rpx 0;
+}
+.guanyuan-list .item .time{
+    color: #8D8D8D;
+    font-size: 24rpx;
+}
+.guanyuan-list .item .time .icon-time{
+    display: inline-block;
+    vertical-align: middle;
+    width: 24rpx;
+    height: 24rpx;
+    margin-right: 10rpx;
+}
+.guanyuan-list .item .img-wrap{
+
+}
+.guanyuan-list .item .img-wrap>image{
+    display: block;
+    width: 100%;
+}
+.footer-tool{
+    height:116rpx;
+}
+.footer-tool .footer-tool-content{
+    position: fixed;
+    width: 100%;
+    left: 50%;
+    transform: translate(-50%,0);
+    bottom:0;
+    height:116rpx;
+    background:rgba(255,255,255,1);
+    box-shadow:0px -6rpx 18rpx 0px rgba(127,129,138,0.15);
+}
+
+.apply-btn{
+    position: fixed;
+    left: 50%;
+    transform: translate(-50%,0);
+    bottom:20rpx;
+    z-index: 10;
+    width: 128rpx;
+    height: 152rpx;
+    display: block;
+}
+.apply-btn>image{
+    position: relative;
+    z-index: 1;
+}
+.apply-btn .text{
+    position: absolute;
+    color: #161616;
+    font-size: 28rpx;
+    z-index: 2;
+    bottom: 0;
+    width: 100%;
+    text-align: center;
+}
+
+.guanyuan-list .paragraph{
+    margin-top: 10rpx;
+    line-height:48rpx;
+    font-size:24rpx;
+    color:#111111;
+    padding-bottom: 20rpx;
+  }
+
+.guanyuan-list .about-img{
+    margin-bottom: 32rpx;
+}
+
+.guanyuan-list .guanyuan-list-title{
+    text-align: center;
+    padding: 30rpx 0;
+}
+.guanyuan-list .guanyuan-list-title .title-zh{
+    height:40rpx;
+    font-size:32rpx;
+    font-family:PingFangSC-Medium,PingFang SC;
+    font-weight:500;
+    color:rgba(17,17,17,1);
+    line-height:40rpx;
+}
+.guanyuan-list .guanyuan-list-title .title-eg{
+    height:34rpx;
+    font-size:24rpx;
+    font-family:PingFangSC-Ultralight,PingFang SC;
+    font-weight:200;
+    color:rgba(22,22,22,1);
+    line-height:34rpx;
+}

+ 66 - 0
pages/guanyuan/logisticsService/logisticsService.js

@@ -0,0 +1,66 @@
+// pages/guanyuan/logisticsService/logisticsService.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/guanyuan/logisticsService/logisticsService.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "物流服务",
+  "usingComponents": {}
+}

+ 8 - 0
pages/guanyuan/logisticsService/logisticsService.wxml

@@ -0,0 +1,8 @@
+<view>
+    <view class="logistics-title">特锐艺术,放心到家!</view>
+    <view class="img-wrap">
+        <image mode="widthFix"  src="https://resource.artouchstone.com/miniapp/artist/images/wuliu-pic-01.png"></image>
+        <image mode="widthFix"  src="https://resource.artouchstone.com/miniapp/artist/images/wuliu-pic-02.png"></image>
+        <image mode="widthFix"  src="https://resource.artouchstone.com/miniapp/artist/images/wuliu-pic-03.png"></image>
+    </view>
+</view>

+ 13 - 0
pages/guanyuan/logisticsService/logisticsService.wxss

@@ -0,0 +1,13 @@
+/* pages/guanyuan/logisticsService/logisticsService.wxss */
+.logistics-title{
+    padding: 30rpx 60rpx;
+    color: #111111;
+    font-size: 32rpx;
+    font-weight: bold;
+}
+.img-wrap{
+
+}
+.img-wrap>image{
+    width: 100%;
+}

+ 74 - 0
pages/guanyuan/mount/mount.js

@@ -0,0 +1,74 @@
+// pages/guanyuan/list/list.js
+const app = getApp();
+const api = app.api;
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    activeIndex:0
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  changeTab(e){
+    this.setData({
+      activeIndex:e.currentTarget.dataset.index
+    })
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/guanyuan/mount/mount.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "观缘文化·装裱服务",
+  "usingComponents": {}
+}

+ 103 - 0
pages/guanyuan/mount/mount.wxml

@@ -0,0 +1,103 @@
+<!--pages/guanyuan/list/list.wxml-->
+<view class="page-list">
+  <!-- <view class="bread-nav">
+      <text class="text-01">展览展示服务</text>
+      <text class="split">/</text>
+      <text class="text-02">装裱服务</text>
+  </view> -->
+  <view class="tab-box">
+      <view bindtap="changeTab" data-index="0" class="item {{activeIndex==0?'active':''}}">装裱技术</view>
+      <view bindtap="changeTab" data-index="1" class="item {{activeIndex==1?'active':''}}">装裱说明</view>
+      <view bindtap="changeTab" data-index="2" class="item {{activeIndex==2?'active':''}}">关于观缘文化</view>
+  </view>
+  <view wx:if="{{activeIndex==0}}" class="mount-list">
+    <view class="top">
+      <view class="sign sign-left">“</view>
+      <view class="top-content">知名作家刘墉对中国的装裱技艺曾说过:“裱画就像看病,庸医会医死人,坏的裱工会毁了画;人死不能复生,画坏也难以挽救。</view>
+      <view class="sign sign-right">”</view>
+    </view>
+    <view class="item">
+      <view class="item-title">
+        <view class="left-line"></view>
+        <view class="title">国画装裱发展历程</view>
+      </view>
+      <view class="paragraph">
+        国画的创作完成之后,折皱不平,未经托裱,不能坚挺,不易久放。国画传统装裱工艺是在书画背面裱褙,尔后逐渐加以美化,四周镶薄型的绫绢丝织品为外缘装饰,再加上天地轴头以家中悬挂或平置。随着书画装裱艺术的发展,人们渐渐不满足书画较单一的装裱形式,而寻求更多样化装裱方式。
+      </view>
+      <view class="paragraph">
+        观缘文化于公司,成立起便一直在探索装裱的艺术, 装裱师开始考虑是否可以在原有加装框条和镜片的情况下对装裱的衬边做一些改动,使装裱完成后的画作更具立体感,更突出画作。于是公司开始使用厚卡纸、细木条等作为镶边,这样的“凹”设计,既使画作与镶边不处于同一高度而又低于镶边,同时又提高了画作的观赏度。为了让画作装裱更具美感更有个性,观缘文化甚至不惜成本开发定制了一下原材料和配件,用细框条进行卡边和对画心抬起,由“凹”设计转变为“凹凸”设计,这样的巧思是对国画整体欣赏的一个变革性改进,也大大提高了除去画作的部分美观程度,同时又可配合画心风格做一个更好的修饰部分。最后,一部分藏家开始询问,是否可以保留天地轴的原始的中式韵味而又将整幅画作进行装裱,观缘经过尝试和研究,开发出透明亚克力板的卡条设计,将画作整体进行固定及画面抬高,这样既可以完整保存整幅画作又保留了传统中式感觉,又不是画心收到人为或环境因素的破坏。慢慢观缘对国画的装裱技术接近成熟。
+      </view>
+      <view class="style">样式:画框+镜片、卡纸镶边+画框+镜片、单立体装裱、双立体装裱。</view>
+    </view>
+    <view class="item">
+      <view class="item-title">
+        <view class="left-line"></view>
+        <view class="title">油画装裱发展历程</view>
+      </view>
+      <view class="paragraph">
+        最初的油画基本没有装裱之说,只是简单的将油画布绷在木条之上使其平整即可。随着时代变迁和“艺术走进生活”的号召,越来越多的人将油画作挂于墙上供人们观赏而不只是藏于库房之中,而观缘也依照家装公司的要求开始开发油画装裱。油画是无需镜片保护的,加装镜片的油画反光会失去笔触走向及人物绘制的感觉,所以最初油画只需装框。配以不同的风格及画面内容,画框的风格及样式也不尽相同。而后又为了更好的表达和贴合油画内容,观缘有开发出了叠框。这样根据油画颜色丰富的多样性层层套框,辅以油画完整的韵味及观赏度。
+      </view>
+      <view class="style">样式:单框装裱、叠框装裱、不规则装裱。</view>
+    </view>
+    <view class="item">
+      <view class="item-title">
+        <view class="left-line"></view>
+        <view class="title">版画</view>
+      </view>
+      <view class="paragraph">
+        因版画形式的多样,观缘基本保留毛边的同时对画心进行加高处理,竟可能的处理好版画的原始面貌及韵味又辅助版画更具观赏价值及收藏价值。
+      </view>
+      <view class="style">样式:单框装裱、叠框装裱、不规则装裱。</view>
+    </view>
+  </view>
+  <view wx:if="{{activeIndex==1}}" class="mount-list">
+    <div class="top top2">
+      <view class="top-content">装裱亦称“装潢”、“装池”、“裱背”,是我国特有的一种美化和保护书画及碑贴的技术。装裱也一是门艺术。俗话说,三分画七分裱,可见装裱之重要。书画作成一经装裱、便觉神采墨妙而成为完整的作品使人感到赏心悦月。一幅美观、完整且观赏度高的画作,如要使其视觉效果更佳,及便于保存、流传和收藏,是离不开装裱的。为了保障作品的展示、保存、收藏的功能,观缘内所有的书法字画均采用纯手工装裱工艺。</view>
+    </div>
+    <view class="item">
+      <view class="item-title">
+        <view class="left-line"></view>
+        <view class="title">国画、版画装裱</view>
+      </view>
+      <view class="paragraph">
+        国画装裱的方法是先用纸托裱在画心的背后,再用美观且适配的绫、绢、纸为画作镶边,然后为其配置轴杆或版面安装。最后需要根据作品内容和意境选取合适样式的画框及装裱材质,最终画作成品按形制可分为卷、轴、册页和片。而版画装裱与国画装裱最大的不同仅仅在于,因版画画心材质与国画不同,所以无需托裱,其余步骤一致。
+      </view>
+    </view>
+    <view class="item">
+      <view class="item-title">
+        <view class="left-line"></view>
+        <view class="title">油画装裱</view>
+      </view>
+      <view class="paragraph">
+        第一步需等油画作品的颜料干燥,第二步则为装外框。需要注意的是:画油画构图时应该考虑外框会压住画面边缘处的画作,因此物体的边缘要离外框五毫米以上。如果画框,画面够大,达到:60厘米×70厘米的比例。即可按照一般构图,不需要留5毫米大小的空间。人物肖像,静物写生也不需要考虑此项,然后根据画面主题颜色、风格来决定外框的条纹,形状,风格和颜色。“3分画,7分裱”。这样较为严格的步骤,是为了给予油画作品完整感,锦上添花。所以外框与画作需要风格统一,颜色契合。比如:古典绘画搭配金色的流金的复杂点花纹的看起来更高贵的外框,现代绘画,抽象风格的油画搭配形式简洁些的外框。
+      </view>
+    </view>
+  </view>
+  <view wx:if="{{activeIndex==2}}" class="mount-list">
+        <view class="mount-list-title">
+          <view class="title-zh">关于观缘文化</view>
+          <view class="title-eg">About GuanYuan</view>
+        </view>
+        <view class="paragraph">上海观缘文化传播有限公司成立于2006年,具有多年探索艺术与空间的交换经验,同时又将创新及优质融入于观缘最擅长的装帧装裱技术之中。而在新新时代探究艺术融入空间生活的主题下,观缘始终坚守新理念、新创意、新玩法,在完善装帧装裱行业技术的同时,又汇集多位知名艺术家,以艺术的角度,探索、开创、营造空间内容下的新变量,诠释空间中更深层的艺术与生活的特殊意义。</view>
+        <view class="paragraph">
+        观缘通过整合国内装裱行业顶尖能手、全国知名艺术家及上海青年艺术博览会等相关资源,以为原创艺术品及其文创衍生品提供专业“配套一体化”服务体系为目标,打造具有时代特色、具有艺术价值及商业价值的原创艺术品市场。</view>
+        <view class="about">
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/1.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/2.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/3.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/4.png"></image>
+          <image class="img-full about-img" mode="widthFix" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/about/5.png"></image>
+        </view>
+  </view>
+  <view class="footer-tool">
+    <view class="footer-tool-content">
+      <navigator url="/pages/guanyuan/exhibition/exhibition?type=0" class="apply-btn">
+        <image class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/guanyuan/list/icon-apply.png"></image>
+        <view class="text">我要装裱</view>
+      </navigator>
+    </view>
+  </view>
+
+
+</view>
+

+ 177 - 0
pages/guanyuan/mount/mount.wxss

@@ -0,0 +1,177 @@
+/* pages/guanyuan/list/list.wxss */
+.bread-nav{
+  border-bottom: 1rpx solid #ECEEF3;
+  color: #161616;
+  font-size: 32rpx;
+  height: 100rpx;
+  line-height: 100rpx;
+  padding: 0 50rpx;
+}
+.bread-nav .split{
+   color: #8D8D8D;
+   padding: 0 30rpx;
+}
+.bread-nav .text-02{
+  color: #8D8D8D;
+}
+
+.tab-box{
+  padding: 10rpx 50rpx;
+  margin-bottom: 10rpx;
+  display: flex;
+
+}
+
+.tab-box .item{
+  position: relative;
+  color: #8D8D8D;
+  font-size: 24rpx;
+  height: 60rpx;
+  line-height: 60rpx;
+  padding: 0 15rpx;
+  margin-right: 10rpx;
+}
+
+.tab-box .item.active{
+  color: #161616;
+}
+.tab-box .item.active::after{
+  position: absolute;
+  bottom: 0;
+  left: 15rpx;
+  display: block;
+  content:"";
+  width:50rpx;
+  height:4rpx;
+  background:rgba(29,182,150,1);
+}
+
+.mount-list{
+  padding: 0;
+  padding-bottom: 284rpx;
+}
+.mount-list .top{
+  padding:0 34rpx;
+  font-size:24rpx;
+  color:#161616;
+  margin-top: 28rpx;
+}
+.mount-list .top2{
+  padding:0 60rpx;
+  margin-top: 86rpx;
+}
+.mount-list .top-content{
+  padding: 0 26rpx;
+}
+.mount-list .top2 .top-content{
+  padding: 0 60rpx;
+}
+.mount-list .top .sign{
+  font-size:60rpx;
+}
+.mount-list .top .sign-right{
+  text-align: right;
+}
+.mount-list .item{
+  margin-top: 40rpx;
+}
+.mount-list .item-title{
+  position: relative;
+  font-size:28rpx;
+  color:#111111;
+  padding-left: 60rpx;
+  padding-bottom: 34rpx;
+}
+.mount-list .item-title .left-line{
+  position: absolute;
+  left: 0;
+  top: 0;
+  width:4rpx;
+  height:40rpx;
+  background:rgba(22,22,22,1);
+}
+.mount-list .paragraph{
+  line-height:48rpx;
+  padding:0 60rpx;
+  font-size:24rpx;
+  color:#111111;
+}
+.mount-list .style{
+  line-height:48rpx;
+  padding:0 60rpx;
+  font-size:24rpx;
+  font-weight:560;
+  color:#111111;
+}
+.mount-list .mount-list-title{
+    text-align: center;
+    padding: 30rpx 0;
+}
+.mount-list .mount-list-title .title-zh{
+    height:40rpx;
+    font-size:32rpx;
+    font-family:PingFangSC-Medium,PingFang SC;
+    font-weight:500;
+    color:rgba(17,17,17,1);
+    line-height:40rpx;
+}
+.mount-list .mount-list-title .title-eg{
+    height:34rpx;
+    font-size:24rpx;
+    font-family:PingFangSC-Ultralight,PingFang SC;
+    font-weight:200;
+    color:rgba(22,22,22,1);
+    line-height:34rpx;
+}
+
+.footer-tool{
+    height:116rpx;
+}
+.footer-tool .footer-tool-content{
+    position: fixed;
+    width: 100%;
+    left: 50%;
+    transform: translate(-50%,0);
+    bottom:0;
+    height:116rpx;
+    background:rgba(255,255,255,1);
+    box-shadow:0px -6rpx 18rpx 0px rgba(127,129,138,0.15);
+}
+
+.apply-btn{
+    position: fixed;
+    left: 50%;
+    transform: translate(-50%,0);
+    bottom:20rpx;
+    z-index: 10;
+    width: 128rpx;
+    height: 152rpx;
+    display: block;
+}
+.apply-btn>image{
+    position: relative;
+    z-index: 1;
+}
+.apply-btn .text{
+    position: absolute;
+    color: #161616;
+    font-size: 28rpx;
+    z-index: 2;
+    bottom: 0;
+    width: 100%;
+    text-align: center;
+}
+.mount-list .about{
+  padding: 0 60rpx;
+}
+.mount-list .paragraph{
+  margin-top: 10rpx;
+  line-height:48rpx;
+  font-size:24rpx;
+  color:#111111;
+  padding-bottom: 20rpx;
+}
+
+.mount-list .about-img{
+  margin-bottom: 32rpx;
+}

+ 68 - 0
pages/guanyuan/success/success.js

@@ -0,0 +1,68 @@
+// pages/user/success/success.js
+const app = getApp();
+const api = app.api;
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide: function () {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload: function () {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh: function () {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom: function () {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage: function () {
+
+  }
+})

+ 4 - 0
pages/guanyuan/success/success.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "我要布展",
+  "usingComponents": {}
+}

+ 12 - 0
pages/guanyuan/success/success.wxml

@@ -0,0 +1,12 @@
+<view class="page-success">
+    <view class="success-icon">
+        <image class="" src="/images/icon-time-grey.png" mode="widthFix"/>
+    </view>
+    <view class="tip1">提交成功</view>
+    <view class="tip2">
+        <view>工作人员会在3~4天内给予答复</view>
+        <view>您或可以致电我们:021-12345678</view>
+    </view>
+    <navigator open-type="navigateBack" class="btn2">返回</navigator>
+</view>
+

+ 52 - 0
pages/guanyuan/success/success.wxss

@@ -0,0 +1,52 @@
+.page-success{
+  display: flex;
+  height: 100%;
+  padding:0;
+  box-sizing: border-box;
+  flex-direction: column;
+}
+.page-success .success-icon{
+    width:132rpx;
+    height:132rpx;
+    margin:0 auto;
+    margin-top:158rpx;
+}
+.page-success .success-icon image{
+    width:100%;
+}
+.page-success .tip1{
+    font-size:48rpx;
+    color:#161616;
+    text-align:center;
+    margin-top:74rpx;
+}
+.page-success .tip2{
+    font-size:28rpx;
+    color:rgba(22,22,22,1);
+    text-align:center;
+    width: 70%;
+    margin: 12px auto 40rpx auto;
+}
+.page-success .btn1{
+    width:420rpx;
+    line-height:90rpx;
+    background:rgba(255,255,255,1);
+    border:2rpx solid #161616;
+    color:rgba(22,22,22,1);
+    text-align:center;
+    margin:0 auto;
+    margin-top:74rpx;
+    font-size:32rpx;
+}
+.page-success .btn2{
+    width:420rpx;
+    height:90rpx;
+    line-height:90rpx;
+    background:rgba(255,255,255,1);
+    border:2rpx solid rgba(22,22,22,1);
+    color:#161616;
+    text-align:center;
+    margin:0 auto;
+    font-size:32rpx;
+    margin-top:30rpx;
+}

+ 81 - 0
pages/guanyuan/webview/webview.js

@@ -0,0 +1,81 @@
+
+const app = getApp();
+const api = app.api;
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+        id:"",
+        src:""
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: function (options) {
+        if (options.id){
+            this.setData({
+                id: options.id
+            });
+        }
+        if (options.src){
+            this.setData({
+                src: options.src
+            });
+        }
+        if (options.title){
+            wx.setNavigationBarTitle({
+                title: options.title
+            })
+        }
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () {
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 5 - 0
pages/guanyuan/webview/webview.json

@@ -0,0 +1,5 @@
+{
+  "usingComponents": {},
+  "enablePullDownRefresh": false,
+  "disableScroll": true
+}

+ 1 - 0
pages/guanyuan/webview/webview.wxml

@@ -0,0 +1 @@
+<web-view  src="{{src}}" wx:if="{{src}}"></web-view>

+ 0 - 0
pages/guanyuan/webview/webview.wxss


+ 178 - 0
pages/index/index.js

@@ -0,0 +1,178 @@
+//index.js
+//获取应用实例
+const app = getApp();
+const api = app.api;
+
+Page({
+  data: {
+    motto: 'Hello World',
+    isShowPop: false,
+    userInfo: {},
+    hasUserInfo: false,
+    settleInfo: undefined,
+    bannerList: undefined,
+    canIUse: wx.canIUse('button.open-type.getUserInfo'),
+    banner: ['https://resource.artouchstone.com/miniapp/artist/images/index/banner.png', 'https://resource.artouchstone.com/miniapp/artist/images/index/banner.png','https://resource.artouchstone.com/miniapp/artist/images/index/banner.png'],
+    bannerIndex: 0,
+    swiper:{
+      indicatorDots: false,
+      vertical: false,
+      autoplay: true,
+      interval: 5000,
+      duration: 500
+    }
+  },
+
+  //事件处理函数
+  bindViewTap: function() {
+    wx.navigateTo({
+      url: '../logs/logs'
+    })
+  },
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+
+  },
+  getData(opt) {
+    this.getUserSettleInfo();
+    this.getBanner();
+    if(opt){
+      opt()
+    }
+  },
+  getUserSettleInfo(opt){
+    app.post(api.getUserSettleInfo,{},{
+      needToken:false
+    }).then(res => {
+      console.log(res);
+      this.setData({
+        settleInfo: res.data
+      })
+      if(opt){
+        opt()
+      }
+      
+    })
+  },
+  getBanner(){
+    app.post(api.getBanner,{code:'banner'},{ needToken:false}).then(res => {
+      console.log(res);
+      this.setData({
+        bannerList: res.data
+      })
+    })
+  },
+  onShareAppMessage(){
+  },
+  currentHandle(e) {
+    let {
+      current
+    } = e.detail
+    this.setData({
+      bannerIndex:current
+    })
+  },
+  onLoad: function () {
+    if (app.globalData.userInfo) {
+      this.setData({
+        userInfo: app.globalData.userInfo,
+        hasUserInfo: true
+      })
+    } else if (this.data.canIUse){
+      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
+      // 所以此处加入 callback 以防止这种情况
+      app.userInfoReadyCallback = res => {
+        this.setData({
+          userInfo: res.userInfo,
+          hasUserInfo: true
+        })
+      }
+    } else {
+      // 在没有 open-type=getUserInfo 版本的兼容处理
+      wx.getUserInfo({
+        success: res => {
+          app.globalData.userInfo = res.userInfo
+          this.setData({
+            userInfo: res.userInfo,
+            hasUserInfo: true
+          })
+        }
+      })
+    }
+    this.getData()
+  },
+  getUserInfo: function(e) {
+    // console.log(e)
+    app.globalData.userInfo = e.detail.userInfo
+    this.setData({
+      userInfo: e.detail.userInfo,
+      hasUserInfo: true
+    })
+  },
+  onSwiperTap: function(e){
+    let index = e.target.dataset.index;
+    wx.navigateTo({
+      url: this.data.bannerList[index].redirectUrl
+    })
+  },
+  enterMall: function () {
+    const that = this;
+    this.getUserSettleInfo(function(){
+      const settleInfo = that.data.settleInfo;
+      if(settleInfo.isVerification==0){
+        that.showPop()
+      }else if(settleInfo.artistCaStatus && settleInfo.artistCaStatus === 2){
+        //艺术家认证通过
+        wx.navigateTo({
+          url: '/pages/user/artUpload/artUpload'
+        })
+      }else if(settleInfo.curatorCaStatus && settleInfo.curatorCaStatus === 1){
+        //策展人认证中
+        wx.navigateTo({
+          url: '/pages/settled/success/success'
+        })
+      }else if(settleInfo.curatorCaStatus && settleInfo.curatorCaStatus === 2){
+        //策展人认证通过
+        wx.navigateTo({
+          // url: '/pages/user/artUpload/artUpload'
+          url: '/pages/settled/contacts/contacts'
+        })
+      }else if(settleInfo.companyCaStatus && settleInfo.companyCaStatus == 1){
+        //公司入驻审核中
+        wx.navigateTo({
+          url: '/pages/settled/success/success'
+        })
+      }else if(settleInfo.companyCaStatus && settleInfo.companyCaStatus == 2){
+        //公司入驻审核通过
+        wx.navigateTo({
+          url: '/pages/settled/contacts/contacts'
+        })
+      }else{
+        wx.navigateTo({
+          url: '/pages/settled/index/index'
+        })
+      }
+    });
+  },
+  showPop(){
+    this.setData({
+      isShowPop:true
+    });
+  },
+  hidePop(){
+    this.setData({
+      isShowPop:false
+    });
+  },
+
+  /**
+   * 邀请参展
+   */
+  invitation: function() {
+    wx.navigateTo({
+      url: '/pages/invitation/index/index',
+    })
+  }
+})

+ 4 - 0
pages/index/index.json

@@ -0,0 +1,4 @@
+{
+  "navigationBarTitleText": "艺术家服务一体化平台",
+  "usingComponents": {}
+}

+ 163 - 0
pages/index/index.wxml

@@ -0,0 +1,163 @@
+<!-- index.wxml -->
+<view class="page-index">
+    <view class="index-slider">
+        <swiper class="swiper-box" indicator-dots="{{swiper.indicatorDots}}"
+                indicator-color="rgba(255,255,255,.21)"
+                indicator-active-color="#1CB796"
+                catchtap="onSwiperTap"
+                bindchange="currentHandle"
+                autoplay="{{swiper.autoplay}}" interval="{{swiper.interval}}" duration="{{swiper.duration}}">
+            <block wx:for="{{bannerList}}" wx:key="id">
+                <swiper-item>
+                    <view class="swiper-item">
+                        <image lazy-load="true" class="img-full" mode="aspectFill" src="{{item.picInfo.url}}" data-index="{{index}}"></image>
+                    </view>
+                </swiper-item>
+            </block>
+        </swiper>
+        <view class="index-slider-doc">
+            <view wx:for="{{bannerList}}" wx:key="id" class="item-doc {{bannerIndex==index?'active':''}}"></view>
+        </view>
+    </view>
+    <!--销售服务-->
+    <view>
+         <view class="index-title">
+            <view class="title">销售服务</view>
+            <view class="sub-title">Sales Service</view>
+        </view>
+        <view class="exhibition-list">
+            <view>
+                <view bindtap="enterMall" class="item-bg">
+                    <image class="img-bg" src="../../images/pic_shangcheng.png"></image>
+                    <view class="item-icon">
+                         <image class="icon-01" src="../../images/ico_shangcheng.png"></image>
+                    </view>
+                    <view class="item-content">
+                        <view class="name">入驻商城</view>
+                        <view class="text">机构/个人入驻发布作品</view>
+                    </view>
+                </view>
+            </view>
+             <view>
+                <navigator url="/pages/invoice/index/index" class="item-bg">
+                    <image class="img-bg" src="../../images/pic_shuiwu.png"></image>
+                    <view class="item-icon">
+                         <image class="icon-02" src="../../images/ico_shuiwu.png"></image>
+                    </view>
+                    <view class="item-content">
+                        <view class="name">税务服务</view>
+                        <view class="text">艺术税务办理咨询</view>
+                    </view>
+                </navigator>
+            </view>
+        </view>
+    </view>
+
+    <!--展览服务-->
+    <view>
+         <view class="index-title">
+            <view class="title">展览服务</view>
+            <view class="sub-title">Exhibition Service</view>
+        </view>
+        <view class="exhibition-list">
+            <view>
+                <view class="item">
+                    <view class="item-icon icon-01">
+                         <image class="img-full" src="../../images/ico_baoming.png"></image>
+                    </view>
+                    <!-- <navigator class="item-content" url="/pages/guanyuan/webview/webview?src=https://www.shyaf.com/signup/">
+                        <view class="name">报名系统</view>
+                        <view class="text">敬请期待</view>
+                    </navigator> -->
+                    <view class="item-content">
+                        <view class="name">报名系统</view>
+                        <view class="text">敬请期待</view>
+                    </view>
+                    <!-- <view class="item-content" bindtap="invitation">
+                        <view class="name">邀请</view>
+                        <view class="text">邀请参展信息登记入口</view>
+                    </view> -->
+                </view>
+            </view>
+             <view>
+                <view class="item">
+                    <view class="item-icon icon-02">
+                         <image class="img-full" src="../../images/ico_xianxia.png"></image>
+                    </view>
+                    <navigator url="/pages/guanyuan/webview/webview?src=https://mp.weixin.qq.com/s/zqKaysqajGCSUrlNIAwrng" class="item-content">
+                        <view class="name">线下展览</view>
+                        <view class="text">展览展讯发布</view>
+                    </navigator>
+                </view>
+            </view>
+        </view>
+    </view>
+
+    <!--相关服务-->
+    <view>
+        <view class="index-title">
+            <view class="title">相关服务</view>
+            <view class="sub-title">Related Service</view>
+        </view>
+        <view class="serve-list-box">
+            <navigator url="/pages/guanyuan/list/list" class="serve-list">
+                <view class="item-media">
+                    <image class="img-full" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/index/ico_zhanlan.png"></image>
+                </view>
+                <view class="item-content">
+                    <view class="name">展览展示服务</view>
+                    <view class="text">满足各类艺术展布展需求</view>
+                </view>
+            </navigator>
+            <navigator url="/pages/guanyuan/webview/webview?src=https://resource.artouchstone.com/miniapp/artist/html/copyright.html&title=版权登记" class="serve-list">
+                <view class="item-media">
+                    <image class="img-full" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/index/ico_banquan.png"></image>
+                </view>
+                <view class="item-content">
+                    <view class="name">版权登记</view>
+                    <view class="text">区块链技术数字版权登记</view>
+                </view>
+            </navigator>
+            <navigator url="/pages/guanyuan/mount/mount" class="serve-list">
+                <view class="item-media">
+                    <image class="img-full" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/index/ico_zhuangbiao.png"></image>
+                </view>
+                <view class="item-content">
+                    <view class="name">装裱服务</view>
+                    <view class="text">高品质的艺术品装裱</view>
+                </view>
+            </navigator>
+            <navigator url="/pages/guanyuan/logisticsService/logisticsService" class="serve-list">
+                <view class="item-media">
+                    <image class="img-full" lazy-load="true" src="https://resource.artouchstone.com/miniapp/artist/images/index/ico_wuliu.png"></image>
+                </view>
+                <view class="item-content">
+                    <view class="name">物流服务</view>
+                    <view class="text">针对艺术品的专业物流</view>
+                </view>
+            </navigator>
+        </view>
+    </view>
+
+    <view class="footer-box">
+        <view class="footer-logo"><image class="img-full" src="/images/footer-logo.png"></image></view>
+        <navigator hover-class="none" url="/pages/agreement/agreement" class="link-a">免责声明</navigator>
+    </view>
+
+    <button plain="true" open-type='contact' session-from='' class="fixed-zx"></button>
+
+</view>
+<!--身份验证弹框-->
+<view wx:if="{{isShowPop}}" class="pop-box">
+    <view class="pop-inner">
+        <view>
+            <view class="pop-inner-text">
+                <view>您还未进行身份证验证</view>
+                <view>请点击下面的按钮“立即身份验证”</view>
+            </view>
+            <navigator bindtap="hidePop" url="/pages/invoice/authentication/authentication?id=-1" class="default-btn primary">立即验证</navigator>
+        </view>
+        <view bindtap="hidePop" class="pop-close"><image  class="img-full" src="https://resource.artouchstone.com/miniapp/artist/images/close.png"></image></view>
+    </view>
+</view>
+<view style="width:100%;height:96rpx;position:fixed;bottom:-96rpx;left:0;box-shadow:0rpx 4rpx 24rpx 0rpx rgba(121,127,158,0.15);background:#fff;z-index:999999"></view>

+ 216 - 0
pages/index/index.wxss

@@ -0,0 +1,216 @@
+page{
+  overflow-x: hidden;
+}
+/**index.wxss**/
+.page-index{
+  overflow-x: hidden;
+}
+.index-slider{
+  position: relative;
+  height: 530rpx;
+}
+.index-slider .swiper-box{
+  position: relative;
+  height: 530rpx;
+}
+.index-slider .swiper-box .swiper-item{
+  height: 530rpx;
+}
+
+.index-slider  .index-slider-doc{
+  position: absolute;
+  z-index:2;
+  bottom: 30rpx;
+  left: 50%;
+  transform: translate(-50%,0);
+  white-space: nowrap;
+}
+.index-slider  .index-slider-doc .item-doc{
+  display: inline-block;
+   margin: 0 12rpx;
+   width: 56rpx;
+   height: 6rpx;
+   /* background: red; */
+   background: rgba(255,255,255,.2);
+}
+.index-slider  .index-slider-doc .item-doc.active{
+  background:#61CDB6;
+}
+
+.index-title{
+  text-align: center;
+  padding: 50rpx 0;
+}
+
+.index-title .title{
+  font-size:36rpx;
+  font-family:Noto Sans S Chinese;
+  color:rgba(22,22,22,1);
+  line-height:44rpx
+}
+
+.index-title .sub-title{
+  font-size:22rpx;
+  font-family:DengXian;
+  color:rgba(22,22,22,1);
+  line-height:44rpx
+}
+
+.exhibition-list{
+  display: flex;
+  padding:0 30rpx;
+}
+.exhibition-list>view{
+  flex: 1;
+  overflow: hidden;
+}
+
+.exhibition-list .item-bg{
+  position: relative;
+  height: 220rpx;
+  background: rgba(1,1,1,.5);
+  margin: 0 15rpx;
+}
+.exhibition-list .item-bg .img-bg{
+  position: absolute;
+  display: block;
+  width: 100%;
+  height: 100%;
+  z-index: 0;
+}
+
+.exhibition-list .item-bg .item-icon{
+  position: relative;
+  height: 63rpx;
+  padding-top: 40rpx;
+  margin-bottom: 20rpx;
+  z-index: 2;
+}
+.exhibition-list .item-bg .item-icon>image{
+  display: block;
+  margin: 0 auto;
+}
+
+.exhibition-list .item-bg .icon-01{
+  width: 64rpx;
+  height: 63rpx;
+}
+
+.exhibition-list .item-bg .icon-02{
+  width: 64rpx;
+  height: 63rpx;
+}
+.exhibition-list .item-bg .item-content{
+  position: relative;
+  z-index: 2;
+}
+
+.exhibition-list .item-bg .name{
+  color:rgba(255,255,255,1);
+  line-height:44rpx;
+  font-size:32rpx;
+  color: #fff;
+  text-align: center;
+}
+
+.exhibition-list .item-bg .text{
+  font-size:20rpx;
+  color:rgba(255,255,255,1);
+  line-height:36rpx;
+  text-align: center;
+}
+
+.exhibition-list .item{
+  display: flex;
+  margin: 0 15rpx;
+  height:190rpx;
+  background:rgba(28,183,150,1);
+  align-items: center;
+  padding: 0 0 0 20rpx;
+}
+.exhibition-list .item .icon-01{
+  width: 49rpx;
+  height: 77rpx;
+  margin-top: -10rpx;
+}
+.exhibition-list .item .icon-02{
+  width: 64rpx;
+  height: 71rpx;
+}
+
+.exhibition-list .item .item-content{
+  position: relative;
+  z-index: 2;
+  white-space: nowrap;
+  padding-left: 15rpx;
+}
+.exhibition-list .item .name{
+  color:rgba(255,255,255,1);
+  line-height:44rpx;
+  font-size:32rpx;
+  color: #fff;
+}
+
+.exhibition-list .item .text{
+  font-size:20rpx;
+  color:rgba(255,255,255,1);
+  line-height:36rpx;
+  text-align: center;
+}
+
+.serve-list-box{
+  display: flex;
+  flex-wrap:wrap;
+  margin-bottom: 20rpx;
+  margin-right: -3rpx;
+}
+
+
+.serve-list{
+  width: 50%;
+  display: flex;
+  align-items: center;
+  padding:30rpx;
+  border:1rpx solid rgba(204,209,219,1);
+  box-sizing: border-box;
+  margin-top: -1rpx;
+  margin-left: -1rpx;
+}
+.serve-list .item-media{
+  width: 68rpx;
+  height: 68rpx;
+  margin-right: 30rpx;
+}
+/* .serve-list .item-content{
+
+} */
+
+.serve-list .item-content .name{
+  font-size:32rpx;
+  color: #161616;
+  margin-bottom: 10rpx;
+}
+
+.serve-list .item-content .text{
+  color: #B3B3C1;
+  font-size:20rpx;
+  white-space: nowrap;
+}
+
+
+.footer-box{
+  padding:40rpx 30rpx;
+  text-align: center;
+}
+.footer-box .footer-logo{
+  display: block;
+  margin: 0 auto 40rpx auto;
+  width: 189rpx;
+  height: 140rpx;
+}
+.footer-box .link-a{
+  display: inline-block;
+  font-size: 28rpx;
+  text-decoration: underline;
+  color: #C2C2C2;
+}

+ 96 - 0
pages/invitation/evidence/index.js

@@ -0,0 +1,96 @@
+const app = getApp();
+const api = app.api;
+let QRCode = require('../../../utils/weapp.qrcode.min.js')
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    signTime: '',
+    dataForm: {
+      id: '',
+      status: '0',
+      statusOther: '',
+      realName: '',
+      idType: '0',
+      idNumber: '',
+      country: '0',
+      liveCity: ['北京市', '北京市', '东城区'],
+      liveCityNotChina: '',
+      gender: '0',
+      emailAddress: '',
+      company: '',
+      position: ''
+    }
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {
+    // 查询核验二维码
+    const self = this
+    self.getGuestQRCode()
+
+    // 设置页面标题
+    wx.setNavigationBarTitle({
+      title: '入场凭证',
+    })
+  },
+
+  /**
+   * 查询客人核验二维码
+   */
+  getGuestQRCode() {
+    const self = this;
+    app.post(api.InvitationGet, {}).then(response => {
+      if(response.success) {
+        self.setData({
+          ['dataForm.id']: response.data.id,
+          ['dataForm.status']: response.data.roles + '',
+          ['dataForm.statusOther']: response.data.roleOther,
+          ['dataForm.realName']: response.data.name,
+          ['dataForm.idType']: response.data.types + '',
+          ['dataForm.idNumber']: response.data.nums,
+          ['dataForm.country']: response.data.country + '',
+          ['dataForm.liveCity']: response.data.country === 0 ? [response.data.province, response.data.city, response.data.district] : [],
+          ['dataForm.liveCityNotChina']: response.data.country === 1 ? response.data.states : '',
+          ['dataForm.gender']: response.data.gender + '',
+          ['dataForm.emailAddress']: response.data.mail,
+          ['dataForm.company']: response.data.company,
+          ['dataForm.position']: response.data.position,
+        });
+
+        // 生成核销二维码
+        const systemInfo = wx.getSystemInfoSync()
+        const width = 107*systemInfo.windowWidth/375
+        const height = width
+
+        new QRCode({
+          text: self.data.dataForm.id + '',
+          width: width,
+          height: height,
+          canvasId: 'myQrcode'
+        });
+      }
+    }).catch(() => {
+      wx.showModal({
+        content: '没有查询到您的入场凭证',
+        cancelText: '返回',
+        confirmText: '获取凭证',
+        success: function(response) {
+          if(response.confirm) {
+            wx.redirectTo({
+              url: '../index/index',
+            })
+          } else {
+            wx.navigateBack({
+              delta: 0,
+            })
+          }
+        }
+      })
+    })
+  }
+})

+ 3 - 0
pages/invitation/evidence/index.json

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

+ 11 - 0
pages/invitation/evidence/index.wxml

@@ -0,0 +1,11 @@
+<!-- 邀请函 - 入场凭证 -->
+<view class="container">
+  <!-- 二维码 -->
+  <view class="container_qrcode">
+    <image 
+      mode="widthFix"
+      src="https://resource.artouchstone.com/miniapp/artist/images/activity/1.jpg" >
+    </image>
+    <canvas class="canvas-code"canvas-id="myQrcode"></canvas>
+  </view>
+</view>

+ 84 - 0
pages/invitation/evidence/index.wxss

@@ -0,0 +1,84 @@
+.container {
+  width: 750rpx;
+  box-sizing: border-box;
+  padding-bottom: 30rpx;
+}
+
+.container_qrcode {
+  width: 100%;
+  padding: 30rpx 0;
+  position: relative;
+}
+
+.container_qrcode image {
+  width: 750rpx;
+  height: 1624rpx;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.container_qrcode canvas {
+  width: 214rpx;
+  height: 214rpx;
+  /* margin: 0 auto; */
+  /* border: 30rpx solid #FFFFFF; */
+  position: absolute;
+  left: 268rpx;
+  top: 754rpx;
+}
+.container_qrcode view {
+  width: 100%;
+  text-align: center;
+  font-size: 24rpx;
+  color: #C0C4CC;
+  margin-top: 30rpx;
+}
+
+.container_info {
+  font-size: 28rpx;
+  padding: 30rpx;
+  box-sizing: border-box;
+}
+.container_info_item {
+  height: 100rpx;
+  line-height: 100rpx;
+  display: flex;
+  flex-flow: row nowrap;
+  justify-content: space-between;
+  align-items: center;
+  color: #303133;
+  border-bottom: 2rpx solid #ECEEF3;
+  padding: 0 10rpx;
+}
+.container_info_item view:first-child {
+  width: 280rpx;
+}
+.container_info_item view:nth-child(2) {
+  color: #606266;
+  width: 394rpx;
+  text-align: right;
+  box-sizing: border-box;
+  padding: 0 20rpx;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
+}
+.container_info_item_arrows-right {
+  width: 13rpx;
+}
+
+.container_btn {
+  width: 80%;
+  margin: 60rpx auto 0 auto;
+  height: 100rpx;
+  line-height: 100rpx;
+  background-color: #000000;
+  color: #FFFFFF;
+  box-sizing: border-box;
+  text-align: center;
+  font-size: 32rpx;
+  border-radius: 6rpx;
+}
+
+

+ 64 - 0
pages/invitation/index/index.js

@@ -0,0 +1,64 @@
+const { async } = require("../../../utils/runtime");
+const app = getApp();
+const api = app.api;
+var startX = 0;
+const minXOffset = 40;
+Page({
+
+  /**
+   * 记录手势落点坐标
+   * @param {*} event 
+   */
+  touchStart: function (event) {
+    startX = event.touches[0].pageX;
+  },
+
+   /**
+   * 手势结束计算偏移量并切换卡片
+   * @param {*} event 
+   */
+  touchEnd: async function(event) {
+    let endX = event.changedTouches[0].pageX;
+    let xOffset = startX - endX;
+    if (xOffset > minXOffset) {
+      // 授权登录校验
+      const isAuth = await app.authorization();
+      if(isAuth) {
+        // 查询已登记信息
+        app.post(api.InvitationGet, {}).then(response => {
+          if(response.success) {
+            wx.redirectTo({
+              url: '../navigation/index',
+            })
+          }
+        }).catch(() => {
+          wx.redirectTo({
+              url: '../protocol/index',
+            })
+        })
+      }
+    }
+  },
+
+   /**
+   * 手势被打断重置落点坐标
+   * @param {*} event 
+   */
+  touchCancel: function(event) {
+    startX = 0;
+  },
+  
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: async function () {
+    wx.setNavigationBarTitle({
+      title: '邀请函',
+    })
+  },
+
+  /** 分享设置 */
+  onShareAppMessage: function(res) {
+    return { title: '邀请函' }
+  }
+})

+ 3 - 0
pages/invitation/index/index.json

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

+ 10 - 0
pages/invitation/index/index.wxml

@@ -0,0 +1,10 @@
+<!-- 邀请函 - 封面 -->
+<view class="container">
+  <image 
+    mode="widthFix" 
+    src="https://resource.artouchstone.com/miniapp/artist/images/activity/0.jpg" 
+    bind:touchstart="touchStart" 
+    bind:touchend="touchEnd" 
+    bind:touchcancel="touchCancel">
+  </image>
+</view>

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini