From b4cfbad98fb66aecfc925ac40673d782e4bc9fd7 Mon Sep 17 00:00:00 2001
From: zdx <731335498@qq.com>
Date: Wed, 30 Dec 2020 15:16:04 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app.json | 10 +-
pages/home/activeDetail/activeDetail.wxml | 2 +-
.../focusedCompany/focusedCompany.js | 88 +++
.../focusedCompany/focusedCompany.json | 6 +
.../focusedCompany/focusedCompany.wxml | 15 +
.../focusedCompany/focusedCompany.wxss | 82 +++
.../focusedProject/focusedProject.js | 4 +
.../companyMine/myBlockchain/myBlockchain.js | 88 +++
.../myBlockchain/myBlockchain.json | 6 +
.../myBlockchain/myBlockchain.wxml | 10 +
.../myBlockchain/myBlockchain.wxss | 53 ++
pages/user/companyMine/myTeam/myTeam.js | 88 +++
pages/user/companyMine/myTeam/myTeam.json | 6 +
pages/user/companyMine/myTeam/myTeam.wxml | 20 +
pages/user/companyMine/myTeam/myTeam.wxss | 108 ++++
pages/user/index.wxml | 50 +-
pages/user/index.wxss | 64 +-
pages/user/setting/aboutAdvice/aboutAdvice.js | 3 +
.../user/setting/aboutAdvice/aboutAdvice.json | 6 +
.../user/setting/aboutAdvice/aboutAdvice.wxml | 1 +
.../user/setting/aboutAdvice/aboutAdvice.wxss | 17 +
pages/user/setting/aboutMine/aboutMine.js | 89 +++
pages/user/setting/aboutMine/aboutMine.json | 4 +
pages/user/setting/aboutMine/aboutMine.wxml | 67 +++
pages/user/setting/aboutMine/aboutMine.wxss | 79 +++
pages/user/setting/aboutUs/aboutUs.js | 3 +
pages/user/setting/aboutUs/aboutUs.json | 6 +
pages/user/setting/aboutUs/aboutUs.wxml | 1 +
pages/user/setting/aboutUs/aboutUs.wxss | 17 +
pages/user/setting/setting.js | 3 +
pages/user/setting/setting.json | 6 +
pages/user/setting/setting.wxml | 9 +
pages/user/setting/setting.wxss | 17 +
pages/user/setting/tailoring/tailoring.js | 555 ++++++++++++++++++
pages/user/setting/tailoring/tailoring.json | 5 +
pages/user/setting/tailoring/tailoring.wxml | 46 ++
pages/user/setting/tailoring/tailoring.wxss | 397 +++++++++++++
project.config.json | 29 +
static/images/aboutAdvice.png | Bin 0 -> 6165 bytes
static/images/aboutMine.png | Bin 0 -> 6692 bytes
static/images/aboutUs.png | Bin 0 -> 3569 bytes
static/images/zs.png | Bin 0 -> 68866 bytes
static/images/zuan.png | Bin 0 -> 6148 bytes
static/user_iocn/userNav_00.png | Bin 585 -> 3906 bytes
static/user_iocn/userNav_001.png | Bin 0 -> 585 bytes
static/user_iocn/userNav_01.png | Bin 398 -> 3659 bytes
static/user_iocn/userNav_0100.png | Bin 0 -> 398 bytes
static/user_iocn/userNav_02.png | Bin 648 -> 3970 bytes
static/user_iocn/userNav_0211.png | Bin 0 -> 648 bytes
static/user_iocn/userTool_08.png | Bin 0 -> 6883 bytes
50 files changed, 2012 insertions(+), 48 deletions(-)
create mode 100644 pages/user/companyMine/focusedCompany/focusedCompany.js
create mode 100644 pages/user/companyMine/focusedCompany/focusedCompany.json
create mode 100644 pages/user/companyMine/focusedCompany/focusedCompany.wxml
create mode 100644 pages/user/companyMine/focusedCompany/focusedCompany.wxss
create mode 100644 pages/user/companyMine/myBlockchain/myBlockchain.js
create mode 100644 pages/user/companyMine/myBlockchain/myBlockchain.json
create mode 100644 pages/user/companyMine/myBlockchain/myBlockchain.wxml
create mode 100644 pages/user/companyMine/myBlockchain/myBlockchain.wxss
create mode 100644 pages/user/companyMine/myTeam/myTeam.js
create mode 100644 pages/user/companyMine/myTeam/myTeam.json
create mode 100644 pages/user/companyMine/myTeam/myTeam.wxml
create mode 100644 pages/user/companyMine/myTeam/myTeam.wxss
create mode 100644 pages/user/setting/aboutAdvice/aboutAdvice.js
create mode 100644 pages/user/setting/aboutAdvice/aboutAdvice.json
create mode 100644 pages/user/setting/aboutAdvice/aboutAdvice.wxml
create mode 100644 pages/user/setting/aboutAdvice/aboutAdvice.wxss
create mode 100644 pages/user/setting/aboutMine/aboutMine.js
create mode 100644 pages/user/setting/aboutMine/aboutMine.json
create mode 100644 pages/user/setting/aboutMine/aboutMine.wxml
create mode 100644 pages/user/setting/aboutMine/aboutMine.wxss
create mode 100644 pages/user/setting/aboutUs/aboutUs.js
create mode 100644 pages/user/setting/aboutUs/aboutUs.json
create mode 100644 pages/user/setting/aboutUs/aboutUs.wxml
create mode 100644 pages/user/setting/aboutUs/aboutUs.wxss
create mode 100644 pages/user/setting/setting.js
create mode 100644 pages/user/setting/setting.json
create mode 100644 pages/user/setting/setting.wxml
create mode 100644 pages/user/setting/setting.wxss
create mode 100644 pages/user/setting/tailoring/tailoring.js
create mode 100644 pages/user/setting/tailoring/tailoring.json
create mode 100644 pages/user/setting/tailoring/tailoring.wxml
create mode 100644 pages/user/setting/tailoring/tailoring.wxss
create mode 100644 static/images/aboutAdvice.png
create mode 100644 static/images/aboutMine.png
create mode 100644 static/images/aboutUs.png
create mode 100644 static/images/zs.png
create mode 100644 static/images/zuan.png
create mode 100644 static/user_iocn/userNav_001.png
create mode 100644 static/user_iocn/userNav_0100.png
create mode 100644 static/user_iocn/userNav_0211.png
create mode 100644 static/user_iocn/userTool_08.png
diff --git a/app.json b/app.json
index 406141c..1e665d4 100644
--- a/app.json
+++ b/app.json
@@ -1,7 +1,7 @@
{
"pages": [
+ "pages/user/index",
"pages/config/config",
-
"pages/welcome/index",
"pages/company/index",
"pages/company/search/search",
@@ -9,12 +9,18 @@
"pages/richText/richText",
"pages/login/login",
"pages/card/index",
- "pages/user/index",
"pages/user/companyMine/myActives/myActives",
"pages/user/companyMine/focusedProject/focusedProject",
+ "pages/user/companyMine/focusedCompany/focusedCompany",
+ "pages/user/companyMine/myTeam/myTeam",
+ "pages/user/companyMine/myBlockchain/myBlockchain",
"pages/user/companyMine/companyOrder",
"pages/user/user_coupon/user_coupon",
"pages/user/user_coupon_data/user_coupon_data",
+ "pages/user/setting/setting",
+ "pages/user/setting/aboutUs/aboutUs",
+ "pages/user/setting/aboutMine/aboutMine",
+ "pages/user/setting/aboutAdvice/aboutAdvice",
"pages/mall/index",
"pages/mall/mall_address/mall_address",
"pages/mall/mall_address_form/mall_address_form",
diff --git a/pages/home/activeDetail/activeDetail.wxml b/pages/home/activeDetail/activeDetail.wxml
index 6e687e5..35514a1 100644
--- a/pages/home/activeDetail/activeDetail.wxml
+++ b/pages/home/activeDetail/activeDetail.wxml
@@ -42,7 +42,7 @@
{{info.price> 0 ? '¥' + info.price:'免费'}}
- {{!info.canEnroll?'无法报名':'立即报名'}}
+ {{info.canEnrollText}}
diff --git a/pages/user/companyMine/focusedCompany/focusedCompany.js b/pages/user/companyMine/focusedCompany/focusedCompany.js
new file mode 100644
index 0000000..54c9f16
--- /dev/null
+++ b/pages/user/companyMine/focusedCompany/focusedCompany.js
@@ -0,0 +1,88 @@
+// pages/user/companyMine/focusedProject/focusedProject.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ lists: [],
+ page: 1,
+ has_more: true
+ },
+ onShow() {
+ this.getList();
+ },
+
+ // 获取活动列表
+ getList() {
+ wx.$api.companyModule.getCrowdfundsLike(this.data.page).then(res => {
+ setTimeout(() => {
+ wx.hideLoading({})
+ }, 1000);
+ var lists = this.data.lists.concat(res.data)
+ if (res.page.has_more) {
+ this.setData({
+ has_more: res.page.has_more,
+ page: this.data.page + 1,
+ lists: lists
+ })
+ } else {
+ this.setData({
+ has_more: res.page.has_more,
+ lists: lists
+ })
+ }
+ })
+ },
+ // 触底加载更多
+ onReachBottom() {
+ if (this.data.has_more) {
+ this.getList();
+ } else {
+ wx.showToast({
+ icon: 'none',
+ title: '没有更多',
+ })
+ }
+ },
+ //跳转到详情页
+ goUrl(e) {
+ wx.navigateTo({
+ url: '/pages/home/activeDetail/activeDetail?id=' + e.currentTarget.dataset.id,
+ })
+ },
+ // 取消项目
+ crowdfundsUnLike(e) {
+ var id = e.currentTarget.dataset.id
+ var index = e.currentTarget.dataset.index
+ var arr = this.data.lists
+ var temp = []
+ for (var i = 0; i < arr.length; i++) {
+ if (i != index) {
+ temp.push(arr[i]);
+ }
+ }
+ console.log(temp)
+ wx.showModal({
+ title: '提示',
+ content: '确认取消关注么?',
+ success: res => {
+ if (res.confirm) {
+ wx.showLoading({
+ title: '取消中',
+ })
+ wx.$api.companyModule.crowdfundsUnLike(id).then(res => {
+ this.setData({
+ lists: temp
+ })
+ wx.showToast({
+ title: '取消成功',
+ icon:'none'
+ })
+ wx.hideLoading({})
+ });
+ }
+ }
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/user/companyMine/focusedCompany/focusedCompany.json b/pages/user/companyMine/focusedCompany/focusedCompany.json
new file mode 100644
index 0000000..c471cf8
--- /dev/null
+++ b/pages/user/companyMine/focusedCompany/focusedCompany.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "我关注的企业",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#378fff"
+}
\ No newline at end of file
diff --git a/pages/user/companyMine/focusedCompany/focusedCompany.wxml b/pages/user/companyMine/focusedCompany/focusedCompany.wxml
new file mode 100644
index 0000000..e7f31c4
--- /dev/null
+++ b/pages/user/companyMine/focusedCompany/focusedCompany.wxml
@@ -0,0 +1,15 @@
+
+
+
+
+ 域展科技 已关注
+ 诚信值1587
+
+ 进入
+
+
+
+
+ {{has_more?'~ 上拉加载更多 ~':'~ 暂无更多数据 ~'}}
+
\ No newline at end of file
diff --git a/pages/user/companyMine/focusedCompany/focusedCompany.wxss b/pages/user/companyMine/focusedCompany/focusedCompany.wxss
new file mode 100644
index 0000000..fda985b
--- /dev/null
+++ b/pages/user/companyMine/focusedCompany/focusedCompany.wxss
@@ -0,0 +1,82 @@
+.content {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ background-color: #fff;
+ padding: 20rpx 30rpx;
+ /* box-shadow: 0 0 5rpx rgba(0, 0, 0, 0.1); */
+ margin-top: 2rpx;
+}
+
+.content image {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 50%;
+}
+
+.content .left {
+ flex: 1;
+ margin-left: 20rpx;
+ box-sizing: border-box;
+}
+
+.content .title {
+ color: #333;
+ font-size: 30rpx;
+ padding-right: 120rpx;
+ position: relative;
+}
+
+.content .title>span {
+ color: #378fff;
+ border: solid 1rpx #378fff;
+ border-radius: 50rpx;
+ font-size: 20rpx;
+ padding: 4rpx 16rpx;
+ /* position: absolute;
+ top: 0;
+ right: 0; */
+ margin-left: 20rpx;
+ position: relative;
+ top: -4rpx;
+}
+
+.content .bottom {
+ justify-content: space-between;
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+ box-sizing: border-box;
+ font-size: 26rpx;
+ color: #222;
+ font-weight: 600;
+ padding: 10rpx 0;
+}
+
+.has_more {
+ color: #999;
+ font-size: 26rpx;
+ text-align: center;
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ padding-top: 30rpx;
+}
+
+.has_more image {
+ margin-bottom: 30rpx;
+}
+
+.runIn {
+ color: #fff;
+ border: solid 1rpx #fff;
+ border-radius: 50rpx;
+ background-color: #378fff;
+ font-size: 30rpx;
+ padding: 4rpx 20rpx 4rpx 30rpx;
+}
\ No newline at end of file
diff --git a/pages/user/companyMine/focusedProject/focusedProject.js b/pages/user/companyMine/focusedProject/focusedProject.js
index c820175..d2e9f14 100644
--- a/pages/user/companyMine/focusedProject/focusedProject.js
+++ b/pages/user/companyMine/focusedProject/focusedProject.js
@@ -75,6 +75,10 @@ Page({
this.setData({
lists: temp
})
+ wx.showToast({
+ title: '取消成功',
+ icon: 'none'
+ })
wx.hideLoading({})
});
}
diff --git a/pages/user/companyMine/myBlockchain/myBlockchain.js b/pages/user/companyMine/myBlockchain/myBlockchain.js
new file mode 100644
index 0000000..54c9f16
--- /dev/null
+++ b/pages/user/companyMine/myBlockchain/myBlockchain.js
@@ -0,0 +1,88 @@
+// pages/user/companyMine/focusedProject/focusedProject.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ lists: [],
+ page: 1,
+ has_more: true
+ },
+ onShow() {
+ this.getList();
+ },
+
+ // 获取活动列表
+ getList() {
+ wx.$api.companyModule.getCrowdfundsLike(this.data.page).then(res => {
+ setTimeout(() => {
+ wx.hideLoading({})
+ }, 1000);
+ var lists = this.data.lists.concat(res.data)
+ if (res.page.has_more) {
+ this.setData({
+ has_more: res.page.has_more,
+ page: this.data.page + 1,
+ lists: lists
+ })
+ } else {
+ this.setData({
+ has_more: res.page.has_more,
+ lists: lists
+ })
+ }
+ })
+ },
+ // 触底加载更多
+ onReachBottom() {
+ if (this.data.has_more) {
+ this.getList();
+ } else {
+ wx.showToast({
+ icon: 'none',
+ title: '没有更多',
+ })
+ }
+ },
+ //跳转到详情页
+ goUrl(e) {
+ wx.navigateTo({
+ url: '/pages/home/activeDetail/activeDetail?id=' + e.currentTarget.dataset.id,
+ })
+ },
+ // 取消项目
+ crowdfundsUnLike(e) {
+ var id = e.currentTarget.dataset.id
+ var index = e.currentTarget.dataset.index
+ var arr = this.data.lists
+ var temp = []
+ for (var i = 0; i < arr.length; i++) {
+ if (i != index) {
+ temp.push(arr[i]);
+ }
+ }
+ console.log(temp)
+ wx.showModal({
+ title: '提示',
+ content: '确认取消关注么?',
+ success: res => {
+ if (res.confirm) {
+ wx.showLoading({
+ title: '取消中',
+ })
+ wx.$api.companyModule.crowdfundsUnLike(id).then(res => {
+ this.setData({
+ lists: temp
+ })
+ wx.showToast({
+ title: '取消成功',
+ icon:'none'
+ })
+ wx.hideLoading({})
+ });
+ }
+ }
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/user/companyMine/myBlockchain/myBlockchain.json b/pages/user/companyMine/myBlockchain/myBlockchain.json
new file mode 100644
index 0000000..bf379dd
--- /dev/null
+++ b/pages/user/companyMine/myBlockchain/myBlockchain.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "区块链证书",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#378fff"
+}
\ No newline at end of file
diff --git a/pages/user/companyMine/myBlockchain/myBlockchain.wxml b/pages/user/companyMine/myBlockchain/myBlockchain.wxml
new file mode 100644
index 0000000..74d983f
--- /dev/null
+++ b/pages/user/companyMine/myBlockchain/myBlockchain.wxml
@@ -0,0 +1,10 @@
+
+
+ 企获客授权 [ 艾米家的傻钢 ] 区块链证书
+
+ 区块链编号
+ jiquwrofkdjs09u834545124dkafodjfihi
+
+
+
+区块链技术支持:域展科技
\ No newline at end of file
diff --git a/pages/user/companyMine/myBlockchain/myBlockchain.wxss b/pages/user/companyMine/myBlockchain/myBlockchain.wxss
new file mode 100644
index 0000000..ae24a62
--- /dev/null
+++ b/pages/user/companyMine/myBlockchain/myBlockchain.wxss
@@ -0,0 +1,53 @@
+.content {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 20rpx 140rpx;
+ margin-top: 2rpx;
+ position: relative;
+ width: 100%;
+ height: 1066rpx;
+}
+
+.content .bg {
+ width: 750rpx;
+ height: 1066rpx;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+}
+
+.bottom {
+ color: #999;
+ font-size: 26rpx;
+ text-align: center;
+ padding-top: 30rpx;
+}
+
+.content .title {
+ color: #043e5f;
+ font-size: 40rpx;
+ font-weight: 600;
+ text-align: center;
+}
+
+.content .num {
+ position: absolute;
+ bottom: 264rpx;
+ color: #043e5f;
+ text-align: center;
+}
+
+.font22 {
+ font-size: 24rpx;
+ padding-top: 16rpx;
+}
+
+.font32 {
+ font-size: 32rpx;
+ font-weight: 600;
+
+}
\ No newline at end of file
diff --git a/pages/user/companyMine/myTeam/myTeam.js b/pages/user/companyMine/myTeam/myTeam.js
new file mode 100644
index 0000000..54c9f16
--- /dev/null
+++ b/pages/user/companyMine/myTeam/myTeam.js
@@ -0,0 +1,88 @@
+// pages/user/companyMine/focusedProject/focusedProject.js
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ lists: [],
+ page: 1,
+ has_more: true
+ },
+ onShow() {
+ this.getList();
+ },
+
+ // 获取活动列表
+ getList() {
+ wx.$api.companyModule.getCrowdfundsLike(this.data.page).then(res => {
+ setTimeout(() => {
+ wx.hideLoading({})
+ }, 1000);
+ var lists = this.data.lists.concat(res.data)
+ if (res.page.has_more) {
+ this.setData({
+ has_more: res.page.has_more,
+ page: this.data.page + 1,
+ lists: lists
+ })
+ } else {
+ this.setData({
+ has_more: res.page.has_more,
+ lists: lists
+ })
+ }
+ })
+ },
+ // 触底加载更多
+ onReachBottom() {
+ if (this.data.has_more) {
+ this.getList();
+ } else {
+ wx.showToast({
+ icon: 'none',
+ title: '没有更多',
+ })
+ }
+ },
+ //跳转到详情页
+ goUrl(e) {
+ wx.navigateTo({
+ url: '/pages/home/activeDetail/activeDetail?id=' + e.currentTarget.dataset.id,
+ })
+ },
+ // 取消项目
+ crowdfundsUnLike(e) {
+ var id = e.currentTarget.dataset.id
+ var index = e.currentTarget.dataset.index
+ var arr = this.data.lists
+ var temp = []
+ for (var i = 0; i < arr.length; i++) {
+ if (i != index) {
+ temp.push(arr[i]);
+ }
+ }
+ console.log(temp)
+ wx.showModal({
+ title: '提示',
+ content: '确认取消关注么?',
+ success: res => {
+ if (res.confirm) {
+ wx.showLoading({
+ title: '取消中',
+ })
+ wx.$api.companyModule.crowdfundsUnLike(id).then(res => {
+ this.setData({
+ lists: temp
+ })
+ wx.showToast({
+ title: '取消成功',
+ icon:'none'
+ })
+ wx.hideLoading({})
+ });
+ }
+ }
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/user/companyMine/myTeam/myTeam.json b/pages/user/companyMine/myTeam/myTeam.json
new file mode 100644
index 0000000..495f241
--- /dev/null
+++ b/pages/user/companyMine/myTeam/myTeam.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "我的团队",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#378fff"
+}
\ No newline at end of file
diff --git a/pages/user/companyMine/myTeam/myTeam.wxml b/pages/user/companyMine/myTeam/myTeam.wxml
new file mode 100644
index 0000000..49a30c5
--- /dev/null
+++ b/pages/user/companyMine/myTeam/myTeam.wxml
@@ -0,0 +1,20 @@
+
+
+
+
+
+ 域展科技
+
+
+ VIP会员
+
+
+ 旗下团队5人
+ 2020-11-11 11:11:11
+
+
+
+
+
+ {{has_more?'~ 上拉加载更多 ~':'~ 暂无更多数据 ~'}}
+
\ No newline at end of file
diff --git a/pages/user/companyMine/myTeam/myTeam.wxss b/pages/user/companyMine/myTeam/myTeam.wxss
new file mode 100644
index 0000000..981ed41
--- /dev/null
+++ b/pages/user/companyMine/myTeam/myTeam.wxss
@@ -0,0 +1,108 @@
+.content {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ background-color: #fff;
+ padding: 20rpx 30rpx;
+ /* box-shadow: 0 0 5rpx rgba(0, 0, 0, 0.1); */
+ margin-top: 2rpx;
+}
+
+.content image {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 50%;
+}
+
+.content .left {
+ flex: 1;
+ margin-left: 20rpx;
+ box-sizing: border-box;
+ position: relative;
+}
+
+.content .title {
+ color: #333;
+ font-size: 30rpx;
+ padding-right: 200rpx;
+ position: relative;
+ font-weight: 400;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ flex-wrap: wrap;
+ box-sizing: border-box;
+}
+
+.content .title>span {
+ background-color: #378fff;
+ color: #fff;
+ border: solid 1rpx #378fff;
+ border-radius: 50rpx;
+ font-size: 22rpx;
+ padding: 4rpx 16rpx;
+ margin-left: 20rpx;
+ position: relative;
+ top: -4rpx;
+}
+
+.content .bottom {
+ justify-content: space-between;
+ display: flex;
+ flex-direction: row;
+ align-items: stretch;
+ box-sizing: border-box;
+ font-size: 24rpx;
+ color: #999;
+ font-weight: 400;
+ padding: 10rpx 0;
+}
+
+.has_more {
+ color: #999;
+ font-size: 26rpx;
+ text-align: center;
+ padding: 30rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ padding-top: 30rpx;
+}
+
+.has_more image {
+ margin-bottom: 30rpx;
+}
+
+.runIn {
+ color: #fff;
+ border: solid 1rpx #fff;
+ border-radius: 50rpx;
+ background-color: #378fff;
+ font-size: 30rpx;
+ padding: 4rpx 20rpx 4rpx 30rpx;
+}
+
+.total {
+ position: absolute;
+ right: 0;
+ top: 0;
+ color: #333;
+ font-size: 26rpx;
+}
+
+.vip {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ box-sizing: border-box;
+}
+.vip image{
+ margin-right: 10rpx;
+}
\ No newline at end of file
diff --git a/pages/user/index.wxml b/pages/user/index.wxml
index 110d4d5..b069757 100644
--- a/pages/user/index.wxml
+++ b/pages/user/index.wxml
@@ -1,38 +1,25 @@
-
- 艾米家的傻钢^
- 游客
-
+ 艾米家的傻钢^ 游客
-
- 89
- 钱包
-
-
- 5
- 关注
-
-
- 125
- 团队
-
+
+
+ 128 团队
+
+ 11259 关注企业
-
- 升级VIP会员 享会员特权
+ 升级VIP会员 享会员特权
-
- 立即开通
+ 立即开通
-
@@ -78,11 +65,12 @@
我的购物车
-
-
+
+
- 客服服务
+
+ 客服服务
@@ -97,17 +85,23 @@
项目关注
-
+
区块链证书
+
+
+
+
+
+ 企获客广场
-
+
设置
-
+
\ No newline at end of file
diff --git a/pages/user/index.wxss b/pages/user/index.wxss
index 4ab7aba..5bc0bd7 100644
--- a/pages/user/index.wxss
+++ b/pages/user/index.wxss
@@ -5,6 +5,7 @@
page {
background-color: #e9e9e9;
+ padding-bottom: 20rpx;
}
/* 个人中心头部 */
@@ -13,11 +14,12 @@ page {
padding: 0 30rpx;
box-sizing: border-box;
color: #fff;
+ padding-bottom: 80rpx;
}
.userTop-head {
display: flex;
- padding: 30rpx;
+ padding: 24rpx 30rpx;
}
.userTop-name {
@@ -45,25 +47,29 @@ page {
.userTop-nav {
display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ padding-left: 30rpx;
}
.userTop-label {
- flex: 3;
- text-align: center;
- font-size: 28rpx;
+ text-align: left;
+ font-size: 26rpx;
+ min-width: 160rpx;
}
.userTop-label text {
display: block;
- font-size: 42rpx;
+ font-size: 36rpx;
+ font-weight: 600;
}
.userTop-vip {
background-image: linear-gradient(to left, #1b2653, #354273);
- border-radius: 20rpx 20rpx 0 0;
- padding: 25rpx;
+ border-radius: 20rpx;
+ padding: 16rpx 25rpx;
box-sizing: border-box;
- margin-top: 30rpx;
+ margin-top: 46rpx;
}
.userTop-vip,
@@ -75,7 +81,7 @@ page {
.userTop-text {
flex: 1;
line-height: 60rpx;
- font-size: 30rpx;
+ font-size: 28rpx;
}
.userTop-text image {
@@ -91,7 +97,7 @@ page {
height: 60rpx;
line-height: 60rpx;
padding-right: 20rpx;
- font-size: 26rpx;
+ font-size: 24rpx;
}
.userTop-btn image {
@@ -107,37 +113,43 @@ page {
background-color: white;
overflow: hidden;
margin: 30rpx 20rpx;
+ position: relative;
+ top: -80rpx;
}
.userNav-label {
width: 33.33%;
float: left;
text-align: center;
- font-weight: 600;
+ font-weight: 400;
color: #353535;
- font-size: 30rpx;
+ font-size: 28rpx;
}
.userNav-label-img {
width: 104rpx;
height: 104rpx;
border-radius: 40rpx;
- margin: 0 auto 20rpx;
+ margin: 0 auto 1rpx;
color: #fff;
padding: 25rpx;
box-sizing: border-box;
}
.userNav-label:nth-child(1) .userNav-label-img {
- background-image: linear-gradient(to top, #91d634, #75c470);
+ /* background-image: linear-gradient(to top, #91d634, #75c470); */
}
.userNav-label:nth-child(2) .userNav-label-img {
- background-image: linear-gradient(to top, #04d2c1, #3caff1);
+ /* background-image: linear-gradient(to top, #04d2c1, #3caff1); */
}
.userNav-label:nth-child(3) .userNav-label-img {
- background-image: linear-gradient(to top, #ff686c, #ff0d76);
+ /* background-image: linear-gradient(to top, #ff686c, #ff0d76); */
+}
+
+.bgcolor {
+ background-image: linear-gradient(to top, #91d634, #75c470);
}
.userNav-label image {
@@ -154,6 +166,8 @@ page {
margin: 0 20rpx;
padding: 30rpx 20rpx 0;
box-sizing: border-box;
+ position: relative;
+ top: -80rpx;
}
.userTool-title {
@@ -166,7 +180,7 @@ page {
.userTool-title::after {
position: absolute;
content: '';
- background-color: #066aff;
+ background-color: #378fff;
left: 0;
top: 15%;
width: 8rpx;
@@ -185,6 +199,8 @@ page {
float: left;
text-align: center;
margin-bottom: 50rpx;
+ font-size: 26rpx;
+ color: #333;
}
.userTool-label-img {
@@ -195,6 +211,20 @@ page {
margin-bottom: 15rpx;
}
+.userTool-label-img-button {
+ width: 94rpx;
+ height: 94rpx;
+ margin-bottom: 15rpx;
+ background-color: red;
+}
+.userTool-label-img-button image{
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ width: 100%;
+}
+
.userTool-label-img image {
position: absolute;
left: 0;
diff --git a/pages/user/setting/aboutAdvice/aboutAdvice.js b/pages/user/setting/aboutAdvice/aboutAdvice.js
new file mode 100644
index 0000000..28f0b32
--- /dev/null
+++ b/pages/user/setting/aboutAdvice/aboutAdvice.js
@@ -0,0 +1,3 @@
+Page({
+ data: {}
+})
\ No newline at end of file
diff --git a/pages/user/setting/aboutAdvice/aboutAdvice.json b/pages/user/setting/aboutAdvice/aboutAdvice.json
new file mode 100644
index 0000000..a5166db
--- /dev/null
+++ b/pages/user/setting/aboutAdvice/aboutAdvice.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "意见建议",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#378fff"
+}
\ No newline at end of file
diff --git a/pages/user/setting/aboutAdvice/aboutAdvice.wxml b/pages/user/setting/aboutAdvice/aboutAdvice.wxml
new file mode 100644
index 0000000..276fab6
--- /dev/null
+++ b/pages/user/setting/aboutAdvice/aboutAdvice.wxml
@@ -0,0 +1 @@
+yijian
\ No newline at end of file
diff --git a/pages/user/setting/aboutAdvice/aboutAdvice.wxss b/pages/user/setting/aboutAdvice/aboutAdvice.wxss
new file mode 100644
index 0000000..b664d44
--- /dev/null
+++ b/pages/user/setting/aboutAdvice/aboutAdvice.wxss
@@ -0,0 +1,17 @@
+.item {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 30rpx 30rpx;
+ color: #333;
+ font-weight: 400;
+ background-color: #fff;
+ border-top: #f7f7f7 solid 1rpx;
+}
+
+.item image {
+ width: 50rpx;
+ margin-right: 10rpx;
+}
\ No newline at end of file
diff --git a/pages/user/setting/aboutMine/aboutMine.js b/pages/user/setting/aboutMine/aboutMine.js
new file mode 100644
index 0000000..2bd47c2
--- /dev/null
+++ b/pages/user/setting/aboutMine/aboutMine.js
@@ -0,0 +1,89 @@
+Page({
+
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ userId: "", //用户id
+ phone: "", //用户信息
+ nickname: "", //用户昵称
+ cover: "", //用户头像
+ columns: ["未知", "男", "女"],
+ gender: 0 || wx.getStorageSync("gender") * 1,
+ date: '2016-09-01',
+ region: ['广东省', '广州市', '海珠区'],
+ },
+
+ // 选择性别
+ pickSex: function (e) {
+ this.setData({
+ gender: e.detail.value
+ });
+ // console.log("当前选择性别-sex", e.detail.value);
+ },
+ // 选择出生年月日
+ bindTimeChange: function (e) {
+ console.log('picker发送选择改变,携带值为', e.detail.value)
+ this.setData({
+ time: e.detail.value
+ })
+ },
+ // 选择所在区域
+ bindRegionChange: function (e) {
+ console.log('picker发送选择改变,携带值为', e.detail.value)
+ this.setData({
+ region: e.detail.value
+ })
+ },
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad() {
+ wx.$api.user.userInfoEdit().then(res => {
+ this.setData({
+ phone: res.username,
+ nickname: res.nickname,
+ cover: res.avatar
+ })
+ })
+ },
+
+ // 跳转到修改页面
+ goUrl() {
+ wx.navigateTo({
+ url: "../editUserInfo/editUserInfo?nickname=" + this.data.nickname
+ })
+ },
+
+ // 更新头像
+ upload() {
+ wx.chooseImage({
+ count: 1, // 默认9
+ success: res => {
+ const src = res.tempFilePaths[0]
+ wx.navigateTo({
+ url: '../tailoring/tailoring?src=' + src
+ })
+ }
+ })
+ },
+
+ logOut() {
+ wx.showModal({
+ title: "退出提示",
+ content: "是否现在就退出",
+ showCancel: true,
+ confirmColor: "#0b0041",
+ confirmText: "确定",
+ success: (res) => {
+ if (res.confirm) {
+ wx.clearStorage({
+ success: () => {
+ wx.navigateBack()
+ }
+ })
+ }
+ }
+ })
+ }
+})
\ No newline at end of file
diff --git a/pages/user/setting/aboutMine/aboutMine.json b/pages/user/setting/aboutMine/aboutMine.json
new file mode 100644
index 0000000..e8c2c06
--- /dev/null
+++ b/pages/user/setting/aboutMine/aboutMine.json
@@ -0,0 +1,4 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "设置"
+}
\ No newline at end of file
diff --git a/pages/user/setting/aboutMine/aboutMine.wxml b/pages/user/setting/aboutMine/aboutMine.wxml
new file mode 100644
index 0000000..c49c851
--- /dev/null
+++ b/pages/user/setting/aboutMine/aboutMine.wxml
@@ -0,0 +1,67 @@
+
+
+ 头像
+
+
+
+
+
+
+ 昵称
+
+
+
+
+
+
+ 真实姓名
+
+
+
+
+
+
+ 性别
+
+
+
+ {{ columns[gender] == "" ? "请输入性别" : "" }}{{ columns[gender] }}
+
+
+
+
+
+
+ 手机号
+
+
+
+
+
+
+ 生日
+
+
+
+ 当前选择: {{date}}
+
+
+
+
+
+
+ 所在区域
+
+
+
+ 当前选择:{{region[0]}},{{region[1]}},{{region[2]}}
+
+
+
+
+
+
+
+
+退出登录
+保存
\ No newline at end of file
diff --git a/pages/user/setting/aboutMine/aboutMine.wxss b/pages/user/setting/aboutMine/aboutMine.wxss
new file mode 100644
index 0000000..a50f86d
--- /dev/null
+++ b/pages/user/setting/aboutMine/aboutMine.wxss
@@ -0,0 +1,79 @@
+.info_blcok {
+ margin-top: 30rpx;
+}
+
+.info_list {
+ background-color: #fff;
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ color: #8e8e8e;
+ font-size: 30rpx;
+ border-bottom: solid 1rpx #f7f7f7;
+ line-height: 90rpx;
+ padding: 0 30rpx;
+}
+
+.info_list.cover {
+ padding: 20rpx 30rpx;
+}
+
+.info_list:last-child {
+ border-bottom: none;
+}
+
+.info_list_title {
+ width: 200rpx;
+}
+
+.info_list .header {
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: 50%;
+ margin-right: 10rpx;
+ background-color: #eee;
+}
+
+.info_list .end {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+ align-items: center;
+ box-sizing: border-box;
+ flex: 1;
+}
+
+.info_list .txt {
+ padding-right: 10rpx;
+ color: #333;
+ text-align: right;
+}
+
+.info_list .txt1 {
+ color: #f89602;
+ font-weight: 600;
+}
+
+.beSure {
+ background-color: #cacaca;
+ color: #fff;
+ font-weight: bold;
+ position: fixed;
+ bottom: 30rpx;
+ left: 30rpx;
+ right: 30rpx;
+ height: 90rpx;
+ line-height: 90rpx;
+ text-align: center;
+ border-radius: 0;
+ font-size: 32rpx;
+ width: 44%;
+}
+
+.beSure1 {
+ background-color: #378fff;
+ left: calc(48% + 30rpx);
+}
\ No newline at end of file
diff --git a/pages/user/setting/aboutUs/aboutUs.js b/pages/user/setting/aboutUs/aboutUs.js
new file mode 100644
index 0000000..28f0b32
--- /dev/null
+++ b/pages/user/setting/aboutUs/aboutUs.js
@@ -0,0 +1,3 @@
+Page({
+ data: {}
+})
\ No newline at end of file
diff --git a/pages/user/setting/aboutUs/aboutUs.json b/pages/user/setting/aboutUs/aboutUs.json
new file mode 100644
index 0000000..0d3baf0
--- /dev/null
+++ b/pages/user/setting/aboutUs/aboutUs.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "设置",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#378fff"
+}
\ No newline at end of file
diff --git a/pages/user/setting/aboutUs/aboutUs.wxml b/pages/user/setting/aboutUs/aboutUs.wxml
new file mode 100644
index 0000000..3a6ecdd
--- /dev/null
+++ b/pages/user/setting/aboutUs/aboutUs.wxml
@@ -0,0 +1 @@
+关于我们
\ No newline at end of file
diff --git a/pages/user/setting/aboutUs/aboutUs.wxss b/pages/user/setting/aboutUs/aboutUs.wxss
new file mode 100644
index 0000000..b664d44
--- /dev/null
+++ b/pages/user/setting/aboutUs/aboutUs.wxss
@@ -0,0 +1,17 @@
+.item {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 30rpx 30rpx;
+ color: #333;
+ font-weight: 400;
+ background-color: #fff;
+ border-top: #f7f7f7 solid 1rpx;
+}
+
+.item image {
+ width: 50rpx;
+ margin-right: 10rpx;
+}
\ No newline at end of file
diff --git a/pages/user/setting/setting.js b/pages/user/setting/setting.js
new file mode 100644
index 0000000..28f0b32
--- /dev/null
+++ b/pages/user/setting/setting.js
@@ -0,0 +1,3 @@
+Page({
+ data: {}
+})
\ No newline at end of file
diff --git a/pages/user/setting/setting.json b/pages/user/setting/setting.json
new file mode 100644
index 0000000..0d3baf0
--- /dev/null
+++ b/pages/user/setting/setting.json
@@ -0,0 +1,6 @@
+{
+ "usingComponents": {},
+ "navigationBarTitleText": "设置",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#378fff"
+}
\ No newline at end of file
diff --git a/pages/user/setting/setting.wxml b/pages/user/setting/setting.wxml
new file mode 100644
index 0000000..8a7e730
--- /dev/null
+++ b/pages/user/setting/setting.wxml
@@ -0,0 +1,9 @@
+
+ 个人信息
+
+
+ 意见建议
+
+
+ 关于我们
+
\ No newline at end of file
diff --git a/pages/user/setting/setting.wxss b/pages/user/setting/setting.wxss
new file mode 100644
index 0000000..b664d44
--- /dev/null
+++ b/pages/user/setting/setting.wxss
@@ -0,0 +1,17 @@
+.item {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 30rpx 30rpx;
+ color: #333;
+ font-weight: 400;
+ background-color: #fff;
+ border-top: #f7f7f7 solid 1rpx;
+}
+
+.item image {
+ width: 50rpx;
+ margin-right: 10rpx;
+}
\ No newline at end of file
diff --git a/pages/user/setting/tailoring/tailoring.js b/pages/user/setting/tailoring/tailoring.js
new file mode 100644
index 0000000..3ced202
--- /dev/null
+++ b/pages/user/setting/tailoring/tailoring.js
@@ -0,0 +1,555 @@
+/**
+ * wx-cropper 2.0
+ * 基于微信小程序的图片裁剪工具
+ * @author ifmiss
+ */
+
+// 裁剪图片的宽度设置
+const CROPPER_WIDTH = 720
+
+// 裁剪显示的最大比例,如果裁剪的图片过长,则做限制,默认最大宽高比例为 宽640 / 高960 (宽高比例)
+const CROPPER_RATIO = 0.7
+
+/**
+ * 初始化裁剪的比例 如果是正方形则是 1
+ * 比例为宽高比 建议区间为 0.25 - 4
+ * 设置为0的时候则是不固定宽高
+ */
+const CROPPER_AREA_RATIO = 1
+
+// 裁剪的位置
+let CUT_L, // 初始化拖拽元素的left值
+ CUT_T, // 初始化拖拽元素的top值
+ CUT_R, // 初始化拖拽元素的
+ CUT_B, // 初始化拖拽元素的
+
+ // 裁剪的宽度
+ CUT_W, // 初始化拖拽元素的宽度
+ CUT_H, // 初始化拖拽元素的高度
+
+ // 拖拽相关
+ PAGE_X, // 手按下的x位置
+ PAGE_Y, // 手按下y的位置
+ T_PAGE_X, // 手移动的时候x的位置
+ T_PAGE_Y, // 手移动的时候Y的位置x
+
+ // 图片比例
+ IMG_RATIO,
+
+ // 图片实际宽高
+ IMG_REAL_W, // 图片实际的宽度
+ IMG_REAL_H, // 图片实际的高度
+
+ // 裁剪图片区域的信息
+ CROPPER_IMG_W,
+ CROPPER_IMG_H,
+
+ // 移动的比例
+ DRAFG_MOVE_RATIO = 750 / wx.getSystemInfoSync().windowWidth, //移动时候的比例,
+
+
+ INIT_DRAG_POSITION = 0, // 初始化屏幕宽度和裁剪区域的宽度之差,用于设置初始化裁剪的宽度
+
+ DRAW_IMAGE_W, // 设置生成的图片宽度
+
+ // 最大可显示得图片宽度,需要设定最大值,否则安卓部分机器会闪退, 控制qualityWidth的最大值
+ maxQW = 2550
+
+/**
+ * 最小裁剪宽度 由于设置了裁剪的UI样式,裁剪的宽高必须要有最小宽度,这个宽度是裁剪长或者宽的最短一方的宽度
+ * 如 400 200
+ * 那么如果只能设置为100的时候
+ * 那么最小缩放到200 100的效果,之后只能放大不能缩小
+ */
+const MIN_CROPPER_DIS = 100
+
+
+
+Page({
+ /**
+ * 页面的初始数据
+ */
+ data: {
+ imageSrc: "",
+ // 是否显示图片(在图片加载完成之后设置为true)
+ isShowImg: false,
+
+ // 初始化的宽高
+ cropperInitW: CROPPER_WIDTH,
+ cropperInitH: CROPPER_WIDTH,
+
+ // 动态的宽高
+ cropperW: CROPPER_WIDTH,
+ cropperH: CROPPER_WIDTH,
+
+ // 动态的left top值
+ cropperL: 0,
+ cropperT: 0,
+
+ // 图片缩放值
+ scaleP: 0,
+
+ // 裁剪框 宽高
+ cutL: 0,
+ cutT: 0,
+ cutB: 0,
+ cutR: 0,
+
+ qualityWidth: DRAW_IMAGE_W,
+
+ innerAspectRadio: DRAFG_MOVE_RATIO,
+
+ // 图片类型
+ cropperType : ""
+ },
+
+ /**
+ * 生命周期函数--监听页面加载
+ */
+ onLoad (options) {
+ this.setData({
+ imageSrc : options.src,
+ cropperType : options.type || ""
+ })
+ },
+
+ /**
+ * 生命周期函数--监听页面初次渲染完成
+ */
+ onReady: function () {
+ // 初始化
+ this.loadImage();
+ },
+
+ /**
+ * 选择本地图片
+ * 基于底部中间的按钮的点击事件
+ */
+ getImage: function () {
+ var _this = this
+ wx.chooseImage({
+ success: function (res) {
+ _this.setData({
+ isShowImg: false,
+ imageSrc: res.tempFilePaths[0],
+ })
+ _this.loadImage();
+ },
+ })
+ },
+
+ /**
+ * 初始化图片信息
+ * 获取图片内容,并初始化裁剪框
+ */
+ loadImage: function () {
+ var _this = this
+ wx.showLoading({
+ title: '图片加载中...',
+ })
+
+ wx.getImageInfo({
+ src: _this.data.imageSrc,
+ success: function success(res) {
+ DRAW_IMAGE_W = IMG_REAL_W = res.width
+ IMG_REAL_H = res.height
+ IMG_RATIO = IMG_REAL_W / IMG_REAL_H
+
+ let MIN_RANGE = IMG_REAL_W > IMG_REAL_H ? IMG_REAL_W : IMG_REAL_H
+
+ // 用于设置图片的比例(以设置裁剪的比例,方便定位裁剪的left right top bottom)
+ INIT_DRAG_POSITION = MIN_RANGE > INIT_DRAG_POSITION ? INIT_DRAG_POSITION : MIN_RANGE
+
+ // 拿到裁剪位置
+ let cropperPosition = _this.initCropperPosition(IMG_RATIO, CROPPER_WIDTH)
+
+ // 根据图片的宽高显示不同的效果 保证图片可以正常显示
+ if (IMG_RATIO >= 1) {
+ _this.setData({
+ cropperW: CROPPER_WIDTH,
+ cropperH: CROPPER_WIDTH / IMG_RATIO,
+ // 初始化left right
+ cropperL: Math.ceil((CROPPER_WIDTH - CROPPER_WIDTH) / 2),
+ cropperT: 0,
+ cutL: cropperPosition.left,
+ cutT: cropperPosition.top,
+ cutR: cropperPosition.right,
+ cutB: cropperPosition.bottom,
+ // 图片缩放值
+ scaleP: IMG_REAL_W / CROPPER_WIDTH,
+ qualityWidth: DRAW_IMAGE_W > maxQW ? maxQW : DRAW_IMAGE_W,
+ innerAspectRadio: IMG_RATIO
+ })
+ } else {
+ // 此时需要判断图片的比例以设定显示裁剪区域的比例
+ // let cropper_real_ratio = CROPPER_RATIO > IMG_RATIO ? CROPPER_RATIO : IMG_RATIO
+
+ if (CROPPER_RATIO > IMG_RATIO) {
+ CROPPER_IMG_W = CROPPER_WIDTH / CROPPER_RATIO * IMG_RATIO
+ CROPPER_IMG_H = CROPPER_WIDTH / CROPPER_RATIO
+ } else {
+ CROPPER_IMG_W = CROPPER_WIDTH
+ CROPPER_IMG_H = CROPPER_IMG_W / IMG_RATIO
+ }
+
+ // 动态生成新的CROPPER的真实宽度 高度
+ // CROPPER_IMG_W = CROPPER_WIDTH * cropper_real_ratio
+ // CROPPER_IMG_H = CROPPER_WIDTH / cropper_real_ratio / IMG_RATIO
+
+
+ _this.setData({
+ cropperW: CROPPER_IMG_W,
+ cropperH: CROPPER_IMG_H,
+ // 初始化left right
+ cropperL: Math.ceil((CROPPER_WIDTH - CROPPER_IMG_W) / 2),
+ cropperT: 0,
+
+ cutL: cropperPosition.left,
+ cutT: cropperPosition.top,
+ cutR: cropperPosition.right,
+ cutB: cropperPosition.bottom,
+ // 图片缩放值
+ scaleP: IMG_REAL_W / CROPPER_IMG_W,
+ qualityWidth: DRAW_IMAGE_W > maxQW ? maxQW : DRAW_IMAGE_W,
+ innerAspectRadio: IMG_RATIO
+ })
+ }
+ _this.setData({
+ isShowImg: true
+ })
+ wx.hideLoading()
+ }
+ })
+ },
+
+ /**
+ * 初始化裁剪区域的
+ * left right top bottom
+ * 需要 CROPPER_AREA_RATIO 来判断
+ * @return 返回裁剪的left, right, top bottom的值
+ */
+ initCropperPosition(radio) {
+ let left = 0,
+ right = 0,
+ top = 0,
+ bottom = 0,
+ cropperW,
+ cropperH
+ // 如果 CROPPER_AREA_RATIO = 0 则不限制固定宽高
+ if (CROPPER_AREA_RATIO === 0) return {
+ left,
+ right,
+ top,
+ bottom
+ }
+
+ // 宽大于等于高
+ if (radio >= 1) {
+ cropperW = CROPPER_WIDTH
+ cropperH = CROPPER_WIDTH / IMG_RATIO
+ if (radio > CROPPER_AREA_RATIO) {
+ return {
+ left: Math.ceil((cropperW - cropperH * CROPPER_AREA_RATIO) / 2),
+ right: Math.ceil((cropperW - cropperH * CROPPER_AREA_RATIO) / 2),
+ top: 0,
+ bottom: 0
+ }
+ }
+ return {
+ left: 0,
+ right: 0,
+ top: Math.ceil((cropperH - cropperW / CROPPER_AREA_RATIO) / 2),
+ bottom: Math.ceil((cropperH - cropperW / CROPPER_AREA_RATIO) / 2)
+ }
+ }
+
+ // 此时需要判断图片的比例以设定显示裁剪区域的比例
+ let cropper_real_ratio = CROPPER_RATIO > IMG_RATIO ? CROPPER_RATIO : IMG_RATIO
+ // 高大于宽
+ cropperW = CROPPER_WIDTH / cropper_real_ratio * IMG_RATIO
+ cropperH = CROPPER_WIDTH / cropper_real_ratio
+ if (radio < CROPPER_AREA_RATIO) {
+ return {
+ left: 0,
+ right: 0,
+ top: Math.ceil((cropperH - cropperW / CROPPER_AREA_RATIO) / 2),
+ bottom: Math.ceil((cropperH - cropperW / CROPPER_AREA_RATIO) / 2)
+ }
+ }
+ return {
+ left: Math.ceil((cropperW - cropperH * CROPPER_AREA_RATIO) / 2),
+ right: Math.ceil((cropperW - cropperH * CROPPER_AREA_RATIO) / 2),
+ top: 0,
+ bottom: 0
+ }
+ },
+
+ /**
+ * 拖动时候触发的touchStart事件
+ */
+ contentStartMove(e) {
+ PAGE_X = e.touches[0].pageX
+ PAGE_Y = e.touches[0].pageY
+ },
+
+ /**
+ * 拖动时候触发的touchMove事件
+ */
+ contentMoveing(e) {
+ var _this = this
+ var dragLengthX = (PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+ var dragLengthY = (PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO * DRAFG_MOVE_RATIO
+
+ // 左移右移
+ if (dragLengthX > 0) {
+ if (this.data.cutL - dragLengthX < 0) dragLengthX = this.data.cutL
+ } else {
+ if (this.data.cutR + dragLengthX < 0) dragLengthX = -this.data.cutR
+ }
+
+
+ // 上移下移
+ if (dragLengthY > 0) {
+ if (this.data.cutT - dragLengthY < 0) dragLengthY = this.data.cutT
+ } else {
+ if (this.data.cutB + dragLengthY < 0) dragLengthY = -this.data.cutB
+ }
+ this.setData({
+ cutL: this.data.cutL - dragLengthX,
+ cutT: this.data.cutT - dragLengthY,
+ cutR: this.data.cutR + dragLengthX,
+ cutB: this.data.cutB + dragLengthY
+ })
+
+
+ PAGE_X = e.touches[0].pageX
+ PAGE_Y = e.touches[0].pageY
+ },
+
+ contentTouchEnd() {
+
+ },
+
+ /**
+ * 点击取消关闭裁剪页面
+ */
+ close() {
+ // wx.redirectTo()
+ },
+
+ /**
+ * 点击完成之后
+ * 生成图片信息
+ */
+ getImageInfo() {
+ var _this = this
+ wx.showLoading({
+ title: '图片生成中...',
+ })
+ // 将图片写入画布
+ const ctx = wx.createCanvasContext('myCanvas')
+ let w = this.data.qualityWidth
+ let h = this.data.qualityWidth / IMG_RATIO
+ ctx.drawImage(_this.data.imageSrc, 0, 0, w, h);
+ ctx.draw(true, () => {
+ // 获取画布要裁剪的位置和宽度 均为百分比 * 画布中图片的宽度 保证了在微信小程序中裁剪的图片模糊 位置不对的问题
+ var canvasW = ((_this.data.cropperW - _this.data.cutL - _this.data.cutR) / _this.data.cropperW) * w
+ var canvasH = ((_this.data.cropperH - _this.data.cutT - _this.data.cutB) / _this.data.cropperH) * h
+ var canvasL = (_this.data.cutL / _this.data.cropperW) * w
+ var canvasT = (_this.data.cutT / _this.data.cropperH) * h
+
+ // 生成图片
+ wx.canvasToTempFilePath({
+ x: canvasL,
+ y: canvasT,
+ width: canvasW,
+ height: canvasH,
+ destWidth: canvasW,
+ destHeight: canvasH,
+ quality: 0.5,
+ canvasId: 'myCanvas',
+ success: res=> {
+ wx.hideLoading()
+ wx.$api.file.uploadImg(res.tempFilePath, {}).then(res => {
+ //获取页面栈
+ let pages = getCurrentPages(),
+ updData = res
+ //获取所需页面
+ let prevPage = pages[pages.length -2];//上一页
+
+ if(this.data.cropperType == "logo" || this.data.cropperType == "cardImg"){
+ prevPage.setData({
+ cover : updData
+ })
+ wx.navigateBack()
+ }else{
+ // 头像上传
+ wx.$api.user.EditCover({
+ value: updData.path
+ }).then(() => {
+ prevPage.setData({
+ cover: updData.showpath
+ });
+ wx.navigateBack()
+ })
+ }
+ })
+ }
+ })
+ })
+ },
+
+ /**
+ * 设置大小的时候触发的touchStart事件
+ * 存数据
+ */
+ dragStart(e) {
+ T_PAGE_X = e.touches[0].pageX
+ T_PAGE_Y = e.touches[0].pageY
+ CUT_L = this.data.cutL
+ CUT_R = this.data.cutR
+ CUT_B = this.data.cutB
+ CUT_T = this.data.cutT
+ },
+
+ /**
+ * 设置大小的时候触发的touchMove事件
+ * 根据dragType判断类型
+ * 4个方向的边线拖拽效果
+ * 右下角按钮的拖拽效果
+ */
+ dragMove(e) {
+ var _this = this
+ var dragType = e.target.dataset.drag
+ switch (dragType) {
+ case 'right':
+ var dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+ if (CUT_R + dragLength < 0) dragLength = -CUT_R
+ if (CUT_R + dragLength + MIN_CROPPER_DIS > this.data.cropperW - this.data.cutL) dragLength = (this.data.cropperW - this.data.cutL) - MIN_CROPPER_DIS - CUT_R
+
+ if (CROPPER_AREA_RATIO) {
+ // 底部线的限制 不允许超出
+ // dragLength 最大不能超过CUT_B
+ if (CUT_B + dragLength / CROPPER_AREA_RATIO <= 0) {
+ this.setData({
+ cutB: 0
+ })
+ return
+ }
+ this.setData({
+ cutR: CUT_R + dragLength,
+ cutB: CUT_B + dragLength / CROPPER_AREA_RATIO
+ })
+ } else {
+ this.setData({
+ cutR: CUT_R + dragLength
+ })
+ }
+
+ break;
+ case 'left':
+ var dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+ if (CUT_L - dragLength < 0) dragLength = CUT_L
+ if ((CUT_L - dragLength + MIN_CROPPER_DIS) > (this.data.cropperW - this.data.cutR)) dragLength = CUT_L - (this.data.cropperW - this.data.cutR) + MIN_CROPPER_DIS
+
+ if (CROPPER_AREA_RATIO) {
+ // 顶部线的限制 不允许超出
+ // dragLength 最大不能超过CUT_T
+ if (CUT_T - dragLength / CROPPER_AREA_RATIO < 0) {
+ this.setData({
+ cutT: 0
+ })
+ return
+ }
+ this.setData({
+ cutL: CUT_L - dragLength,
+ cutT: CUT_T - dragLength / CROPPER_AREA_RATIO
+ })
+ } else {
+ this.setData({
+ cutL: CUT_L - dragLength
+ })
+ }
+ break;
+ case 'top':
+ var dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+ if (CUT_T - dragLength < 0) dragLength = CUT_T
+ if ((CUT_T - dragLength + MIN_CROPPER_DIS) > this.data.cropperH - this.data.cutB) dragLength = CUT_T - (this.data.cropperH - this.data.cutB) + MIN_CROPPER_DIS
+
+ if (CROPPER_AREA_RATIO) {
+ // left 线的限制 不允许超出
+ // dragLength 最大不能超过CUT_L
+ if (CUT_L - dragLength * CROPPER_AREA_RATIO < 0) {
+ this.setData({
+ cutL: 0
+ })
+ return
+ }
+ this.setData({
+ cutL: CUT_L - dragLength * CROPPER_AREA_RATIO,
+ cutT: CUT_T - dragLength
+ })
+ } else {
+ this.setData({
+ cutT: CUT_T - dragLength
+ })
+ }
+ break;
+ case 'bottom':
+ var dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+ if (CUT_B + dragLength < 0) dragLength = -CUT_B
+ if (CUT_B + dragLength + MIN_CROPPER_DIS > this.data.cropperH - this.data.cutT) dragLength = (this.data.cropperH - this.data.cutT) - MIN_CROPPER_DIS - CUT_B
+
+ if (CROPPER_AREA_RATIO) {
+ // right 线的限制 不允许超出
+ // dragLength 最大不能超过 CUT_R
+ if (CUT_R + dragLength * CROPPER_AREA_RATIO < 0) {
+ this.setData({
+ cutR: 0
+ })
+ return
+ }
+ this.setData({
+ cutR: CUT_R + dragLength * CROPPER_AREA_RATIO,
+ cutB: CUT_B + dragLength
+ })
+ } else {
+ this.setData({
+ cutB: CUT_B + dragLength
+ })
+ }
+ break;
+ case 'rightBottom':
+ var dragType = e.target.dataset.drag
+ var dragLengthX = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+ var dragLengthY = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+ if (CUT_B + dragLengthY < 0) dragLengthY = -CUT_B
+ if (CUT_B + dragLengthY + MIN_CROPPER_DIS > this.data.cropperH - this.data.cutT) dragLengthY = (this.data.cropperH - this.data.cutT) - MIN_CROPPER_DIS - CUT_B
+ if (CUT_R + dragLengthX < 0) dragLengthX = -CUT_R
+ if (CUT_R + dragLengthX + MIN_CROPPER_DIS > this.data.cropperW - this.data.cutL) dragLengthX = (this.data.cropperW - this.data.cutL) - MIN_CROPPER_DIS - CUT_R
+
+ if (CROPPER_AREA_RATIO) {
+ // right 线的限制 不允许超出
+ // dragLength 最大不能超过 CUT_R
+ if (CUT_R + dragLengthY * CROPPER_AREA_RATIO < 0) {
+ this.setData({
+ cutR: 0
+ })
+ return
+ }
+ this.setData({
+ cutR: CUT_R + dragLengthY * CROPPER_AREA_RATIO,
+ cutB: CUT_B + dragLengthY
+ })
+ } else {
+ this.setData({
+ cutB: CUT_B + dragLengthY,
+ cutR: CUT_R + dragLengthX
+ })
+ }
+ break;
+ default:
+ break;
+ }
+ },
+})
\ No newline at end of file
diff --git a/pages/user/setting/tailoring/tailoring.json b/pages/user/setting/tailoring/tailoring.json
new file mode 100644
index 0000000..6461b9a
--- /dev/null
+++ b/pages/user/setting/tailoring/tailoring.json
@@ -0,0 +1,5 @@
+{
+ "navigationBarBackgroundColor": "#000000",
+ "navigationBarTitleText": "",
+ "navigationBarTextStyle": "white"
+}
\ No newline at end of file
diff --git a/pages/user/setting/tailoring/tailoring.wxml b/pages/user/setting/tailoring/tailoring.wxml
new file mode 100644
index 0000000..8a2b777
--- /dev/null
+++ b/pages/user/setting/tailoring/tailoring.wxml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择图片
+ 确认
+
+
+
\ No newline at end of file
diff --git a/pages/user/setting/tailoring/tailoring.wxss b/pages/user/setting/tailoring/tailoring.wxss
new file mode 100644
index 0000000..15b1f55
--- /dev/null
+++ b/pages/user/setting/tailoring/tailoring.wxss
@@ -0,0 +1,397 @@
+/* pages/wx-cropper/index.wxss */
+Page {
+ /* 点的颜色 */
+ --primary-color: #69f;
+ /* 边框颜色 */
+ --primary-color-outline: rgba(102, 153, 255, .75);
+ /* 虚线颜色 */
+ --primary-color-dashed: rgba(255, 255, 255, 0.46);
+ /* 裁剪区域背景色 */
+ --box-bg: rgba(255, 255, 255, 0.3);
+}
+
+.wx-content-info {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: block;
+ align-items: center;
+ flex-direction: column;
+ background: #000;
+}
+
+.cropper-config {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 90rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-top: 1px solid rgba(255, 255, 255, .12);
+ padding-bottom: env(safe-area-inset-bottom);
+}
+
+.cropper-config .cropper-cancle,
+.cropper-config .cropper-save {
+ color: #fff;
+ font-size: 26rpx;
+ padding: 15rpx 25px;
+}
+
+.cropper-content {
+ min-height: calc(100% - 80rpx);
+ width: 720rpx;
+ margin: 0 auto;
+ margin-top: 8rpx;
+ display: flex;
+ align-items: center;
+}
+
+.wx-corpper {
+ position: relative;
+ overflow: visible;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-touch-callout: none;
+ box-sizing: border-box;
+}
+
+.wx-corpper-content {
+ position: relative;
+}
+
+.wx-corpper-content image {
+ display: block;
+ width: 100%;
+ min-width: 0 !important;
+ max-width: none !important;
+ height: 100%;
+ min-height: 0 !important;
+ max-height: none !important;
+ image-orientation: 0deg !important;
+ margin: 0 auto;
+}
+
+/* 移动图片效果 */
+.wx-cropper-drag-box {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ cursor: move;
+ background: rgba(0, 0, 0, 0.6);
+ z-index: 1;
+}
+
+/* 内部的信息 */
+.wx-corpper-crop-box {
+ position: absolute;
+ background: var(--box-bg);
+ z-index: 2;
+}
+
+.wx-corpper-crop-box .wx-cropper-view-box {
+ position: relative;
+ display: block;
+ width: 100%;
+ height: 100%;
+ overflow: visible;
+ outline: 1px solid var(--primary-color-outline);
+}
+
+/* 横向虚线 */
+.wx-cropper-dashed-h {
+ position: absolute;
+ top: 33.33333333%;
+ left: 0;
+ width: 100%;
+ height: 33.33333333%;
+ border-top: 1px dashed var(--primary-color-dashed);
+ border-bottom: 1px dashed var(--primary-color-dashed);
+}
+
+/* 纵向虚线 */
+.wx-cropper-dashed-v {
+ position: absolute;
+ left: 33.33333333%;
+ top: 0;
+ width: 33.33333333%;
+ height: 100%;
+ border-left: 1px dashed var(--primary-color-dashed);
+ border-right: 1px dashed var(--primary-color-dashed);
+}
+
+/* 四个方向的线 为了之后的拖动事件*/
+.wx-cropper-line-t {
+ position: absolute;
+ display: block;
+ width: 100%;
+ background-color: var(--primary-color);
+ top: 0;
+ left: 0;
+ height: 1px;
+ opacity: 0.1;
+ cursor: n-resize;
+}
+
+.wx-cropper-line-t::before {
+ content: '';
+ position: absolute;
+ top: 50%;
+ right: 0rpx;
+ width: 100%;
+ -webkit-transform: translate3d(0, -50%, 0);
+ transform: translate3d(0, -50%, 0);
+ bottom: 0;
+ height: 41rpx;
+ background: transparent;
+ z-index: 11;
+}
+
+.wx-cropper-line-r {
+ position: absolute;
+ display: block;
+ background-color: var(--primary-color);
+ top: 0;
+ right: 0px;
+ width: 1px;
+ opacity: 0.1;
+ height: 100%;
+ cursor: e-resize;
+}
+
+.wx-cropper-line-r::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 41rpx;
+ -webkit-transform: translate3d(-50%, 0, 0);
+ transform: translate3d(-50%, 0, 0);
+ bottom: 0;
+ height: 100%;
+ background: transparent;
+ z-index: 11;
+}
+
+.wx-cropper-line-b {
+ position: absolute;
+ display: block;
+ width: 100%;
+ background-color: var(--primary-color);
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ opacity: 0.1;
+ cursor: s-resize;
+}
+
+.wx-cropper-line-b::before {
+ content: '';
+ position: absolute;
+ top: 50%;
+ right: 0rpx;
+ width: 100%;
+ -webkit-transform: translate3d(0, -50%, 0);
+ transform: translate3d(0, -50%, 0);
+ bottom: 0;
+ height: 41rpx;
+ background: transparent;
+ z-index: 11;
+}
+
+.wx-cropper-line-l {
+ position: absolute;
+ display: block;
+ background-color: var(--primary-color);
+ top: 0;
+ left: 0;
+ width: 1px;
+ opacity: 0.1;
+ height: 100%;
+ cursor: w-resize;
+}
+
+.wx-cropper-line-l::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 41rpx;
+ -webkit-transform: translate3d(-50%, 0, 0);
+ transform: translate3d(-50%, 0, 0);
+ bottom: 0;
+ height: 100%;
+ background: transparent;
+ z-index: 11;
+}
+
+.wx-cropper-point {
+ width: 5px;
+ height: 5px;
+ /* background-color: var(--primary-color); */
+ opacity: .75;
+ position: absolute;
+ z-index: 3;
+}
+
+.point-t {
+ top: -3px;
+ left: 50%;
+ margin-left: -3px;
+ cursor: n-resize;
+}
+
+.point-r {
+ top: 50%;
+ left: 100%;
+ margin-left: -3px;
+ margin-top: -3px;
+ cursor: n-resize;
+}
+
+.point-tr,
+.point-rb,
+.point-bl,
+.point-lt {
+ cursor: n-resize;
+ width: 29rpx;
+ height: 29rpx;
+ position: absolute;
+ z-index: 1112;
+ opacity: 1;
+}
+
+.point-rb {
+ right: 0;
+ bottom: 0;
+ -webkit-transform: translate3d(50%, 50%, 0);
+}
+
+.point-tr {
+ right: 0;
+ top: 0;
+ -webkit-transform: translate3d(50%, -50%, 0);
+}
+
+.point-bl {
+ left: 0;
+ bottom: 0;
+ -webkit-transform: translate3d(-50%, 50%, 0);
+}
+
+.point-lt {
+ top: 0;
+ left: 0;
+ -webkit-transform: translate3d(-50%, -50%, 0);
+}
+
+.point-rb::before,
+.point-rb::after,
+.point-tr::before,
+.point-tr::after,
+.point-bl::before,
+.point-bl::after,
+.point-lt::before,
+.point-lt::after {
+ content: '';
+ position: absolute;
+ background-color: var(--primary-color);
+}
+
+/* 右下 */
+.point-rb::before {
+ width: 6rpx;
+ height: 30rpx;
+ right: calc(50% - 6rpx);
+ bottom: calc(50% - 6rpx);
+}
+
+.point-rb::after {
+ height: 6rpx;
+ width: 30rpx;
+ right: calc(50% - 6rpx);
+ bottom: calc(50% - 6rpx);
+}
+
+/* 右上 */
+.point-tr::before {
+ width: 6rpx;
+ height: 30rpx;
+ right: calc(50% - 6rpx);
+ top: calc(50% - 6rpx);
+}
+
+.point-tr::after {
+ height: 6rpx;
+ width: 30rpx;
+ right: calc(50% - 6rpx);
+ top: calc(50% - 6rpx);
+}
+
+/* 左下 */
+.point-bl::before {
+ width: 6rpx;
+ height: 30rpx;
+ left: calc(50% - 6rpx);
+ bottom: calc(50% - 6rpx);
+}
+
+.point-bl::after {
+ height: 6rpx;
+ width: 30rpx;
+ left: calc(50% - 6rpx);
+ bottom: calc(50% - 6rpx);
+}
+
+/* 左上 */
+.point-lt::before {
+ width: 6rpx;
+ height: 30rpx;
+ left: calc(50% - 6rpx);
+ top: calc(50% - 6rpx);
+}
+
+.point-lt::after {
+ height: 6rpx;
+ width: 30rpx;
+ left: calc(50% - 6rpx);
+ top: calc(50% - 6rpx);
+}
+
+.point-b {
+ left: 50%;
+ top: 100%;
+ margin-left: -3px;
+ margin-top: -3px;
+ cursor: n-resize;
+}
+
+.point-l {
+ left: 0%;
+ top: 50%;
+ margin-left: -3px;
+ margin-top: -3px;
+ cursor: n-resize;
+}
+
+/* 裁剪框预览内容 */
+.wx-cropper-viewer {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+}
+
+.wx-cropper-viewer image {
+ position: absolute;
+ z-index: 2;
+}
\ No newline at end of file
diff --git a/project.config.json b/project.config.json
index eb21eb3..f520b8a 100644
--- a/project.config.json
+++ b/project.config.json
@@ -113,6 +113,35 @@
"pathName": "pages/home/index",
"query": "orderid=20201229132338964625",
"scene": null
+ },
+ {
+ "name": "pages/user/companyMine/focusedCompany/focusedCompany",
+ "pathName": "pages/user/companyMine/focusedCompany/focusedCompany",
+ "query": "",
+ "scene": null
+ },
+ {
+ "name": "pages/user/companyMine/myTeam/myTeam",
+ "pathName": "pages/user/companyMine/myTeam/myTeam",
+ "query": "",
+ "scene": null
+ },
+ {
+ "name": "pages/user/companyMine/myBlockchain/myBlockchain",
+ "pathName": "pages/user/companyMine/myBlockchain/myBlockchain",
+ "query": "",
+ "scene": null
+ },
+ {
+ "name": "pages/user/setting/setting",
+ "pathName": "pages/user/setting/setting",
+ "query": "",
+ "scene": null
+ },
+ {
+ "name": "pages/user/setting/aboutMine/aboutMine",
+ "pathName": "pages/user/setting/aboutMine/aboutMine",
+ "scene": null
}
]
}
diff --git a/static/images/aboutAdvice.png b/static/images/aboutAdvice.png
new file mode 100644
index 0000000000000000000000000000000000000000..77b87b992dfa9087039cd7c912151a72637545cd
GIT binary patch
literal 6165
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
literal 0
HcmV?d00001
diff --git a/static/images/zs.png b/static/images/zs.png
new file mode 100644
index 0000000000000000000000000000000000000000..09a061f099ce547d751c4b72d0e6bf37b2dd2baa
GIT binary patch
literal 68866
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%0A;96LEFlJ*$C!=~<-C8Db~X8nNR`_!_qq>zMUE
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