refactor:项目升级Vue3+uView Plus

- 改造入口文件、全量替换组件引入
- 过滤器迁移混入,更新忽略配置,新增迁移文档
This commit is contained in:
lifenlong
2026-06-06 22:51:10 +08:00
parent d5663cfb4d
commit f4337fd030
269 changed files with 1956 additions and 42350 deletions

15
.gitignore vendored
View File

@@ -1,14 +1,3 @@
# OSX
#
.DS_Store
node_modules/
#Intellij idea
.idea/
/idea/
.vscode/
/unpackage/
.hbuilderx/launch.json
.project.config.json
.project.private.config.json
unpackage/
.DS_Store

View File

@@ -224,7 +224,7 @@ import {
</script>
<style lang="scss">
@import "uview-ui/index.scss";
@import "uview-plus/index.scss";
// -------适配底部安全区 苹果x系列刘海屏

40
VUE3_MIGRATION.md Normal file
View File

@@ -0,0 +1,40 @@
# Vue 3 升级说明
本项目已从 Vue 2 + uView 1.6 升级到 **Vue 3 + uView Plus**
## 环境要求
- HBuilderX 3.8+
- Node.js 16+(用于安装 `uview-plus``vuex@4``sass`
## 安装依赖
```bash
npm install
```
## 主要变更
| 项 | 变更 |
|---|---|
| `manifest.json` | 增加 `"vueVersion": "3"` |
| `main.js` | 使用 `createSSRApp` + `export function createApp()` |
| UI 库 | `uview-ui``uview-plus`npm 依赖) |
| 状态管理 | Vuex 4 `createStore` |
| 全局 filter | 改为 `main.js` 全局 mixin methods |
| 小程序分享 | `utils/mpShare.js` |
| u-cell-item | 改为 `u-cell` |
| u-verification-code | 改为 `u-code` |
| u-swipe-action | 内层增加 `u-swipe-action-item` |
| u-upload | 关闭 `auto-upload`,使用 `@afterRead` + `utils/uploadHelper.js` |
| u-parse | `:html` 改为 `:content`,移除 `show-with-animation` / `use-cache` |
## 编译
请使用 HBuilderX 分别运行到 **H5**、**微信小程序**、**App** 进行验证。
## 第三方插件
- `Sansnn-uQRCode`:声明支持 Vue3
- `u-draw-poster`:声明支持 Vue2/3
- `okingtz-cropper`:需在 App 端实测头像裁剪

View File

@@ -1,6 +1,6 @@
<template>
<div class="wrapper">
<u-popup class="popup" v-model="buyMask" :height="setup.height" closeable :mode="setup.mode" :border-radius="setup.radius" @close="closeMask()">
<u-popup class="popup" v-model:show="buyMask" :height="setup.height" closeable :mode="setup.mode" :border-radius="setup.radius" @close="closeMask()">
<!-- 商品 -->
<view class="goods-box bottom">
<view class="goods-header">
@@ -12,8 +12,8 @@
<view class="goods-price" v-if="goodsDetail.promotionPrice && ((isGroup && buyType === 'PINTUAN') || !isGroup)">
<span v-if="goodsDetail.promotionPrice && !pointDetail">
<span class="goods-price-promotionShow goods-price-bigshow">{{ $options.filters.goodsFormatPrice(goodsDetail.promotionPrice)[0] }}</span>
.{{ $options.filters.goodsFormatPrice(goodsDetail.promotionPrice)[1] }}
<span class="goods-price-promotionShow goods-price-bigshow">{{ goodsFormatPrice(goodsDetail.promotionPrice)[0] }}</span>
.{{ goodsFormatPrice(goodsDetail.promotionPrice)[1] }}
</span>
<span v-if="pointDetail.points">
<span class="goods-price-promotionShow goods-price-bigshow">{{ pointDetail.points }}</span>
@@ -21,8 +21,8 @@
</span>
<div class="promotion-box">
<span class="goods-price-bigshow">{{ $options.filters.goodsFormatPrice(goodsDetail.price)[0] }}</span>
.{{ $options.filters.goodsFormatPrice(goodsDetail.price)[1] }}
<span class="goods-price-bigshow">{{ goodsFormatPrice(goodsDetail.price)[0] }}</span>
.{{ goodsFormatPrice(goodsDetail.price)[1] }}
</div>
</view>
<!-- 正常商品的价格 -->
@@ -32,8 +32,8 @@
<div class="goods-price" v-for="(item, index) in wholesaleList" :key="index">
<span>
<span class="goods-price-bigshow">{{ $options.filters.goodsFormatPrice(item.price)[0] }}</span>
.{{ $options.filters.goodsFormatPrice(item.price)[1] }}
<span class="goods-price-bigshow">{{ goodsFormatPrice(item.price)[0] }}</span>
.{{ goodsFormatPrice(item.price)[1] }}
</span>
<span class="wholesale-item">{{ item.num }}{{ goodsDetail.goodsUnit }}</span>
</div>
@@ -41,8 +41,8 @@
<div class="goods-price" v-else>
<span>
<span class="goods-price-bigshow">{{ $options.filters.goodsFormatPrice(goodsDetail.price)[0] }}</span>
.{{ $options.filters.goodsFormatPrice(goodsDetail.price)[1] }}
<span class="goods-price-bigshow">{{ goodsFormatPrice(goodsDetail.price)[0] }}</span>
.{{ goodsFormatPrice(goodsDetail.price)[1] }}
</span>
</div>
</view>
@@ -261,7 +261,7 @@ export default {
}
});
if (selectedSkuId?.skuId) {
this.$set(this.currentSelected, index, specValue.value);
this.currentSelected[index] = specValue.value;
this.selectSkuList = {
spec: {
specName: val.name,

View File

@@ -1,7 +1,7 @@
<template>
<div class="index">
<u-modal v-model="show" :show-title="false" :show-confirm-button="false" mask-close-able>
<u-modal v-model:show="show" :show-title="false" :show-confirm-button="false" mask-close-able>
<view class="slot-content">
<image @click="downLoad()" class="img" :src="imgUrl" />
<div class="canvas-hide">

View File

@@ -208,7 +208,7 @@ export default {
this.tabCurrentIndex++;
// 当前距离重新为最上面
this.$set(this,'scrollTop',0)
this['scrollTop'] = 0
}
} catch (error) {
uni.hideLoading();

View File

@@ -10,7 +10,7 @@
height="330rpx"
mode="aspectFit"
>
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</view>
<view class="goods-detail">
@@ -23,9 +23,9 @@
<div class="price" v-if="item.price != undefined">
¥<span
>{{
$options.filters.goodsFormatPrice(item.price)[0]
goodsFormatPrice(item.price)[0]
}} </span
>.{{ $options.filters.goodsFormatPrice(item.price)[1] }}
>.{{ goodsFormatPrice(item.price)[1] }}
</div>
</view>
<div class="count-config" @click="navigateToDetailPage(item)">
@@ -67,7 +67,7 @@
mode="aspectFit"
:src="item.goodsImage || item.thumbnail"
>
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</div>
<div class="goods-detail">
@@ -77,8 +77,8 @@
<view class="price-box" @click="navigateToDetailPage(item)">
<div class="price" v-if="item.price != undefined">
¥<span
>{{ $options.filters.goodsFormatPrice(item.price)[0] }} </span
>.{{ $options.filters.goodsFormatPrice(item.price)[1] }}
>{{ goodsFormatPrice(item.price)[0] }} </span
>.{{ goodsFormatPrice(item.price)[1] }}
</div>
</view>
<div class="promotion" @click="navigateToDetailPage(item)">

View File

@@ -5,7 +5,7 @@
<view v-for="(item, index) in res" :key="index" class="goods-item">
<view class="image-wrapper" @click="navigateToDetailPage(item)">
<u-image :src="item.thumbnail" width="100%" height='330rpx' mode="aspectFit">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</view>
<view class="goods-detail">
@@ -15,8 +15,8 @@
</div>
<view class="price-box" @click="navigateToDetailPage(item)">
<div class="price" v-if="item.price!=undefined">
¥<span>{{ $options.filters.goodsFormatPrice(item.price )[0] }} </span>.{{
$options.filters.goodsFormatPrice(item.price )[1]
¥<span>{{ goodsFormatPrice(item.price )[0] }} </span>.{{
goodsFormatPrice(item.price )[1]
}}
</div>
</view>
@@ -53,15 +53,15 @@
<div class="flex goods-col">
<div class="goods-img" @click="navigateToDetailPage(item)">
<u-image width="230rpx" mode="aspectFit" border-radius='16' height="230rpx" :src="item.thumbnail">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</div>
<div class="goods-detail">
<div class="title clamp3" @click="navigateToDetailPage(item)">{{ item.goodsName }}</div>
<view class="price-box" @click="navigateToDetailPage(item)">
<div class="price" v-if="item.price!=undefined">
¥<span>{{ $options.filters.goodsFormatPrice(item.price )[0] }} </span>.{{
$options.filters.goodsFormatPrice(item.price )[1]
¥<span>{{ goodsFormatPrice(item.price )[0] }} </span>.{{
goodsFormatPrice(item.price )[1]
}}
</div>
</view>

View File

@@ -4,7 +4,7 @@
<div class="flex goods-col">
<div class="goods-img">
<u-image width="230rpx" mode="aspectFit" border-radius='16' height="230rpx" :src="item.goodsImage || item.thumbnail">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</div>
<div class="goods-detail">
@@ -13,15 +13,15 @@
<view class="price-box">
<!-- 秒杀 / 拼团 -->
<div class="price" v-if="!type && item.price!=undefined">
¥<span>{{ $options.filters.goodsFormatPrice(item.price )[0] }} </span>.{{
$options.filters.goodsFormatPrice(item.price )[1]
¥<span>{{ goodsFormatPrice(item.price )[0] }} </span>.{{
goodsFormatPrice(item.price )[1]
}}
</div>
<!-- 砍价 -->
<div class="price" v-if="type && item.purchasePrice!=undefined">
最低
¥<span>{{ $options.filters.goodsFormatPrice(item.purchasePrice )[0] }} </span>.{{
$options.filters.goodsFormatPrice(item.purchasePrice )[1]
¥<span>{{ goodsFormatPrice(item.purchasePrice )[0] }} </span>.{{
goodsFormatPrice(item.purchasePrice )[1]
}}
</div>
<!-- 兜底策略如果金额是0 -->

View File

@@ -1,6 +1,6 @@
<template>
<!-- 遮罩层 -->
<u-popup @close="close" v-model="show" mode="bottom" border-radius="30" height="260rpx">
<u-popup @close="close" v-model:show="show" mode="bottom" border-radius="30" height="260rpx">
<view class="share-title">
<span>分享至</span>
@@ -31,7 +31,8 @@
<script>
import { h5Copy } from "@/js_sdk/h5-copy/h5-copy.js";
import configs from "@/config/config";
import mpShare from "uview-ui/libs/mixin/mpShare.js";
import mpShare from "@/utils/mpShare.js";
import { setClipboard } from "@/utils/filters.js";
export default {
mixins: [mpShare],
@@ -83,7 +84,7 @@ export default {
this.configs.shareLink +
getCurrentPages()[getCurrentPages().length - 1].__page__.fullPath;
}
this.$options.filters.setClipboard(content)
setClipboard(content)
},
// #endif

View File

@@ -1,6 +1,6 @@
<template>
<div>
<u-popup v-model="show" mode="bottom" height="800rpx" border-radius="14">
<u-popup v-model:show="show" mode="bottom" height="800rpx" border-radius="14">
<div class="wrapper">
<view class="down-goods-tips">该商品已下架</view>
<scroll-view scroll-y="true" style="height: 670rpx">

View File

@@ -31,7 +31,7 @@
:class="['xt__box', `xt__box-${type + ''}`, `xt__box::after`]"
>
<view :style="{ borderColor: boxActiveColor }" class="xt__middle-line" v-if="type === 'middle' && !code[index]"></view>
<text class="xt__code-text">{{ code[index] | codeFormat(isPassword) }}</text>
<text class="xt__code-text">{{ codeFormat(code[index], isPassword) }}</text>
</view>
</template>
</view>
@@ -178,14 +178,7 @@ export default {
// 输入失去焦点
inputBlur() {
this.cursorVisible = false;
}
},
watch: {
value(val) {
this.code = val;
}
},
filters: {
codeFormat(val, isPassword) {
let value = '';
if (val) {
@@ -193,6 +186,11 @@ export default {
}
return value;
}
},
watch: {
value(val) {
this.code = val;
}
}
};
</script>

90
main.js
View File

@@ -1,59 +1,41 @@
import Vue from "vue";
import App from "./App";
import * as filters from "./utils/filters.js"; // global filter
import uView from "uview-ui";
import store from "./store";
import config from '@/config/config';
import airBtn from "@/components/m-airbtn/index.vue";
import socketIO from './pages/mine/im/socket';
/**
* 仅在h5中显示唤醒app功能
* 在h5页面手动挂载
*
*/
import { createSSRApp } from 'vue'
import App from './App'
import uviewPlus from 'uview-plus'
import store from './store'
import config from '@/config/config'
import airBtn from '@/components/m-airbtn/index.vue'
import mpShare from '@/utils/mpShare.js'
import * as filterUtils from './utils/filters.js'
export function createApp() {
const app = createSSRApp(App)
app.use(store)
app.use(uviewPlus)
app.config.globalProperties.$store = store
app.config.globalProperties.$mainColor = config.mainColor
app.config.globalProperties.$lightColor = config.lightColor
app.config.globalProperties.$aiderLightColor = config.aiderLightColor
const filterMethods = {}
Object.keys(filterUtils).forEach((key) => {
if (typeof filterUtils[key] === 'function') {
filterMethods[key] = filterUtils[key]
}
})
app.mixin({ methods: filterMethods })
app.mixin(mpShare)
// #ifdef H5
if (config.enableMiniBarStartUpApp) {
let btn = Vue.component("airBtn", airBtn); //全局注册
document.body.appendChild(new btn().$mount().$el);
const mountPoint = document.createElement('div')
document.body.appendChild(mountPoint)
createSSRApp(airBtn).mount(mountPoint)
}
// #endif
// 引入uView对小程序分享的mixin封装
let mpShare = require('uview-ui/libs/mixin/mpShare.js');
Vue.mixin(mpShare)
/**
* 全局filters
*/
Object.keys(filters).forEach((key) => {
Vue.filter(key, filters[key]);
});
// 引入Vuex
Vue.prototype.$store = store;
// Vue.prototype.socketIo = new socketIO();
Vue.use(uView);
Vue.config.productionTip = false;
/**
* 注意!
* 此处将常用的颜色嵌入到原型链上面
* 颜色使用驼峰命名对应 uni.scss中全局颜色变量名
* 如需更换主题请修改此处以及uni.scss中的全局颜色
*/
// 主题色
Vue.prototype.$mainColor = config.mainColor;
// 高亮主题色
Vue.prototype.$lightColor = config.lightColor;
// 辅助高亮颜色
Vue.prototype.$aiderLightColor = config.aiderLightColor;
App.mpType = "app";
const app = new Vue({
...App,
});
app.$mount();
return {
app
}
}

View File

@@ -1,4 +1,5 @@
{
"vueVersion" : "3",
"name" : "lilishop",
"appid" : "__UNI__ED807EA",
"description" : "",

977
package-lock.json generated Normal file
View File

@@ -0,0 +1,977 @@
{
"name": "lilishop-uniapp",
"version": "4.5.3",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "lilishop-uniapp",
"version": "4.5.3",
"license": "ISC",
"dependencies": {
"sass": "^1.89.2",
"uview-plus": "^3.4.72",
"vuex": "^4.1.0"
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.29.7",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.29.7",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.29.7",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/types": "^7.29.7"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/types": {
"version": "7.29.7",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/helper-string-parser": "^7.29.7",
"@babel/helper-validator-identifier": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"license": "MIT",
"peer": true
},
"node_modules/@parcel/watcher": {
"version": "2.5.6",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
"detect-libc": "^2.0.3",
"is-glob": "^4.0.3",
"node-addon-api": "^7.0.0",
"picomatch": "^4.0.3"
},
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"@parcel/watcher-android-arm64": "2.5.6",
"@parcel/watcher-darwin-arm64": "2.5.6",
"@parcel/watcher-darwin-x64": "2.5.6",
"@parcel/watcher-freebsd-x64": "2.5.6",
"@parcel/watcher-linux-arm-glibc": "2.5.6",
"@parcel/watcher-linux-arm-musl": "2.5.6",
"@parcel/watcher-linux-arm64-glibc": "2.5.6",
"@parcel/watcher-linux-arm64-musl": "2.5.6",
"@parcel/watcher-linux-x64-glibc": "2.5.6",
"@parcel/watcher-linux-x64-musl": "2.5.6",
"@parcel/watcher-win32-arm64": "2.5.6",
"@parcel/watcher-win32-ia32": "2.5.6",
"@parcel/watcher-win32-x64": "2.5.6"
}
},
"node_modules/@parcel/watcher-darwin-x64": {
"version": "2.5.6",
"cpu": [
"x64"
],
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-android-arm64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz",
"integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-darwin-arm64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz",
"integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-freebsd-x64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz",
"integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-linux-arm-glibc": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz",
"integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-linux-arm-musl": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz",
"integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-linux-arm64-glibc": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz",
"integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-linux-arm64-musl": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz",
"integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-linux-x64-glibc": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz",
"integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-linux-x64-musl": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz",
"integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-win32-arm64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz",
"integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-win32-ia32": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz",
"integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher/node_modules/@parcel/watcher-win32-x64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz",
"integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@vue/compiler-core": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.29.3",
"@vue/shared": "3.5.35",
"entities": "^7.0.1",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.29.3",
"@vue/compiler-core": "3.5.35",
"@vue/compiler-dom": "3.5.35",
"@vue/compiler-ssr": "3.5.35",
"@vue/shared": "3.5.35",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.15",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"license": "MIT"
},
"node_modules/@vue/reactivity": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/shared": "3.5.35"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.35",
"@vue/runtime-core": "3.5.35",
"@vue/shared": "3.5.35",
"csstype": "^3.2.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.35",
"@vue/shared": "3.5.35"
},
"peerDependencies": {
"vue": "3.5.35"
}
},
"node_modules/@vue/shared": {
"version": "3.5.35",
"license": "MIT",
"peer": true
},
"node_modules/chokidar": {
"version": "5.0.0",
"license": "MIT",
"dependencies": {
"readdirp": "^5.0.0"
},
"engines": {
"node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/csstype": {
"version": "3.2.3",
"license": "MIT",
"peer": true
},
"node_modules/detect-libc": {
"version": "2.1.2",
"license": "Apache-2.0",
"optional": true,
"engines": {
"node": ">=8"
}
},
"node_modules/entities": {
"version": "7.0.1",
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"license": "MIT",
"peer": true
},
"node_modules/immutable": {
"version": "5.1.6",
"license": "MIT"
},
"node_modules/is-extglob": {
"version": "2.1.1",
"license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"license": "MIT",
"optional": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/magic-string": {
"version": "0.30.21",
"license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"node_modules/nanoid": {
"version": "3.3.12",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/node-addon-api": {
"version": "7.1.1",
"license": "MIT",
"optional": true
},
"node_modules/picocolors": {
"version": "1.1.1",
"license": "ISC",
"peer": true
},
"node_modules/picomatch": {
"version": "4.0.4",
"license": "MIT",
"optional": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.5.15",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.12",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/readdirp": {
"version": "5.0.0",
"license": "MIT",
"engines": {
"node": ">= 20.19.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/sass": {
"version": "1.100.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.100.0.tgz",
"integrity": "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==",
"dependencies": {
"chokidar": "^5.0.0",
"immutable": "^5.1.5",
"source-map-js": ">=0.6.2 <2.0.0"
},
"bin": {
"sass": "sass.js"
},
"engines": {
"node": ">=20.19.0"
},
"optionalDependencies": {
"@parcel/watcher": "^2.4.1"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/uview-plus": {
"version": "3.8.42",
"resolved": "https://registry.npmjs.org/uview-plus/-/uview-plus-3.8.42.tgz",
"integrity": "sha512-AknhV9x01Ql3WpxAtH+VoirKLqSnmHC6HLjfsj70bm8ez+DaiQcIcHPS7gdA/JxfKpWx4GWcaz/RtzKX7OsriA==",
"engines": {
"HBuilderX": "^3.1.0",
"uni-app": "^4.66",
"uni-app-x": ""
}
},
"node_modules/vue": {
"version": "3.5.35",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.35",
"@vue/compiler-sfc": "3.5.35",
"@vue/runtime-dom": "3.5.35",
"@vue/server-renderer": "3.5.35",
"@vue/shared": "3.5.35"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/vuex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
"dependencies": {
"@vue/devtools-api": "^6.0.0-beta.11"
},
"peerDependencies": {
"vue": "^3.2.0"
}
}
},
"dependencies": {
"@babel/helper-string-parser": {
"version": "7.29.7",
"peer": true
},
"@babel/helper-validator-identifier": {
"version": "7.29.7",
"peer": true
},
"@babel/parser": {
"version": "7.29.7",
"peer": true,
"requires": {
"@babel/types": "^7.29.7"
}
},
"@babel/types": {
"version": "7.29.7",
"peer": true,
"requires": {
"@babel/helper-string-parser": "^7.29.7",
"@babel/helper-validator-identifier": "^7.29.7"
}
},
"@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"peer": true
},
"@parcel/watcher": {
"version": "2.5.6",
"optional": true,
"requires": {
"@parcel/watcher-android-arm64": "2.5.6",
"@parcel/watcher-darwin-arm64": "2.5.6",
"@parcel/watcher-darwin-x64": "2.5.6",
"@parcel/watcher-freebsd-x64": "2.5.6",
"@parcel/watcher-linux-arm-glibc": "2.5.6",
"@parcel/watcher-linux-arm-musl": "2.5.6",
"@parcel/watcher-linux-arm64-glibc": "2.5.6",
"@parcel/watcher-linux-arm64-musl": "2.5.6",
"@parcel/watcher-linux-x64-glibc": "2.5.6",
"@parcel/watcher-linux-x64-musl": "2.5.6",
"@parcel/watcher-win32-arm64": "2.5.6",
"@parcel/watcher-win32-ia32": "2.5.6",
"@parcel/watcher-win32-x64": "2.5.6",
"detect-libc": "^2.0.3",
"is-glob": "^4.0.3",
"node-addon-api": "^7.0.0",
"picomatch": "^4.0.3"
},
"dependencies": {
"@parcel/watcher-android-arm64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz",
"integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==",
"optional": true
},
"@parcel/watcher-darwin-arm64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz",
"integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==",
"optional": true
},
"@parcel/watcher-freebsd-x64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz",
"integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==",
"optional": true
},
"@parcel/watcher-linux-arm-glibc": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz",
"integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==",
"optional": true
},
"@parcel/watcher-linux-arm-musl": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz",
"integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==",
"optional": true
},
"@parcel/watcher-linux-arm64-glibc": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz",
"integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==",
"optional": true
},
"@parcel/watcher-linux-arm64-musl": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz",
"integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==",
"optional": true
},
"@parcel/watcher-linux-x64-glibc": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz",
"integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==",
"optional": true
},
"@parcel/watcher-linux-x64-musl": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz",
"integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==",
"optional": true
},
"@parcel/watcher-win32-arm64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz",
"integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==",
"optional": true
},
"@parcel/watcher-win32-ia32": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz",
"integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==",
"optional": true
},
"@parcel/watcher-win32-x64": {
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz",
"integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==",
"optional": true
}
}
},
"@parcel/watcher-darwin-x64": {
"version": "2.5.6",
"optional": true
},
"@vue/compiler-core": {
"version": "3.5.35",
"peer": true,
"requires": {
"@babel/parser": "^7.29.3",
"@vue/shared": "3.5.35",
"entities": "^7.0.1",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"@vue/compiler-dom": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/compiler-core": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"@vue/compiler-sfc": {
"version": "3.5.35",
"peer": true,
"requires": {
"@babel/parser": "^7.29.3",
"@vue/compiler-core": "3.5.35",
"@vue/compiler-dom": "3.5.35",
"@vue/compiler-ssr": "3.5.35",
"@vue/shared": "3.5.35",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.15",
"source-map-js": "^1.2.1"
}
},
"@vue/compiler-ssr": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/compiler-dom": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"@vue/devtools-api": {
"version": "6.6.4"
},
"@vue/reactivity": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/shared": "3.5.35"
}
},
"@vue/runtime-core": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/reactivity": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"@vue/runtime-dom": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/reactivity": "3.5.35",
"@vue/runtime-core": "3.5.35",
"@vue/shared": "3.5.35",
"csstype": "^3.2.3"
}
},
"@vue/server-renderer": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/compiler-ssr": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"@vue/shared": {
"version": "3.5.35",
"peer": true
},
"chokidar": {
"version": "5.0.0",
"requires": {
"readdirp": "^5.0.0"
}
},
"csstype": {
"version": "3.2.3",
"peer": true
},
"detect-libc": {
"version": "2.1.2",
"optional": true
},
"entities": {
"version": "7.0.1",
"peer": true
},
"estree-walker": {
"version": "2.0.2",
"peer": true
},
"immutable": {
"version": "5.1.6"
},
"is-extglob": {
"version": "2.1.1",
"optional": true
},
"is-glob": {
"version": "4.0.3",
"optional": true,
"requires": {
"is-extglob": "^2.1.1"
}
},
"magic-string": {
"version": "0.30.21",
"peer": true,
"requires": {
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"nanoid": {
"version": "3.3.12",
"peer": true
},
"node-addon-api": {
"version": "7.1.1",
"optional": true
},
"picocolors": {
"version": "1.1.1",
"peer": true
},
"picomatch": {
"version": "4.0.4",
"optional": true
},
"postcss": {
"version": "8.5.15",
"peer": true,
"requires": {
"nanoid": "^3.3.12",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
}
},
"readdirp": {
"version": "5.0.0"
},
"sass": {
"version": "1.100.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.100.0.tgz",
"integrity": "sha512-B5j0rYMlinhhOo9tjQebMVVn0TfyXAF+wB3b2ggZUuJ/is/Y+7+JGjirAMxHZ9Z3hIP98NPfamlAkBHa1lAaXQ==",
"requires": {
"@parcel/watcher": "^2.4.1",
"chokidar": "^5.0.0",
"immutable": "^5.1.5",
"source-map-js": ">=0.6.2 <2.0.0"
}
},
"source-map-js": {
"version": "1.2.1"
},
"uview-plus": {
"version": "3.8.42",
"resolved": "https://registry.npmjs.org/uview-plus/-/uview-plus-3.8.42.tgz",
"integrity": "sha512-AknhV9x01Ql3WpxAtH+VoirKLqSnmHC6HLjfsj70bm8ez+DaiQcIcHPS7gdA/JxfKpWx4GWcaz/RtzKX7OsriA=="
},
"vue": {
"version": "3.5.35",
"peer": true,
"requires": {
"@vue/compiler-dom": "3.5.35",
"@vue/compiler-sfc": "3.5.35",
"@vue/runtime-dom": "3.5.35",
"@vue/server-renderer": "3.5.35",
"@vue/shared": "3.5.35"
}
},
"vuex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
"requires": {
"@vue/devtools-api": "^6.0.0-beta.11"
}
}
}
}

