Quellcode durchsuchen

feat(miniprogram): 添加证书办理、油价查询和法律援助功能

- 新增证书办理、油价查询和法律援助页面
- 实现证书列表、办证联系人和办证介绍的获取和展示
- 添加电话拨打和图片预览功能
- 优化页面样式,增加通用样式组件
- 更新 API 配置,强制使用 release 版本
- 移除 .DS_Store 文件
wzg vor 10 Monaten
Ursprung
Commit
a8f7fb1272

+ 1 - 0
.gitignore

@@ -28,3 +28,4 @@ build/Release
 # https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
 node_modules
 
+.DS_Store

+ 16 - 17
cloudfunctions/api/WXBizDataCrypt.js

@@ -1,36 +1,35 @@
-var crypto = require('crypto')
+var crypto = require("crypto");
 
 function WXBizDataCrypt(appId, sessionKey) {
-  this.appId = appId
-  this.sessionKey = sessionKey
+  this.appId = appId;
+  this.sessionKey = sessionKey;
 }
 
 WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
   // base64 decode
-  var sessionKey = new Buffer(this.sessionKey, 'base64')
-  encryptedData = new Buffer(encryptedData, 'base64')
-  iv = new Buffer(iv, 'base64')
+  var sessionKey = new Buffer(this.sessionKey, "base64");
+  encryptedData = new Buffer(encryptedData, "base64");
+  iv = new Buffer(iv, "base64");
 
   try {
     // 解密
-    var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
+    var decipher = crypto.createDecipheriv("aes-128-cbc", sessionKey, iv);
     // 设置自动 padding 为 true,删除填充补位
-    decipher.setAutoPadding(true)
+    decipher.setAutoPadding(true);
     // var decoded = decipher.update(encryptedData, 'binary', 'utf8')
-    var decoded = decipher.update(encryptedData, '', 'utf8')
-    decoded += decipher.final('utf8')
-
-    decoded = JSON.parse(decoded)
+    var decoded = decipher.update(encryptedData, "", "utf8");
+    decoded += decipher.final("utf8");
 
+    decoded = JSON.parse(decoded);
   } catch (err) {
-    throw new Error('Illegal Buffer')
+    throw new Error("Illegal Buffer");
   }
 
   if (decoded.watermark.appid !== this.appId) {
-    throw new Error('Illegal Buffer')
+    throw new Error("Illegal Buffer");
   }
 
-  return decoded
-}
+  return decoded;
+};
 
-module.exports = WXBizDataCrypt
+module.exports = WXBizDataCrypt;

+ 1 - 0
miniprogram/apis/apiConfig.js

@@ -1,5 +1,6 @@
 let v = wx.getAccountInfoSync();
 let { envVersion } = v.miniProgram;
