Browse Source

我的订单/书车/我的地址/建议与反馈/关于我们

master
xuhuajiao 1 year ago
parent
commit
e33b913574
  1. 162
      library-activity/package-lock.json
  2. 3
      library-activity/package.json
  3. 26
      library-activity/src/assets/css/reset.css
  4. 163
      library-activity/src/assets/css/style.scss
  5. BIN
      library-activity/src/assets/images/192logo.png
  6. BIN
      library-activity/src/assets/images/address-icon1.png
  7. BIN
      library-activity/src/assets/images/address-icon2.png
  8. BIN
      library-activity/src/assets/images/address-icon3.png
  9. BIN
      library-activity/src/assets/images/address-icon4.png
  10. BIN
      library-activity/src/assets/images/address-icon5-1.png
  11. BIN
      library-activity/src/assets/images/address-icon5.png
  12. BIN
      library-activity/src/assets/images/address-icon6.png
  13. BIN
      library-activity/src/assets/images/order-icon.png
  14. 16
      library-activity/src/components/tabBar/index.vue
  15. 12
      library-activity/src/main.js
  16. 138
      library-activity/src/router/index.js
  17. 93
      library-activity/src/views/aboutUs/aboutUs.vue
  18. 176
      library-activity/src/views/cart/cart.vue
  19. 43
      library-activity/src/views/cart/result.vue
  20. 97
      library-activity/src/views/feedback/feedback.vue
  21. 63
      library-activity/src/views/index.vue
  22. 152
      library-activity/src/views/mine/mine.vue
  23. 182
      library-activity/src/views/myAddress/addAddress.vue
  24. 170
      library-activity/src/views/myAddress/myAddress.vue
  25. 566
      library-activity/src/views/order/order.vue

162
library-activity/package-lock.json