19
package.json Normal file
View File

@@ -0,0 +1,19 @@
{
"name": "lilishop-uniapp",
"version": "4.5.3",
"description": "Lilishop uni-app mobile client (Vue 3)",
"main": "main.js",
"scripts": {
"migrate:vue3": "node scripts/migrate-vue3.js && node scripts/migrate-filters-usage.js"
},
"repository": {
"type": "git",
"url": "https://gitee.com/beijing_hongye_huicheng/lilishop-uniapp"
},
"license": "ISC",
"dependencies": {
"sass": "^1.89.2",
"uview-plus": "^3.4.72",
"vuex": "^4.1.0"
}
}

View File

@@ -1,7 +1,12 @@
{
"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
"autoscan": true,
"custom": {
"^u--(.*)": "uview-plus/components/u-$1/u-$1.vue",
"^up-(.*)": "uview-plus/components/u-$1/u-$1.vue",
"^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue"
}
},
"pages": [

View File

@@ -15,7 +15,7 @@
<span v-if="item.couponType == 'DISCOUNT'">{{ item.couponDiscount }}</span>
<span v-else>{{ item.price }}</span>
</view>
<view>{{ item.consumeThreshold | unitPrice }}元可用</view>
<view>{{unitPrice(item.consumeThreshold) }}元可用</view>
</view>
<view class="circle circle-top"></view>
<view class="circle circle-bottom"></view>

View File

@@ -3,7 +3,7 @@
<view class="body">
<view class="top-view">
<view class="title">{{coupon.title}}</view>
<view class="price" v-if="coupon.couponType =='PRICE'"><text></text>{{coupon.price | unitPrice}}</view>
<view class="price" v-if="coupon.couponType =='PRICE'"><text></text>{{unitPrice(coupon.price)}}</view>
<view class="price" v-if="coupon.couponType =='DISCOUNT'">{{coupon.discount}}</view>
<view class="text">{{coupon.consumeThreshold}}元可用</view>
<view class="bg-quan">

View File

@@ -26,7 +26,7 @@
<span v-if="item.couponType == 'DISCOUNT'">{{ item.discount }}</span>
<span v-else>{{ item.price }}</span>
</view>
<view>{{ item.consumeThreshold | unitPrice }}元可用</view>
<view>{{unitPrice(item.consumeThreshold) }}元可用</view>
</view>
<view class="circle circle-top"></view>
<view class="circle circle-bottom"></view>

View File

@@ -57,7 +57,7 @@
>
<view class="price" v-else>{{ coupon.price }}</view>
<view class="sub-price"
>{{ coupon.consumeThreshold | unitPrice }}可用</view
>{{unitPrice(coupon.consumeThreshold) }}可用</view
>
</view>
<view class="circle circle-top"></view>

View File

@@ -10,7 +10,7 @@
</p>
<p class="ptips">
支付金额
<span>¥{{ cashierParams.price | unitPrice }}</span>
<span>¥{{unitPrice(cashierParams.price) }}</span>
</p>
</div>
</div>
@@ -31,7 +31,7 @@
</div>
<div v-if="item == 'WALLET'">
<u-icon class="method_icon" name="red-packet-fill" color="#dd6161" size="80"></u-icon>
<span class="method_name">余额支付(当前余额¥{{ walletValue | unitPrice }})</span>
<span class="method_name">余额支付(当前余额¥{{unitPrice(walletValue) }})</span>
</div>
</div>
<div class="col3" @click="awaitPay(item)" textAlign="right">

View File

@@ -3,7 +3,7 @@
<div class='goods' v-if="selectedGoods">
<image class="goods-image" :src="selectedGoods.thumbnail" alt="">
<p class="goodsName">{{selectedGoods.goodsName}}</p>
<div class="goodsPrice">{{(selectedGoods.promotionPrice || selectedGoods.price ) | unitPrice('¥')}}</div>
<div class="goodsPrice">{{(selectedGoods.promotionPrice ||unitPrice(selectedGoods.price ), '¥')}}</div>
</div>
<div>
<div class="tips">

View File

@@ -2,7 +2,7 @@
<div class="wrapper">
<div class="pay-wrapper">
<div class="pay-money">
{{ Number(payPrice) | unitPrice }}
{{unitPrice(Number(payPrice)) }}
</div>
<div class="pay-btns">
<div v-show="!from" @click="checkOrder">查看{{ this.orderType == "RECHARGE" ? '余额' : '订单' }}</div>
@@ -16,7 +16,7 @@
<div>
支付方式
</div>
<div>{{ paymentMethod | paymentTypeFilter }}</div>
<div>{{ paymentTypeFilter(paymentMethod) }}</div>
</div>
</div>
</div>
@@ -41,7 +41,14 @@ export default {
components: {
goodsRecommend,
},
filters: {
onLoad(options) {
this.paymentMethod = options.paymentMethod || "";
this.from = options.from || "";
this.payPrice = options.payPrice || 0;
this.orderType = options.orderType;
},
methods: {
paymentTypeFilter(val) {
switch (val) {
case "WECHAT":
@@ -54,15 +61,6 @@ export default {
return "";
}
},
},
onLoad(options) {
this.paymentMethod = options.paymentMethod || "";
this.from = options.from || "";
this.payPrice = options.payPrice || 0;
this.orderType = options.orderType;
},
methods: {
checkOrder() {
/**
* 查看订单

View File

@@ -1,7 +1,7 @@
<template>
<view class="add-address">
<div class="uForm">
<u-form :border-bottom="false" :model="form" ref="uForm" :error-type="['toast']" :rule="rules">
<u-form :border-bottom="false" :model="form" ref="uForm" error-type="toast" :rules="rules">
<!-- #ifndef H5 -->
<view class="selectAddress" @click="clickUniMap">
选择收货地址
@@ -277,7 +277,7 @@ export default {
getAddressDetail(option.id).then((res) => {
const params = res.data.result;
params.___path = params.consigneeAddressPath;
this.$set(this, "form", params);
this["form"] = params;
if (this.$store.state.isShowToast){ uni.hideLoading() };
});

View File

@@ -38,7 +38,7 @@
<u-icon name="plus-circle"></u-icon>
添加新收货人
</button>
<u-action-sheet :list="removeList" :tips="tips" v-model="showAction" @click="deleteAddressMessage"></u-action-sheet>
<u-action-sheet :list="removeList" :tips="tips" v-model:show="showAction" @click="deleteAddressMessage"></u-action-sheet>
</view>
</template>

View File

@@ -39,7 +39,7 @@
添加新收货人
</button>
<u-action-sheet :list="removeList" :tips="tips" v-model="showAction" @click="deleteAddressMessage"></u-action-sheet>
<u-action-sheet :list="removeList" :tips="tips" v-model:show="showAction" @click="deleteAddressMessage"></u-action-sheet>
</view>
</template>
@@ -86,7 +86,7 @@ export default {
* 进入页面检测当前账户是否登录
*/
onShow() {
if (this.$options.filters.tipsToLogin()) {
if (this.tipsToLogin()) {
this.getAddressList();
}
},

View File

@@ -16,7 +16,7 @@
</view>
<view style="height: 100px"></view>
</view>
<u-action-sheet :list="removeList" :tips="tips" v-model="showAction" @click="deleteAddressMessage"></u-action-sheet>
<u-action-sheet :list="removeList" :tips="tips" v-model:show="showAction" @click="deleteAddressMessage"></u-action-sheet>
</view>
</template>

View File

@@ -5,7 +5,7 @@
<view class="wrapper-show-money">
<view class="money-view">
<h3>预存款金额 </h3>
<view class="money">{{walletNum | unitPrice }}</view>
<view class="money">{{unitPrice(walletNum) }}</view>
</view>
</view>
@@ -20,9 +20,9 @@
<!-- <view class="-number">{{logItem.detail}}</view> -->
</view>
<view class="view-item-change">
<view class="-money green" v-if="logItem.serviceType == 'WALLET_PAY' || logItem.serviceType == 'WALLET_WITHDRAWAL'"> {{logItem.money | unitPrice}} </view>
<view class="-money green" v-if="logItem.serviceType == 'WALLET_PAY' || logItem.serviceType == 'WALLET_WITHDRAWAL'"> {{unitPrice(logItem.money)}} </view>
<view class="-money" v-if="logItem.serviceType == 'WALLET_REFUND' || logItem.serviceType == 'WALLET_RECHARGE' || logItem.serviceType == 'WALLET_COMMISSION' ">
+{{logItem.money | unitPrice}} </view>
+{{unitPrice(logItem.money)}} </view>
<view class="-time">{{logItem.createTime}}</view>
</view>
</view>

View File

@@ -1,13 +1,13 @@
<template>
<view class="wrapper">
<u-cell-group>
<u-cell-item title="申请单号"></u-cell-item>
<u-cell-item title="提现金额" value="新版本"></u-cell-item>
<u-cell-item title="收款银行"></u-cell-item>
<u-cell-item title="收款账号" value="新版本"></u-cell-item>
<u-cell-item title="开户人姓名"></u-cell-item>
<u-cell-item title="创建时间" value="新版本"></u-cell-item>
<u-cell-item title="提现状态" value="新版本"></u-cell-item>
<u-cell title="申请单号"></u-cell>
<u-cell title="提现金额" value="新版本"></u-cell>
<u-cell title="收款银行"></u-cell>
<u-cell title="收款账号" value="新版本"></u-cell>
<u-cell title="开户人姓名"></u-cell>
<u-cell title="创建时间" value="新版本"></u-cell>
<u-cell title="提现状态" value="新版本"></u-cell>
</u-cell-group>
</view>
</template>

View File

@@ -1,9 +1,9 @@
<template>
<div class="wrapper">
<u-navbar :custom-back="back" title="余额"></u-navbar>
<u-navbar :auto-back="false" @leftClick="back" title="余额"></u-navbar>
<div class="box">
<div class="deposit">预存款金额</div>
<div class="money">{{walletNum | unitPrice }}</div>
<div class="money">{{unitPrice(walletNum) }}</div>
<div class="operation-btns">
<div class="operation-btn light" @click="navigateTo('/pages/mine/deposit/withdrawal')">提现</div>
<div class="operation-btn" @click="navigateTo('/pages/mine/deposit/recharge')">充值</div>
@@ -33,11 +33,11 @@ export default {
};
},
async onShow() {
if (this.$options.filters.isLogin("auth")) {
if (this.isLogin("auth")) {
let result = await getUserWallet(); //预存款
this.walletNum = result.data.result.memberWallet;
} else {
this.$options.filters.navigateToLogin("redirectTo");
this.navigateToLogin("redirectTo");
}
},
methods: {

View File

@@ -8,7 +8,7 @@
<view class="-number" v-if="item.inspectRemark || item.errorMessage">{{ item.inspectRemark || item.errorMessage }}</view>
</view>
<view class="view-item-change">
<view class="-money">-{{ item.applyMoney | unitPrice }}</view>
<view class="-money">-{{unitPrice(item.applyMoney) }}</view>
<view class="-time">{{ item.createTime || item.inspectTime || "" }}</view>
<view v-if="item.applyStatus === 'WAIT_USER_CONFIRM'" class="confirm-btn" @click.stop="confirmWechatReceive(item)">确认收款</view>
</view>

View File

@@ -18,7 +18,7 @@
<view class="all">
<view @click="handleAll" :style="{ color: $mainColor }">全部</view>
<view style="font-size: 24rpx; color: #999">可提现金额<span>{{ walletNum | unitPrice }}</span></view>
<view style="font-size: 24rpx; color: #999">可提现金额<span>{{unitPrice(walletNum) }}</span></view>
</view>
</view>

View File

@@ -11,7 +11,7 @@
? "通过"
: "拒绝"
}}</view>
<view class="price">+{{ item.price | unitPrice }}</view>
<view class="price">+{{unitPrice(item.price) }}</view>
</view>
<view class="log-item-view">
<view>{{ item.createTime }}</view>
@@ -24,7 +24,7 @@
<view class="log-item">
<view class="log-item-view">
<view class="title">{{ item.goodsName }}</view>
<view class="price">提成金额+{{ item.rebate | unitPrice }}</view>
<view class="price">提成金额+{{unitPrice(item.rebate) }}</view>
</view>
<view class="log-item-view">
<view>创建时间{{ item.createTime }}</view>

View File

@@ -3,9 +3,9 @@
<view class="nav-list">
<view class="total">可提现金额</view>
<view class="price">{{ distributionData.canRebate | unitPrice }}</view>
<view class="price">{{unitPrice(distributionData.canRebate) }}</view>
<view class="frozen"
>冻结金额{{ distributionData.commissionFrozen | unitPrice }}</view
>冻结金额{{unitPrice(distributionData.commissionFrozen) }}</view
>
</view>
<view class="nav">

View File

@@ -1,7 +1,7 @@
<template>
<view class="wrapper">
<!-- 筛选弹出层 TODO后续版本更新 -->
<!-- <u-popup width="90%" v-model="popup" mode="right">
<!-- <u-popup width="90%" v-model:show="popup" mode="right">
<view class="screen-title">商品筛选</view>
<view class="screen-view">
@@ -67,8 +67,9 @@
<view class="goods-list">
<scroll-view class="body-view" scroll-y @scrolltolower="renderDate">
<u-swipe-action v-for="(item, index) in goodsList" :disabled="!params.checked" :show="item.___selected" @open="openAction(item)" :index="index" :options="options" bg-color="#fff"
ref="swiperAction" :key="item.id" @click="changeActionTab(item)">
<u-swipe-action v-for="(item, index) in goodsList" ref="swiperAction" :key="item.id">
<u-swipe-action-item :disabled="!params.checked" :show="item.___selected" @open="openAction(item)" :name="index" :options="options"
@click="changeActionTab(item)">
<div class="goods-item">
<view class="goods-item-img" @click="handleNavgationGoods(item)">
@@ -82,7 +83,7 @@
<!-- 商品金额 -->
<view class="-item-price" @click="handleNavgationGoods(item)">
佣金:
<span> {{ item.commission | unitPrice }}</span>
<span> {{unitPrice(item.commission) }}</span>
</view>
<!-- 比率佣金 -->
<view class="-item-bottom">
@@ -92,7 +93,7 @@
<span>{{ "5.00%" }}</span>
</view> -->
<view class="-item-yj">
<span>{{ item.price | unitPrice }}</span>
<span>{{unitPrice(item.price) }}</span>
</view>
</view>
<view>
@@ -102,6 +103,7 @@
</view>
</view>
</div>
</u-swipe-action-item>
</u-swipe-action>
</scroll-view>
@@ -112,7 +114,7 @@
</view>
<canvas class="canvas-hide" canvas-id="qrcode" />
<drawCanvas ref="drawCanvas" v-if="showFlag" :res="res" />
<u-modal v-model="deleteShow" :confirm-style="{'color':lightColor}" @confirm="delectConfirm" show-cancel-button :content="deleteContent" :async-close="true"></u-modal>
<u-modal v-model:show="deleteShow" :confirm-style="{'color':lightColor}" @confirm="delectConfirm" show-cancel-button :content="deleteContent" :async-close="true"></u-modal>
</view>
</template>
@@ -215,9 +217,9 @@ export default {
*/
openAction(val) {
this.goodsList.forEach((item) => {
this.$set(item, "___selected", false);
item["___selected"] = false;
});
this.$set(val, "___selected", true);
val["___selected"] = true;
},
/**
@@ -242,7 +244,7 @@ export default {
let callback = result.data.result;
this.res.container.title = `${goods.goodsName}`;
this.res.bottom.code = `data:image/png;base64,${callback}`;
this.res.bottom.price = this.$options.filters.unitPrice(
this.res.bottom.price = this.unitPrice(
goods.price,
"¥"
);
@@ -294,7 +296,7 @@ export default {
distributionGoods(this.params).then((res) => {
if (res.data.success && res.data.result.records.length >= 1) {
res.data.result.records.forEach((item) => {
this.$set(item, "___selected", false);
item["___selected"] = false;
});
this.goodsList.push(...res.data.result.records);
}

View File

@@ -11,7 +11,7 @@
<view class="all">
<view @click="handleAll" :style="{ color: $mainColor }">全部</view>
<view style="font-size: 24rpx; color: #999"
>可提现金额<span>{{ distributionData.canRebate | unitPrice }}</span
>可提现金额<span>{{unitPrice(distributionData.canRebate) }}</span
></view
>
</view>

View File

@@ -1,6 +1,6 @@
<template>
<div class="wrapper">
<u-parse :show-with-animation="true" :lazy-load="true" :selectable="true" :html="res.content" v-if="res"></u-parse>
<u-parse :lazy-load="true" :selectable="true" :content="res.content" v-if="res"></u-parse>
</div>
</template>

View File

@@ -35,8 +35,7 @@
JSON.parse(item.text)['goodsName']
}}</text>
</view>
<view class="goods-desc-rice" >{{
JSON.parse(item.text)['price'] | unitPrice
<view class="goods-desc-rice" >{{unitPrice(JSON.parse(item.text)['price'])
}}
</view>
</view>
@@ -52,8 +51,7 @@
<div class="wes-2" >{{
order.name
}}</div>
<div class="main-color goods-desc-rice">{{
order.goodsPrice | unitPrice("¥")
<div class="main-color goods-desc-rice">{{unitPrice(order.goodsPrice, "¥")
}}</div>
</view>
@@ -145,8 +143,7 @@
goodListData.goodsName
}}</text>
</view>
<view class="goods-desc-rice" > {{
goodListData.price | unitPrice
<view class="goods-desc-rice" > {{unitPrice(goodListData.price)
}}
</view>
</view>

View File

@@ -6,7 +6,7 @@
<div class="bagbar">{{$u.timeFormat(row.send_time, 'yyyy-mm-dd')}}</div>
</div>
<u-card @click="goDetail(row.sn,row.logi_id,row.ship_no)" :title="title" title-color="#666666" title-size="24" sub-title-color="#666666" sub-title-size="24" :border="false" :sub-title=row.status>
<view class="msg-body" slot="body">
<view class="msg-body" #body>
<image class="msgImg" :src="row.goods_img" mode=""></image>
<view class="msgView">
<view>{{row.goodsName}}</view>

View File

@@ -10,7 +10,7 @@
</div>
<div class="msgMsg">{{$u.timeFormat(row.send_time, 'yyyy-mm-dd')}}</div>
<u-card :title="title" :title-size="35" :border="false">
<view class slot="body">
<view class #body>
<view class="u-body-item u-flex u-row-between u-p-b-0">
<view class="u-body-item-title u-line-2">{{row.content}}</view>
</view>

View File

@@ -1,7 +1,7 @@
<template>
<view class="content">
<u-navbar>
<u-tabs :active-color="lightColor" class="slot-wrap" :list="navList" count="count" :is-scroll="true" :current="tabCurrentIndex" @change="tabClick"></u-tabs>
<u-tabs :active-color="lightColor" class="slot-wrap" :list="navList" :is-scroll="true" :current="tabCurrentIndex" @change="tabClick"></u-tabs>
</u-navbar>
<view class="swiper-box">
<!-- 显示商品栏 -->
@@ -10,19 +10,21 @@
<!-- 空白页 -->
<u-empty style="margin-top: 40rpx" text="暂无收藏商品数据" mode="favor" v-if="goodsEmpty"></u-empty>
<!-- 商品展示数据 -->
<u-swipe-action @open="openLeftChange(item, index, 'goods')" :show="item.selected" btn-width="180"
:options="LeftOptions" v-else v-for="(item, index) in goodList"
@click="clickGoodsSwiperAction(item, index)" :index="index" :key="index">
<u-swipe-action v-else v-for="(item, index) in goodList" :key="index">
<u-swipe-action-item @open="openLeftChange(item, index, 'goods')" :show="item.selected"
:options="LeftOptions"
@click="clickGoodsSwiperAction(item, index)" :name="index">
<view class="goods" @click="goGoodsDetail(item)">
<u-image width="131rpx" height="131rpx" :src="item.image" mode="aspectFit">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
<view class="goods-intro">
<view>{{ item.goodsName }}</view>
<view class="goods-sn">{{ item.goods_sn }}</view>
<view>{{ item.price | unitPrice }}</view>
<view>{{unitPrice(item.price) }}</view>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</scroll-view>
@@ -33,15 +35,16 @@
<!-- 空白页 -->
<u-empty style="margin-top: 40rpx" text="暂无收藏店铺数据" mode="favor" v-if="storeEmpty"></u-empty>
<!-- 店铺展示数据 -->
<u-swipe-action @open="openLeftChange(item, 'store')" :show="item.selected" btn-width="180"
:options="LeftOptions" v-else v-for="(item, index) in storeList" :key="index"
<u-swipe-action v-else v-for="(item, index) in storeList" :key="index">
<u-swipe-action-item @open="openLeftChange(item, 'store')" :show="item.selected"
:options="LeftOptions"
@click="clickStoreSwiperAction(item)">
<view class="store" @click="goStoreMainPage(item.id)">
<view class="intro">
<view class="store-logo">
<u-image width="102rpx" height="102rpx" :src="item.storeLogo" :alt="item.storeName"
mode="aspectFit">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</view>
<view class="store-name">
@@ -54,6 +57,7 @@
</view>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</scroll-view>
</view>
@@ -145,9 +149,9 @@
let way;
type == "goods" ? (way = goodList) : (way = storeList);
way.forEach((item) => {
this.$set(item, "selected", false);
item["selected"] = false;
});
this.$set(val, "selected", false);
val["selected"] = false;
val.selected = true;
},

View File

@@ -1,9 +1,9 @@
<template>
<view class="myTracks">
<u-navbar title="我的足迹">
<div slot="right">
<template #right>
<div class="light-color edit" @click="isEdit = !isEdit">{{ !isEdit ? '编辑' : '完成'}}</div>
</div>
</template>
</u-navbar>
<u-notice-bar mode="vertical" :list="['右划删除浏览记录']"></u-notice-bar>
<u-empty text="暂无历史记录" style="margin-top:200rpx;" mode="history" v-if="whetherEmpty"></u-empty>
@@ -12,7 +12,8 @@
<view class="myTracks-title" @click="navigateToStore(item)">{{item.storeName}}</view>
<view class="myTracks-items">
<u-swipe-action style="width: 100%;" :show="item.show" :index="index" :key="item.id"
<u-swipe-action style="width: 100%;">
<u-swipe-action-item :show="item.show" :name="index"
@click="delTracks" @open="open" :options="options">
<view class="myTracks-item">
@@ -29,10 +30,11 @@
<view class="myTracks-item-title-desc"> </view>
</view>
<view class="myTracks-item-price">
{{ item.price | unitPrice }}
{{unitPrice(item.price) }}
</view>
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</view>

View File

@@ -76,11 +76,11 @@ export default {
if (res.data.success) {
let data = res.data.result.records;
if (data.length < 10) {
this.$set(this.count, "loadStatus", "noMore");
this.count["loadStatus"] = "noMore";
this.pointList.push(...data);
} else {
this.pointList.push(...data);
if (data.length < 10) this.$set(this.count, "loadStatus", "noMore");
if (data.length < 10) this.count["loadStatus"] = "noMore";
}
}
});

View File

@@ -15,15 +15,15 @@
<!-- {{localVersion}} -->
<u-cell-group class="cell" :border="false">
<!-- #ifdef APP-PLUS -->
<u-cell-item v-if="IosWhether" @click="checkStar" title="去评分"></u-cell-item>
<u-cell-item title="功能介绍" @click="navigateTo('/pages/mine/set/versionFunctionList')"></u-cell-item>
<u-cell-item title="检查更新" @click="checkUpdate"></u-cell-item>
<u-cell v-if="IosWhether" @click="checkStar" title="去评分"></u-cell>
<u-cell title="功能介绍" @click="navigateTo('/pages/mine/set/versionFunctionList')"></u-cell>
<u-cell title="检查更新" @click="checkUpdate"></u-cell>
<!-- #endif -->
<u-cell-item title="证照信息" @click="navigateTo('/pages/mine/help/tips?type=LICENSE_INFORMATION')"></u-cell-item>
<u-cell-item title="服务协议" @click="navigateTo('/pages/mine/help/tips?type=USER_AGREEMENT')"></u-cell-item>
<u-cell-item title="隐私协议" @click="navigateTo('/pages/mine/help/tips?type=PRIVACY_POLICY')"></u-cell-item>
<u-cell-item title="关于我们" :border-bottom="false" @click="navigateTo('/pages/mine/help/tips?type=ABOUT')"></u-cell-item>
<u-cell title="证照信息" @click="navigateTo('/pages/mine/help/tips?type=LICENSE_INFORMATION')"></u-cell>
<u-cell title="服务协议" @click="navigateTo('/pages/mine/help/tips?type=USER_AGREEMENT')"></u-cell>
<u-cell title="隐私协议" @click="navigateTo('/pages/mine/help/tips?type=PRIVACY_POLICY')"></u-cell>
<u-cell title="关于我们" :border="false" @click="navigateTo('/pages/mine/help/tips?type=ABOUT')"></u-cell>
</u-cell-group>

View File

@@ -9,7 +9,7 @@
<div class="feedBack-box">
<h4>问题反馈 <span style="margin-left:10rpx;" v-if="feedBack.type">@{{ list.find(item=>{return item.value == feedBack.type }).text }}</span></h4>
<u-input class="field-input" height="500" :border-bottom="false" v-model="feedBack.context" type="textarea" placeholder="请输入反馈信息">
<u-input class="field-input" height="500" border="none" v-model="feedBack.context" type="textarea" placeholder="请输入反馈信息">
</u-input>
</div>
@@ -18,14 +18,14 @@
<view class="opt-view">
<view class="img-title">上传凭证最多2张</view>
<view class="images-view">
<u-upload :header=" { accessToken: storage.getAccessToken() }" :action="action" width="150" @on-uploaded="onUploaded" :max-count="2" :show-progress="false"></u-upload>
<u-upload :file-list="uploadFileList" :auto-upload="false" width="150" @afterRead="onUploadAfterRead" :max-count="2"></u-upload>
</view>
</view>
</div>
<div class="feedBack-box">
<h4>手机号</h4>
<u-input :border-bottom="false" v-model="feedBack.mobile" placeholder="请输入您的手机号">
<u-input border="none" v-model="feedBack.mobile" placeholder="请输入您的手机号">
</u-input>
</div>
@@ -38,7 +38,7 @@
import storage from "@/utils/storage.js";
import config from "@/config/config";
import { feedBack } from "@/api/members.js";
import { upload } from "@/api/common.js";
import { handleUploadAfterRead } from "@/utils/uploadHelper.js";
export default {
data() {
return {
@@ -47,7 +47,7 @@ export default {
feedBack: {
type: "FUNCTION", //默认反馈问题为 '功能相关'
},
action: upload, //图片上传地址
uploadFileList: [],
list: [
{ text: "功能相关", value: "FUNCTION" },
{ text: "优化反馈", value: "OPTIMIZE" },
@@ -58,16 +58,13 @@ export default {
methods: {
// 点击反馈内容
handleClick(index) {
this.$set(this.feedBack, "type", this.list[index].value);
this.feedBack["type"] = this.list[index].value;
},
//图片上传
onUploaded(lists) {
let images = [];
lists.forEach((item) => {
images.push(item.response.result);
onUploadAfterRead(event) {
handleUploadAfterRead(event, this.uploadFileList, (urls) => {
this.feedBack.images = urls.join(",");
});
this.feedBack.images = images.join(",");
},
/**

View File

@@ -17,7 +17,7 @@
<u-form-item label="生日" label-width="150" right-icon="arrow-right">
<div style="width: 100%;" @click="showBirthday = true">{{ birthday || '请选择出生日期' }}</div>
<u-picker v-model="showBirthday" mode="time" :confirm-color="lightColor" @confirm="selectTime"></u-picker>
<u-picker v-model:show="showBirthday" mode="time" :confirm-color="lightColor" @confirm="selectTime"></u-picker>
</u-form-item>
<u-form-item label="城市" label-width="150" placeholder="请选择城市" right-icon="arrow-right">
<div style="width: 100%;" @click="clickRegion">{{ form.___path || '请选择城市' }}</div>
@@ -44,10 +44,9 @@
import { saveUserInfo, getUserInfo } from "@/api/members.js";
import { upload } from "@/api/common.js";
import storage from "@/utils/storage.js";
import uFormItem from "@/uview-ui/components/u-form-item/u-form-item.vue";
import city from "@/components/m-city/m-city.vue";
export default {
components: { uFormItem, "m-city": city },
components: { "m-city": city },
data() {
return {
lightColor: this.$lightColor, //高亮颜色
@@ -83,7 +82,7 @@ export default {
* 退出登录
*/
quiteLoginOut() {
this.$options.filters.quiteLoginOut();
this.quiteLoginOut();
},
/**
@@ -157,11 +156,9 @@ export default {
* 选择地址
*/
selectRegion(region) {
this.$set(
this.form,
"address",
`${region.province.label} ${region.city.label} ${region.area.label}`
);
this.form["address"] = `${region.province.label} ${region.city.label} ${region.area.label}`
;
},
/**

View File

@@ -15,8 +15,8 @@
<u-form-item class="sendCode" label-width="120" prop="code" label="验证码">
<u-input v-model="codeForm.code" placeholder="请输入验证码" />
<u-verification-code unique-key="page-edit" :seconds="seconds" @end="end" @start="start"
ref="uCode" @change="codeChange"></u-verification-code>
<u-code unique-key="page-edit" :seconds="seconds" @end="end" @start="start"
ref="uCode" @change="codeChange"></u-code>
<view @tap="getCode" class="text-tips">{{ tips }}</view>
</u-form-item>

View File

@@ -15,8 +15,8 @@
<u-form-item class="sendCode" label-width="120" prop="code" label="验证码">
<u-input v-model="codeForm.code" placeholder="请输入验证码" />
<u-verification-code unique-key="page-edit" :seconds="seconds" @end="end" @start="start"
ref="uCode" @change="codeChange"></u-verification-code>
<u-code unique-key="page-edit" :seconds="seconds" @end="end" @start="start"
ref="uCode" @change="codeChange"></u-code>
<view @tap="getCode" class="text-tips">{{ tips }}</view>
</u-form-item>
@@ -197,7 +197,7 @@
/**判断是否是当前用户的手机号 */
isUserPhone() {
let flage = false;
let user = this.$options.filters.isLogin();
let user = this.isLogin();
if (user.mobile != this.codeForm.mobile) {
uni.showToast({
title: "请输入当前绑定手机号",

View File

@@ -2,9 +2,11 @@
<template>
<view class="face-login">
<u-cell-group>
<u-cell-item class="border-top" :arrow="false" title="面容登录">
<u-switch slot="right-icon" @change="faceSwitchChange" active-color="#1abc9c" size="40" v-model="checked"></u-switch>
</u-cell-item>
<u-cell class="border-top" :isLink="false" title="面容登录">
<template #right-icon>
<u-switch @change="faceSwitchChange" active-color="#1abc9c" size="40" v-model="checked"></u-switch>
</template>
</u-cell>
</u-cell-group>
<view class="describe">开启后可使用面容认证完成快捷登录设置仅对本机生效</view>
</view>

View File

@@ -2,9 +2,11 @@
<template>
<view class="finger">
<u-cell-group>
<u-cell-item class="border-top" :arrow="false" title="指纹登录">
<u-switch slot="right-icon" @change="fingerSwitchChange" :active-color="lightColor" size="40" v-model="checked"></u-switch>
</u-cell-item>
<u-cell class="border-top" :isLink="false" title="指纹登录">
<template #right-icon>
<u-switch @change="fingerSwitchChange" :active-color="lightColor" size="40" v-model="checked"></u-switch>
</template>
</u-cell>
</u-cell-group>
<view class="describe">开启后可使用指纹认证完成快捷登录设置仅对本机生效如需修改指纹请在系统设置中操作</view>
</view>

View File

@@ -1,8 +1,8 @@
<template>
<view class="securityCenter">
<u-cell-group>
<u-cell-item title="修改密码" @click="navigateTo('/pages/mine/set/securityCenter/updatePwdTab')"></u-cell-item>
<u-cell-item title="注销账户" @click="zhuxiao"></u-cell-item>
<u-cell title="修改密码" @click="navigateTo('/pages/mine/set/securityCenter/updatePwdTab')"></u-cell>
<u-cell title="注销账户" @click="zhuxiao"></u-cell>
</u-cell-group>
</view>
</template>

View File

@@ -1,8 +1,8 @@
<template>
<view class="securityCenter">
<u-cell-group>
<u-cell-item title="验证密码" @click="navigateTo('/pages/mine/set/securityCenter/editLoginPassword')"></u-cell-item>
<u-cell-item title="验证手机号" @click="navigateTo('/pages/mine/set/securityCenter/editPassword')"></u-cell-item>
<u-cell title="验证密码" @click="navigateTo('/pages/mine/set/securityCenter/editLoginPassword')"></u-cell>
<u-cell title="验证手机号" @click="navigateTo('/pages/mine/set/securityCenter/editPassword')"></u-cell>
</u-cell-group>
</view>
</template>

View File

@@ -13,16 +13,16 @@
<!-- #endif -->
<u-cell-group :border="false">
<!-- #ifdef APP-PLUS -->
<u-cell-item title="清除缓存" :value="fileSizeString" @click="clearCache"></u-cell-item>
<u-cell title="清除缓存" :value="fileSizeString" @click="clearCache"></u-cell>
<!-- #endif -->
<!-- #ifndef MP-WEIXIN -->
<u-cell-item title="安全中心" @click="navigateTo('/pages/mine/set/securityCenter/securityCenter')"></u-cell-item>
<u-cell title="安全中心" @click="navigateTo('/pages/mine/set/securityCenter/securityCenter')"></u-cell>
<!-- #endif -->
<u-cell-item title="用户注销" v-if="userInfo.id" @click="logoff"></u-cell-item>
<u-cell-item title="意见反馈" @click="navigateTo('/pages/mine/set/feedBack')"></u-cell-item>
<u-cell title="用户注销" v-if="userInfo.id" @click="logoff"></u-cell>
<u-cell title="意见反馈" @click="navigateTo('/pages/mine/set/feedBack')"></u-cell>
<!-- #ifndef H5 -->
<!-- #endif -->
<u-cell-item :title="`关于${config.name}`" @click="navigateTo('/pages/mine/set/editionIntro')"></u-cell-item>
<u-cell :title="`关于${config.name}`" @click="navigateTo('/pages/mine/set/editionIntro')"></u-cell>
</u-cell-group>
<view class="submit" v-if="userInfo.id" @click="quiteLoginOut">退出登录</view>
</view>
@@ -54,14 +54,14 @@ export default {
* 退出登录
*/
quiteLoginOut() {
this.$options.filters.quiteLoginOut();
this.quiteLoginOut();
},
/**
* 用户注销
*/
logoff(){
this.$options.filters.logoff();
this.logoff();
},
/**
@@ -91,10 +91,10 @@ export default {
* 判断当前是否进入用户中心
*/
checkUserInfo() {
if (this.$options.filters.isLogin("auth")) {
if (this.isLogin("auth")) {
this.navigateTo("/pages/mine/set/personMsg");
} else {
this.$options.filters.tipsToLogin();
this.tipsToLogin();
}
},
@@ -155,7 +155,7 @@ export default {
},
},
onShow() {
this.userInfo = this.$options.filters.isLogin();
this.userInfo = this.isLogin();
// #ifdef APP-PLUS
this.getCacheSize();
// #endif

View File

@@ -1,6 +1,6 @@
<template>
<view class="content">
<u-navbar :background="navObj" :is-back="false">
<u-navbar :bg-color="navObj.background" :auto-back="false">
<mSearch
ref="mSearch"
class="mSearch-input-box"
@@ -109,7 +109,7 @@
</div>
</view>
<u-popup border-radius="20" mode="right" width="90%" v-model="sortPopup">
<u-popup border-radius="20" mode="right" width="90%" v-model:show="sortPopup">
<view class="status_bar"></view>
<view class="sort-box ">
<view class="sort-list">
@@ -539,10 +539,10 @@ export default {
if (this.params.sort == type) {
this.params.order == 'asc' ? (this.params.order = 'desc') : (this.params.order = 'asc');
this.$set(this.params, 'sort', type);
this.params['sort'] = type;
} else {
this.params.order = 'desc';
this.$set(this.params, 'sort', type);
this.params['sort'] = type;
}
if (index == 0) {
@@ -709,7 +709,7 @@ export default {
this.$refs.mSearch.inputVal = keyword;
this.params.keyword = this.keyword;
this.params.pageNumber = 1;
this.$set(this.sortParams, 'keyword', keyword);
this.sortParams['keyword'] = keyword;
this.loadData('refresh', 1);
},
//保存关键字到历史记录

View File

@@ -54,7 +54,7 @@
<view class="goods-title u-line-2">{{ sku.name }}</view>
<!-- 如果商品多个则不显示每个商品价格-->
<view class="goods-price" v-if="order.orderItems.length <= 1">
{{ order.flowPrice | unitPrice }}
{{unitPrice(order.flowPrice) }}
</view>
</view>
<view class="goods-num">
@@ -89,31 +89,31 @@
class="cannot_apply not_center"
v-if="order.serviceType == 'RETURN_GOODS'"
>
退货处理-{{ order.serviceStatus | serviceStatusList }}</view
退货处理-{{serviceStatusList(order.serviceStatus) }}</view
>
<view
class="cannot_apply not_center"
v-if="order.serviceType == 'SUPPLY_AGAIN_GOODS'"
>
补发商品-{{ order.serviceStatus | serviceStatusList }}</view
补发商品-{{serviceStatusList(order.serviceStatus) }}</view
>
<view
class="cannot_apply not_center"
v-if="order.serviceType == 'RETURN_MONEY'"
>
退款-{{ order.serviceStatus | serviceStatusList }}</view
退款-{{serviceStatusList(order.serviceStatus) }}</view
>
<view
class="cannot_apply not_center"
v-if="order.serviceType == 'EXCHANGE_GOODS'"
>
换货-{{ order.serviceStatus | serviceStatusList }}</view
换货-{{serviceStatusList(order.serviceStatus) }}</view
>
<view
class="cannot_apply not_center"
v-if="order.serviceType == 'CANCEL'"
>
取消订单-{{ order.serviceStatus | serviceStatusList }}</view
取消订单-{{serviceStatusList(order.serviceStatus) }}</view
>
</div>
@@ -177,7 +177,7 @@
<!-- 多个商品显示订单总价格 -->
<view class="cannot_apply">
订单总金额:<span class="countMoney"
>¥{{ order.flowPrice | unitPrice }}</span
>¥{{unitPrice(order.flowPrice) }}</span
>
</view>
</view>
@@ -187,11 +187,11 @@
<u-modal
show-cancel-button
@confirm="closeService"
v-model="cancelShow"
v-model:show="cancelShow"
content="确认取消售后"
></u-modal>
<u-modal
v-model="tipsShow"
v-model:show="tipsShow"
content="当订单未确认收货|已过售后服务有效期|已申请售后服务时,不能申请售后"
></u-modal>
</view>

View File

@@ -49,8 +49,8 @@
<view class="opt-view">
<view class="img-title">上传凭证最多5张</view>
<view class="images-view">
<u-upload :header=" { accessToken: storage.getAccessToken() }" :action="action" width="150"
@on-uploaded="onUploaded" :max-count="5" :show-progress="false"></u-upload>
<u-upload :file-list="fileList" :auto-upload="false" width="150"
@afterRead="onUploadAfterRead" :max-count="5"></u-upload>
</view>
</view>
@@ -87,10 +87,10 @@
<u-button type="primary" ripple shape="circle" v-if="applyInfo.refundWay" :custom-style="customStyle"
@click="onSubmit">提交申请</u-button>
</view>
<u-select mode="single-column" :list="reasonList" v-model="reasonSelectShow" @confirm="reasonSelectConfirm">
<u-select mode="single-column" :list="reasonList" v-model:show="reasonSelectShow" @confirm="reasonSelectConfirm">
</u-select>
<u-select mode="single-column" :list="typeList" v-model="typeSelectShow" @confirm="typeSelectConfirm"></u-select>
<u-select mode="single-column" :list="returnList" v-model="returnSelectShow" @confirm="returnSelectConfirm">
<u-select mode="single-column" :list="typeList" v-model:show="typeSelectShow" @confirm="typeSelectConfirm"></u-select>
<u-select mode="single-column" :list="returnList" v-model:show="returnSelectShow" @confirm="returnSelectConfirm">
</u-select>
<u-toast ref="uToast" />
</view>
@@ -104,7 +104,7 @@ import {
} from "@/api/after-sale";
import city from "@/components/m-city/m-city";
import { upload } from "@/api/common.js";
import { handleUploadAfterRead } from "@/utils/uploadHelper.js";
import { checkBankno } from "@/utils/Foundation";
import storage from "@/utils/storage.js";
export default {
@@ -115,7 +115,6 @@ export default {
return {
storage,
list: [{ id: "", localName: "请选择", children: [] }],
action: upload, //图片上传数据
fileList: [],
sn: "",
sku: {},
@@ -263,14 +262,10 @@ export default {
valChange(e) {
this.form.num = e.value;
},
//图片上传
onUploaded(lists) {
let images = [];
lists.forEach((item) => {
images.push(item.response.result);
onUploadAfterRead(event) {
handleUploadAfterRead(event, this.fileList, (urls) => {
this.form.images = urls;
});
this.form.images = images;
},
//提交申请
onSubmit() {

View File

@@ -17,7 +17,7 @@
<view class="goods-info">
<view class="goods-title u-line-2">{{ sku.name }}</view>
<view class="goods-price">
<span>{{ sku.price | unitPrice }}</span>
<span>{{unitPrice(sku.price) }}</span>
<span class="num">购买数量: {{ sku.num }} </span>
</view>
</view>
@@ -55,9 +55,9 @@
</u-button>
</view>
</u-form>
<u-select mode="single-column" :list="companyList" v-model="companySelectShow"
<u-select mode="single-column" :list="companyList" v-model:show="companySelectShow"
@confirm="companySelectConfirm"></u-select>
<u-calendar v-model="timeshow" :mode="'date'" @change="onTimeChange"></u-calendar>
<u-calendar v-model:show="timeshow" :mode="'date'" @change="onTimeChange"></u-calendar>
<u-toast ref="uToast"/>
</view>
</template>

View File

@@ -11,12 +11,10 @@
<view class="apply-info-view">
<view class="status-info">
<view class="status-info-box">
<view class="status-val">{{
serviceDetail.serviceStatus | serviceStatusList
<view class="status-val">{{serviceStatusList(serviceDetail.serviceStatus)
}}</view>
<view class="status-tip">{{
serviceDetail.serviceStatus | statusFilter
<view class="status-tip">{{statusFilter(serviceDetail.serviceStatus)
}}</view>
</view>
</view>
@@ -43,7 +41,7 @@
}}</view>
<view class="goods-price">
<view class="price"> {{ serviceDetail.flowPrice | unitPrice }}</view>
<view class="price"> {{unitPrice(serviceDetail.flowPrice) }}</view>
<view>
<view>申请售后数量{{ serviceDetail.num }}</view>
</view>
@@ -116,44 +114,38 @@
v-if="serviceDetail.serviceType != 'RETURN_MONEY' && serviceDetail.serviceStatus != 'APPLY'">
<view class="title">联系方式:</view>
<view class="value">{{
storeAfterSaleAddress.salesConsigneeMobile || "" | secrecyMobile
storeAfterSaleAddress.salesConsigneeMobile ||secrecyMobile("")
}}</view>
</view>
<view v-if="refundShow">
<view class="detail-item">
<view class="title">退款金额:</view>
<view class="value">{{
serviceDetail.flowPrice | unitPrice("¥")
<view class="value">{{unitPrice(serviceDetail.flowPrice, "¥")
}}</view>
</view>
<view class="detail-item" v-if="serviceDetail.agree_price">
<view class="title">同意退款:</view>
<view class="value">{{
serviceDetail.agree_price | unitPrice("¥")
<view class="value">{{unitPrice(serviceDetail.agree_price, "¥")
}}</view>
</view>
<view class="detail-item" v-if="serviceDetail.actual_price">
<view class="title">实际退款:</view>
<view class="value">{{
serviceDetail.actual_price | unitPrice("¥")
<view class="value">{{unitPrice(serviceDetail.actual_price, "¥")
}}</view>
</view>
<view class="detail-item" v-if="serviceDetail.actual_price">
<view class="title">退款时间:</view>
<view class="value">{{
serviceDetail.refund_time | unixToDate
<view class="value">{{unixToDate(serviceDetail.refund_time)
}}</view>
</view>
<view class="detail-item" v-if="serviceDetail.refund_price !== 0">
<view class="title">退款方式:</view>
<view class="value">{{
serviceDetail.refundWay | refundWayFilter
<view class="value">{{refundWayFilter(serviceDetail.refundWay)
}}</view>
</view>
<view class="detail-item" v-if="accountShow && serviceDetail.refund_price != 0">
<view class="title">账户类型:</view>
<view class="value">{{
serviceDetail.accountType | accountTypeFilter
<view class="value">{{accountTypeFilter(serviceDetail.accountType)
}}</view>
</view>
<view class="detail-item" v-if="
@@ -232,10 +224,7 @@ export default {
this.getAddress();
this.getLog(options.sn);
},
filters: {
/**
* 售后状态信息
*/
methods: {
statusFilter(val) {
switch (val) {
case "APPLY":
@@ -264,25 +253,16 @@ export default {
return "";
}
},
/**
* 退款信息
*/
refundWayFilter(val) {
switch (val) {
case "OFFLINE":
return "账户退款";
case "OFFLINE":
return "线下退款";
case "ORIGINAL":
return "原路退回";
default:
return "";
}
},
/**
* 账户信息
*/
accountTypeFilter(val) {
switch (val) {
case "WEIXINPAY":
@@ -295,8 +275,6 @@ export default {
return "";
}
},
},
methods: {
/**
* 点击图片放大或保存
*/

View File

@@ -17,7 +17,7 @@
<view class="goods-info">
<view class="goods-title u-line-2">{{ sku.goodsName }}</view>
<view class="goods-price">
{{ sku.flowPrice | unitPrice }}
{{unitPrice(sku.flowPrice) }}
</view>
</view>
<view class="goods-num">
@@ -27,7 +27,7 @@
</view>
<!-- 投诉主题 -->
<u-select @confirm="confirmComplain" v-model="complainShow" :list="complainList"></u-select>
<u-select @confirm="confirmComplain" v-model:show="complainShow" :list="complainList"></u-select>
<!-- 投诉模块 -->
<view class="cell">
<view class="cell-item between" @click="complainShow = true">
@@ -45,7 +45,7 @@
<view class="cell-item">
<view class="cell-title"> 投诉凭证 </view>
<view class="cell-view">
<u-upload ref="uUpload" :header=" { accessToken: storage.getAccessToken() }" :action="action" width="200" @on-uploaded="onUploaded" :max-count="5">
<u-upload :file-list="uploadFileList" :auto-upload="false" width="200" @afterRead="onUploadAfterRead" :max-count="5">
</u-upload>
</view>
</view>
@@ -59,12 +59,12 @@
import storage from "@/utils/storage.js";
import { getOrderDetail } from "@/api/order.js";
import { getComplainReason, addComplain } from "@/api/after-sale.js";
import { upload } from "@/api/common.js";
import { handleUploadAfterRead } from "@/utils/uploadHelper.js";
export default {
data() {
return {
storage,
action: upload, //上传图片地址
uploadFileList: [],
orderStatusList: {
//订单状态列表
UNDELIVERED: "待发货",
@@ -97,15 +97,10 @@ export default {
},
methods: {
/**
* 上传完成
*/
onUploaded(lists) {
let images = [];
lists.forEach((item) => {
images.push(item.response.result);
onUploadAfterRead(event) {
handleUploadAfterRead(event, this.uploadFileList, (urls) => {
this.images = urls;
});
this.images = images;
},
/**
* 提交

View File

@@ -2,11 +2,11 @@
<view class="wrapper">
<view class="tips">我的投诉信息</view>
<u-cell-group>
<u-cell-item :arrow="false" :value="complainDetail.goodsName" title="投诉商品"></u-cell-item>
<u-cell-item :arrow="false" :value="statusData[complainDetail.complainStatus]" title="投诉状态"></u-cell-item>
<u-cell-item :arrow="false" :value="complainDetail.createTime" title="投诉时间"></u-cell-item>
<u-cell-item :arrow="false" :value="complainDetail.complainTopic" title="投诉主题"></u-cell-item>
<u-cell-item :arrow="false" :value="complainDetail.content" title="投诉内容"></u-cell-item>
<u-cell :isLink="false" :value="complainDetail.goodsName" title="投诉商品"></u-cell>
<u-cell :isLink="false" :value="statusData[complainDetail.complainStatus]" title="投诉状态"></u-cell>
<u-cell :isLink="false" :value="complainDetail.createTime" title="投诉时间"></u-cell>
<u-cell :isLink="false" :value="complainDetail.complainTopic" title="投诉主题"></u-cell>
<u-cell :isLink="false" :value="complainDetail.content" title="投诉内容"></u-cell>
<view class="row" v-if="complainDetail.orderComplaintImages">
<u-image width="100rpx" height="100rpx" border-radius="10" style="margin: 0 10rpx" v-for="(item, index) in complainDetail.orderComplaintImages" :key="index" :src="item"
@click="preview(complainDetail.orderComplaintImages, index)" />
@@ -14,8 +14,8 @@
</u-cell-group>
<view class="tips">商家申诉信息</view>
<u-cell-group>
<u-cell-item :arrow="false" :value="complainDetail.appealTime || '暂无'" title="申诉时间"></u-cell-item>
<u-cell-item :arrow="false" :value="complainDetail.appealContent || '暂无'" title="申诉内容"></u-cell-item>
<u-cell :isLink="false" :value="complainDetail.appealTime || '暂无'" title="申诉时间"></u-cell>
<u-cell :isLink="false" :value="complainDetail.appealContent || '暂无'" title="申诉内容"></u-cell>
<view class="row" v-if="complainDetail.appealImagesList">
<u-image width="100rpx" height="100rpx" border-radius="10" style="margin: 0 10rpx" v-for="(item, index) in complainDetail.appealImagesList"
@click="preview(complainDetail.appealImagesList, index)" :key="index" :src="item" />
@@ -46,7 +46,7 @@
</div>
<view class="tips">平台仲裁</view>
<u-cell-group>
<u-cell-item :arrow="false" title="仲裁意见" :value="complainDetail.arbitrationResult || '暂无'"></u-cell-item>
<u-cell :isLink="false" title="仲裁意见" :value="complainDetail.arbitrationResult || '暂无'"></u-cell>
</u-cell-group>
</view>
</template>

View File

@@ -15,7 +15,7 @@
<view class="goods-info" @click="handleToGoods(item)">
<view class="goods-title u-line-2">{{ item.goodsName }}</view>
<view class="goods-price">
{{ item.goodsPrice | unitPrice }}
{{unitPrice(item.goodsPrice) }}
<!-- <span>+{{ '1' }}积分</span> -->
</view>
</view>
@@ -36,7 +36,7 @@
<u-empty v-if="empty" :style="{'marginTop':complaionDetail.total == 0 ? '200rpx':'0rpx'}" class="empty" style="" text="暂无投诉列表" mode="list"></u-empty>
<u-modal show-cancel-button @confirm="handleClearConfirm" v-model="show" :content="content"></u-modal>
<u-modal show-cancel-button @confirm="handleClearConfirm" v-model:show="show" :content="content"></u-modal>
</view>
</template>

View File

@@ -18,7 +18,7 @@
<!-- 如果有图片则会循环显示评价的图片 -->
<view class="goods-imgs-view" v-if="comment.images != null && comment.images.length != 0">
<view class="img-view" v-for="(img, imgIndex) in comment.images.split(',')" :key="imgIndex">
<u-image @click.native="preview(comment.images.split(','),imgIndex)" width="160rpx" height="160rpx" :src="img"></u-image>
<u-image @click="preview(comment.images.split(','),imgIndex)" width="160rpx" height="160rpx" :src="img"></u-image>
</view>
</view>
<view class="goods-name">

View File

@@ -38,7 +38,7 @@
<view class="goods-imgs-view" v-if="order.image">
<view class="img-view" v-if="order.image" v-for="(img, imgIndex) in order.image.split(',')"
:key="imgIndex">
<u-image v-if="order.image" @click.native="
<u-image v-if="order.image" @click="
preview(order.image.split(','), imgIndex)
" width="160rpx" height="160rpx" :src="img"></u-image>
</view>

View File

@@ -51,8 +51,8 @@
</view>
<view class="info-evaluate-view">
<view class="images-view">
<u-upload :header=" { accessToken: storage.getAccessToken() }" :action="action" width="150"
@on-uploaded="onUploaded" :max-count="5" :show-progress="false"></u-upload>
<u-upload :file-list="uploadFileList" :auto-upload="false" width="150"
@afterRead="onUploadAfterRead" :max-count="5"></u-upload>
</view>
</view>
</view>
@@ -62,20 +62,20 @@
<view class="seller-rate-view">
<view class="rate-title">描述相符</view>
<view>
<u-rate count="count" gutter="20" active-color="#FFC71C" v-model="form.descriptionScore" :size="40">
<u-rate :count="5" gutter="20" active-color="#FFC71C" v-model="form.descriptionScore" :size="40">
</u-rate>
</view>
</view>
<view class="seller-rate-view">
<view class="rate-title">服务态度</view>
<view>
<u-rate count="count" gutter="20" active-color="#FFC71C" v-model="form.serviceScore" :size="40"></u-rate>
<u-rate :count="5" gutter="20" active-color="#FFC71C" v-model="form.serviceScore" :size="40"></u-rate>
</view>
</view>
<view class="seller-rate-view">
<view class="rate-title">物流服务</view>
<view>
<u-rate count="count" gutter="20" active-color="#FFC71C" v-model="form.deliveryScore" :size="40"></u-rate>
<u-rate :count="5" gutter="20" active-color="#FFC71C" v-model="form.deliveryScore" :size="40"></u-rate>
</view>
</view>
</view>
@@ -89,7 +89,7 @@
<script>
import storage from "@/utils/storage.js";
import { commentsMemberOrder } from "@/api/members.js";
import { upload } from "@/api/common.js";
import { handleUploadAfterRead } from "@/utils/uploadHelper.js";
export default {
data() {
@@ -111,7 +111,7 @@ export default {
serviceScore: 5, //默认服务得分为5分
deliveryScore: 5, //默认物流得分为5分
},
action: upload, //图片上传地址
uploadFileList: [],
};
},
onLoad(options) {
@@ -153,15 +153,10 @@ export default {
});
},
/**
* 图片成功后回调
*/
onUploaded(lists) {
let images = [];
lists.forEach((item) => {
images.push(item.response.result);
onUploadAfterRead(event) {
handleUploadAfterRead(event, this.uploadFileList, (urls) => {
this.form.images = urls;
});
this.form.images = images;
},
},
};

View File

@@ -34,7 +34,7 @@
<!-- 姓名 手机号 -->
<div>
<span>{{ address.name }}</span>
<span class="mobile">{{ address.mobile | secrecyMobile }}</span>
<span class="mobile">{{secrecyMobile(address.mobile) }}</span>
</div>
</div>
</div>
@@ -101,7 +101,7 @@
width="81rpx"
height="81rpx"
>
<view slot="loading"></view>
<template #loading><view></view></template>
</u-image>
<u-image
class="head-img"
@@ -174,11 +174,11 @@
<p class="goods-prices">
<span></span>
<span class="goods-price">{{
$options.filters.goodsFormatPrice(val.purchasePrice)[0]
goodsFormatPrice(val.purchasePrice)[0]
}}</span>
<span
>.{{
$options.filters.goodsFormatPrice(val.purchasePrice)[1]
goodsFormatPrice(val.purchasePrice)[1]
}}</span
>
</p>
@@ -190,7 +190,7 @@
:span="8"
class="tipsColor"
textAlign="right"
@click.native="invoice()"
@click="invoice()"
>
<span v-if="receiptList"
>{{ receiptList.receiptTitle }} -
@@ -243,7 +243,7 @@
/>
<u-select
@confirm="confirmDistribution"
v-model="shippingFlag"
v-model:show="shippingFlag"
v-if="shippingMethod.length != 0"
:list="shippingMethod"
></u-select>
@@ -254,7 +254,7 @@
<u-col :span="9">商品合计</u-col>
<u-col :span="3" textAlign="right">
<span
>{{ orderMessage.priceDetailDTO.goodsPrice | unitPrice }}</span
>{{unitPrice(orderMessage.priceDetailDTO.goodsPrice) }}</span
>
</u-col>
</u-row>
@@ -274,8 +274,7 @@
>包邮</span
>
<span v-else
>{{
orderMessage.priceDetailDTO.freightPrice | unitPrice
>{{unitPrice(orderMessage.priceDetailDTO.freightPrice)
}}</span
>
</u-col>
@@ -298,10 +297,10 @@
@click="GET_Discount()"
>
<span class="main-color"
>-¥{{ orderMessage.priceDetailDTO.couponPrice | unitPrice }}</span
>-¥{{unitPrice(orderMessage.priceDetailDTO.couponPrice) }}</span
>
</u-col>
<!-- orderMessage.priceDetailDTO.couponPrice | unitPrice -->
<!--unitPrice(orderMessage.priceDetailDTO.couponPrice) -->
<u-col :span="3" v-else textAlign="right" @click="GET_Discount()">
{{ orderMessage.canUseCoupons.length || "0" }} 张可用
<u-icon name="arrow-right"></u-icon>
@@ -316,7 +315,7 @@
v-if="orderMessage.priceDetailDTO.couponPrice"
>
<span class="main-color">
-¥{{ orderMessage.priceDetailDTO.couponPrice | unitPrice }}</span
-¥{{unitPrice(orderMessage.priceDetailDTO.couponPrice) }}</span
>
</u-col>
<u-col :span="3" textAlign="right" v-else>0.00</u-col>
@@ -327,8 +326,7 @@
<u-col :span="6">活动优惠</u-col>
<u-col :span="6" class="tr tipsColor" textAlign="right">
<span v-if="orderMessage.priceDetailDTO.discountPrice"
>-¥{{
orderMessage.priceDetailDTO.discountPrice | unitPrice
>-¥{{unitPrice(orderMessage.priceDetailDTO.discountPrice)
}}</span
>
<span v-else>0.00</span>
@@ -355,21 +353,20 @@
<div v-if="!orderMessage.priceDetailDTO.payPoint" class="number">
<span>¥</span>
<span class="price">{{
$options.filters.goodsFormatPrice(
goodsFormatPrice(
orderMessage.priceDetailDTO.flowPrice
)[0]
}}</span>
<span
>.{{
$options.filters.goodsFormatPrice(
goodsFormatPrice(
orderMessage.priceDetailDTO.flowPrice
)[1]
}}
</span>
</div>
<span v-else class="number"
><span style="margin-right: 10rpx">{{
orderMessage.priceDetailDTO.payPoint | unitPrice
><span style="margin-right: 10rpx">{{unitPrice(orderMessage.priceDetailDTO.payPoint)
}}</span
>积分</span
>
@@ -462,25 +459,6 @@ export default {
computed: {
...mapState(["remark"]),
},
filters: {
/**
* 发票收据类型
*/
receiptType(type) {
switch (type) {
case "1":
case "VATORDINARY":
case "ELECTRO":
return "电子普通发票";
case "2":
case "VATOSPECIAL":
return "增值税专用发票";
default:
return "不开发票";
}
},
},
/**
* 监听返回
*/
@@ -578,7 +556,7 @@ export default {
pintuanWay() {
const { memberId } = this.routerVal.parentOrder;
const userInfo = this.$options.filters.isLogin();
const userInfo = this.isLogin();
if (memberId) {
this.endWay = userInfo;
this.masterWay = this.routerVal.parentOrder;
@@ -826,7 +804,7 @@ export default {
storeId: item.storeId,
};
this.$set(this.remarkVal, index, repeatData);
this.remarkVal[index] = repeatData;
});
this.orderMessage = res.data.result;

View File

@@ -8,7 +8,7 @@
<view></view>
</view>
</view>
<view>{{order.receiptPrice | unitPrice('¥')}}</view>
<view>{{unitPrice(order.receiptPrice, '¥')}}</view>
</view>
</view>
<view class="common-msg flex-center">
@@ -29,19 +29,19 @@
</view>
</view>
<u-cell-group :border="false">
<u-cell-item title="发票类型" :border-top="false" :value="order.receiptType || '-'" :arrow="false"></u-cell-item>
<u-cell-item title="发票内容" :value="order.receiptContent" :arrow="false"></u-cell-item>
<u-cell-item :title="title_type + '名称'" :value="getTitleNameValue()" :arrow="false"></u-cell-item>
<u-cell-item title="纳税人识别号" v-if="order.taxpayerId" :value="order.taxpayerId" :arrow="false"></u-cell-item>
<u-cell-item title="单位地址" v-if="order.companyAddress" :value="order.companyAddress" :arrow="false"></u-cell-item>
<u-cell-item title="单位电话" v-if="order.companyPhone" :value="order.companyPhone" :arrow="false"></u-cell-item>
<u-cell-item title="开户银行" v-if="order.bankName" :value="order.bankName" :arrow="false"></u-cell-item>
<u-cell-item title="银行账号" v-if="order.bankAccount" :value="order.bankAccount" :arrow="false"></u-cell-item>
<u-cell-item title="收票人手机" :value="order.receiptPhone" :arrow="false"></u-cell-item>
<u-cell-item title="收票人邮箱" v-if="order.receiptEmail" :value="order.receiptEmail" :arrow="false"></u-cell-item>
<u-cell title="发票类型" :border-top="false" :value="order.receiptType || '-'" :isLink="false"></u-cell>
<u-cell title="发票内容" :value="order.receiptContent" :isLink="false"></u-cell>
<u-cell :title="title_type + '名称'" :value="getTitleNameValue()" :isLink="false"></u-cell>
<u-cell title="纳税人识别号" v-if="order.taxpayerId" :value="order.taxpayerId" :isLink="false"></u-cell>
<u-cell title="单位地址" v-if="order.companyAddress" :value="order.companyAddress" :isLink="false"></u-cell>
<u-cell title="单位电话" v-if="order.companyPhone" :value="order.companyPhone" :isLink="false"></u-cell>
<u-cell title="开户银行" v-if="order.bankName" :value="order.bankName" :isLink="false"></u-cell>
<u-cell title="银行账号" v-if="order.bankAccount" :value="order.bankAccount" :isLink="false"></u-cell>
<u-cell title="收票人手机" :value="order.receiptPhone" :isLink="false"></u-cell>
<u-cell title="收票人邮箱" v-if="order.receiptEmail" :value="order.receiptEmail" :isLink="false"></u-cell>
</u-cell-group>
<u-popup
v-model="showInvoicePopup"
v-model:show="showInvoicePopup"
mode="center"
width="90%"
border-radius="20"
@@ -60,8 +60,8 @@
</view>
</u-popup>
<!-- <u-cell-group :border="false" style="margin-top: 20rpx;">
<u-cell-item title="订单状态" :border-top="false" :value="order.order_status_text" :arrow="false"></u-cell-item>
<u-cell-item title="订单编号" :value="order.sn" :arrow="false"></u-cell-item>
<u-cell title="订单状态" :border-top="false" :value="order.order_status_text" :isLink="false"></u-cell>
<u-cell title="订单编号" :value="order.sn" :isLink="false"></u-cell>
</u-cell-group> -->
<!-- <view class="show-pic" @click="preview">

View File

@@ -1,5 +1,5 @@
<template>
<u-popup closeable border-radius="28" @close="close" mode="bottom" height="80%" v-model="show">
<u-popup closeable border-radius="28" @close="close" mode="bottom" height="80%" v-model:show="show">
<div class="wrapper">
<!-- 发票类型 -->

View File

@@ -25,8 +25,7 @@
</view>
</view>
<view class="order-sn">{{
order.orderStatus | orderStatusList
<view class="order-sn">{{orderStatusList(order.orderStatus)
}}</view>
</view>
<view>
@@ -41,7 +40,7 @@
<view v-if="order.orderItems.length <= 1" class="goods-title u-line-2">
{{ order.groupName }}</view>
<view v-if="order.orderItems.length <= 1" class="goods-price">
{{ order.flowPrice | unitPrice }}
{{unitPrice(order.flowPrice) }}
</view>
</view>
<view v-if="order.orderItems.length <= 1" class="goods-num">
@@ -54,7 +53,7 @@
<!-- 等待付款 -->
<div v-if="order.payStatus === 'PAID'">已付金额:</div>
<div v-else>应付金额:</div>
<div class="price">{{ order.flowPrice | unitPrice }}</div>
<div class="price">{{unitPrice(order.flowPrice) }}</div>
</view>
<view class="goods-btn flex flex-a-c">
<!-- 全部 -->
@@ -87,7 +86,7 @@
</scroll-view>
</swiper-item>
</swiper>
<u-popup class="cancel-popup" v-model="cancelShow" mode="bottom" length="60%">
<u-popup class="cancel-popup" v-model:show="cancelShow" mode="bottom" length="60%">
<view class="header">取消订单</view>
<view class="body">
<view class="title">取消订单后本单享有的优惠可能会一并取消是否继续</view>
@@ -107,7 +106,7 @@
</view>
</u-popup>
<u-toast ref="uToast" />
<u-modal :confirm-color="lightColor" v-model="rogShow" :show-cancel-button="true" :content="'是否确认收货?'"
<u-modal :confirm-color="lightColor" v-model:show="rogShow" :show-cancel-button="true" :content="'是否确认收货?'"
@confirm="confirmRog"></u-modal>
</view>
</template>
@@ -234,7 +233,7 @@
// this.loadData(this.status);
},
onShow() {
if (this.$options.filters.tipsToLogin()) {
if (this.tipsToLogin()) {
if (!this.tabCurrentIndex) {
this.initData(0);
}

View File

@@ -35,7 +35,7 @@
<view>
<view class="address-title">
<span>{{ order.consigneeName || "未填写昵称" }}</span>
<span>{{ order.consigneeMobile || "未填写手机号" | secrecyMobile }}</span>
<span>{{ order.consigneeMobile || "未填写手机号secrecyMobile(") }}</span>
</view>
<view class="address">地址{{ order.consigneeAddressPath }}
{{ order.consigneeDetail }}</view>
@@ -81,10 +81,10 @@
<view class="goods-info" @click="gotoGoodsDetail(sku)">
<view class="goods-title u-line-2">{{ sku.goodsName }}</view>
<view class="goods-price">
{{ sku.goodsPrice | unitPrice }}
{{unitPrice(sku.goodsPrice) }}
<!-- <span v-if="sku.point">+{{ sku.point }}积分</span> -->
<span style="font-size: 24rpx;margin-left: 14rpx;color: #ff9900;" v-if="sku.isRefund && sku.isRefund !== 'NO_REFUND'">
{{refundPriceList(sku.isRefund)}} ({{ sku.refundPrice | unitPrice("") }})
{{refundPriceList(sku.isRefund)}} ({{unitPrice(sku.refundPrice, "") }})
</span>
</view>
</view>
@@ -106,19 +106,19 @@
<view>
<view class="order-info-view">
<view class="title">商品总价</view>
<view class="value">{{ order.goodsPrice | unitPrice }}</view>
<view class="value">{{unitPrice(order.goodsPrice) }}</view>
</view>
<view class="order-info-view" v-if="order.freightPrice">
<view class="title">运费</view>
<view class="value">{{ order.freightPrice | unitPrice }}</view>
<view class="value">{{unitPrice(order.freightPrice) }}</view>
</view>
<view class="order-info-view" v-if="order.priceDetailDTO">
<view class="title">优惠券</view>
<view class="value main-color">-{{ order.priceDetailDTO.couponPrice | unitPrice }}</view>
<view class="value main-color">-{{unitPrice(order.priceDetailDTO.couponPrice) }}</view>
</view>
<view class="order-info-view">
<view class="title">活动优惠</view>
<view class="value main-color">-{{ order.discountPrice | unitPrice }}</view>
<view class="value main-color">-{{unitPrice(order.discountPrice) }}</view>
</view>
<!-- <view class="order-info-view" v-if="order.use_point">
<view class="title">使用积分</view>
@@ -203,7 +203,7 @@
<text v-if="order.payStatus === 'PAID'">已付金额</text>
<text v-else>应付金额</text>
<text class="price" v-if="order.priceDetailDTO">{{ order.priceDetailDTO.flowPrice | unitPrice }}</text>
<text class="price" v-if="order.priceDetailDTO">{{unitPrice(order.priceDetailDTO.flowPrice) }}</text>
</view>
<view>
<!-- 全部 -->
@@ -221,7 +221,7 @@
</view>
</view>
</view>
<u-popup class="cancel-popup" v-model="cancelShow" mode="bottom" length="60%">
<u-popup class="cancel-popup" v-model:show="cancelShow" mode="bottom" length="60%">
<view class="header">取消订单</view>
<view class="body">
<view class="title">取消订单后本单享有的优惠可能会一并取消是否继续</view>
@@ -241,7 +241,7 @@
</view>
</u-popup>
<u-toast ref="uToast" />
<u-modal v-model="rogShow" :show-cancel-button="true" :content="'是否确认收货?'" :confirm-color="lightColor"
<u-modal v-model:show="rogShow" :show-cancel-button="true" :content="'是否确认收货?'" :confirm-color="lightColor"
@confirm="confirmRog"></u-modal>
<!-- 分享 -->
@@ -351,11 +351,11 @@ export default {
}
},
callPhone(){
this.$options.filters.callPhone(this.order.storeAddressMobile )
this.callPhone(this.order.storeAddressMobile )
},
//联系客服
contact(storeId){
this.$options.filters.talkIm(storeId)
this.talkIm(storeId)
},
goToShopPage(val) {
uni.navigateTo({
@@ -413,7 +413,7 @@ export default {
});
},
onCopy(sn) {
this.$options.filters.setClipboard(sn)
setClipboard(sn)
},
/**

View File

@@ -5,7 +5,7 @@
<view class="u-skeleton" v-if="!articleData">
<u-empty text="文章暂无内容" mode="list"></u-empty>
</view>
<u-parse v-else :html="articleData"></u-parse>
<u-parse v-else :content="articleData"></u-parse>
</view>
</view>
</template>

View File

@@ -1,6 +1,6 @@
<template>
<div>
<u-navbar :border-bottom="false"></u-navbar>
<u-navbar :border="false"></u-navbar>
<step1 v-if="current == 1" :companyData="companyData" @callback="next()" />
<step2 v-if="current == 2" :companyData="companyData" @callback="next()" />
<step3

View File

@@ -1,6 +1,6 @@
<template>
<div class="wrapper">
<u-navbar :border-bottom="false"></u-navbar>
<u-navbar :border="false"></u-navbar>
<div>
<div class="title">店铺入驻</div>
<div class="step-list">
@@ -57,7 +57,7 @@ export default {
};
},
onShow() {
if(this.$options.filters.tipsToLogin()){
if(this.tipsToLogin()){
this.init();
}
},

View File

@@ -116,12 +116,10 @@
<div>
<u-upload
:file-list="licencePhotoFileList"
:header="{ accessToken: storage.getAccessToken() }"
:action="action"
:auto-upload="false"
width="200"
@on-uploaded="onUploaded($event, 'licencePhoto')"
@afterRead="onUploadAfterRead($event, 'licencePhoto', 'licencePhotoFileList')"
:max-count="1"
:show-progress="false"
></u-upload>
<div class="tips">
@@ -155,21 +153,17 @@
<div>
<u-upload
:file-list="legalPhotoFileList"
:header="{ accessToken: storage.getAccessToken() }"
:action="action"
:auto-upload="false"
width="200"
@on-uploaded="onUploaded($event, 'legalPhoto')"
@afterRead="onUploadAfterRead($event, 'legalPhoto', 'legalPhotoFileList')"
:max-count="1"
:show-progress="false"
></u-upload>
<u-upload
:file-list="legalPhotoFileList"
:header="{ accessToken: storage.getAccessToken() }"
:action="action"
:file-list="legalPhotoBackFileList"
:auto-upload="false"
width="200"
@on-uploaded="onUploaded($event, 'legalPhoto')"
@afterRead="onUploadAfterRead($event, 'legalPhoto', 'legalPhotoBackFileList')"
:max-count="1"
:show-progress="false"
></u-upload>
</div>
</u-form-item>
@@ -192,20 +186,20 @@
import { applyFirst } from "@/api/entry";
import city from "@/components/m-city/m-city.vue";
import storage from "@/utils/storage.js";
import { upload } from "@/api/common.js";
import { handleUploadAfterRead, getUploadedUrls } from "@/utils/uploadHelper.js";
import * as RegExp from "@/utils/RegExp.js";
export default {
components: { "m-city": city },
data() {
return {
storage,
action: upload, //图片上传数据
defaultInputStyle: {
background: "#f7f7f7",
padding: "0 20rpx",
"border-radius": "10rpx",
},
legalPhotoFileList: [],
legalPhotoBackFileList: [],
licencePhotoFileList: [],
form: {
companyName: "",
@@ -316,7 +310,7 @@ export default {
companyData: {
handler(val) {
if (val) {
this.$set(this, "form", val);
this["form"] = val;
// 给图片赋值
const judgeDeepPhoto = ["legalPhoto", "licencePhoto"];
judgeDeepPhoto.forEach((key) => {
@@ -332,16 +326,20 @@ export default {
},
},
methods: {
// 图片上传
onUploaded(lists, key) {
let images = [];
if(!this.form[key]){
onUploadAfterRead(event, key, fileListKey) {
if (!Array.isArray(this.form[key])) {
this.form[key] = [];
}
lists.forEach((item) => {
images.push(item.response.result);
handleUploadAfterRead(event, this[fileListKey], () => {
if (key === "legalPhoto") {
this.form[key] = [
...getUploadedUrls(this.legalPhotoFileList),
...getUploadedUrls(this.legalPhotoBackFileList),
];
} else {
this.form[key] = getUploadedUrls(this[fileListKey]);
}
});
this.form[key].push(images[0]);
},
getPickerParentValue(e) {
this.form.companyAddressIdPath = [];

View File

@@ -89,7 +89,7 @@ export default {
watch: {
companyData: {
handler(val) {
this.$set(this, "form", val);
this["form"] = val;
console.log(this.form)
},
deep: true,

View File

@@ -19,12 +19,10 @@
<div>
<u-upload
:file-list="storeLogoFileList"
:header="{ accessToken: storage.getAccessToken() }"
:action="action"
:auto-upload="false"
width="200"
@on-uploaded="onUploaded($event, 'storeLogo')"
@afterRead="onUploadAfterRead($event, 'storeLogo', 'storeLogoFileList')"
:max-count="1"
:show-progress="false"
></u-upload>
</div>
</u-form-item>
@@ -101,7 +99,7 @@
</m-city>
<u-select
v-model="enableCategory"
v-model:show="enableCategory"
@confirm="confirmCategory"
:list="categoryList"
></u-select>
@@ -115,7 +113,7 @@ import { applyThird } from "@/api/entry";
import { getCategoryList } from "@/api/goods";
import city from "@/components/m-city/m-city.vue";
import storage from "@/utils/storage.js";
import { upload } from "@/api/common.js";
import { handleUploadAfterRead } from "@/utils/uploadHelper.js";
import uniMap from "@/components/uniMap";
import permision from "@/js_sdk/wa-permission/permission.js";
export default {
@@ -124,7 +122,6 @@ export default {
return {
storage,
mapFlag: false,
action: upload, //图片上传数据
defaultInputStyle: {
background: "#f7f7f7",
padding: "0 20rpx",
@@ -171,7 +168,7 @@ export default {
watch: {
companyData: {
handler(val) {
this.$set(this, "form", val);
this["form"] = val;
// 给图片赋值
const judgeDeepPhoto = ["storeLogo"];
@@ -282,13 +279,10 @@ export default {
}
}
},
// 图片上传
onUploaded(lists, key) {
let images = [];
lists.forEach((item) => {
images.push(item.response.result);
onUploadAfterRead(event, key, fileListKey) {
handleUploadAfterRead(event, this[fileListKey], (urls) => {
this.form[key] = urls;
});
this.form[key] = images;
},
getPickerParentValue(e) {
this.form.storeAddressIdPath = [];
@@ -303,7 +297,7 @@ export default {
} else {
name += item.localName + ",";
}
this.$set(this.form,'storeAddressPath',name)
this.form['storeAddressPath'] = name
}
});

View File

@@ -1,12 +1,12 @@
<template>
<div class="wrapper">
<div v-if="!wechatLogin">
<u-navbar :is-back="showBack" :border-bottom="false"></u-navbar>
<u-navbar :auto-back="showBack" :border="false"></u-navbar>
<div>
<div class="title">{{ loginTitleWay[current].title }}</div>
<div :class="current == 1 ? 'desc-light' : 'desc'">
{{ loginTitleWay[current].desc
}}<span v-if="current == 1">{{ mobile | secrecyMobile }}</span>
}}<span v-if="current == 1">{{secrecyMobile(mobile) }}</span>
</div>
</div>
<!-- 手机号 -->
@@ -24,9 +24,9 @@
boxNormalColor="#D8D8D8" cursorColor="#D8D8D8" />
<div class="fetch-btn">
<u-verification-code change-text="验证码已发送x" end-text="重新获取验证码" unique-key="page-login"
<u-code change-text="验证码已发送x" end-text="重新获取验证码" unique-key="page-login"
:seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange">
</u-verification-code>
</u-code>
<span @tap="fetchCode" :style="{ color: codeColor }">
{{ tips }}</span>
</div>

View File

@@ -46,7 +46,7 @@ export default {
},
},
onShow() {
this.$options.filters.forceLogin();
this.forceLogin();
scannerCodeLogin({ token: this.token }).then((res) => {
if (res.data.code == 200) {
let code = res.data.result;

View File

@@ -1,6 +1,6 @@
<template>
<view class="container">
<u-navbar :custom-back="back" title="公众网页登录"></u-navbar>
<u-navbar :auto-back="false" @leftClick="back" title="公众网页登录"></u-navbar>
<view class="wx-auth-container">
<div class="box">
<view class="logo-info">

View File

@@ -1,7 +1,7 @@
<template>
<view class="container">
<u-navbar :custom-back="back" title="小程序登录"></u-navbar>
<u-modal v-model="phoneAuthPopup" :mask-close-able="true" :title="projectName+'商城'"
<u-navbar :auto-back="false" @leftClick="back" title="小程序登录"></u-navbar>
<u-modal v-model:show="phoneAuthPopup" :mask-close-able="true" :title="projectName+'商城'"
:show-confirm-button="false">
<div class="tips">
为了更好地用户体验需要您授权手机号

View File

@@ -22,7 +22,7 @@
<view class="section-info">
<image class="portrait" :src="item.memberProfile || userImage" mode="aspectFit"></image>
<view class="star-content">
<text class="name">{{ item.memberName | noPassByName }}</text>
<text class="name">{{noPassByName(item.memberName) }}</text>
<text class="time">{{ item.createTime }}</text>
</view>
<view class="stars">

View File

@@ -17,7 +17,7 @@
:y="navbarListY" placement="top-start" />
<view class="index">
<!-- topBar -->
<u-navbar :background="navbar" :is-back="false" :class="headerFlag ? 'header' : 'header bg-none scroll-hide'">
<u-navbar :bg-color="navbar.background" :auto-back="false" :class="headerFlag ? 'header' : 'header bg-none scroll-hide'">
<div class="headerRow">
<div class="backs">
<u-icon @click="back()" name="arrow-left" class="icon-back"></u-icon>
@@ -35,8 +35,8 @@
</div>
</u-navbar>
<u-navbar :border-bottom="false" v-show="!headerFlag" class="header-only-back" :background="navbarOnlyBack"
:is-back="false">
<u-navbar :border="false" v-show="!headerFlag" class="header-only-back" :bg-color="navbarOnlyBack.background"
:auto-back="false">
<div>
<div class="bg-back">
<u-icon size="40" @click="back()" name="arrow-left" class="icon-back"></u-icon>
@@ -87,21 +87,21 @@
<span>
<span v-if="wholesaleList.length">
<span>¥</span><span class="price">{{
$options.filters.goodsFormatPrice(wholesaleList[wholesaleList.length - 1].price)[0]
goodsFormatPrice(wholesaleList[wholesaleList.length - 1].price)[0]
}}</span>.{{
$options.filters.goodsFormatPrice(wholesaleList[wholesaleList.length - 1].price)[1]
goodsFormatPrice(wholesaleList[wholesaleList.length - 1].price)[1]
}}
~
<span>¥</span><span class="price">{{
$options.filters.goodsFormatPrice(wholesaleList[0].price)[0]
goodsFormatPrice(wholesaleList[0].price)[0]
}}</span>.{{
$options.filters.goodsFormatPrice(wholesaleList[0].price)[1]
goodsFormatPrice(wholesaleList[0].price)[1]
}}
</span>
<span v-else>
<span>¥</span><span class="price">{{
$options.filters.goodsFormatPrice(goodsDetail.price)[0]
}}</span>.{{ $options.filters.goodsFormatPrice(goodsDetail.price)[1] }}
goodsFormatPrice(goodsDetail.price)[0]
}}</span>.{{ goodsFormatPrice(goodsDetail.price)[1] }}
</span>
</span>
</view>
@@ -169,8 +169,7 @@
<view class="card-flex" @click="shutMask(3)">
<view class="card-title"> 送至</view>
<view class="card-content">
<span v-if="delivery">{{
delivery.consigneeAddressPath | clearStrComma
<span v-if="delivery">{{clearStrComma(delivery.consigneeAddressPath)
}}</span>
<span v-else>暂无地址信息</span>
</view>
@@ -227,11 +226,11 @@
<!-- 拼团结算 -->
<view class="detail-btn" v-else-if="isGroup">
<view class="to-store-car pt-buy to-store-btn" @click="shutMask(4, 'buy')">
<view>{{ goodsDetail.price | unitPrice }}</view>
<view>{{unitPrice(goodsDetail.price) }}</view>
<view>单独购买</view>
</view>
<view class="to-buy pt-buy to-store-btn" @click="toAssembleBuyNow">
<view>{{ goodsDetail.promotionPrice | unitPrice }}</view>
<view>{{unitPrice(goodsDetail.promotionPrice) }}</view>
<view>拼团价格</view>
</view>
</view>
@@ -239,7 +238,7 @@
<!-- 规格-模态层弹窗 -->
<view class="spec">
<!-- 促销弹窗 -->
<u-popup v-model="promotionShow" :height="setup.height" :mode="setup.mode" :border-radius="setup.radius"
<u-popup v-model:show="promotionShow" :height="setup.height" :mode="setup.mode" :border-radius="setup.radius"
@close="promotionShow = false" :mask-close-able="setup.close" closeable>
<view class="header-title">优惠</view>
<view class="cuxiao">
@@ -567,7 +566,7 @@ export default {
// }, 500);
}
// 这里是绑定分销员
if ((distributionId || this.$store.state.distributionId) && this.$options.filters.isLogin("auth")) {
if ((distributionId || this.$store.state.distributionId) && this.isLogin("auth")) {
let disResult = await getGoodsDistribution(distributionId);
if (!disResult.data.success || disResult.statusCode == 403) {
this.$store.state.distributionId = distributionId;
@@ -609,7 +608,7 @@ export default {
this.getOtherLikeGoods();
// 获取商品是否已被收藏 如果未登录不获取
if (this.$options.filters.isLogin("auth")) {
if (this.isLogin("auth")) {
this.getGoodsCollectionFun(this.goodsDetail.id);
}
// 获取IM 需要的话使用
@@ -625,7 +624,7 @@ export default {
linkMsgDetail () {
// lili 基础客服
this.$options.filters.talkIm(this.goodsDetail.storeId, this.routerVal.goodsId, this.routerVal.id)
this.talkIm(this.goodsDetail.storeId, this.routerVal.goodsId, this.routerVal.id)
// uni.navigateTo({
// url: `/pages/mine/im/index?userId=${this.goodsDetail.storeId}&goodsid=${this.routerVal.goodsId}&skuid=${this.routerVal.id}`
// });

View File

@@ -12,7 +12,7 @@
<view class="section-info">
<u-avatar mode="circle" size="60" class="portrait" :src="commItem.memberProfile"></u-avatar>
<view class="star-con">
<text class="name">{{ commItem.memberName | noPassByName }}</text>
<text class="name">{{noPassByName(commItem.memberName) }}</text>
</view>
</view>
<view class="section-contant">

View File

@@ -15,9 +15,7 @@
<u-parse
class="vhtml"
:lazy-load="true"
:use-cache="true"
:show-with-animation="true"
:html="res.mobileIntro"
:content="res.mobileIntro"
:tag-style="style"
></u-parse>
</view>

View File

@@ -21,7 +21,7 @@
<view class="image-wrapper">
<u-image :src="item" mode="aspectFit" class="loaded" width="100%" height="100%">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
</view>
</swiper-item>

View File

@@ -1,5 +1,5 @@
<template>
<u-popup class="popup" v-model="addressFlag" :height="setup.height" :mode="setup.mode" :border-radius="setup.radius" @close="closeAddress()" closeable>
<u-popup class="popup" v-model:show="addressFlag" :height="setup.height" :mode="setup.mode" :border-radius="setup.radius" @close="closeAddress()" closeable>
<view class="header-title">选择地址</view>
<view class="view-box" v-if="addressDetail">
<view class="view-item" v-for="(item, index) in addressDetail" :key="index" @click="clickAddress(item)">
@@ -8,7 +8,7 @@
<u-icon v-if="item.isDefault" :class="{ active: item.isDefault }" name="checkmark" size="12"></u-icon>
</view>
</view>
<view class="view-box-dress" :class="{ 'box-dress-blod': item.isDefault }">{{ item.consigneeAddressPath | clearStrComma }}</view>
<view class="view-box-dress" :class="{ 'box-dress-blod': item.isDefault }">{{clearStrComma(item.consigneeAddressPath) }}</view>
</view>
</view>
<view class="view-box" v-else>
@@ -46,23 +46,19 @@ export default {
],
};
},
filters: {},
watch: {},
props: ["goodsId", "addressFlag"],
methods: {
mounted() {
this.addressFlag = false;
if( this.$options.filters.isLogin("auth") ){
if( this.isLogin("auth") ){
this.getShippingAddress()
}
else{
uni.navigateTo({
url: 'pages/passport/login'
});
}
},
props: ["goodsId", "addressFlag"],
methods: {
/**关闭地址 */
closeAddress() {
this.$emit("closeAddress", false);
@@ -79,7 +75,7 @@ export default {
/**获取地址 */
getShippingAddress() {
if (this.$options.filters.isLogin("auth")) {
if (this.isLogin("auth")) {
API_Address.getAddressList(1, 50).then((res) => {
if (res.data.success) {
this.addressDetail = res.data.result.records;

View File

@@ -5,7 +5,7 @@
<view class="group-item" v-for="(order, index) in assembleOrder" :key="index">
<view class="group-item-user">
<u-image shape="circle" width="40px" height="40px" :src="order.face || userImage"></u-image>
<span class="group-item-name">{{ order.nickName | noPassByName }}</span>
<span class="group-item-name">{{noPassByName(order.nickName) }}</span>
</view>
<view>
<span class="group-item-name">还差{{ order.toBeGroupedNum }}人成团</span>

View File

@@ -21,15 +21,15 @@
>
<span class="flex-price">
{{ $options.filters.goodsFormatPrice(detail.promotionPrice)[0] }}.{{
$options.filters.goodsFormatPrice(detail.promotionPrice)[1]
{{ goodsFormatPrice(detail.promotionPrice)[0] }}.{{
goodsFormatPrice(detail.promotionPrice)[1]
}}</span
>
</span>
<view class="u-group-flex" v-if="detail.price != undefined">
<span class="old-price"
>¥{{ $options.filters.goodsFormatPrice(detail.price)[0] }}.{{
$options.filters.goodsFormatPrice(detail.price)[1]
>¥{{ goodsFormatPrice(detail.price)[0] }}.{{
goodsFormatPrice(detail.price)[1]
}}</span
>
<view class="promotion">限时抢购</view>
@@ -42,8 +42,8 @@
<span
class="flex-price"
v-if="promotion.groupbuy_goods_vo.price != undefined"
>¥{{ $options.filters.goodsFormatPrice(promotion.groupbuy_goods_vo.price)[0] }}.{{
$options.filters.goodsFormatPrice(promotion.groupbuy_goods_vo.price)[1]
>¥{{ goodsFormatPrice(promotion.groupbuy_goods_vo.price)[0] }}.{{
goodsFormatPrice(promotion.groupbuy_goods_vo.price)[1]
}}</span
>
<!-- <span v-if="promotion.point">+{{promotion.point}}积分</span> -->
@@ -53,9 +53,9 @@
class="old-price"
v-if="promotion.groupbuy_goods_vo.original_price != undefined"
>¥{{
$options.filters.goodsFormatPrice(promotion.groupbuy_goods_vo.original_price)[0]
goodsFormatPrice(promotion.groupbuy_goods_vo.original_price)[0]
}}.{{
$options.filters.goodsFormatPrice(promotion.groupbuy_goods_vo.original_price)[1]
goodsFormatPrice(promotion.groupbuy_goods_vo.original_price)[1]
}}</span
>
<view class="promotion">团购活动</view>
@@ -68,13 +68,13 @@
v-if="detail.promotionPrice != undefined"
>
¥<span class="flex-price">
{{ $options.filters.goodsFormatPrice(detail.promotionPrice)[0] }}.</span
>{{ $options.filters.goodsFormatPrice(detail.promotionPrice)[1] }}
{{ goodsFormatPrice(detail.promotionPrice)[0] }}.</span
>{{ goodsFormatPrice(detail.promotionPrice)[1] }}
</span>
<view class="u-group-flex" v-if="detail.price != undefined">
<span class="old-price"
>¥{{ $options.filters.goodsFormatPrice(detail.price)[0] }}.{{
$options.filters.goodsFormatPrice(detail.price)[1]
>¥{{ goodsFormatPrice(detail.price)[0] }}.{{
goodsFormatPrice(detail.price)[1]
}}</span
>
<view class="promotion">拼团活动</view>

View File

@@ -6,7 +6,7 @@
<view class="top">
<div class="price">
<span v-if="item.couponType == 'DISCOUNT'">{{ item.couponDiscount }}</span>
<span v-if="item.couponType == 'PRICE'">{{ item.price | unitPrice }}</span>
<span v-if="item.couponType == 'PRICE'">{{unitPrice(item.price) }}</span>
</div>
<view class="text">
<div class="coupon-List-title">
@@ -18,7 +18,7 @@
}}使用</view>
</view>
</div>
<div>{{ item.consumeThreshold | unitPrice }}可用</div>
<div>{{unitPrice(item.consumeThreshold) }}可用</div>
</view>
<view class="lingqu-btn" @click="getCoupon(item, index)">
<div :class="yhqFlag[index] ? 'cur' : ''">
@@ -27,7 +27,7 @@
</view>
</view>
<view class="line"></view>
<view class="time">{{ item.startTime / 1000 | unixToDate }} - {{ item.endTime / 1000 | unixToDate }}</view>
<view class="time">{{ item.startTime /unixToDate(1000) }} - {{ item.endTime /unixToDate(1000) }}</view>
</view>
</view>
</view>

View File

@@ -25,14 +25,14 @@
<view class="recommend-list">
<view class="recommend-item" @click="clickGoods(item)" v-for="(item, index) in res" :key="index">
<u-image class="recommend-item-img" :fade="true" duration="450" :lazy-load="true" :src="item.thumbnail" height="218rpx">
<u-loading slot="loading"></u-loading>
<view slot="error" style="font-size: 24rpx; ">加载失败</view>
<template #loading><u-loading></u-loading></template>
<template #error><view style="font-size: 24rpx; ">加载失败</view></template>
</u-image>
<view class="recommend-item-name">
{{ item.goodsName }}
</view>
<view class="item-price" v-if="item.price != undefined">
<span class="item-price-blod">{{ $options.filters.goodsFormatPrice(item.price)[0] }}</span>.{{ $options.filters.goodsFormatPrice(item.price)[1] }}
<span class="item-price-blod">{{ goodsFormatPrice(item.price)[0] }}</span>.{{ goodsFormatPrice(item.price)[1] }}
</view>
</view>
</view>

View File

@@ -19,7 +19,7 @@
</div>
<div class="flex store-distance">
<div>
<span class="store-score">{{item.serviceScore | unitPrice}}</span>
<span class="store-score">{{unitPrice(item.serviceScore)}}</span>
<span class="line">|</span>
<span class="store-collection">收藏 {{item.collectionNum}}</span>
</div>

View File

@@ -2,7 +2,7 @@
<view>
<!-- 楼层装修店铺信息 -->
<div>
<u-navbar :border-bottom="false">
<u-navbar :border="false">
<u-search
v-model="keyword"
@search="search"
@@ -74,7 +74,7 @@
<view class="xian"></view>
<view class="text">
<text>{{ "领取优惠券" }}</text>
<text>{{ item.consumeThreshold | unitPrice }}元可用</text>
<text>{{unitPrice(item.consumeThreshold) }}元可用</text>
</view>
</view>
</view>
@@ -113,7 +113,7 @@
<u-navbar
class="navbar"
v-if="item.type == 'search'"
:is-fixed="index === 1 ? false : true"
:fixed="index === 1 ? false : true"
>
<div class="navbar-right"></div>
@@ -293,7 +293,7 @@ export default {
methods: {
talk(){
this.$options.filters.talkIm(this.storeInfo.storeId)
this.talkIm(this.storeInfo.storeId)
},
back() {
uni.navigateBack();
@@ -325,7 +325,7 @@ export default {
this.categoryList = [];
this.couponList = [];
this.goodsParams.pageNumber = 1;
if (this.$options.filters.isLogin("auth")) {
if (this.isLogin("auth")) {
this.enableGoodsIsCollect();
}
// 店铺信息
@@ -482,14 +482,14 @@ export default {
* 领取
*/
getCoupon(item) {
if (!this.$options.filters.isLogin("auth")) {
if (!this.isLogin("auth")) {
uni.showToast({
icon: "none",
duration: 3000,
title: "请先登录!",
});
this.$options.filters.navigateToLogin("redirectTo");
this.navigateToLogin("redirectTo");
return false;
}
receiveCoupons(item.id).then((res) => {

View File

@@ -1,6 +1,6 @@
<template>
<div class="page">
<u-navbar :custom-back="back" back-icon-color="#fff" :background="background" :border-bottom="false">
<u-navbar :auto-back="false" @leftClick="back" left-icon-color="#fff" :bg-color="background.backgroundColor" :border="false">
</u-navbar>
<div class="wrapper-box">
@@ -17,9 +17,9 @@
</div>
<div class="flex price-box">
<div class="purchase-price">
当前:<span>{{ activityData.surplusPrice == 0 ? this.bargains.purchasePrice : activityData.surplusPrice | unitPrice}}</span>
当前:<span>{{ activityData.surplusPrice == 0 ? this.bargains.purchasePrice :unitPrice(activityData.surplusPrice)}}</span>
</div>
<div class="max-price">原价:<span>{{ bargainDetail.price | unitPrice}}</span>
<div class="max-price">原价:<span>{{unitPrice(bargainDetail.price)}}</span>
</div>
</div>
@@ -47,7 +47,7 @@
</div>
</div>
<!-- 我要开团 -->
<div class="start" v-if="activityData.memberId != $options.filters.isLogin().id" @click="startOpenGroup">我要开团
<div class="start" v-if="activityData.memberId != isLogin().id" @click="startOpenGroup">我要开团
</div>
</div>
</div>
@@ -61,10 +61,10 @@
</div>
<div class="user-config flex">
<div class="user-name">
<div>{{item.kanjiaMemberName | noPassByName}}</div>
<div>{{noPassByName(item.kanjiaMemberName)}}</div>
<div>使出吃的奶劲儿</div>
</div>
<div class="save">砍掉<span>{{item.kanjiaPrice | unitPrice}}</span></div>
<div class="save">砍掉<span>{{unitPrice(item.kanjiaPrice)}}</span></div>
</div>
</div>
</div>
@@ -74,14 +74,14 @@
<div class="bargain">
<div class="bargain-title">商品详情</div>
<view class="u-content">
<u-parse :html="bargainDetail.mobileIntro" :tag-style="style"></u-parse>
<u-parse :content="bargainDetail.mobileIntro" :tag-style="style"></u-parse>
</view>
</div>
</div>
<!-- 砍价 -->
<u-modal title="恭喜您砍掉了" v-model="Bargaining" mask-close-able :show-confirm-button="false"
<u-modal title="恭喜您砍掉了" v-model:show="Bargaining" mask-close-able :show-confirm-button="false"
:title-style="{color: lightColor}">
<view class="slot-content">
<u-count-to :start-val="0" ref="uCountTo" font-size="100" :color="lightColor" :end-val="kanjiaPrice"
@@ -90,7 +90,7 @@
</u-modal>
<!-- 帮砍 -->
<u-modal :show-title="false" v-model="helpBargainFlage" :show-confirm-button="false">
<u-modal :show-title="false" v-model:show="helpBargainFlage" :show-confirm-button="false">
<view class="help-bargain" @click="handleClickHelpBargain">
<u-image width="100%" height="600rpx"
src="https://lilishop-oss.oss-cn-beijing.aliyuncs.com/91631d5a66c7426bbe3f7d644ee41946.jpeg"></u-image>

View File

@@ -1,6 +1,6 @@
<template>
<div class="page">
<u-navbar :custom-back="back" back-icon-color="#fff" :background="background" :border-bottom="false" >
<u-navbar :auto-back="false" @leftClick="back" left-icon-color="#fff" :bg-color="background.backgroundColor" :border="false" >
</u-navbar>
<div class="wrapper">
<!-- 砍价列表 -->

View File

@@ -10,7 +10,7 @@
{{item.goodsName}}
</div>
<div>
还剩<span class="surplusPrice">{{item.surplusPrice | unitPrice}}</span>
还剩<span class="surplusPrice">{{unitPrice(item.surplusPrice)}}</span>
</div>
<div @click="navigateToBargainDetail(item)" v-if="item.status == 'START'" class="buy">

View File

@@ -1,6 +1,6 @@
<template>
<view class="wrapper">
<u-navbar :border-bottom="false" :title="title">
<u-navbar :border="false" :title="title">
<!-- 中间 -->
<view class="slot-wrap container-wrap">
<view v-if="search">
@@ -8,12 +8,12 @@
</view>
</view>
<!-- 右侧 -->
<view slot="right">
<template #right>
<view style="margin-right: 24rpx;" @click="searchFlag()">
<view v-if="search">取消</view>
<u-icon v-if="!search" size="44rpx" name="search"></u-icon>
</view>
</view>
</template>
</u-navbar>
<!-- 顶部栏 -->
<div class='header-wraper'>

View File

@@ -174,18 +174,18 @@ export default {
if (!this.recommendLives.length) {
if (this.liveList[0].shareImg) {
this.$set(this, "swiperImg", [
this["swiperImg"] = [
{
image: this.liveList[0].shareImg,
roomId: this.liveList[0].roomId,
},
]);
];
}
} else {
this.recommendLives.forEach((item) => {
this.$set(this, "swiperImg", [
this["swiperImg"] = [
{ image: item.shareImg, roomId: item.roomId },
]);
];
});
}
}

View File

@@ -1,6 +1,6 @@
<template>
<div class="page">
<u-navbar :border-bottom="false" title="积分商品"></u-navbar>
<u-navbar :border="false" title="积分商品"></u-navbar>
<div class="wrapper">
<!-- 积分商品列表 -->
@@ -16,9 +16,9 @@
{{goodsData.goodsName}}
</div>
<div class="flex price-box">
<div class="purchase-price">积分:<span>{{ pointDetail.points | unitPrice }}</span>
<div class="purchase-price">积分:<span>{{unitPrice(pointDetail.points) }}</span>
</div>
<div class="max-price">原价:<span>{{ goodsData.price | unitPrice}}</span>
<div class="max-price">原价:<span>{{unitPrice(goodsData.price)}}</span>
</div>
</div>
@@ -37,7 +37,7 @@
<div class="bargain">
<div class="row-title">商品详情</div>
<view class="u-content">
<u-parse :html="goodsData.mobileIntro" :tag-style="style"></u-parse>
<u-parse :content="goodsData.mobileIntro" :tag-style="style"></u-parse>
</view>
</div>
</div>

View File

@@ -20,12 +20,12 @@
<view class="index-item" v-for="(item, key) in nav.goods" :key="key" @click="toGoods(item)">
<view class="index-item-img">
<u-image :src="item.thumbnail" mode="aspectFit">
<u-loading slot="loading"></u-loading>
<template #loading><u-loading></u-loading></template>
</u-image>
<view class="index-item-title">{{ item.goodsName }}</view>
<view class="index-item-price flex flex-a-c flex-j-sb">
<div class="point"><span>{{ item.points }}</span>积分</div>
<span class="tipsMkt">¥{{ item.originalPrice | unitPrice }}</span>
<span class="tipsMkt">¥{{unitPrice(item.originalPrice) }}</span>
</view>
</view>
</view>

View File

@@ -1,9 +1,9 @@
<template>
<div class="wrapper">
<u-navbar :is-back="false" title="购物车">
<div slot="right">
<u-navbar :auto-back="false" title="购物车">
<template #right>
<div class="light-color edit" @click="isEdit = !isEdit">{{ !isEdit ? '编辑' : '完成'}}</div>
</div>
</template>
</u-navbar>
<!-- 空白页-->
<view v-if="!loading && (cartDetail.cartList == '' || cartDetail.cartList == [] || !cartDetail)" class="empty">
@@ -40,8 +40,9 @@
<span>领劵</span>
</view>
</view>
<u-swipe-action :show="skuItem.selected" @open="openAction(skuItem)" :options="options" bg-color="#fff"
ref="swiperAction" class="cart-item" v-for="(skuItem, i) in item.skuList" :index="i" :key="skuItem.goodsSku.id"
<u-swipe-action ref="swiperAction" class="cart-item" v-for="(skuItem, i) in item.skuList" :key="skuItem.goodsSku.id">
<u-swipe-action-item :show="skuItem.selected" @open="openAction(skuItem)" :options="options"
:name="i"
@click="changeActionTab(skuItem)" @longpress="changeActionTab(skuItem)">
<!-- 满减活动 -->
<div v-if="Object.keys(skuItem.promotionMap).length != 0">
@@ -83,8 +84,8 @@
<view class="sp-price">
<!-- <div class="default-color" :class="{'main-color':Object.keys(skuItem.promotionMap).length ==0 }"> -->
<div class="main-color">
<span>{{ $options.filters.goodsFormatPrice(skuItem.goodsSku.price)[0] }}</span>
<span>.{{ $options.filters.goodsFormatPrice(skuItem.goodsSku.price)[1] }}</span>
<span>{{ goodsFormatPrice(skuItem.goodsSku.price)[0] }}</span>
<span>.{{ goodsFormatPrice(skuItem.goodsSku.price)[1] }}</span>
</div>
</view>
<view>
@@ -105,8 +106,8 @@
<!-- 如果有活动 并且是选中的状态,显示预估到手价格 -->
<!-- <div class="priceDetail-flowPrice" :class="{'main-color':skuItem.priceDetailDTO}"
v-if="skuItem.priceDetailDTO && skuItem.invalid == 0 && Object.keys(skuItem.promotionMap).length != 0 && skuItem.checked && skuItem.checked">
预估到手价 <span>{{ $options.filters.goodsFormatPrice(skuItem.priceDetailDTO.flowPrice)[0]}}</span>
<span>.{{ $options.filters.goodsFormatPrice(skuItem.priceDetailDTO.flowPrice)[1] }} </span>
预估到手价 <span>{{ goodsFormatPrice(skuItem.priceDetailDTO.flowPrice)[0]}}</span>
<span>.{{ goodsFormatPrice(skuItem.priceDetailDTO.flowPrice)[1] }} </span>
</div> -->
<div style='margin-left: 20rpx;' v-if="!skuItem.checked && skuItem.errorMessage">
{{skuItem.errorMessage}}
@@ -115,10 +116,11 @@
</view>
</view>
</u-swipe-action-item>
</u-swipe-action>
</div>
</div>
<u-modal v-model="deleteShow" :confirm-style="{'color':lightColor}" @confirm="deleteConfirm" show-cancel-button
<u-modal v-model:show="deleteShow" :confirm-style="{'color':lightColor}" @confirm="deleteConfirm" show-cancel-button
:content="deleteContent" :async-close="true"></u-modal>
<!-- 结账 -->
<div class="box box6">
@@ -130,14 +132,14 @@
<div class="fullPrice">
<span class="number" v-if="cartDetail && cartDetail.priceDetailDTO">
总计:
<span>¥{{ $options.filters.goodsFormatPrice(cartDetail.priceDetailDTO.flowPrice)[0] }}</span>.<span>{{ $options.filters.goodsFormatPrice(cartDetail.priceDetailDTO.flowPrice)[1] }}</span>
<span>¥{{ goodsFormatPrice(cartDetail.priceDetailDTO.flowPrice)[0] }}</span>.<span>{{ goodsFormatPrice(cartDetail.priceDetailDTO.flowPrice)[1] }}</span>
</span>
<span class="number" v-else>总计:0.00</span>
</div>
<div
v-if="cartDetail.cartList && cartDetail.cartList.length!=0 && cartDetail.priceDetailDTO && cartDetail.priceDetailDTO.discountPrice!=0 "
class="discountPrice">
<span>优惠减:{{(cartDetail.priceDetailDTO.goodsPrice - cartDetail.priceDetailDTO.flowPrice) | unitPrice}}
<span>优惠减:{{(cartDetail.priceDetailDTO.goodsPrice -unitPrice(cartDetail.priceDetailDTO.flowPrice))}}
</span>
<span class="discount-details" @click="discountDetails">优惠明细</span>
</div>
@@ -145,22 +147,22 @@
</span>
</view>
<!-- 优惠详情 -->
<u-popup z-index="3" close mode="bottom" height="50%" closeable v-model="discountDetailsFlag" border-radius="20">
<u-popup z-index="3" close mode="bottom" height="50%" closeable v-model:show="discountDetailsFlag" border-radius="20">
<div class="discount-list">
<view class="discount-title">优惠明细</view>
<div class="discount-way">
<div class="discount-item" v-if="cartDetail.priceDetailDTO">
<span>商品总额</span>
<span>{{cartDetail.priceDetailDTO.goodsPrice | unitPrice}}</span>
<span>{{unitPrice(cartDetail.priceDetailDTO.goodsPrice)}}</span>
</div>
<div class="discount-item" v-if="cartDetail.priceDetailDTO">
<span>优惠券</span>
<span>-{{cartDetail.priceDetailDTO.couponPrice | unitPrice}}</span>
<span>-{{unitPrice(cartDetail.priceDetailDTO.couponPrice)}}</span>
</div>
<div class="discount-item" v-if="cartDetail.priceDetailDTO">
<span>其他优惠</span>
<span>-{{cartDetail.priceDetailDTO.discountPrice | unitPrice}}</span>
<span>-{{unitPrice(cartDetail.priceDetailDTO.discountPrice)}}</span>
</div>
</div>
</div>
@@ -266,11 +268,11 @@ export default {
this.cartDetail.cartList.forEach((cartItem) => {
if (cartItem.skuList) {
cartItem.skuList.forEach((sku) => {
this.$set(sku, "selected", false);
sku["selected"] = false;
});
}
});
this.$set(skuItem, "selected", true);
skuItem["selected"] = true;
},
/**
@@ -380,7 +382,7 @@ export default {
* 验证是否选中商品
*/
whetherChecked() {
this.$options.filters.forceLogin()
this.forceLogin()
let canBuy = false;
this.cartDetail.cartList.forEach((item) => {
@@ -486,7 +488,7 @@ export default {
* 获取购物车数据
*/
getCardData() {
if (this.$options.filters.isLogin("auth")) {
if (this.isLogin("auth")) {
uni.showLoading({
title: "加载中",
});

Some files were not shown because too many files have changed in this diff Show More