+envVersion = "release";
 let apiUrl = `${
   envVersion == "release"
     ? "https://interface.huihenduo.cc/hhd-ship/"

+ 22 - 5
miniprogram/app.json

@@ -9,6 +9,9 @@
     "pages/takeBill/success/success",
     "pages/takeBill/canvas/canvas",
     "pages/maritime/maritime",
+    "pages/cert/cert",
+    "pages/oilPrice/oilPrice",
+    "pages/legal/legal",
     "pages/securityCheck/securityCheck",
     "pages/train/train"
   ],
@@ -24,15 +27,28 @@
   "tabBar": {
     "selectedColor": "#1195db",
     "color": "#8a8a8a",
-    "list": [{
+    "list": [
+      {
         "pagePath": "pages/takePhoto/takePhoto",
         "text": "随身拍",
         "selectedIconPath": "./images/tabs/camera-.png",
         "iconPath": "./images/tabs/camera.png"
       },
       {
-        "pagePath": "pages/maritime/maritime",
-        "text": "海事",
+        "pagePath": "pages/cert/cert",
+        "text": "证书办理",
+        "selectedIconPath": "./images/tabs/ship-.png",
+        "iconPath": "./images/tabs/ship.png"
+      },
+      {
+        "pagePath": "pages/oilPrice/oilPrice",
+        "text": "油价查询",
+        "selectedIconPath": "./images/tabs/ship-.png",
+        "iconPath": "./images/tabs/ship.png"
+      },
+      {
+        "pagePath": "pages/legal/legal",
+        "text": "法律援助",
         "selectedIconPath": "./images/tabs/ship-.png",
         "iconPath": "./images/tabs/ship.png"
       },
@@ -52,7 +68,8 @@
   "lazyCodeLoading": "requiredComponents",
   "sitemapLocation": "sitemap.json",
   "style": "v2",
-  "cache": [{
+  "cache": [
+    {
       "pagePath": "pages/takePhoto/takePhoto",
       "text": "随身拍",
       "selectedIconPath": "./images/tabs/camera-.png",
@@ -77,4 +94,4 @@
       "iconPath": "./images/tabs/train.png"
     }
   ]
-}
+}

+ 2 - 0
miniprogram/app.wxss

@@ -1,3 +1,5 @@
+@import "./style/index.wxss";
+
 page {
   width: 100%;
   height: 100%;

BIN
miniprogram/images/tel.png


+ 76 - 0
miniprogram/pages/cert/cert.js

@@ -0,0 +1,76 @@
+// pages/cert/cert.js
+import { postApi, getApi } from "../../apis/api";
+Page({
+  data: {
+    certs: [],
+    contacts: [],
+    introduce: {},
+  },
+  async getCerts() {
+    let { data } = await postApi("/ship/cert/list", {
+      userId: wx.getStorageSync("userId"),
+    });
+    if (data.status === 0) {
+      this.setData({
+        certs: data.result,
+      });
+    } else {
+      this.setData({
+        certs: [],
+      });
+      wx.showToast({
+        title: data.msg,
+        icon: "none",
+      });
+    }
+  },
+  async getContacts() {
+    let { data } = await getApi("/ship/cert/operation/contacts");
+    if (data.status === 0) {
+      this.setData({
+        contacts: data.result,
+      });
+    } else {
+      this.setData({
+        contacts: [],
+      });
+      wx.showToast({
+        title: data.msg,
+        icon: "none",
+      });
+    }
+  },
+  async getIntroduce() {
+    let { data } = await getApi("/ship/cert/operation/introduce");
+    if (data.status === 0) {
+      this.setData({
+        introduce: data.result,
+      });
+    } else {
+      this.setData({
+        introduce: [],
+      });
+      wx.showToast({
+        title: data.msg,
+        icon: "none",
+      });
+    }
+  },
+  makePhoneCall(e) {
+    wx.makePhoneCall({
+      phoneNumber: e.currentTarget.dataset.phone,
+    });
+  },
+
+  preview(e) {
+    wx.previewImage({
+      urls: [e.currentTarget.dataset.url],
+    });
+  },
+
+  onLoad(options) {
+    this.getCerts();
+    this.getContacts();
+    this.getIntroduce();
+  },
+});

+ 4 - 0
miniprogram/pages/cert/cert.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "navigationBarTitleText": "证书办理"
+}

+ 37 - 0
miniprogram/pages/cert/cert.wxml

@@ -0,0 +1,37 @@
+<!--pages/cert/cert.wxml-->
+<view class="title">我的证书</view>
+<view class="pl30 pr30">
+  <view class="df aic fs28 th">
+    <view class="w20p tac">序号</view>
+    <view class="w40p tac">证书名称</view>
+    <view class="w40p tac">到期时间</view>
+  </view>
+  <view class="df aic jcsb fs28 mt10 tr" wx:for="{{certs}}">
+    <view class="w20p tac">{{index+1}}</view>
+    <view class="w40p tac">{{item.certTypeName}}</view>
+    <view class="w40p tac">{{item.endValidTime}}</view>
+  </view>
+</view>
+<view class="title mt50">证书办理服务</view>
+<view class="pl30 pr30">
+  <div class="df aic">
+    <image class="i-img" mode="aspectFit" bind:tap="preview" data-url="{{introduce.imageUrl}}" src="{{introduce.imageUrl}}" mode="" />
+    <div class="i-text">{{introduce.textContent||'暂无'}}</div>
+  </div>
+</view>
+<view class="title mt50">办证联系人</view>
+<view class="pl30 pr30">
+  <view class="df aic jcsb fs28 th">
+    <view class="w40p tac">办事处</view>
+    <view class="w20p tac">姓名</view>
+    <view class="w40p tac">电话</view>
+  </view>
+  <view class="df aic jcsb fs28 mt10 tr" wx:for="{{contacts}}">
+    <view class="w40p tac">{{item.officeName}}</view>
+    <view class="w20p tac">{{item.contactPerson}}</view>
+    <view class="w40p tac df aic" bind:tap="makePhoneCall" data-phone="{{item.contactPhone}}">{{item.contactPhone}}
+      <image class="tel ml10" src="../../images/tel.png" mode="aspectFit" />
+    </view>
+  </view>
+</view>
+<view class="primary w500 m0a mt100">一键分享</view>

+ 38 - 0
miniprogram/pages/cert/cert.wxss

@@ -0,0 +1,38 @@
+/* pages/cert/cert.wxss */
+.title {
+  font-size: 32rpx;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #0094fe;
+  margin: 20rpx 0 20rpx 0;
+  padding-left: 30rpx;
+}
+
+.th {
+  color: #777;
+}
+
+.tr {
+  color: #333;
+  border-bottom: 1rpx solid #eee;
+  padding-bottom: 10rpx;
+}
+
+.i-img {
+  width: 45vw;
+  height: 45vw;
+}
+
+.i-text {
+  width: 43vw;
+  height: 45vw;
+  margin-left: 2vw;
+  border: 1rpx solid #eee;
+  box-sizing: border-box;
+  padding: 10rpx;
+}
+
+.tel {
+  width: 50rpx;
+  height: 50rpx;
+}

+ 66 - 0
miniprogram/pages/legal/legal.js

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

+ 4 - 0
miniprogram/pages/legal/legal.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "navigationBarTitleText": "法律援助"
+}

+ 2 - 0
miniprogram/pages/legal/legal.wxml

@@ -0,0 +1,2 @@
+<!--pages/legal/legal.wxml-->
+<text>pages/legal/legal.wxml</text>

+ 1 - 0
miniprogram/pages/legal/legal.wxss

@@ -0,0 +1 @@
+/* pages/legal/legal.wxss */

+ 66 - 0
miniprogram/pages/oilPrice/oilPrice.js

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

+ 4 - 0
miniprogram/pages/oilPrice/oilPrice.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "navigationBarTitleText": "油价查询"
+}

+ 2 - 0
miniprogram/pages/oilPrice/oilPrice.wxml

@@ -0,0 +1,2 @@
+<!--pages/oilPrice/oilPrice.wxml-->
+<text>pages/oilPrice/oilPrice.wxml</text>

+ 1 - 0
miniprogram/pages/oilPrice/oilPrice.wxss

@@ -0,0 +1 @@
+/* pages/oilPrice/oilPrice.wxss */

+ 77 - 0
miniprogram/style/color.wxss

@@ -0,0 +1,77 @@
+.black {
+  color: #000 !important;
+}
+
+.c1 {
+  color: #111 !important;
+}
+
+.c2 {
+  color: #222 !important;
+}
+
+.c3 {
+  color: #333 !important;
+}
+
+.c4 {
+  color: #444 !important;
+}
+
+.c5 {
+  color: #555 !important;
+}
+
+.c6 {
+  color: #666 !important;
+}
+
+.c7 {
+  color: #777 !important;
+}
+
+.c8 {
+  color: #888 !important;
+}
+
+.c9 {
+  color: #999 !important;
+}
+
+.ca {
+  color: #aaa !important;
+}
+
+.cb {
+  color: #bbb !important;
+}
+
+.cc {
+  color: #ccc !important;
+}
+
+.cd {
+  color: #ddd !important;
+}
+
+.ce {
+  color: #eee !important;
+}
+
+.white,
+.cf {
+  color: #fff !important;
+}
+
+.red {
+  color: red !important;
+}
+
+.primary {
+  padding: 20rpx !important;
+  font-size: 32rpx !important;
+  border-radius: 52rpx !important;
+  color: #fff !important;
+  text-align: center !important;
+  background: linear-gradient(270deg, #0089fd 0%, #43a9ff 100%) !important;
+}

+ 71 - 0
miniprogram/style/font-size.wxss

@@ -0,0 +1,71 @@
+.fs10 {
+  font-size: 10rpx !important;
+}
+
+.fs12 {
+  font-size: 12rpx !important;
+}
+
+.fs14 {
+  font-size: 14rpx !important;
+}
+
+.fs16 {
+  font-size: 16rpx !important;
+}
+
+.fs18 {
+  font-size: 18rpx !important;
+}
+
+.fs20 {
+  font-size: 20rpx !important;
+}
+
+.fs22 {
+  font-size: 22rpx !important;
+}
+
+.fs24 {
+  font-size: 24rpx !important;
+}
+
+.fs26 {
+  font-size: 26rpx !important;
+}
+
+.fs28 {
+  font-size: 28rpx !important;
+}
+
+.fs30 {
+  font-size: 30rpx !important;
+}
+
+.fs32 {
+  font-size: 32rpx !important;
+}
+
+.fs34 {
+  font-size: 34rpx !important;
+}
+
+.fs36 {
+  font-size: 36rpx !important;
+}
+
+.fs38 {
+  font-size: 38rpx !important;
+}
+
+.fs40 {
+  font-size: 40rpx !important;
+}
+
+.fs48 {
+  font-size: 48rpx !important;
+}
+
+.fs50 {
+  font-size: 50rpx !important;
+}

+ 111 - 0
miniprogram/style/height.wxss

@@ -0,0 +1,111 @@
+.h10 {
+  height: 10rpx !important;
+}
+
+.h12 {
+  height: 12rpx !important;
+}
+
+.h14 {
+  height: 14rpx !important;
+}
+
+.h16 {
+  height: 16rpx !important;
+}
+
+.h18 {
+  height: 18rpx !important;
+}
+
+.h20 {
+  height: 20rpx !important;
+}
+
+.h22 {
+  height: 22rpx !important;
+}
+
+.h24 {
+  height: 24rpx !important;
+}
+
+.h26 {
+  height: 26rpx !important;
+}
+
+.h28 {
+  height: 28rpx !important;
+}
+
+.h30 {
+  height: 28rpx !important;
+}
+
+.h32 {
+  height: 32rpx !important;
+}
+
+.h34 {
+  height: 34rpx !important;
+}
+
+.h36 {
+  height: 36rpx !important;
+}
+
+.h38 {
+  height: 38rpx !important;
+}
+
+.h40 {
+  height: 40rpx !important;
+}
+
+.h48 {
+  height: 48rpx !important;
+}
+
+.h50 {
+  height: 50rpx !important;
+}
+
+.h60 {
+  height: 60rpx !important;
+}
+
+.h80 {
+  height: 80rpx !important;
+}
+
+.h100 {
+  height: 100rpx !important;
+}
+
+.h120 {
+  height: 120rpx !important;
+}
+
+.h140 {
+  height: 140rpx !important;
+}
+
+.h160 {
+  height: 160rpx !important;
+}
+
+.h200 {
+  height: 200rpx !important;
+}
+
+.h300 {
+  height: 300rpx !important;
+}
+
+.h400 {
+  height: 400rpx !important;
+}
+
+.h500 {
+  height: 500rpx !important;
+}

+ 159 - 0
miniprogram/style/index.wxss

@@ -0,0 +1,159 @@
+@import "./margin.wxss";
+@import "./padding.wxss";
+@import "./font-size.wxss";
+@import "./color.wxss";
+@import "./width.wxss";
+@import "./height.wxss";
+
+
+.dib {
+  display: block;
+}
+
+.tac {
+  text-align: center;
+}
+
+.tal {
+  text-align: left;
+}
+
+.tar {
+  text-align: right;
+}
+
+.df {
+  display: flex;
+}
+
+.jcsb {
+  justify-content: space-between;
+}
+
+.jcc {
+  justify-content: center;
+}
+
+.jcfe {
+  justify-content: flex-end;
+}
+
+.jcsa {
+  justify-content: space-around;
+}
+
+.jcs {
+  justify-content: start;
+}
+
+.aic {
+  align-items: center;
+}
+
+.aib {
+  align-items: baseline;
+}
+
+.pointer {
+  cursor: pointer;
+}
+
+.fww {
+  flex-wrap: wrap;
+}
+
+.fdc {
+  flex-direction: column;
+}
+
+.fs1 {
+  flex-shrink: 1 !important;
+}
+
+.fg1 {
+  flex-grow: 1 !important;
+}
+
+.wsn {
+  white-space: nowrap !important;
+}
+
+.t32 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 32rpx;
+  height: 32rpx;
+  line-height: 32rpx;
+}
+
+.t30 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 30rpx;
+  height: 30rpx;
+  line-height: 30rpx;
+}
+
+.t28 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 28rpx;
+  height: 28rpx;
+  line-height: 28rpx;
+}
+
+.t24 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 24rpx;
+  height: 24rpx;
+  line-height: 24rpx;
+}
+
+.t22 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 22rpx;
+  height: 22rpx;
+  line-height: 22rpx;
+}
+
+.t20 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 20rpx;
+  height: 20rpx;
+  line-height: 20rpx;
+}
+
+.t18 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 18rpx;
+  height: 18rpx;
+  line-height: 18rpx;
+}
+
+.t16 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 16rpx;
+  height: 16rpx;
+  line-height: 16rpx;
+}
+
+.t14 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 14rpx;
+  height: 14rpx;
+  line-height: 14rpx;
+}
+
+.t12 {
+  border-left: 8rpx solid #409eff;
+  padding-left: 12rpx;
+  font-size: 12rpx;
+  height: 12rpx;
+  line-height: 12rpx;
+}

+ 135 - 0
miniprogram/style/margin.wxss

@@ -0,0 +1,135 @@
+.m10 {
+  margin: 10rpx !important;
+}
+
+.m20 {
+  margin: 20rpx !important;
+}
+
+.m30 {
+  margin: 30rpx !important;
+}
+
+.m40 {
+  margin: 40rpx !important;
+}
+
+.m50 {
+  margin: 50rpx !important;
+}
+
+.m10a {
+  margin: 10rpx auto !important;
+}
+
+.m20a {
+  margin: 20rpx auto !important;
+}
+
+.m30a {
+  margin: 30rpx auto !important;
+}
+
+.m40a {
+  margin: 40rpx auto !important;
+}
+
+.m50a {
+  margin: 50rpx auto !important;
+}
+
+.mt10 {
+  margin-top: 10rpx !important;
+}
+
+.mt20 {
+  margin-top: 20rpx !important;
+}
+
+.mt30 {
+  margin-top: 30rpx !important;
+}
+
+.mt40 {
+  margin-top: 40rpx !important;
+}
+
+.mt50 {
+  margin-top: 50rpx !important;
+}
+
+.mt60 {
+  margin-top: 60rpx !important;
+}
+
+.mt80 {
+  margin-top: 80rpx !important;
+}
+
+.mt100 {
+  margin-top: 100rpx !important;
+}
+
+.mr10 {
+  margin-right: 10rpx !important;
+}
+
+.mr20 {
+  margin-right: 20rpx !important;
+}
+
+.mr30 {
+  margin-right: 30rpx !important;
+}
+
+.mr40 {
+  margin-right: 40rpx !important;
+}
+
+.mr50 {
+  margin-right: 50rpx !important;
+}
+
+.mb10 {
+  margin-bottom: 10rpx !important;
+}
+
+.mb20 {
+  margin-bottom: 20rpx !important;
+}
+
+.mb30 {
+  margin-bottom: 30rpx !important;
+}
+
+.mb40 {
+  margin-bottom: 40rpx !important;
+}
+
+.mb50 {
+  margin-bottom: 50rpx !important;
+}
+
+.ml10 {
+  margin-left: 10rpx !important;
+}
+
+.ml20 {
+  margin-left: 20rpx !important;
+}
+
+.ml30 {
+  margin-left: 30rpx !important;
+}
+
+.ml40 {
+  margin-left: 40rpx !important;
+}
+
+.ml50 {
+  margin-left: 50rpx !important;
+}
+
+.m0a {
+  margin: 0 auto;
+}

+ 115 - 0
miniprogram/style/padding.wxss

@@ -0,0 +1,115 @@
+.p10 {
+  padding: 10rpx !important;
+}
+
+.p20 {
+  padding: 20rpx !important;
+}
+
+.p30 {
+  padding: 30rpx !important;
+}
+
+.p40 {
+  padding: 40rpx !important;
+}
+
+.p50 {
+  padding: 50rpx !important;
+}
+
+.pt10 {
+  padding-top: 10rpx !important;
+}
+
+.pr10 {
+  padding-right: 10rpx !important;
+}
+
+.pb10 {
+  padding-bottom: 10rpx !important;
+}
+
+.pl10 {
+  padding-left: 10rpx !important;
+}
+
+.pt20 {
+  padding-top: 20rpx !important;
+}
+
+.pr20 {
+  padding-right: 20rpx !important;
+}
+
+.pb20 {
+  padding-bottom: 20rpx !important;
+}
+
+.pl20 {
+  padding-left: 20rpx !important;
+}
+
+.pt30 {
+  padding-top: 30rpx !important;
+}
+
+.pr30 {
+  padding-right: 30rpx !important;
+}
+
+.pb30 {
+  padding-bottom: 30rpx !important;
+}
+
+.pl30 {
+  padding-left: 30rpx !important;
+}
+
+.pt40 {
+  padding-top: 40rpx !important;
+}
+
+.pr40 {
+  padding-right: 40rpx !important;
+}
+
+.pb40 {
+  padding-bottom: 40rpx !important;
+}
+
+.pl40 {
+  padding-left: 40rpx !important;
+}
+
+.pt50 {
+  padding-top: 50rpx !important;
+}
+
+.pr50 {
+  padding-right: 50rpx !important;
+}
+
+.pb50 {
+  padding-bottom: 50rpx !important;
+}
+
+.pl50 {
+  padding-left: 50rpx !important;
+}
+
+.pl60 {
+  padding-left: 60rpx !important;
+}
+
+.pl80 {
+  padding-left: 80rpx !important;
+}
+
+.pl50 {
+  padding-left: 50rpx !important;
+}
+
+.pl100 {
+  padding-left: 100rpx !important;
+}

+ 115 - 0
miniprogram/style/width.wxss

@@ -0,0 +1,115 @@
+.w10 {
+  width: 10rpx !important;
+}
+
+.w20 {
+  width: 20rpx !important;
+}
+
+.w30 {
+  width: 30rpx !important;
+}
+
+.w40 {
+  width: 40rpx !important;
+}
+
+.w50 {
+  width: 50rpx !important;
+}
+
+.w60 {
+  width: 60rpx !important;
+}
+
+.w70 {
+  width: 70rpx !important;
+}
+
+.w80 {
+  width: 80rpx !important;
+}
+
+.w100 {
+  width: 100rpx !important;
+}
+
+.w120 {
+  width: 120rpx !important;
+}
+
+.w140 {
+  width: 140rpx !important;
+}
+
+.w160 {
+  width: 160rpx !important;
+}
+
+.w180 {
+  width: 180rpx !important;
+}
+
+.w200 {
+  width: 200rpx !important;
+}
+
+.w220 {
+  width: 220rpx !important;
+}
+
+.w240 {
+  width: 240rpx !important;
+}
+
+.w300 {
+  width: 300rpx !important;
+}
+
+.w500 {
+  width: 500rpx !important;
+}
+
+.w800 {
+  width: 800rpx !important;
+}
+
+.w10p {
+  width: 10% !important;
+}
+
+.w20p {
+  width: 20% !important;
+}
+
+.w30p {
+  width: 30% !important;
+}
+
+.w40p {
+  width: 40% !important;
+}
+
+.w50p {
+  width: 50% !important;
+}
+
+.w60p {
+  width: 60% !important;
+}
+
+.w70p {
+  width: 70% !important;
+}
+
+.w80p {
+  width: 80% !important;
+}
+
+.w90p {
+  width: 90% !important;
+}
+
+.w100p {
+  width: 100% !important;
+}

+ 8 - 1
project.private.config.json

@@ -2,6 +2,13 @@
   "condition": {
     "miniprogram": {
       "list": [
+        {
+          "name": "pages/takePhoto/takePhoto",
+          "pathName": "pages/takePhoto/takePhoto",
+          "query": "",
+          "launchMode": "default",
+          "scene": null
+        },
         {
           "name": "",
           "pathName": "pages/index/index",
@@ -40,5 +47,5 @@
   },
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
   "projectname": "%E8%88%B9%E4%B8%9C%E5%B0%8F%E7%A8%8B%E5%BA%8F",
-  "libVersion": "2.25.1"
+  "libVersion": "3.7.7"
 }