@ -1,5 +1,5 @@
{
"name": "vue3-fcms-front",
"name": "vue3-mobile",
"version": "0.0.0",
"lockfileVersion": 1,
"requires": true,
@ -667,6 +667,11 @@
"@types/node": "*"
}
},
"@vant/area-data": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/@vant/area-data/-/area-data-1.5.1.tgz",
"integrity": "sha512-gR5TPEzTbxN1cTK1aDhCoyikSCLX7DAacxyXoKyI4SAsYYTZrDl/nLgQFIm9vLsvWzlPIda8xV8/U3x7M9k6ww=="
},
"@vant/icons": {
"version": "1.8.0",
"resolved": "https://registry.npmmirror.com/@vant/icons/-/icons-1.8.0.tgz",
@ -1499,15 +1504,6 @@
}
}
},
"copy-anything": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
"integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
"dev": true,
"requires": {
"is-what": "^3.14.1"
}
},
"copy-descriptor": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
@ -1890,16 +1886,6 @@
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
"dev": true
},
"errno": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
"integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
"dev": true,
"optional": true,
"requires": {
"prr": "~1.0.1"
}
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz",
@ -2459,16 +2445,6 @@
"integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=",
"dev": true
},
"iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
"optional": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
}
},
"icss-replace-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz",
@ -2724,12 +2700,6 @@
"integrity": "sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc= sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true
},
"is-what": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
"integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
"dev": true
},
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@ -3054,48 +3024,6 @@
}
}
},
"less": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz",
"integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
"dev": true,
"requires": {
"copy-anything": "^2.0.1",
"errno": "^0.1.1",
"graceful-fs": "^4.1.2",
"image-size": "~0.5.0",
"make-dir": "^2.1.0",
"mime": "^1.4.1",
"needle": "^3.1.0",
"parse-node-version": "^1.0.1",
"source-map": "~0.6.0",
"tslib": "^2.3.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"optional": true
},
"tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
"dev": true
}
}
},
"less-loader": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz",
"integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==",
"dev": true,
"requires": {
"klona": "^2.0.4"
}
},
"lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.nlark.com/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
@ -3232,33 +3160,6 @@
"sourcemap-codec": "^1.4.4"
}
},
"make-dir": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"optional": true,
"requires": {
"pify": "^4.0.1",
"semver": "^5.6.0"
},
"dependencies": {
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
"optional": true
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
"optional": true
}
}
},
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@ -3491,30 +3392,6 @@
}
}
},
"needle": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz",
"integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==",
"dev": true,
"optional": true,
"requires": {
"debug": "^3.2.6",
"iconv-lite": "^0.6.3",
"sax": "^1.2.4"
},
"dependencies": {
"debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dev": true,
"optional": true,
"requires": {
"ms": "^2.1.1"
}
}
}
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
@ -3794,12 +3671,6 @@
"lines-and-columns": "^1.1.6"
}
},
"parse-node-version": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
"integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
"dev": true
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
@ -4187,13 +4058,6 @@
"posthtml-render": "^1.0.6"
}
},
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
"dev": true,
"optional": true
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.nlark.com/pump/download/pump-3.0.0.tgz",
@ -4496,13 +4360,6 @@
"ret": "~0.1.10"
}
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"optional": true
},
"sass": {
"version": "1.69.4",
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.69.4.tgz",
@ -4514,13 +4371,6 @@
"source-map-js": ">=0.6.2 <2.0.0"
}
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true,
"optional": true
},
"selfsigned": {
"version": "1.10.8",
"resolved": "https://registry.nlark.com/selfsigned/download/selfsigned-1.10.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.8.tgz",

3
library-activity/package.json

@ -10,11 +10,12 @@
"dependencies": {
"@sentry/browser": "^6.3.1",
"@sentry/tracing": "^6.3.1",
"@vant/area-data": "^1.5.1",
"axios": "^0.21.1",
"js-md5": "^0.7.3",
"pushstate-server": "^3.1.0",
"qs": "^6.9.6",
"vant": "^3.1.5",
"vant": "^3.6.12",
"vue": "^3.0.5",
"vue-router": "^4.0.4",
"vuex": "4.0",

26
library-activity/src/assets/css/reset.css

@ -163,29 +163,3 @@ body{
overflow-x: hidden;
background-color: #F4F4FC;
}
.main {
width: 100%;
overflow-x: hidden;
/* padding-bottom: 1rem; */
background-color: #F4F4FC;
display: flex;
flex-direction: column;
}
.overflow-txt-only{
word-break: break-all;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.overflow-txt{
word-break: break-all;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}

163
library-activity/src/assets/css/style.scss

@ -0,0 +1,163 @@
.main {
width: 100%;
overflow-x: hidden;
background-color: #F4F4FC;
display: flex;
flex-direction: column;
}
.overflow-txt-only{
word-break: break-all;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
}
.overflow-txt{
word-break: break-all;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.top-header{
position: fixed;
top: 0;
left: 0;
right: 0;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 .32rem;
height: 1rem;
background-color: #fff;
box-shadow: 0 .06rem .1rem 1px #EFECEC;
z-index: 999;
.back{
display: block;
width: .5rem;
height: .5rem;
background: url('@assets/images/back.png') no-repeat transparent;
background-size: .5rem .5rem;
}
P{
flex: 1;
text-align: center;
font-size: .4rem;
}
.setting-header{
font-size: .32rem;
}
}
.list-top{
display: flex;
justify-content: flex-start;
align-items: center;
.top-info{
display: flex;
flex: 1;
justify-content: space-between;
align-items: center;
}
.active-name{
position: relative;
padding: 0 0.375rem;
font-size: .34rem;
font-weight: bold;
background: url('@assets/images/gift.png') no-repeat left center;
background-size: 0.3rem 0.3rem;
&::after{
position: absolute;
right: 0;
top: 50%;
content: "";
width: .16rem;
height: .16rem;
background: url('@assets/images/arrow.png') no-repeat center center;
background-size:.16rem .16rem;
transform: translateY(-50%)
}
}
}
.dealer{
padding-left: .3rem;
font-size: .28rem;
background: url('@assets/images/dealer.png') no-repeat left center;
background-size: .22rem .22rem;
}
.product-cont{
flex: 1;
display: flex;
justify-content: flex-start;
.product-img{
width: 1.2rem;
height: 1.6rem;
margin: 0 0.16rem 0 0;
background-color: #f1f1f1;
border-radius: 0.04rem;
overflow: hidden;
}
.product-txt{
flex: 1;
.product-info{
h4{
font-size: .28rem;
}
.author-date{
display: flex;
justify-content: flex-start;
margin: .06rem 0;
p{
font-size: .2rem;
padding: 0 .08rem;
margin-right: 0.1rem;
background-color: #FFF5E2;
color: #C47925;
}
}
.intro{
font-size: .24rem;
opacity: 0.6;
}
}
.product-bottom{
display: flex;
justify-content: space-between;
align-items: center;
color: #757676;
.product-price{
span{
display: inline-block;
font-size: .36rem;
font-weight: bold;
color: #000;
margin-right: 0.13rem;
.rmb{
font-style: normal;
font-size: .24rem;
text-decoration: none;
color: #000;
}
}
i{
font-style: normal;
text-decoration: line-through;
color: #FF3871;
}
}
.item-delt{
width: .36rem;
height: .36rem;
background: url('@assets/images/address-icon5-1.png') no-repeat center center #FF3871;
background-size: .26rem .26rem;
border-radius: 0.04rem;
}
}
}
}

BIN
library-activity/src/assets/images/192logo.png

After

Width: 192  |  Height: 192  |  Size: 4.3 KiB

BIN
library-activity/src/assets/images/address-icon1.png

After

Width: 28  |  Height: 28  |  Size: 2.0 KiB

BIN
library-activity/src/assets/images/address-icon2.png

After

Width: 40  |  Height: 40  |  Size: 1.2 KiB

BIN
library-activity/src/assets/images/address-icon3.png

After

Width: 26  |  Height: 26  |  Size: 929 B

BIN
library-activity/src/assets/images/address-icon4.png

After

Width: 26  |  Height: 26  |  Size: 903 B

BIN
library-activity/src/assets/images/address-icon5-1.png

After

Width: 26  |  Height: 26  |  Size: 1.6 KiB

BIN
library-activity/src/assets/images/address-icon5.png

After

Width: 26  |  Height: 26  |  Size: 660 B

BIN
library-activity/src/assets/images/address-icon6.png

After

Width: 32  |  Height: 32  |  Size: 674 B

BIN
library-activity/src/assets/images/order-icon.png

After

Width: 48  |  Height: 20  |  Size: 831 B

16
library-activity/src/components/tabBar/index.vue

@ -59,35 +59,35 @@ export default {
align-items: center;
text-align: center;
width: 100%;
height: 1.225rem;
height: 1rem;
background-color: #fff;
.bar-item {
flex: 1;
font-size: 0.275rem;
font-size: .22rem;
color: #BEC7DC;
i {
display: block;
width: 0.6rem;
height: 0.6rem;
width: .48rem;
height: .48rem;
margin: 0 auto;
}
&:first-child {
i {
background: url('@assets/images/active.png') no-repeat;
background-size: cover;
background-size: 100% 100%;
}
}
&:nth-child(2) {
i {
background: url('@assets/images/cart.png') no-repeat;
background-size: cover;
background-size: 100% 100%;
}
}
&:last-child {
i {
background: url('@assets/images/mine.png') no-repeat;
background-size: cover;
background-size: 100% 100%;
}
}
&.active {
@ -95,7 +95,7 @@ export default {
&:first-child {
i {
background: url('@assets/images/activeA.png') no-repeat;
background-size: cover;
background-size: 100% 100%;
}
}
&:nth-child(2) {

12
library-activity/src/main.js

@ -15,14 +15,13 @@ import '@/assets/css/reset.css'
import '@/assets/css/swiper6.min.css'
import '@/assets/js/rem.js'
import '@/assets/js/swiper6.min.js'
import '@/assets/css/style.scss'
import { Toast, Swipe, SwipeItem, Popup, Picker, Tab, Tabs, Dialog, Uploader, DatetimePicker, Slider, Checkbox, CheckboxGroup } from 'vant';
import { Toast, Swipe, SwipeItem, Popup, Picker, Tab, Tabs, Dialog, Uploader, DatetimePicker, Slider, Checkbox, CheckboxGroup, Form, Field, CellGroup, Area,Button } from 'vant';
import 'vant/lib/index.css';
Toast.setDefaultOptions({ duration: 500 });
//vue.use(Toast);
// 路由拦截器
@ -126,7 +125,12 @@ app.use(Toast)
.use(SwipeItem)
.use(Slider)
.use(Checkbox)
.use(CheckboxGroup);
.use(CheckboxGroup)
.use(Form)
.use(Field)
.use(CellGroup)
.use(Area)
.use(Button);
app.config.globalProperties.$API = $API
app.config.globalProperties.$http = $http

138
library-activity/src/router/index.js

@ -26,115 +26,37 @@ const router = createRouter({
name: 'CartResult',
component: () =>
import('@/views/cart/result.vue'),
},
{
path: '/Feedback',
name: 'Feedback',
component: () =>
import('@/views/feedback/feedback.vue'),
},
{
path: '/AboutUs',
name: 'AboutUs',
component: () =>
import('@/views/aboutUs/aboutUs.vue'),
},
{
path: '/MyAddress',
name: 'MyAddress',
component: () =>
import('@/views/myAddress/myAddress.vue'),
},
{
path: '/AddAddress',
name: 'AddAddress',
component: () =>
import('@/views/myAddress/addAddress.vue'),
},
{
path: '/Order',
name: 'Order',
component: () =>
import('@/views/order/order.vue'),
}
// {
// path: '/Login',
// name: 'Login',
// component: () =>
// import('@/views/login/login.vue'),
// },
// {
// path: '/Registered',
// name: 'Registered',
// component: () =>
// import('@/views/registered/registered.vue'),
// },
// {
// path: '/Registered1',
// name: 'Registered1',
// component: () =>
// import('@/views/registered1/registered1.vue'),
// },
// {
// path: '/ResetPassword1',
// name: 'ResetPassword1',
// component: () =>
// import('@/views/ResetPassword1/ResetPassword1.vue'),
// },
// {
// path: '/ResetPassword2',
// name: 'ResetPassword2',
// component: () =>
// import('@/views/ResetPassword2/ResetPassword2.vue'),
// },
// {
// path: '/ResetPassword3',
// name: 'ResetPassword3',
// component: () =>
// import('@/views/ResetPassword3/ResetPassword3.vue'),
// },
// {
// path: '/Mine',
// name: 'Mine',
// component: () =>
// import('@/views/mine/mine.vue'), // 我的页面
// },
// {
// path: '/MineInfo',
// name: 'MineInfo',
// component: () =>
// import('@/views/mineInfo/mineInfo.vue'), // 个人资料页面
// },
// {
// path: '/MineRule',
// name: 'MineRule',
// component: () =>
// import('@/views/mineRule/mineRule.vue'), // 规则页面
// },
// {
// path: '/MineCard',
// name: 'MineCard',
// component: () =>
// import('@/views/mineCard/mineCard.vue'), // 我的图书证
// },
// {
// path: '/ChangePhone',
// name: 'ChangePhone',
// component: () =>
// import('@/views/ChangePhone/ChangePhone.vue'), // 修改手机号
// },
// {
// path: '/ChangeMineCard',
// name: 'ChangeMineCard',
// component: () =>
// import('@/views/changeMineCard/changeMineCard.vue'), // 切换读者证
// },
// {
// path: '/MineVerifyLogin',
// name: 'MineVerifyLogin',
// component: () =>
// import('@/views/mineVerifyLogin/mineVerifyLogin.vue'), // 切换读者证验证账号密码
// },
// {
// path: '/ActivityList',
// name: 'ActivityList',
// component: () =>
// import('@/views/activityList/activityList.vue'), // 线上活动/线下活动列表
// },
// {
// path: '/LoreActiveDetails',
// name: 'LoreActiveDetails',
// component: () =>
// import('@/views/loreActiveDetails/loreActiveDetails.vue'), // 活动列表 - 内容详情
// },
// {
// path: '/AboutUs',
// name: 'AboutUs',
// component: () =>
// import('@/views/aboutUs/aboutUs.vue'), // 关于我们
// },
// {
// path: '/Protocol',
// name: 'Protocol',
// component: () =>
// import('@/views/protocol/protocol.vue'), // 关于我们详情
// },
// {
// path: '/bindMobilePhone',
// name: 'bindMobilePhone',
// component: () =>
// import('@/views/bindMobilePhone/bindMobilePhone.vue'), // 绑定手机号页面
// }
]
})

93
library-activity/src/views/aboutUs/aboutUs.vue

@ -0,0 +1,93 @@
<template>
<div class="main">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>关于我们</p>
</div>
<div class="about-main">
<img src="@assets/images/192logo.png" alt="" />
<p>爱图图书馆</p>
<span class="verinfo">Version 10.00.1</span>
<!-- <div class="go-evaluate" @click="toFeedback">去评价</div> -->
<div class="about-bottom">
<span>版权信息</span>
<span>软件许可使用协议</span>
</div>
</div>
<!-- <TabBar :tabCur.sync="tabCur" /> -->
</div>
</template>
<script>
import { reactive, onMounted, getCurrentInstance, toRefs } from 'vue'
export default {
name: 'AboutUs',
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
tabCur: 1
})
onMounted(() => {})
let toBack = () => {
proxy.$router.go(-1);
}
let toFeedback = () => {
proxy.$router.push({ path: '/Feedback' })
}
return {
...toRefs(data),
toBack,
toFeedback
}
},
}
</script>
<style scoped lang="scss">
.about-main{
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
height: calc(100vh - 1rem);
padding: 1rem 0.32rem 0 0.32rem;
background-color: #fff;
img{
display: block;
width: 2.2rem;
margin-top: 1.6rem;
border-radius: 0.15rem;
}
p{
font-size: .4rem;
font-weight: bold;
margin-top: 0.26rem;
}
.verinfo{
font-size: .3rem;
opacity: 0.6;
}
.go-evaluate{
font-size: .3rem;
width: 100%;
padding: 0.16rem 0;
margin: 1rem .26rem 0 .26rem;
border-top: 1px solid #C6C6E2;
border-bottom: 1px solid #C6C6E2;
background: url('@assets/images/arrow.png') no-repeat right center;
background-size: .16rem .16rem;
}
.about-bottom{
position: fixed;
bottom: 1.2rem;
left: 50%;
font-size: .24rem;
opacity: 0.4;
text-align: center;
transform: translateX(-50%);
span{
display: block;
}
}
}
</style>

176
library-activity/src/views/cart/cart.vue

@ -3,7 +3,7 @@
<div class="cart-main">
<div class="cart-top">
<div class="cart-num">图书数量<span>(5)</span></div>
<span @click="cartDelt">管理</span>
<span @click="cartDelt">{{ !isDeltHandle ? '管理' : '完成' }}</span>
</div>
<div class="cart-list">
<div class="cart-item">
@ -30,7 +30,8 @@
</div>
<div class="product-bottom">
<p class="product-price">实付款 <span><i class="rmb"></i>29.0</span><i>129.0</i></p>
<span class="product-num">x1</span>
<span v-if="!isDeltHandle" class="product-num">x1</span>
<span v-else class="item-delt"></span>
</div>
</div>
</div>
@ -50,7 +51,8 @@
</div>
<div class="product-bottom">
<p class="product-price">实付款 <span><i class="rmb"></i>29.0</span><i>129.0</i></p>
<span class="product-num">x1</span>
<span v-if="!isDeltHandle" class="product-num">x1</span>
<span v-else class="item-delt"></span>
</div>
</div>
</div>
@ -82,7 +84,8 @@
</div>
<div class="product-bottom">
<p class="product-price">实付款 <span><i class="rmb"></i>29.0</span><i>129.0</i></p>
<span class="product-num">x1</span>
<span v-if="!isDeltHandle" class="product-num">x1</span>
<span v-else class="item-delt"></span>
</div>
</div>
</div>
@ -137,7 +140,7 @@ export default {
<style scoped lang="scss">
.cart-main{
padding: 0.25rem .125rem 2.375rem .125rem;
padding: 0 .16rem 2.2rem .16rem;
color: #191A1A;
.cart-top{
position: fixed;
@ -147,133 +150,36 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
font-size: .3rem;
padding: .25rem;
font-size: .32rem;
padding: .18rem .32rem;
background-color: #F4F4FC;
z-index: 999;
.cart-num{
font-size: .3rem;
font-size: .32rem;
opacity: 0.6;
span{
font-size: 0.25rem;
font-size: 0.3rem;
}
}
}
}
.cart-list{
padding-top: .875rem;
padding-top: 1rem;
}
.cart-item{
padding: .25rem;
margin-bottom: .1875rem;
box-shadow: 0px .0375rem 0.75rem 1px rgba(0,0,0,0.08);
padding: .24rem;
margin-bottom: .2rem;
box-shadow: 0px .03rem 0.6rem 1px rgba(0,0,0,0.08);
border-radius: 0.1rem;
background-color: #fff;
.list-top{
display: flex;
justify-content: flex-start;
align-items: center;
.top-info{
display: flex;
flex: 1;
justify-content: space-between;
align-items: center;
}
.active-name{
position: relative;
padding: 0 0.375rem;
font-size: .3rem;
background: url('@assets/images/gift.png') no-repeat left center;
background-size: 0.275rem 0.275rem;
&::after{
position: absolute;
right: 0;
top: 50%;
content: "";
width: .2rem;
height: .2rem;
background: url('@assets/images/arrow.png') no-repeat center center;
background-size:.2rem .2rem;
transform: translateY(-50%)
}
}
.dealer{
padding-left: .4rem;
font-size: .3rem;
background: url('@assets/images/dealer.png') no-repeat left center;
background-size: .3rem .3rem;
}
}
}
.product-list{
.product-item{
display: flex;
justify-content: flex-start;
margin-top: .25rem;
.product-cont{
flex: 1;
display: flex;
justify-content: flex-start;
.product-img{
width: 1.25rem;
height: 1.75rem;
margin: .125rem 0.2rem 0 0;
background-color: #f1f1f1;
border-radius: 0.05rem;
overflow: hidden;
}
.product-txt{
flex: 1;
.product-info{
h4{
font-size: .3rem;
}
.author-date{
display: flex;
justify-content: flex-start;
margin: .075rem 0;
p{
font-size: .25rem;
padding: 0 .05rem;
margin-right: 0.1rem;
background-color: #F4F6FC;
color: #717275;
}
}
.intro{
font-size: .25rem;
opacity: 0.6;
}
}
.product-bottom{
display: flex;
justify-content: space-between;
align-items: center;
color: #757676;
.product-price{
span{
display: inline-block;
font-size: .35rem;
font-weight: bold;
color: #000;
margin-right: 0.175rem;
.rmb{
font-style: normal;
font-size: .25rem;
text-decoration: none;
color: #000;
}
}
i{
font-style: normal;
text-decoration: line-through;
color: #FF3871;
}
}
}
}
}
margin-top: .3rem;
}
}
@ -281,10 +187,10 @@ export default {
position: fixed;
left: 0;
right: 0;
bottom: 1.225rem;
padding: 0 .4rem;
bottom: 0.98rem;
padding: 0 .32rem;
height: 1rem;
background-color: #fcfcfc;
background: linear-gradient(#fff, #f1f1f1);
display: flex;
justify-content: space-between;
align-items: center;
@ -292,66 +198,66 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
font-size: .3rem;
font-size: .28rem;
.total-num{
font-size: 0.3rem;
font-size: 0.28rem;
span{
font-size: .35rem;
font-size: .4rem;
font-weight: bold;
color: #FF3871;
.rmb{
font-style: normal;
font-size: .25rem;
font-size: .28rem;
text-decoration: none;
}
}
}
.pay-btn{
width: 1.875rem;
height: 0.75rem;
margin-left: 0.5rem;
line-height: 0.75rem;
width: 1.5rem;
height: 0.6rem;
margin-left: 0.4rem;
line-height: 0.6rem;
text-align: center;
color: #fff;
background: url('@assets/images/btn3.png') no-repeat center center;
background-size: 100% 100%;
}
.delt-btn{
width: 1.875rem;
height: 0.75rem;
line-height: 0.75rem;
font-size: .3rem;
width: 1.5rem;
height: 0.6rem;
line-height: 0.6rem;
font-size: .28rem;
color: #000;
text-align: center;
border: 2px solid #000;
border: 0.02rem solid #000;
opacity: 0.6;
border-radius: .625rem;
border-radius: .4rem;
}
}
}
.van-checkbox{
margin-right: .15rem;
margin-right: .2rem;
}
:deep(.van-checkbox__icon){
height: .325rem;
height: .35rem;
}
:deep(.van-checkbox__icon .van-icon){
width: .325rem;
height: .325rem;
width: .35rem;
height: .35rem;
border-color: rgba(0,0,0,.3);
}
:deep(.van-checkbox__icon--checked .van-icon){
border: none;
background: url('@assets/images/selected.png') no-repeat transparent;
background-size: .325rem .325rem;
background-size: .35rem .35rem;
}
:deep(.van-icon-success:before){
display: none;
}
:deep(.van-checkbox__label){
font-size: .3rem;
font-size: .28rem;
}
</style>

43
library-activity/src/views/cart/result.vue

@ -1,6 +1,6 @@
<template>
<div class="main">
<div class="result-header">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>下单成功</p>
</div>
@ -46,27 +46,6 @@ export default {
</script>
<style scoped lang="scss">
.result-header{
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 .4rem;
height: 1rem;
background-color: #fff;
box-shadow: 0px .075rem .125rem 1px #EFECEC;
.back{
display: block;
width: .5rem;
height: .5rem;
background: url('@assets/images/back.png') no-repeat transparent;
background-size: .5rem .5rem;
}
P{
flex: 1;
text-align: center;
font-size: .375rem;
}
}
.result-main{
display: flex;
flex-direction: column;
@ -74,29 +53,29 @@ export default {
padding-top: 1.875rem;
img{
display: block;
width: 3.125rem;
width: 2.5rem;
}
p{
margin: .5rem 0 .125rem 0;
margin: .4rem 0 .1rem 0;
font-size: .4rem;
font-weight: bold;
}
.tip{
font-size: .325rem;
font-size: .26rem;
}
.result-btn{
margin-top: 1rem;
margin-top: 0.8rem;
span{
display: inline-block;
width: 2.5rem;
height: .875rem;
line-height: .875rem;
margin: 0 .25rem;
font-size: .35rem;
width: 2.4rem;
height: .8rem;
line-height: .8rem;
margin: 0 .21rem;
font-size: .32rem;
text-align: center;
color: #5A86F4;
border: 1px solid #5A86F4;
border-radius: .625rem;
border-radius: .49rem;
&.result-btn-more{
background-color: #5A86F4;
color: #fff;

97
library-activity/src/views/feedback/feedback.vue

@ -0,0 +1,97 @@
<template>
<div class="main">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>反馈或建议</p>
</div>
<div class="feedBack-main">
<div class="feedBack-cont">
<div class="feedBack-user">
<div class="user-img">
<img src="" alt="" />
</div>
<p>张秀才</p>
</div>
<div class="fb-input">
<textarea placeholder="HI,请留下您的反馈或建议吧!"></textarea>
</div>
</div>
<div class="feedback-btn">提交</div>
</div>
</div>
</template>
<script>
import { reactive, onMounted, getCurrentInstance, toRefs } from 'vue'
export default {
name: 'Feedback',
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
})
onMounted(() => {})
let toBack = () => {
proxy.$router.go(-1);
}
return {
...toRefs(data),
toBack
}
},
}
</script>
<style scoped lang="scss">
.feedBack-main{
height: calc(100vh - 1rem);
padding: 1rem 0.32rem 0 0.32rem;
background-color: #fff;
.feedBack-cont{
margin-top: 1.14rem;
background-color: #fff;
box-shadow: 0px 0.03rem .6rem 1px rgba(0,0,0,0.08);
border-radius: .08rem;
.feedBack-user{
display: flex;
justify-content: flex-start;
.user-img{
width: 1.24rem;
height: 1.24rem;
margin: -.4rem .24rem 0 .36rem;
border-radius: 50%;
background-color: #f1f1f1;
overflow: hidden;
}
p{
font-size: .4rem;
padding-top: .1rem;
}
}
.fb-input{
margin-top: .24rem;
padding: .3rem .32rem;
border-top: 1px solid #C6C6E2;
textarea{
width: calc(100% - .48rem);
height: 2.4rem;
padding: .24rem;
font-size: .24rem;
background-color: #F1F1F9;
color: #717274;
border-radius: .08rem;
}
}
}
.feedback-btn{
width: 4.48rem;
height: .98rem;
line-height: .98rem;
margin: 1.2rem auto 0 auto;
text-align: center;
background: #5A86F4;
border-radius: .5rem;
font-size: .36rem;
color: #fff; }
}
</style>

63
library-activity/src/views/index.vue

@ -315,7 +315,7 @@ export default {
<style lang="scss" scoped>
.index-header {
padding: 0 0.4rem;
padding: 0 0.32rem;
height: 1.125rem;
line-height: 1.125rem;
font-size: 0.5rem;
@ -323,20 +323,19 @@ export default {
background-color: #5a86f4;
}
.active-main{
padding-bottom: 1.475rem;
padding-bottom: 1.2rem;
}
.active-list {
padding: 0 0.4rem;
font-size: 0.3rem;
padding: 0 .32rem;
font-size: 0.24rem;
color: #191a1a;
.active-item {
background-color: #fff;
margin-top: 0.25rem;
margin-top: 0.2rem;
box-shadow: 0px 0.0375rem 0.75rem 1px rgba(0, 0, 0, 0.08);
border-radius: 0.1rem;
.active-img {
position: relative;
// height: 3.55rem;
img {
display: block;
width: 100%;
@ -346,75 +345,75 @@ export default {
top: 0;
left: 0;
display: block;
padding: 0 0.125rem;
padding: 0 0.1rem;
height: 0.6rem;
line-height: 0.6rem;
font-size: 0.3rem;
font-size: 0.24rem;
text-align: center;
color: #fff;
background-color: rgba(0, 0, 0, 0.4);
border-radius: 0.1rem 0 0.1rem 0;
border-radius: 0.08rem 0 0.08rem 0;
}
}
.active-info {
margin-top: 0.25rem;
padding: 0 0.25rem;
margin-top: 0.2rem;
padding: 0 0.2rem;
.active-info-top {
display: flex;
justify-content: flex-start;
h4 {
margin-right: 0.125rem;
font-size: 0.45rem;
font-size: 0.36rem;
font-weight: 800;
}
span {
margin-top: 0.225rem;
margin-top: 0.17rem;
color: #f3a916;
}
}
}
.active-time {
padding: 0 0.25rem 0 0.625rem;
background: url('@assets/images/time.png') no-repeat 0.25rem center;
background-size: 0.325rem 0.325rem;
padding: 0 0.2rem 0 0.55rem;
background: url('@assets/images/time.png') no-repeat 0.2rem center;
background-size: 0.26rem 0.26rem;
}
.active-bottom {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.125rem 0.25rem 0.15rem 0.25rem;
padding: 0.12rem 0.2rem 0.2rem 0.2rem;
.active-slogn {
position: relative;
height: 0.55rem;
line-height: 0.55rem;
font-size: 0.25rem;
padding: 0 0.15rem;
height: 0.44rem;
line-height: 0.44rem;
font-size: 0.2rem;
padding: 0 0.12rem;
background-color: #f4f6fc;
border-radius: 0.05rem;
&::before {
content: '';
position: absolute;
top: -0.1rem;
left: 0.15rem;
width: 0.175rem;
height: 0.175rem;
top: -0.08rem;
left: 0.12rem;
width: 0.14rem;
height: 0.14rem;
background: url('@assets/images/yh1.png') no-repeat;
background-size: 100% 100%;
}
&::after {
content: '';
position: absolute;
bottom: -0.1rem;
right: 0.15rem;
width: 0.175rem;
height: 0.175rem;
bottom: -0.08rem;
right: 0.12rem;
width: 0.14rem;
height: 0.14rem;
background: url('@assets/images/yh2.png') no-repeat;
background-size: 100% 100%;
}
}
.active-btn {
width: 2.28rem;
height: 0.75rem;
width: 1.83rem;
height: 0.6rem;
background: url('@assets/images/btn1.png') no-repeat;
background-size: 100% 100%;
&.wait-btn {
@ -429,7 +428,7 @@ export default {
.active-nodata {
img {
display: block;
width: 5rem;
width: 4rem;
margin: 0 auto;
}
}

152
library-activity/src/views/mine/mine.vue

@ -19,7 +19,7 @@
<div class="mine-item mine-order">
<div class="mine-title">
<h4>我的订单</h4>
<span>查看全部</span>
<span @click="toOrder">查看全部</span>
</div>
<div class="order-handle">
<div class="order-item">
@ -93,19 +93,19 @@
<h4>更多设置</h4>
</div>
<div class="setting">
<div class="setting-item">我的收货地址</div>
<div class="setting-item">帮助与反馈</div>
<div class="setting-item">关于我们</div>
<div class="setting-item" @click="toMyAddress">我的收货地址</div>
<div class="setting-item" @click="toFeedback">帮助与反馈</div>
<div class="setting-item" @click="toAboutUs">关于我们</div>
</div>
</div>
</div>
<TabBar :tabCur.sync="data.tabCur" />
<TabBar :tabCur.sync="tabCur" />
</div>
</template>
<script>
import { Toast } from 'vant'
import { reactive, computed, onMounted, getCurrentInstance, watch } from 'vue'
import { reactive, onMounted, getCurrentInstance, toRefs } from 'vue'
import TabBar from '@/components/tabBar/index.vue'
export default {
name: 'Mine',
@ -113,11 +113,27 @@ export default {
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
tabCur: 2,
tabCur: 2
})
let toOrder = () => {
proxy.$router.push({ path: '/Order' })
}
let toMyAddress = () => {
proxy.$router.push({ path: '/MyAddress' })
}
let toAboutUs = () => {
proxy.$router.push({ path: '/AboutUs' })
}
let toFeedback = () => {
proxy.$router.push({ path: '/Feedback' })
}
onMounted(() => {})
return {
data
...toRefs(data),
toOrder,
toMyAddress,
toAboutUs,
toFeedback
}
},
}
@ -127,12 +143,12 @@ export default {
.mine-top {
position: relative;
width: 100%;
height: 140px;
height: 3.2rem;
background: url('@assets/images/minebg.png') no-repeat left top;
background-size: 100% 100%;
.user-main {
margin: 1.625rem.2rem 0 .2rem;
padding-bottom: .4rem;
margin: 1.9rem .32rem 0 .32rem;
padding-bottom: .3rem;
background-color: #fff;
border-radius: 0.1rem;
}
@ -140,37 +156,41 @@ export default {
display: flex;
justify-content: flex-start;
align-items: center;
padding-top: .225rem;
.user-img{
width: 1.5rem;
height: 1.5rem;
margin: -0.625rem 0 0 .75rem;
width: 1.3rem;
height: 1.3rem;
margin: -0.34rem 0 0 .75rem;
border-radius: 50%;
overflow: hidden;
background-color: #fff;
img{
display: block;
width: 1.45rem;
width: 1.2rem;
height: 1.2rem;
margin: 0 auto;
background-color: #f1f1f1;
border-radius: 50%;
overflow: hidden;
}
}
.user-name{
font-size: 0.4rem;
flex: 1;
margin-left: 0.1875rem;
margin-left: 0.15rem;
}
.user-tip{
position: relative;
padding: 0.2rem .2rem .2rem .375rem;
margin-right: .2rem;
font-size: .25rem;
padding: 0.08rem .16rem .08rem .3rem;
margin-right: .32rem;
font-size: .24rem;
background-color: #EEF6FE;
border-radius: .1rem;
&::before{
position: absolute;
left: -0.225rem;
left: -0.18rem;
top: 50%;
width: .45rem;
height: .45rem;
width: .36rem;
height: .36rem;
content: "";
background: url('@assets/images/hi.png') no-repeat;
background-size: 100% 100%;
@ -181,11 +201,11 @@ export default {
.user-card{
display: flex;
justify-content: space-between;
padding: .125rem .225rem;
margin: .325rem .2rem 0 .2rem;
height: .7rem;
line-height: .7rem;
font-size: .325rem;
padding: .1rem .16rem;
margin: .26rem .32rem 0 .32rem;
height: .56rem;
line-height: .56rem;
font-size: .28rem;
background-color: #DEEEFC;
border-radius: .1rem;
p{
@ -193,33 +213,33 @@ export default {
}
span{
display: block;
padding: 0 .15rem;
padding: 0 .12rem;
background-color: #2B3C74;
color: #fff;
border-radius: 0.1rem;
border-radius: 0.08rem;
}
}
}
.mine-content{
margin: 2rem 0 1.25rem 0;
padding: 0 .2rem;
margin: 1.2rem 0 1.1rem 0;
padding: 0 .32rem;
}
.mine-item{
margin-bottom: .25rem;
padding: .3125rem .2rem .375rem .2rem;
margin-bottom: .2rem;
padding: .24rem .3rem .3rem .3rem;
background-color: #fff;
border-radius: 0.1rem;
.mine-title{
display: flex;
justify-content: space-between;
align-items: center;
font-size: .4rem;
margin-bottom: .375rem;
font-size: .36rem;
margin-bottom: .36rem;
span{
font-size: .3rem;
padding-right: .25rem;
font-size: .24rem;
padding-right: .22rem;
background: url('@assets/images/arrow.png') no-repeat right center;
background-size: .2rem .2rem;
background-size: .16rem .16rem;
opacity: 0.4;
}
}
@ -234,29 +254,29 @@ export default {
flex: 1;
.order-icon{
position: relative;
width: .6rem;
margin: 0 auto .2rem auto;
width: .48rem;
margin: 0 auto .16rem auto;
img{
display: block;
width: .6rem;
height: .6rem;
width: .48rem;
height: .48rem;
}
i{
position: absolute;
right: -0.1rem;
top: -0.15rem;
height: .3rem;
line-height: .3rem;
padding: 0 .1rem;
font-size: .25rem;
height: .24rem;
line-height: .24rem;
padding: 0 .08rem;
font-size: .2rem;
font-style: normal;
color: #fff;
background-color: #FF3871;
border-radius: .15rem;
border-radius: .12rem;
}
}
p{
font-size: .325rem;
font-size: .28rem;
}
}
}
@ -264,15 +284,15 @@ export default {
.log-info{
display: flex;
justify-content: space-between;
padding: .2rem;
padding: .16rem;
margin-top: 0.325rem;
background-color: #F5F8FF;
border-radius: .1rem;
.log-img{
width: 0.925rem;
height: 1.125rem;
width: 0.74rem;
height: 0.91rem;
background-color: #f3f3f3;
border-radius: .1rem;
border-radius: 0.04rem;
overflow: hidden;
img{
display: block;
@ -281,13 +301,13 @@ export default {
}
.log-txt{
flex: 1;
margin-left: .2rem;
margin-left: .16rem;
.log-num{
font-size: .35rem;
line-height: .625rem;
font-size: .32rem;
line-height: .5rem;
}
.logo-cont{
font-size: .3rem;
font-size: .24rem;
}
}
}
@ -298,10 +318,10 @@ export default {
width: 20%;
flex: none;
.order-icon{
width: .7rem;
width: .56rem;
img{
width: .7rem;
height: .7rem;
width: .56rem;
height: .56rem;
}
}
}
@ -310,14 +330,14 @@ export default {
.setting{
.setting-item{
margin-bottom: 0.5rem;
font-size: .325rem;
height: 0.525rem;
line-height: 0.525rem;
margin-bottom: 0.4rem;
font-size: .3rem;
height: 0.4rem;
line-height: 0.4rem;
background: url('@assets/images/arrow.png') no-repeat right center;
background-size: .2rem .2rem;
background-size: .16rem .16rem;
&:last-child{
margin-bottom: .125rem;
margin-bottom: .1rem;
}
}
}

182
library-activity/src/views/myAddress/addAddress.vue

@ -0,0 +1,182 @@
<template>
<div class="main">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>添加收货地址</p>
</div>
<div class="address-form">
<van-form ref="form" @submit="onSubmit">
<van-cell-group inset>
<div class="form01">
<van-field
v-model="username"
name="收货人"
label="收货人"
placeholder="用户名"
:rules="[{ required: true, message: '请填写用户名' }]"
/>
<van-field
v-model="phone"
type="number"
name="手机号码"
label="手机号码"
placeholder="手机号码"
:rules="[{ required: true, message: '请填写手机号码' }]"
/>
<van-field
v-model="area"
is-link
readonly
name="area"
label="所在地区"
placeholder="省市区县、乡镇"
:rules="[{ required: true, message: '请选择所在地区' }]"
@click="showArea = true"
>
<template v-slot:right-icon>
<img style="width: 0.32rem; height: 0.32rem"
src="@assets/images/address-icon6.png" alt="">
<span style="color: #1C202D;">定位</span>
</template>
</van-field>
<van-popup v-model:show="showArea" position="bottom">
<van-area
:area-list="areaList"
@confirm="onConfirm"
@cancel="showArea = false"
/>
</van-popup>
<van-field
v-model="place"
rows="2"
autosize
type="textarea"
name="详细地址"
label="详细地址"
maxlength="50"
placeholder="楼道、街牌号等"
:rules="[{ required: true, message: '请填写详细地址' }]"
/>
</div>
<div class="form02">
<van-field name="place" label="设为默认收货地址">
<template #input>
<van-checkbox v-model="isChecked" shape="square" />
</template>
</van-field>
</div>
</van-cell-group>
<div style="position: fixed; bottom: 1.2rem; left: 50%; transform: translateX(-50%);">
<van-button round block type="primary" native-type="submit">
提交
</van-button>
</div>
</van-form>
</div>
</div>
</template>
<script>
import { reactive, getCurrentInstance, toRefs, ref } from 'vue'
import { areaList } from '@vant/area-data'
export default {
name: 'AddAddress',
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
isSetting: false,
username: '',
phone: '',
area: '',
place: '',
isChecked: false,
showArea: false,
})
let toBack = () => {
proxy.$router.go(-1)
}
let onConfirm = (value) => {
data.showArea = false
data.area = value.map((item) => item.name).join(' ')
}
let onSubmit = (values) => {
console.log('submit',values)
}
return {
...toRefs(data),
areaList,
toBack,
onConfirm,
onSubmit
}
},
}
</script>
<style scoped lang="scss">
.address-form {
height: calc(100vh - 1rem);
padding: 1.3rem 0.32rem 0 0.32rem;
background-color: #fff;
.form01{
padding: 0 .3rem;
background-color: #fff;
box-shadow: 0px .03rem .6rem 1px rgba(0,0,0,0.08);
border-radius: .08rem;
:deep(.van-icon){
&::before{
display: none;
}
}
:deep(.van-field__right-icon){
display: flex;
align-items: center;
font-size: .28rem;
}
}
.form02{
margin-top: .2rem;
padding: 0 .3rem;
background-color: #fff;
box-shadow: 0px .03rem .6rem 1px rgba(0,0,0,0.08);
border-radius: .08rem;
:deep(.van-field__label){
width: auto;
}
:deep(.van-field__control--custom){
justify-content: flex-end;
}
:deep(.van-checkbox__icon .van-icon){
border-radius: 50%;
}
}
}
:deep(.van-cell-group--inset){
background: transparent;
border-radius: 0;
margin: 0;
overflow: visible;
}
:deep(.van-cell){
padding: .32rem 0;
font-size: .28rem;
background: transparent;
&::after{
right: 0;
left: 0;
border-color:#C6C6E2;
}
.van-field__label{
color: #1C202D;
}
}
:deep(.van-button--block){
width: 4.4rem;
height: .98rem;
font-size: .36rem;
background: #5A86F4;
}
</style>

170
library-activity/src/views/myAddress/myAddress.vue

@ -0,0 +1,170 @@
<template>
<div class="main">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>我的收货地址</p>
<span class="setting-header" @click="isSetting = !isSetting">{{ !isSetting ? '管理' : '完成'}}</span>
</div>
<div class="address-main">
<div class="address-list">
<div class="address-item">
<div class="address-cont">
<div class="address-icon">
<img src="@assets/images/address-icon1.png" alt="" />
</div>
<div class="address-txt">
<div class="txt-info">
<span>收货人是路飞啊</span>
<span class="address-phone">15376587658</span>
</div>
<div class="place">洪山科技创业中心C栋武汉哈哈科技有限公司5栋2单元这是俩拍的地址</div>
</div>
<span class="edit-btn" @click="toAddOrEdit"></span>
</div>
<div class="setting-handle" v-if="isSetting">
<span class="active">默认地址</span>
<span>删除</span>
</div>
<span class="mr-flag">默认</span>
</div>
</div>
<div class="address-bottom" @click="toAddOrEdit">添加收货地址</div>
</div>
<!-- <TabBar :tabCur.sync="tabCur" /> -->
</div>
</template>
<script>
import { reactive, onMounted, getCurrentInstance, toRefs } from 'vue'
export default {
name: 'MyAddress',
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
isSetting: false
})
onMounted(() => {})
let toBack = () => {
proxy.$router.go(-1);
}
let toAddOrEdit = () => {
proxy.$router.push({ path: '/AddAddress' })
}
return {
...toRefs(data),
toBack,
toAddOrEdit
}
},
}
</script>
<style scoped lang="scss">
.address-main{
height: calc(100vh - 1rem);
padding: 1.3rem 0.32rem 0 0.32rem;
background-color: #fff;
}
.address-item{
position: relative;
margin-bottom: .2rem;
background: #fff;
box-shadow: 0px 0.03rem .6rem 1px rgba(0,0,0,0.08);
border-radius: 0.08rem;
.address-cont{
display: flex;
justify-content: space-between;
align-items: center;
padding: .3rem .24rem;
.address-icon{
width: .58rem;
height: .58rem;
border-radius: 50%;
background-color: #83EEFF;
img{
display: block;
width: .28rem;
margin: 0 auto;
transform: translateY(50%);
}
}
.address-txt{
flex: 1;
margin: 0 .29rem 0 .24rem;
.txt-info{
font-size: .3rem;
.address-phone{
margin-left: .4rem;
}
}
.place{
font-size: .26rem;
opacity: 0.6;
margin-top: .1rem;
}
}
.edit-btn{
width: .4rem;
height: .4rem;
background: url('@assets/images/address-icon2.png') no-repeat;
background-size: 100% 100%;
}
}
.setting-handle{
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid #C6C6E2;
padding: .2rem .24rem;
span{
display: block;
font-size: .26rem;
padding-left: .42rem;
&:first-child{
background: url('@assets/images/address-icon4.png') no-repeat left center;
background-size: .26rem .26rem;
&.active{
color: #5A86F4;
background: url('@assets/images/address-icon3.png') no-repeat left center;
background-size: .26rem .26rem;
}
}
&:last-child{
background: url('@assets/images/address-icon5.png') no-repeat left center;
background-size: .26rem .26rem;
}
}
}
.mr-flag{
position: absolute;
right: 0;
top: 0;
display: block;
height: .38rem;
line-height: .38rem;
padding: 0 .1rem;
font-size: .22rem;
color: #fff;
background-color: #5A86F4;
border-radius: 0 .08rem 0 .08rem;
}
}
.address-bottom{
position: fixed;
bottom: 1.2rem;
left: 50%;
width: 4.48rem;
height: .98rem;
line-height: .98rem;
transform: translateX(-50%);
font-size: .36rem;
text-align: center;
color: #fff;
background-color: #5A86F4;
border-radius: .5rem;
}
</style>

566
library-activity/src/views/order/order.vue

@ -0,0 +1,566 @@
<template>
<div class="main">
<div class="top-header">
<span class="back" @click="toBack"></span>
<p>我的订单</p>
</div>
<div class="order-main">
<van-tabs v-model:active="active" swipeable>
<van-tab v-for="item in tabTitle" :title="item.name">
<div v-show="active === 0" class="all-order">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status dshe">待审核</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
</div>
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status dhuo">待发货</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
</div>
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status dhuo">待收货</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span class="order-btn01">查看物流</span>
<span class="order-btn02">确认收货</span>
</div>
</div>
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status">已完成</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span class="order-btn01">查看物流</span>
</div>
</div>
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status">已取消</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span class="order-btn01">删除订单</span>
</div>
</div>
</div>
<div v-show="active === 1" class="all-order">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status dshe">待审核</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
</div>
</div>
<div v-show="active === 2" class="all-order">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status dhuo">待发货</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
</div>
</div>
<div v-show="active === 3" class="all-order">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status dhuo">待收货</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span class="order-btn01">查看物流</span>
<span class="order-btn02">确认收货</span>
</div>
</div>
</div>
<div v-show="active === 4" class="all-order">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status">已完成</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span class="order-btn01">查看物流</span>
</div>
</div>
</div>
<div v-show="active === 5" class="all-order">
<div class="order-item">
<div class="list-top">
<div class="top-info">
<p class="active-name">
你选书我买单<i></i>
</p>
</div>
<div class="order-status">已取消</div>
</div>
<div class="product-cont">
<div class="product-img">
<img src="" alt="" />
</div>
<div class="product-txt">
<div class="product-info">
<h4 class="overflow-txt-only">秒懂AI提问让人工智能开发大脑</h4>
<div class="author-date">
<p class="author overflow-txt-only">秋叶 刘进新 姜梅 定秋枫</p>
<p class="date overflow-txt-only">2023年07月</p>
</div>
<div class="intro overflow-txt">精心提炼20种GPT提问方法及指令从入门到进阶再到精通100个案例带你玩</div>
</div>
</div>
<div class="order-book-price">
<span><i></i>29.0</span>
<span>X1</span>
</div>
</div>
<div class="order-dealer">
<p class="dealer">京东商城</p>
<p class="order-pay">实付款<span><i></i>0</span></p>
</div>
<div class="order-bottom">
<span class="order-btn01">删除订单</span>
</div>
</div>
</div>
</van-tab>
</van-tabs>
</div>
<!-- <TabBar :tabCur.sync="tabCur" /> -->
</div>
</template>
<script>
// import { Toast } from 'vant'
import { reactive, computed, onMounted, getCurrentInstance, toRefs } from 'vue'
// import TabBar from '@/components/tabBar/index.vue'
export default {
name: 'Order',
// components: { TabBar },
setup() {
const { proxy } = getCurrentInstance()
let data = reactive({
tabCur: 1,
active: 0,
tabTitle: [
{
value: '0',
name: '全部',
},
{
value: '1',
name: '待审核',
},
{
value: '2',
name: '待发货',
},
{
value: '3',
name: '待收货',
},
{
value: '4',
name: '已完成',
},
{
value: '5',
name: '已取消',
},
],
})
onMounted(() => {})
let toBack = () => {
proxy.$router.go(-1)
}
let toMoreOrder = () => {
location.href = './'
}
return {
...toRefs(data),
toBack,
toMoreOrder,
}
},
}
</script>
<style scoped lang="scss">
.order-main {
padding: 2rem 0.32rem 0 0.32rem;
:deep(.van-tabs__wrap){
position: fixed;
top: 1rem;
left: 0;
right: 0;
z-index: 99;
background-color: #fff;
}
:deep(.van-tab) {
font-size: 0.32rem;
color: #858585;
// margin-left: -0.18rem;
}
:deep(.van-tab--grow) {
padding: 0 0.18rem;
z-index: 222;
}
:deep(.van-tabs__nav) {
background: transparent;
padding: 0;
.van-tab--active {
font-weight: bold;
color: #000;
}
}
:deep(.van-tabs__line) {
width: 0.48rem;
height: 0.2rem;
bottom: 10px;
background: url('@assets/images/order-icon.png') no-repeat;
background-size: 0.48rem 0.2rem;
}
:deep(.van-tabs__content--animated) {
overflow: auto;
}
}
.order-item {
padding: 0.2rem 0.24rem 0.26rem 0.24rem;
margin-bottom: .2rem;
background: #fff;
// box-shadow: 0px 0.03rem 0.6rem 1px rgba(0, 0, 0, 0.08);
border-radius: 0.08rem;
.product-cont {
margin-top: 0.3rem;
}
.order-book-price {
display: flex;
flex-direction: column;
justify-content: flex-start;
text-align: right;
span {
&:first-child {
font-size: 0.32rem;
font-weight: bold;
i {
font-style: normal;
font-size: 0.2rem;
}
}
&:last-child {
font-size: 0.24rem;
}
}
}
.order-dealer{
display: flex;
justify-content: space-between;
align-items: center;
padding: .26rem 0 0 0;
.order-pay{
font-size: .32rem;
span {
font-size: .4rem;
i{
font-style: normal;
font-size: 0.24rem;
}
}
}
}
.order-bottom{
display: flex;
justify-content: flex-end;
align-items: center;
margin-top: .3rem;
padding-top: .3rem;
border-top: 1px solid #C6C6E2;
span{
display: block;
padding: 0 .24rem;
margin-left: .3rem;
height: .6rem;
line-height: .64rem;
font-size: .28rem;
border: 0.02rem solid #000;
border-radius: .5rem;
&.order-btn02{
color: #5A86F4;
border-color: #5A86F4;
}
}
}
}
.order-status {
font-size: 0.28rem;
color: #666;
&.dshe {
color: #5a86f4;
}
&.dhuo {
color: #ffb625;
}
}
</style>
Loading…
Cancel
Save