Commit f69cdc198fe7a3cc12c97e3067f17064af7a544d

Authored by wesley88
2 parents 6e3d38e3 65478d1d

Merge branch 'master' of http://39.98.150.180/webapp/GreenwayWeb

Showing 54 changed files with 1410 additions and 456 deletions
admin-web-master/src/components/add/addremoveht.vue
... ... @@ -82,7 +82,7 @@
82 82 <el-col :span="12">
83 83 <el-form-item label="付款日" prop="paymentDay">
84 84 <el-select v-model="formInline.paymentDay" placeholder="请选择" style="width: 100%;">
85   - <el-option :label="val+'号'" :value="val+'号'" v-for="val in 31"></el-option>
  85 + <el-option :label="val+'号'" :value="val+'号'" v-for="val in 31" :key="val"></el-option>
86 86 </el-select>
87 87 </el-form-item>
88 88 </el-col>
... ... @@ -481,7 +481,7 @@
481 481 contractChangeReason: this.contractChangeReason,
482 482 dataStatus: dataStatus,
483 483 originalContractCode: this.info.contractNumber,
484   -
  484 + id: this.info.id,
485 485 relatedMerchants: this.info.relatedMerchants,
486 486 tenantName: this.info.tenantName,
487 487 tenantTelephone: this.info.tenantTelephone,
... ... @@ -492,6 +492,7 @@
492 492 if (valid) {
493 493 cereContractInformation({
494 494 ...this.formInline,
  495 + id: this.info.id,
495 496 relatedMerchants: this.shopId,
496 497 contractChangeReason: this.contractChangeReason,
497 498 dataStatus: dataStatus,
... ...
admin-web-master/src/views/order/after/index.vue
... ... @@ -52,7 +52,7 @@
52 52 <el-table-column prop="shopCode" label="店铺编码" width="220" />
53 53 <el-table-column prop="number" label="退款商品数量" width="220" />
54 54 <el-table-column prop="refundMoney" label="退款金额(元)" width="220" />
55   - <el-table-column label="操作" show-overflow-tooltip>
  55 + <el-table-column label="操作" show-overflow-tooltip fixed="right">
56 56 <template slot-scope="scope">
57 57 <div class="btnList">
58 58 <div
... ...
admin-web-master/src/views/order/orderany/index.vue
... ... @@ -209,6 +209,19 @@
209 209 search(){
210 210 this.getTotalData()
211 211 },
  212 + clear(){
  213 + this.formParams={
  214 + searchType: '1',
  215 + search: '', // 搜索字段
  216 + state: '',
  217 + // afterState: '', // 售后状态 0-无售后 1-售后中 2-售后成功 3-售后关闭
  218 + dates: [], // 下单时间数组
  219 + page: 1,
  220 + shopName: '',
  221 + pageSize: 10
  222 + }
  223 + this.getTotalData()
  224 + },
212 225 async getTotalData() {
213 226 const res = await orderGetAll(this.formParams)
214 227 const Orderlist = await orderStatistics(res.data.list)
... ...
admin-web-master/src/views/order/ordersel/index.vue
... ... @@ -93,7 +93,7 @@
93 93 </template>
94 94 </el-table-column>
95 95  
96   - <el-table-column label="操作" show-overflow-tooltip>
  96 + <el-table-column label="操作" show-overflow-tooltip fixed="right">
97 97 <template slot-scope="scope">
98 98 <div class="btnList">
99 99 <div class="tableBtn greens" @click="seeMore(scope.row)">查看</div>
... ...
admin-web-master/src/views/order/pending/index.vue
... ... @@ -92,7 +92,7 @@
92 92 </template>
93 93 </el-table-column>
94 94  
95   - <el-table-column label="操作" show-overflow-tooltip>
  95 + <el-table-column label="操作" show-overflow-tooltip fixed="right">
96 96 <template slot-scope="scope">
97 97 <div class="btnList">
98 98 <div class="tableBtn greens" @click="seeMore(scope.row)">查看</div>
... ...
admin-web-master/src/views/renovation/brand/form.vue
... ... @@ -23,7 +23,8 @@
23 23 <el-input v-model="form.brandName" placeholder="请输入品牌名称" />
24 24 </el-form-item>
25 25 <el-form-item label="logo" prop="brandLogo">
26   - <ImageUpload v-model="form.brandLogo" :limit="1" />
  26 + <ImageUpload filePath="bueniss" :value="form.brandLogo" inputtype="brandLogo" :limit="1"
  27 + @changimg="e=>changimg(e,'brandLogo')"></ImageUpload>
27 28 </el-form-item>
28 29 </el-form>
29 30 <span
... ... @@ -111,6 +112,9 @@ export default {
111 112 }
112 113 },
113 114 methods: {
  115 + changimg(e, type) {
  116 + this.form[type] = e
  117 + },
114 118 handleSubmit () {
115 119 this.$refs.form.validate(async val => {
116 120 this.loading = true
... ...
admin-web-master/src/views/renovation/brand/index.vue
... ... @@ -35,7 +35,7 @@
35 35 label="Logo"
36 36 >
37 37 <template v-slot="scope">
38   - <el-image :src="scope.row.brandLogo" :preview-src-list="[scope.row.brandLogo]" style="width: 100px;height: 100px" />
  38 + <el-image :src="$baseURL+scope.row.brandLogo" :preview-src-list="[scope.row.brandLogo]" style="width: 100px;height: 100px" />
39 39 </template>
40 40 </el-table-column>
41 41 <el-table-column
... ... @@ -96,6 +96,7 @@ export default {
96 96 this.getList()
97 97 },
98 98 methods: {
  99 +
99 100 async getList () {
100 101 this.loading = true
101 102 const { data } = await getBrandAll(this.query);
... ...
admin-web-master/src/views/renovation/commoditySystem/addCommodity.vue
... ... @@ -4,9 +4,9 @@
4 4 <el-card class="box-card" >
5 5 <div style="display:flex;justify-content: space-between;">
6 6 <div class="addTitle">商品详情</div>
7   - <el-button class="buttonHover"
  7 + <div><el-button class="buttonHover"
8 8 style="color: #606266;border: 1px solid #dddfe5;background-color: #fff;" @click="back">关闭</el-button>
9   - <el-button v-if="productItem.shelveState === 2" style="background-color: #3F9B6A;color: #fff" @click="examineShow(productData)">审核</el-button>
  9 + <el-button v-if="productItem.shelveState === 2" style="background-color: #3F9B6A;color: #fff" @click="examineShow(productData)">审核</el-button></div>
10 10 </div>
11 11 </el-card>
12 12 <el-card class="box-card">
... ... @@ -18,12 +18,12 @@
18 18 <div>商品卖点:{{ productItem.productBrief }}</div>
19 19 <div>
20 20 商品图片:
21   - <div>
  21 + <div >
22 22 <img
23 23 v-for="(item, index) in productItem.images"
24 24 :key="index"
25 25 class="proImage"
26   - :src="item.imgPath"
  26 + :src="$baseURL+item.imgPath"
27 27 alt=""
28 28 @click="handlePictureCardPreview(item)"
29 29 >
... ... @@ -220,7 +220,7 @@ export default {
220 220 this.details()
221 221 },
222 222 handlePictureCardPreview (item) {
223   - this.dialogImageUrl = item.imgPath;
  223 + this.dialogImageUrl = this.$baseURL+item.imgPath;
224 224 this.dialogVisible = true;
225 225 },
226 226  
... ...
admin-web-master/src/views/renovation/commoditySystem/index.vue
... ... @@ -73,7 +73,7 @@
73 73 />
74 74 <el-table-column label="商品主图" width="150" align="center">
75 75 <template slot-scope="scope">
76   - <img height="80" width="80" :src="scope.row.image" alt srcset>
  76 + <img height="80" width="80" :src="$baseURL+msgList(scope.row.image)" alt srcset>
77 77 </template>
78 78 </el-table-column>
79 79 <el-table-column prop="productName" label="商品名称" width="180" />
... ... @@ -262,6 +262,12 @@ export default {
262 262 },
263 263 // 方法集合
264 264 methods: {
  265 + msgList(list){
  266 + if(list && list!=''){
  267 + let strin = list.split(',')
  268 + return strin[0]
  269 + }
  270 + },
265 271 // 查看详情
266 272 Godetails (row) {
267 273 this.$refs.addCommodity.show(row.productId)
... ...
admin-web-master/src/views/shopRental/manage/index.vue
... ... @@ -68,7 +68,6 @@
68 68  
69 69 </template>
70 70 </el-table-column>
71   - </el-table-column>
72 71 <el-table-column label="合同类型">
73 72 <template slot-scope="scope">
74 73 {{scope.row.contractType}}
... ...
ceres-uniapp-master/components/canvasShow/basics/banner.vue
1 1 <template>
2 2 <div class="banner" :class="'terminal' + terminal">
3 3 <swiper class="swiper" :circular="true" :indicator-dots="false" :autoplay="true" :style="{'height':bannerHeight + 'rpx'}" @change="swiperChange">
4   - <swiper-item class="banner-item" v-for="(item,index) in bannerList" :key="index" :style="{backgroundImage: 'url('+ item.imageUrl +')'}" @click="jumpLink(item.jumpUrl)">
5   - <div class="a-link" @click="jumpLink(item.jumpUrl)"><img class="img" :src="item.imageUrl" v-show="item.imageUrl" mode="widthFix"></div>
  4 + <swiper-item class="banner-item" v-for="(item,index) in bannerList" :key="index" :style="{backgroundImage: 'url('+$hostUrl+ item.imageUrl +')'}" @click="jumpLink(item.jumpUrl)">
  5 + <div class="a-link" @click="jumpLink(item.jumpUrl)"><img class="img" :src=" $hostUrl+ item.imageUrl" v-show="item.imageUrl" mode="widthFix"></div>
6 6 </swiper-item>
7 7 </swiper>
8 8 <view class="swiper-dots" v-if="bannerList && bannerList.length > 1">
... ... @@ -41,7 +41,7 @@
41 41 pageSize: 10,
42 42 }
43 43 NET.request2(API.cereCarouselImage, pagesize, 'POST').then(res => {
44   - console.log('11111111111111',res)
  44 +
45 45 this.bannerList = res.data.content
46 46  
47 47 })
... ...
ceres-uniapp-master/components/canvasShow/canvasShowPage.vue
... ... @@ -120,8 +120,8 @@
120 120 <script>
121 121 // import comComponentMap from './componentMap'
122 122  
123   -import comBanner from '@/components/canvasShow/basics/banner'
124   -import comText from '@/components/canvasShow/basics/text'
  123 +import comBanner from '@/components/canvasShow/basics/banner.vue'
  124 +import comText from '@/components/canvasShow/basics/text.vue'
125 125 import comImageText from '@/components/canvasShow/basics/imageText'
126 126 import comBrandList from '@/components/canvasShow/basics/brandList'
127 127 import comCategoryList from '@/components/canvasShow/basics/categoryList'
... ...
ceres-uniapp-master/components/canvasShow/config/api.js
... ... @@ -2,9 +2,9 @@
2 2  
3 3 // 获取当前环境变量 true => 生产环境 false => 开发环境
4 4 // const BASEURL = process.env.VUE_APP_DOMAIN_PREFIX
5   -// const BASEURL = (process.env.NODE_ENV === 'production') ? 'http://8.130.38.56:8027/api' : 'http://8.130.38.56:8027/api'
6   -const BASEURL = (process.env.NODE_ENV === 'production') ? 'https://jy.scjysm.asia:18086/meserver/api' : 'https://jy.scjysm.asia:18086/meserver/api'
7   -// const BASEURL = (process.env.NODE_ENV === 'production') ? 'http://127.0.0.1:9007' : 'http://127.0.0.1:9007'
  5 +// const BASEURL = (process.env.NODE_ENV === 'production') ? 'https://jy.scjysm.asia:18086/cdwlMall/meserver/api' : 'http://10.0.0.51/api'
  6 +const BASEURL = (process.env.NODE_ENV === 'production') ? 'https://jy.scjysm.asia:18086/cdwlMall/meserver/api' : 'https://jy.scjysm.asia:18086/cdwlMall/meserver/api'
  7 +
8 8  
9 9  
10 10 export const api = {
... ...
ceres-uniapp-master/config/api.js
1 1  
2   -// const DOMAIN_PREFIXPING = 'https://jy.scjysm.asia:18086/admin-server'
3   -// const DOMAIN_PREFIX = 'https://jy.scjysm.asia:18086/api'
4   -// const DOMAIN_PREFIXPING = 'http://192.168.2.7:9003'
5   -// const DOMAIN_PREFIX = 'http://192.168.2.7:9007'
6   -
7   -
8   -
9 2 const DOMAIN_PREFIXPING = 'https://jy.scjysm.asia:18086/cdwlMall/meserver/admin-server'
10 3 const DOMAIN_PREFIX = 'https://jy.scjysm.asia:18086/cdwlMall/meserver/api'
11   -// const DOMAIN_PREFIXPING = 'http://192.168.2.225:9003'
12   -// const DOMAIN_PREFIX = 'http://192.168.2.225:9007'
  4 +// const DOMAIN_PREFIXPING = 'http://10.0.0.51:9003'
  5 +// const DOMAIN_PREFIX = 'http://10.0.0.51:9007'
13 6 // const host = `${window.location.protocol}//${window.location.host}`
14 7 // const DOMAIN_PREFIXPING = `${host}/cdwlMall/meserver/admin-server`
15 8 // const DOMAIN_PREFIX =`${host}/cdwlMall/meserver/api`
... ... @@ -47,8 +40,8 @@ const TERMINAL = 1
47 40 module.exports = {
48 41 terminal: TERMINAL, // 画布设备 1 小程序,2 H5,3 App 4 电脑
49 42 SettledMerchantPrefix: 'https://jy.scjysm.asia:18086/settled-merchant', //商家入驻链接
50   - // shareLink: DOMAIN_PREFIX + '/h5', // 分享地址
51   - shareLink: 'http://172.16.61.123:9007/h5', // 分享地址
  43 + shareLink: DOMAIN_PREFIX + '/h5', // 分享地址
  44 + // shareLink: 'http://172.16.61.123:9007/h5', // 分享地址
52 45  
53 46  
54 47 //登录注册
... ...
ceres-uniapp-master/main.js
... ... @@ -9,8 +9,17 @@ Vue.config.productionTip = false
9 9 import store from './store'
10 10 import _ from 'lodash'
11 11  
12   -import {jump,jumpToTabbar,goBack,getJumpParam} from './utils/jumpUtil'
13   -import {encrypt,decrypt,decryptall} from './utils/jiami.js'
  12 +import {
  13 + jump,
  14 + jumpToTabbar,
  15 + goBack,
  16 + getJumpParam
  17 +} from './utils/jumpUtil'
  18 +import {
  19 + encrypt,
  20 + decrypt,
  21 + decryptall
  22 +} from './utils/jiami.js'
14 23 Vue.prototype.$store = store
15 24 Vue.prototype.$lodash = _
16 25 Vue.prototype.$jump = jump
... ... @@ -20,11 +29,19 @@ Vue.prototype.$getJumpParam = getJumpParam
20 29 Vue.prototype.$encrypt = encrypt;
21 30 Vue.prototype.$decrypt = decrypt;
22 31 Vue.prototype.$decryptall = decryptall;
23   -Vue.prototype.$hostUrl =`${window.location.protocol}//${window.location.host}/cdwlMall`
  32 +// Vue.prototype.$hostUrl =`${window.location.protocol}//${window.location.host}/cdwlMall`
  33 +const host = window.location.host;
  34 +Vue.prototype.$hostUrl = `https://jy.scjysm.asia:18086/cdwlMall`
  35 +if (host === 'localhost:8080' || host === 'localhost:8081' || host === 'localhost:9528' || host ===
  36 + '192.168.31.45:9528') {
  37 + Vue.prototype.$baseURL = 'https://jy.scjysm.asia:18086/cdwlMall'
  38 +} else {
  39 + Vue.prototype.$baseURL = `${window.location.protocol}//${window.location.host}/cdwlMall`
  40 +}
24 41 App.mpType = 'app'
25 42  
26 43 const app = new Vue({
27   - ...App
  44 + ...App
28 45 })
29 46 console.log(store)
30 47 -app.$mount()
  48 +app.$mount()
31 49 \ No newline at end of file
... ...
ceres-uniapp-master/pages/tabbar/cart/index.vue
... ... @@ -11,13 +11,19 @@
11 11 <!-- 购物车 -->
12 12 <view class="u-skeleton">
13 13 <view v-if="!isEmpty">
14   - <u-sticky bg-color="#fff">
  14 + <u-sticky bg-color="#fff" offsetTop="-84">
15 15 <view class="cart-bg u-skeleton-fillet">
16 16 <view class="cart-num-box">
17 17 <!-- <image
18   - class=" u-skeleton-fillet"
  18 + class="u-skeleton-fillet"
19 19 src="@/static/logoTop.png"
20 20 ></image> -->
  21 + <view>
  22 + <text class="num-box u-skeleton-fillet">共
  23 + <text class="num">{{ settleAccountsObj.allNum }}</text>
  24 + 件宝贝
  25 + </text>
  26 + </view>
21 27 <text
22 28 class="btn-box "
23 29 @click="showManage = !showManage"
... ... @@ -31,12 +37,7 @@
31 37 >完成
32 38 </text>
33 39 </view>
34   - <view>
35   - <text class="num-box u-skeleton-fillet">共
36   - <text class="num">{{ settleAccountsObj.allNum }}</text>
37   - 件宝贝
38   - </text>
39   - </view>
  40 +
40 41 </view>
41 42 </u-sticky>
42 43 <view class="cart-list-box">
... ... @@ -279,11 +280,18 @@ export default {
279 280 onShow() {
280 281 this.isFirstComeIn = true
281 282 this.loading = true
282   - this.userInfo = uni.getStorageSync('storage_key')
  283 + if (uni.getStorageSync('storage_key')) {
  284 + this.userInfo = uni.getStorageSync('storage_key')
  285 +
  286 + }else{
  287 + this.$jump('../../../pages_category_page2/userModule/login')
  288 + return
  289 + }
283 290 cacheKey = this.userInfo.buyerUserId + "cart_info"
284 291 this.dataList = defaultCartList
285 292 this.isEmpty = false
286 293 this.getDataList()
  294 +
287 295 },
288 296 methods: {
289 297 /**
... ...
ceres-uniapp-master/pages/tabbar/category/index.vue
... ... @@ -57,7 +57,7 @@
57 57 @click="goodsDateils(groupItem.shopId,groupItem.productId,groupItem.skuId)">
58 58  
59 59 <view>
60   - <image :src="groupItem.image" mode=""
  60 + <image :src="$baseURL+groupItem.image" mode=""
61 61 style="width:240rpx;height: 240rpx;margin-right: 10rpx;border-radius: 10rpx;">
62 62 </image>
63 63 <view class="tableTitle" style="-webkit-line-clamp: 1;display: -webkit-box;-webkit-box-orient: vertical;overflow: hidden;text-overflow: ellipsis;">{{groupItem.productName}}</view>
... ...
ceres-uniapp-master/pages/tabbar/index/index.vue
... ... @@ -162,6 +162,7 @@ export default {
162 162 canvasGet() {
163 163 var _this = this
164 164 var apiUrl = api.getCanvas + '?terminal=' + this.terminal + '&type=' + this.typeId
  165 +
165 166 if (this.shopId) {
166 167 apiUrl += '&shopId=' + this.shopId
167 168 }
... ... @@ -175,6 +176,7 @@ export default {
175 176 // })
176 177 NET.request(apiUrl, {}, 'GET').then(res => {
177 178 if (JSON.stringify(res.data) !== '{}') {
  179 + console.log(res.data.json)
178 180 var componentsData = JSON.parse(res.data.json)
179 181 this.componentsData = componentsData
180 182 }
... ... @@ -257,7 +259,7 @@ export default {
257 259 .topBox {
258 260 display: flex;
259 261 align-items: center;
260   - justify-content: space-between;
  262 + justify-content: flex-end;
261 263 width: 100%;
262 264 }
263 265  
... ...
ceres-uniapp-master/pages/tabbar/user/index.vue
... ... @@ -157,10 +157,15 @@
157 157 },
158 158 onShow() {
159 159 this.isFirstComeIn = true
  160 +
160 161 if (uni.getStorageSync('storage_key')) {
  162 +
161 163 this.cacheUserItem = uni.getStorageSync('storage_key');
  164 + this.handleGetUser()
  165 + }else{
  166 + this.$jump('../../../pages_category_page2/userModule/login')
162 167 }
163   - this.handleGetUser()
  168 +
164 169 },
165 170 methods: {
166 171 /**
... ...
lvdao-miniapp/App.vue
... ... @@ -17,7 +17,7 @@ export default {
17 17 </script>
18 18  
19 19 <style lang="scss">
20   - @import "uview-ui/index.scss";
  20 +@import "uview-ui/index.scss";
21 21 /*每个页面公共css */
22 22 @import 'colorui/main.css';
23 23  
... ...
lvdao-miniapp/manifest.json
1 1 {
2   - "name" : "绿道",
3   - "appid" : "__UNI__F034047",
4   - "description" : "",
5   - "versionName" : "1.0.2",
6   - "versionCode" : "100",
7   - "transformPx" : false,
8   - /* 5+App特有相关 */
9   - "app-plus" : {
10   - "usingComponents" : true,
11   - "nvueCompiler" : "uni-app",
12   - "compilerVersion" : 3,
13   - "splashscreen" : {
14   - "alwaysShowBeforeRender" : true,
15   - "waiting" : true,
16   - "autoclose" : true,
17   - "delay" : 0
18   - },
19   - /* 模块配置 */
20   - "modules" : {},
21   - /* 应用发布信息 */
22   - "distribute" : {
23   - /* android打包配置 */
24   - "android" : {
25   - "permissions" : [
26   - "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
27   - "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
28   - "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
29   - "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
30   - "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
31   - "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
32   - "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
33   - "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
34   - "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
35   - "<uses-permission android:name=\"android.permission.CAMERA\"/>",
36   - "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
37   - "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
38   - "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
39   - "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
40   - "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
41   - "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
42   - "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
43   - "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
44   - "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
45   - "<uses-feature android:name=\"android.hardware.camera\"/>",
46   - "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
47   - "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
48   - ]
49   - },
50   - /* ios打包配置 */
51   - "ios" : {},
52   - /* SDK配置 */
53   - "sdkConfigs" : {
54   - "ad" : {}
55   - },
56   - "icons" : {
57   - "android" : {
58   - "hdpi" : "unpackage/res/icons/72x72.png",
59   - "xhdpi" : "unpackage/res/icons/96x96.png",
60   - "xxhdpi" : "unpackage/res/icons/144x144.png",
61   - "xxxhdpi" : "unpackage/res/icons/192x192.png"
62   - },
63   - "ios" : {
64   - "appstore" : "unpackage/res/icons/1024x1024.png",
65   - "ipad" : {
66   - "app" : "unpackage/res/icons/76x76.png",
67   - "app@2x" : "unpackage/res/icons/152x152.png",
68   - "notification" : "unpackage/res/icons/20x20.png",
69   - "notification@2x" : "unpackage/res/icons/40x40.png",
70   - "proapp@2x" : "unpackage/res/icons/167x167.png",
71   - "settings" : "unpackage/res/icons/29x29.png",
72   - "settings@2x" : "unpackage/res/icons/58x58.png",
73   - "spotlight" : "unpackage/res/icons/40x40.png",
74   - "spotlight@2x" : "unpackage/res/icons/80x80.png"
75   - },
76   - "iphone" : {
77   - "app@2x" : "unpackage/res/icons/120x120.png",
78   - "app@3x" : "unpackage/res/icons/180x180.png",
79   - "notification@2x" : "unpackage/res/icons/40x40.png",
80   - "notification@3x" : "unpackage/res/icons/60x60.png",
81   - "settings@2x" : "unpackage/res/icons/58x58.png",
82   - "settings@3x" : "unpackage/res/icons/87x87.png",
83   - "spotlight@2x" : "unpackage/res/icons/80x80.png",
84   - "spotlight@3x" : "unpackage/res/icons/120x120.png"
85   - }
86   - }
87   - },
88   - "splashscreen" : {
89   - "android" : {
90   - "hdpi" : "",
91   - "xhdpi" : "",
92   - "xxhdpi" : ""
93   - },
94   - "androidStyle" : "default"
95   - }
96   - }
97   - },
98   - /* 快应用特有相关 */
99   - "quickapp" : {},
100   - /* 小程序特有相关 */
101   - "mp-weixin" : {
102   - "appid" : "wx005c61919377e6af",
103   - "setting" : {
104   - "urlCheck" : false,
105   - "es6" : true,
106   - "postcss" : false,
107   - "minified" : true
108   - },
109   - "usingComponents" : true,
110   - "permission" : {}
111   - },
112   - "mp-alipay" : {
113   - "usingComponents" : true
114   - },
115   - "mp-baidu" : {
116   - "usingComponents" : true
117   - },
118   - "mp-toutiao" : {
119   - "usingComponents" : true
120   - },
121   - "h5" : {
122   - "router" : {
123   - "mode" : "hash",
124   - "base" : "./"
125   - },
126   - "title" : "商城",
127   - "devServer" : {
128   - "https" : false
129   - },
130   - "domain" : "",
131   - "sdkConfigs" : {
132   - "maps" : {
133   - "qqmap" : {
134   - "key" : "6YVBZ-Z6EC4-JYNUH-FGQKA-G6PAE-JVF3U"
135   - }
136   - }
137   - },
138   - "template" : "home.vue"
139   - }
140   -}
  2 + "name": "绿道",
  3 + "appid": "__UNI__F034047",
  4 + "description": "",
  5 + "versionName": "1.0.2",
  6 + "versionCode": "100",
  7 + "transformPx": false,
  8 + /* 5+App特有相关 */
  9 + "app-plus": {
  10 + "usingComponents": true,
  11 + "nvueCompiler": "uni-app",
  12 + "compilerVersion": 3,
  13 + "splashscreen": {
  14 + "alwaysShowBeforeRender": true,
  15 + "waiting": true,
  16 + "autoclose": true,
  17 + "delay": 0
  18 + },
  19 + /* 模块配置 */
  20 + "modules": {},
  21 + /* 应用发布信息 */
  22 + "distribute": {
  23 + /* android打包配置 */
  24 + "android": {
  25 + "permissions": [
  26 + "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
  27 + "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
  28 + "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
  29 + "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
  30 + "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
  31 + "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
  32 + "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
  33 + "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
  34 + "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
  35 + "<uses-permission android:name=\"android.permission.CAMERA\"/>",
  36 + "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
  37 + "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
  38 + "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
  39 + "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
  40 + "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
  41 + "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
  42 + "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
  43 + "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
  44 + "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
  45 + "<uses-feature android:name=\"android.hardware.camera\"/>",
  46 + "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
  47 + "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
  48 + ]
  49 + },
  50 + /* ios打包配置 */
  51 + "ios": {},
  52 + /* SDK配置 */
  53 + "sdkConfigs": {
  54 + "ad": {}
  55 + },
  56 + "icons": {
  57 + "android": {
  58 + "hdpi": "unpackage/res/icons/72x72.png",
  59 + "xhdpi": "unpackage/res/icons/96x96.png",
  60 + "xxhdpi": "unpackage/res/icons/144x144.png",
  61 + "xxxhdpi": "unpackage/res/icons/192x192.png"
  62 + },
  63 + "ios": {
  64 + "appstore": "unpackage/res/icons/1024x1024.png",
  65 + "ipad": {
  66 + "app": "unpackage/res/icons/76x76.png",
  67 + "app@2x": "unpackage/res/icons/152x152.png",
  68 + "notification": "unpackage/res/icons/20x20.png",
  69 + "notification@2x": "unpackage/res/icons/40x40.png",
  70 + "proapp@2x": "unpackage/res/icons/167x167.png",
  71 + "settings": "unpackage/res/icons/29x29.png",
  72 + "settings@2x": "unpackage/res/icons/58x58.png",
  73 + "spotlight": "unpackage/res/icons/40x40.png",
  74 + "spotlight@2x": "unpackage/res/icons/80x80.png"
  75 + },
  76 + "iphone": {
  77 + "app@2x": "unpackage/res/icons/120x120.png",
  78 + "app@3x": "unpackage/res/icons/180x180.png",
  79 + "notification@2x": "unpackage/res/icons/40x40.png",
  80 + "notification@3x": "unpackage/res/icons/60x60.png",
  81 + "settings@2x": "unpackage/res/icons/58x58.png",
  82 + "settings@3x": "unpackage/res/icons/87x87.png",
  83 + "spotlight@2x": "unpackage/res/icons/80x80.png",
  84 + "spotlight@3x": "unpackage/res/icons/120x120.png"
  85 + }
  86 + }
  87 + },
  88 + "splashscreen": {
  89 + "android": {
  90 + "hdpi": "",
  91 + "xhdpi": "",
  92 + "xxhdpi": ""
  93 + },
  94 + "androidStyle": "default"
  95 + }
  96 + }
  97 + },
  98 + /* 快应用特有相关 */
  99 + "quickapp": {},
  100 + /* 小程序特有相关 */
  101 + "mp-weixin": {
  102 + "appid": "wx005c61919377e6af",
  103 + "setting": {
  104 + "urlCheck": false,
  105 + "es6": true,
  106 + "postcss": false,
  107 + "minified": true
  108 + },
  109 + "usingComponents": true,
  110 + "permission": {}
  111 + },
  112 + "mp-alipay": {
  113 + "usingComponents": true
  114 + },
  115 + "mp-baidu": {
  116 + "usingComponents": true
  117 + },
  118 + "mp-toutiao": {
  119 + "usingComponents": true
  120 + },
  121 + "h5": {
  122 + "router": {
  123 + "mode": "hash",
  124 + "base": "./"
  125 + },
  126 + "title": "商城",
  127 + "devServer": {
  128 + "https": false
  129 + },
  130 + "domain": "",
  131 + "sdkConfigs": {
  132 + "maps": {
  133 + "qqmap": {
  134 + "key": "6YVBZ-Z6EC4-JYNUH-FGQKA-G6PAE-JVF3U"
  135 + }
  136 + }
  137 + },
  138 + "template": "home.vue"
  139 + }
  140 +}
141 141 \ No newline at end of file
... ...
lvdao-miniapp/pages.json
... ... @@ -457,7 +457,7 @@
457 457 "path": "rentPay/webView",
458 458 "style": {
459 459 "navigationBarBackgroundColor": "#FFFFFF",
460   - "navigationBarTitleText": "跳转"
  460 + "navigationBarTitleText": "支付中"
461 461 }
462 462 }
463 463 ]
... ...
lvdao-miniapp/pages/activityAdd/activityAdd.vue
... ... @@ -197,13 +197,14 @@
197 197 }
198 198 if(this.typeEdit){
199 199 this.$http.sendRequest('/cereActivityApplication/edit', 'POST',info,1).then(res => {
200   - uni.navigateTo({
  200 + uni.redirectTo({
201 201 url: '/pages/mycreated/mycreated'
202 202 })
203 203 })
204 204 }else{
  205 +
205 206 this.$http.sendRequest('/cereActivityApplication/add', 'POST',info,1).then(res => {
206   - uni.navigateTo({
  207 + uni.redirectTo({
207 208 url: '/pages/mycreated/mycreated'
208 209 })
209 210 }).catch(err => {
... ...
lvdao-miniapp/pages/advertisementDetail/advertisementDetail.vue
... ... @@ -129,7 +129,7 @@ export default {
129 129 methods: {
130 130 leaseAdd(url){
131 131  
132   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone},2).then(res => {
  132 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone}).then(res => {
133 133 if(res.data.code == '20004' || res.data.code == '20003'){
134 134 uni.navigateTo({
135 135 url: '/pages/login/login'
... ...
lvdao-miniapp/pages/details/details.vue
... ... @@ -183,7 +183,7 @@ export default {
183 183 },
184 184 methods: {
185 185 leaseAdd(url){
186   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone},2).then(res => {
  186 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone}).then(res => {
187 187 if(res.data.code == '20004' || res.data.code == '20003'){
188 188 uni.navigateTo({
189 189 url: '/pages/login/login'
... ...
lvdao-miniapp/pages/field/field.vue
... ... @@ -107,6 +107,7 @@
107 107 export default {
108 108 data() {
109 109 return {
  110 + $img: this.$root.$img,
110 111 query:{
111 112 venueName:'',
112 113 pageNumber: 0,
... ...
lvdao-miniapp/pages/login/login.vue
... ... @@ -110,7 +110,7 @@
110 110 username:this.phone,
111 111 code:this.code
112 112 }
113   - this.$http.sendRequest('/business/login', 'POST', data, 2).then(res => {
  113 + this.$http.sendRequest('/business/login', 'POST', data,2).then(res => {
114 114 if (res.data.code == '' || res.data.code == '200') {
115 115 uni.setStorageSync('token', res.data.data.token);
116 116 uni.setStorageSync('user', res.data.data);
... ...
lvdao-miniapp/pages/message/message.vue
... ... @@ -24,14 +24,15 @@
24 24 <view class="title">
25 25 <text>通知消息</text>
26 26 </view>
  27 +
27 28 <view class="describe">
28   - <text>{{tableList[0].content}}</text>
  29 + <text>{{tableList[0]?tableList[0].content:''}}</text>
29 30 </view>
30 31 </view>
31 32 </view>
32 33 <view class="more">
33 34 <!-- <view class="more-num">{{tableList.length}}</view> -->
34   - <view class="icon-more">{{formatDateTime(tableList[0].createdAt)}}</view>
  35 + <view class="icon-more">{{formatDateTime(tableList[0]?tableList[0].createdAt:'')}}</view>
35 36 </view>
36 37 </view>
37 38 <!-- <view class="list">
... ... @@ -228,7 +229,7 @@
228 229 })
229 230 } else {
230 231  
231   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone},2).then(res => {
  232 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone}).then(res => {
232 233 if(res.data.code == '20004' || res.data.code == '20003'){
233 234 uni.navigateTo({
234 235 url: '/pages/login/login'
... ... @@ -275,6 +276,7 @@
275 276 },
276 277 getALL(){
277 278 this.$http.sendRequest('/cereMessageNotification/queryByPage','POST',this.pagesize,1).then(res => {
  279 +
278 280 this.tableList =res.data.data.content
279 281 })
280 282 },
... ...
lvdao-miniapp/pages/my/my.vue
... ... @@ -284,7 +284,7 @@
284 284 })
285 285 } else {
286 286  
287   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{pageSize:10,pageNumber:0,phone:uni.getStorageSync('user').phone},2).then(res => {
  287 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{pageSize:10,pageNumber:0,phone:uni.getStorageSync('user').phone},1).then(res => {
288 288 if(res.data.code == '20004' || res.data.code == '20003'){
289 289 uni.navigateTo({
290 290 url: '/pages/login/login'
... ...
lvdao-miniapp/pages/mycreated/mycreated.vue
... ... @@ -10,7 +10,8 @@
10 10 <u-button type="success" @click="search">搜索</u-button>
11 11 </view> -->
12 12 <view style="margin: 20rpx 0;background-color: #FFFFFF;border-radius: 18rpx;border: 2rpx solid #E8E8E8; margin: 22rpx 24rpx;overflow: hidden;" >
13   - <u-search :action-style="{'background':'#19be6b','color':'#fff','height':'32px','line-height':'32px','border-radius':'18rpx'}" bg-color="#fff" placeholder="请输入关键词" v-model="pageIndex.activityName" action-text="搜索" @clear="search" @search="search" @custom="search"></u-search>
  13 + <u-search :action-style="{'background':'#19be6b','color':'#fff','height':'32px','line-height':'32px','border-radius':'18rpx'}"
  14 + bg-color="#fff" placeholder="请输入关键词" v-model="pageIndex.activityName" action-text="搜索" @clear="search" @search="search" @custom="search"></u-search>
14 15 </view>
15 16 <view class="goods-data">
16 17 <view class="goods-list">
... ... @@ -33,7 +34,7 @@
33 34 </view>
34 35 <view class="info-item">
35 36 <view class="label">活动状态:</view>
36   - <text>{{v.auditStatus =='1'?'待提交':v.auditStatus =='2'?'待审核':v.auditStatus =='3'?'审核通过':v.auditStatus =='4'?'审核驳回':''}}</text>
  37 + <text>{{v.auditStatus =='1'?'待提交':v.auditStatus =='2'?'待审核':v.auditStatus =='3'&&v.activeState==null?'审核通过':v.auditStatus =='3'&&v.activeState==0?'未开始':v.auditStatus =='3'&&v.activeState==1?'进行中':v.auditStatus =='3'&&v.activeState==2?'已结束':v.auditStatus =='4'?'审核驳回':''}}</text>
37 38 </view>
38 39 </view>
39 40 </view>
... ...
lvdao-miniapp/pages/workbench/workbench.vue
... ... @@ -178,7 +178,7 @@
178 178 })
179 179 } else {
180 180  
181   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone},2).then(res => {
  181 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone}).then(res => {
182 182 if(res.data.code == '20004' || res.data.code == '20003'){
183 183 uni.navigateTo({
184 184 url: '/pages/login/login'
... ...
lvdao-miniapp/pagesA/rentPay/goPay.vue
... ... @@ -4,7 +4,7 @@
4 4 <view class="msgtitle">您正在成都锦江绿道有限公司支付金额</view>
5 5 <view class="price">
6 6 <u-icon name="rmb" style="font-size: 24rpx;" />
7   - 800
  7 + {{allPay}}
8 8 </view>
9 9 </view>
10 10 <view style="height: 120rpx;"></view>
... ... @@ -18,8 +18,19 @@
18 18 export default {
19 19 data() {
20 20 return {
  21 + receivedMsg:[],
  22 + allPay:0
21 23 }
22 24 },
  25 + onLoad(options) {
  26 + if(options.msg){
  27 + let receivedMsg = JSON.parse(options.msg)
  28 + this.receivedMsg = receivedMsg
  29 + receivedMsg.map(item=>{
  30 + this.allPay += item.paymentAmount
  31 + })
  32 + }
  33 + },
23 34 onShow() {
24 35 const isLogin = uni.getStorageSync('token');
25 36 if (isLogin == '') {
... ... @@ -29,7 +40,7 @@
29 40 })
30 41 } else {
31 42  
32   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone},1).then(res => {
  43 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone}).then(res => {
33 44 if(res.data.code == '20004' || res.data.code == '20003'){
34 45 uni.navigateTo({
35 46 url: '/pages/login/login'
... ... @@ -41,9 +52,26 @@
41 52 },
42 53 methods: {
43 54 submit(){
44   - uni.navigateTo({
45   - url: '/pagesA/rentPay/webView'
  55 +
  56 + let arr = []
  57 + this.receivedMsg.map(item=>{
  58 + let obj = {
  59 + orderId:item.tenementOrder,
  60 + money:item.paymentAmount,
  61 + }
  62 + arr.push(obj)
  63 + })
  64 +
  65 + // return
  66 + this.$http.sendRequest('/order/rentAggregatePayment','POST',arr,3).then(res => {
  67 + console.log(JSON.parse(res.data.data).data.codeUrl)
  68 + if(res.data.data){
  69 + uni.redirectTo({
  70 + url: `/pagesA/rentPay/webView?urls=${JSON.parse(res.data.data).data.codeUrl}`
  71 + })
  72 + }
46 73 })
  74 +
47 75 }
48 76 }
49 77 }
... ...
lvdao-miniapp/pagesA/rentPay/rentPay.vue
... ... @@ -2,53 +2,52 @@
2 2 <view class="page">
3 3 <view class="search-box">
4 4 <view>
5   - <u-input v-model="value" type="select" @click="show = true" style="background-color: #fff;" placeholder="-" :border="false"/>
6   - <u-select v-model="show" :list="list1" @confirm="confirm"></u-select>
  5 + <u-input v-model="value" type="select" @click="show = true" style="background-color: #fff;"
  6 + placeholder="-" :border="false" />
  7 + <u-select v-model="show" :list="list1" @confirm="confirm($event)"></u-select>
7 8 </view>
8   -
  9 +
9 10 </view>
10 11 <view class="search-total">
11   - <view class="left">
12   - <view class="price-total"><u-icon name="rmb" style="font-size: 24rpx;" />100.00</view>
13   - <view>(当前租金欠费金额)</view>
14   - </view>
15   - <div class="right" @click='toDetail'>
16   - <view>缴费记录 <u-icon name="arrow-right" size="28" /></view>
17   - </div>
18   -
  12 + <view class="left">
  13 + <view class="price-total"><u-icon name="rmb" style="font-size: 24rpx;" />{{yingPayAll}}</view>
  14 + <view>(当前租金欠费金额)</view>
  15 + </view>
  16 + <div class="right" @click='toDetail'>
  17 + <view>缴费记录 <u-icon name="arrow-right" size="28" /></view>
  18 + </div>
  19 +
19 20 </view>
20   - <view style="text-align: center;color:#0EBB5A;padding: 30rpx 0;">每月1日为付款日</view>
  21 + <view style="text-align: center;color:#0EBB5A;padding: 30rpx 0;">{{etTimePeriodDesc(payNum,dayMsg)}}为付款日</view>
21 22 <!-- 记录列表 -->
22 23 <view class="record-list">
23 24 <view class="record-list-box" v-for="(item,index) in recordList" :key="index">
24   - <u-checkbox-group class="list-group" style="width: 100%;" >
25   - <view class="list">
26   - <u-checkbox v-model="recordList[index].gouxuan" shape="circle" :label-disabled="false" active-color="#0EBB5A" @change="xuanAll(item,$event)"/>
27   -
28   - <view class="list-item">
29   - <view class="list-info">
30   - <view class="info-items">
31   - <view class="info-title">{{item.name}}:</view>
32   - <view class="price"><u-icon name="rmb" style="font-size: 24rpx;" />{{item.price}}</view>
33   - </view>
  25 + <u-checkbox-group class="list-group" style="width: 100%;">
  26 + <view class="list">
  27 + <u-checkbox v-model="recordList[index].gouxuan" shape="circle" :label-disabled="false"
  28 + active-color="#0EBB5A" @change="xuanAll(item,$event)" />
  29 +
  30 + <view class="list-item">
  31 + <view class="list-info">
  32 + <view class="info-items">
  33 + <view class="info-title">{{formatTime(payNum,item.tenementOrderDate)}}应缴租金:</view>
  34 + <view class="price"><u-icon name="rmb"
  35 + style="font-size: 24rpx;" />{{item.paymentAmount}}</view>
34 36 </view>
35 37 </view>
36 38 </view>
37   -
  39 + </view>
  40 +
38 41 </u-checkbox-group>
39 42 </view>
40 43 </view>
41 44 <view style="height: 120rpx;"></view>
42 45 <view class="page-footer">
43 46 <view class="footer-buy">
44   - <u-checkbox-group >
45   - <u-checkbox
46   - shape="circle"
47   - @change="quanxuan"
48   - v-model="showAll"
49   - active-color="#0EBB5A"
50   - >全选</u-checkbox>
51   - </u-checkbox-group>
  47 + <u-checkbox-group>
  48 + <u-checkbox shape="circle" @change="quanxuan" v-model="showAll"
  49 + active-color="#0EBB5A">全选</u-checkbox>
  50 + </u-checkbox-group>
52 51 <view class="cart-add">
53 52 合计:<view class="price"><u-icon name="rmb" style="font-size: 24rpx;" />{{payAll}}</view>
54 53 </view>
... ... @@ -57,106 +56,34 @@
57 56 </view>
58 57 <!-- <u-loading :show="true" size="60" style="position: absolute; top:80%;left: ;" color="red"></u-loading> -->
59 58 </view>
60   -
  59 +
61 60 </template>
62 61  
63 62 <script>
64 63 export default {
65 64 data() {
66 65 return {
  66 + payNum: 1,
  67 + dayMsg: '',
67 68 show: false,
68   - payAll:0,
  69 + payAll: 0.00,
  70 + yingPayAll: 0.00,
69 71 value: '',
70   - list1: [{ value: '0', label: '全部' },{ value: '1', label: '物业费' }, { value: '2', label: '水费' },{ value: '3', label: '卫生费' }, { value: '4', label: '燃气费' },{ value: '5', label: '电费' } ],
  72 + list1: [],
71 73 checked: [],
72   - recordList:[
73   - {
74   - img: '',
75   - name: '物业费',
76   - price: 1500,
77   - rate: '100%',
78   - chilren: [],
79   - showItem: false,
80   - gouxuan:false
81   - },
82   - {
83   - img: '',
84   - name: '卫生费',
85   - price: 5000,
86   - rate: '100%',
87   - chilren: [],
88   - showItem: false,
89   - gouxuan:false
90   - },
91   - {
92   - img: '',
93   - name: '水费',
94   - price: 2000,
95   - rate: '100%',
96   - chilren: [],
97   - showItem: false,
98   - gouxuan:false
99   - }
100   - ],
101   - recordList1:[
102   - {
103   - img: '',
104   - name: '物业费',
105   - price: 15,
106   - rate: '100%',
107   - chilren: [],
108   - showItem: false,
109   - gouxuan:false
110   - },
111   - {
112   - img: '',
113   - name: '卫生费',
114   - price: 15,
115   - rate: '100%',
116   - chilren: [],
117   - showItem: false,
118   - gouxuan:false
119   - },
120   - {
121   - img: '',
122   - name: '水费',
123   - price: 15,
124   - rate: '100%',
125   - chilren: [],
126   - showItem: false,
127   - gouxuan:false
128   - },
129   - {
130   - img: '',
131   - name: '电费',
132   - price: 15,
133   - rate: '100%',
134   - chilren: [],
135   - showItem: false,
136   - gouxuan:false
137   - },
138   - {
139   - img: '',
140   - name: '燃气费',
141   - price: 15,
142   - rate: '100%',
143   - chilren: [],
144   - showItem: false,
145   - gouxuan:false
146   - },
147   - ],
148   -
149   - loadShow:false,
150   - showAll:false,
151   -
  74 + recordList: [],
  75 + loadShow: false,
  76 + showAll: false,
  77 + ListIndex: 0,
  78 +
152 79 };
153 80 },
154   - watch:{
155   - recordList:{
156   - deep:true,
157   - handler(newVal){
158   - const allTrue = this.recordList.every(item => item.gouxuan)
159   - this.showAll = allTrue
  81 + watch: {
  82 + recordList: {
  83 + deep: true,
  84 + handler(newVal) {
  85 + const allTrue = this.recordList.every(item => item.gouxuan)
  86 + this.showAll = allTrue
160 87 }
161 88 }
162 89 },
... ... @@ -168,90 +95,202 @@
168 95 url: '/pages/login/login'
169 96 })
170 97 } else {
  98 +
  99 + this.$http.sendRequest('/order/refundToRent', 'POST', {
  100 + orderId:'202502101739156798173156287',type:2
  101 + },3).then(res => {
  102 +
  103 + })
  104 + this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST', {
  105 + pageSize: 10,
  106 + pageNumber: 0,
  107 + phone: uni.getStorageSync('user').phone
  108 + }).then(res => {
  109 +
  110 + if (res.data.code == '20004' || res.data.code == '20003') {
  111 + uni.navigateTo({
  112 + url: '/pages/login/login'
  113 + })
  114 + } else {
  115 + this.relatedMerchants = res.data.data.content[0].id
  116 + this.$http.sendRequest('/cerePropertyOrder/queryByName', 'POST', {
  117 + relatedMerchants: res.data.data.content[0].id,
  118 + }, 1).then(res => {
  119 + if (res.data.data.length > 0) {
  120 + const listNew = []
  121 + res.data.data.map((item, index) => {
  122 +
  123 + const newObj = {
  124 + label: item.shopName,
  125 + value: index,
  126 + list: []
  127 + }
  128 + newObj.list = item.cerePropertyOrderList
  129 +
  130 + listNew.push(newObj)
  131 +
  132 + })
  133 +
  134 + this.list1 = listNew
171 135  
172   - this.$http.sendRequest('/cerePlatformMerchant/queryByPage', 'POST',{"pageSize":10,pageNumber:0,phone:uni.getStorageSync('user').phone},1).then(res => {
173   - if(res.data.code == '20004' || res.data.code == '20003'){
174   - uni.navigateTo({
175   - url: '/pages/login/login'
176   - })
177   - }
  136 + this.value = res.data.data[0].shopName
  137 + this.ListIndex = 0
  138 + const redList = []
  139 + this.payAll = 0
  140 + this.yingPayAll = 0
  141 + res.data.data[0].cerePropertyOrderList.map(item => {
  142 + if (item.payState == 0) {
  143 + this.yingPayAll += item.paymentAmount
  144 + this.yingPayAll = this.roundUpToTwoDecimals(this.yingPayAll)
  145 + this.payNum = item.payType
  146 + this.dayMsg = item.payDay
  147 + const zujin = {
  148 + ...item,
  149 + showItem: false,
  150 + gouxuan: false,
  151 +
  152 + }
  153 + redList.push(zujin)
  154 + }
  155 + })
  156 + this.recordList = redList
  157 + }
  158 + })
  159 + }
178 160 })
179 161 }
180 162  
181 163 },
182 164 methods: {
183   - quanxuan(e){
184   -
185   - const allTrue = this.recordList.every(item => item.gouxuan)
186   - if(allTrue){
187   - this.payAll= 0
188   - this.showAll = !this.showAll
189   - this.recordList.forEach(item => {
190   - item.gouxuan = !allTrue;
191   -
192   - });
193   - }else{
194   - this.showAll = true
195   -
196   - this.recordList.forEach(item => {
197   - item.gouxuan = !allTrue;
198   - this.payAll += item.price
199   - });
200   - }
201   -
202   -
  165 + roundUpToTwoDecimals(num) {
  166 + return Math.ceil(num * 100) / 100;
203 167 },
204   - xuanAll(item,e){
205   -
206   - if(e.value){
207   - this.payAll += item.price
208   - }else{
209   - this.payAll -= item.price
  168 + quanxuan(e) {
  169 + this.payAll = 0
  170 + const allTrue = this.recordList.every(item => item.gouxuan)
  171 + if (allTrue) {
  172 + this.showAll = !this.showAll
  173 + this.recordList.forEach(item => {
  174 + item.gouxuan = !allTrue;
  175 + });
  176 + } else {
  177 + this.showAll = true
  178 + this.recordList.forEach(item => {
  179 + item.gouxuan = !allTrue;
  180 + this.payAll += item.paymentAmount
  181 + });
  182 + }
  183 +
  184 +
  185 + },
  186 + xuanAll(item, e) {
  187 + if (e.value) {
  188 + this.payAll += item.paymentAmount
  189 + this.payAll = this.roundUpToTwoDecimals(this.payAll)
  190 + } else {
  191 + this.payAll -= item.paymentAmount
  192 + this.payAll = this.roundUpToTwoDecimals(this.payAll)
210 193 }
211 194 },
212   - recordXq(item){
213   - const encodedItem = encodeURIComponent(JSON.stringify(item));
  195 + recordXq(item) {
  196 + const encodedItem = encodeURIComponent(JSON.stringify(item))
214 197 uni.navigateTo({
215   - url: `/pages/accepting/accepting?item=${encodedItem}`,
216   - })
  198 + url: `/pages/accepting/accepting?item=${encodedItem}`,
  199 + })
217 200 },
218 201 toDetail() {
  202 +
  203 + const msg = JSON.stringify(this.list1[this.ListIndex])
219 204 uni.navigateTo({
220   - url: '/pagesA/rentPay/rentPayDetails'
  205 + url: `/pagesA/rentPay/rentPayDetails?msg=${msg}&merchants=${this.relatedMerchants}`
221 206 })
222 207 },
223   - joinShow(){
224   - if(this.payAll == 0){
225   - uni.showToast({
226   - icon: 'error',
227   - title: '请选择支付订单'
228   - })
229   - }else{
230   - uni.navigateTo({
231   - url: '/pagesA/rentPay/goPay'
232   - })
233   - }
234   - },
235   - confirm(e){
236   - console.log(e)
237   - let arr =[]
238   - if(e[0].label == '全部'){
239   - this.recordList = this.recordList1
240   - }else{
241   - this.recordList1.map(item =>{
242   - if(item.name == e[0].label){
243   - arr.push(item)
  208 + joinShow() {
  209 + if (this.payAll == 0) {
  210 + uni.showToast({
  211 + icon: 'error',
  212 + title: '请选择支付订单'
  213 + })
  214 + } else {
  215 +
  216 + let payArr = []
  217 + this.recordList.map(item => {
  218 + if (item.gouxuan) {
  219 + payArr.push(item)
244 220 }
245 221 })
246   - this.recordList = arr
  222 + const msg = JSON.stringify(payArr)
  223 + uni.navigateTo({
  224 + url: `/pagesA/rentPay/goPay?msg=${msg}`
  225 + })
247 226 }
  227 + },
  228 + confirm(e) {
  229 +
  230 + let arr = []
248 231 this.value = e[0].label
249   -
  232 + const redList = []
  233 + let index = e[0].value
  234 + this.ListIndex = e[0].value
  235 + this.yingPayAll = 0
  236 + this.payAll = 0
  237 + this.list1[index].list.map(item => {
  238 + if (item.payState == 0) {
  239 + this.yingPayAll += item.paymentAmount
  240 + this.yingPayAll = this.roundUpToTwoDecimals(this.yingPayAll)
  241 + this.payNum = item.payType
  242 + this.dayMsg = item.payDay
  243 + const zujin = {
  244 + ...item,
  245 + showItem: false,
  246 + gouxuan: false,
  247 + }
  248 + redList.push(zujin)
  249 + }
  250 +
  251 + })
  252 + this.recordList = redList
  253 +
250 254 },
  255 + etTimePeriodDesc(num, day) {
  256 + switch (num) {
  257 + case 1:
  258 + return '每日';
  259 + case 2:
  260 + return `每月${day}`;
  261 + case 3:
  262 + return `每季度${day}`;
  263 + case 4:
  264 + return `每年${day}`;
  265 + default:
  266 + return '';
  267 + }
  268 + },
  269 + formatTime(type, time) {
  270 + // 将传入的时间字符串转换为 Date 对象
  271 + const date = new Date(time);
  272 +
  273 + const day = date.getDate();
  274 + const month = date.getMonth() + 1;
  275 + const quarter = Math.floor((month - 1) / 3) + 1;
  276 + const year = date.getFullYear();
  277 + switch (type) {
  278 + case 1:
  279 + return `${day}号`;
  280 + case 2:
  281 + return `${month}月${day}号`;
  282 + case 3:
  283 + return `${month}月${day}号`;
  284 + case 4:
  285 + return `${year}年`;
  286 + default:
  287 + return time;
  288 + }
  289 + }
251 290 }
252 291 }
253 292 </script>
254 293  
255 294 <style scoped lang="scss">
256 295 @import 'rentPay.scss';
257   -</style>
  296 +</style>
258 297 \ No newline at end of file
... ...
lvdao-miniapp/pagesA/rentPay/rentPayDetails.scss
... ... @@ -65,4 +65,12 @@
65 65 border-bottom: unset;
66 66 }
67 67 }
  68 +}
  69 +.nonemsg{
  70 + color: #0FBB59;
  71 + font-size: 18px;
  72 + width: 100%;
  73 + margin-top: 10%;
  74 + text-align: center;
  75 +
68 76 }
69 77 \ No newline at end of file
... ...
lvdao-miniapp/pagesA/rentPay/rentPayDetails.vue
... ... @@ -5,26 +5,29 @@
5 5 <view @click="show = true">{{pageIndex.time}}年<u-icon name="arrow-down"></u-icon></view>
6 6 <u-picker v-model="show" mode="time" :params="{year: true}" @confirm="confirm"></u-picker>
7 7 </div>
8   - <div class="right"><view class="price" style="font-size: 40rpx;"><u-icon name="rmb" style="font-size: 24rpx;" />6451.00</view></div>
  8 + <div class="right"><view class="price" style="font-size: 40rpx;"><u-icon name="rmb" style="font-size: 24rpx;" />{{allPay}}</view></div>
9 9 </view>
10 10 <view class="record-list">
11 11 <view class="record-item" v-for="(item, index) in dataList" :key="index" >
12 12 <view class="info-title">
13   - <view class="title">7月</view>
14   - <view class="right"><view class="price"><u-icon name="rmb" style="font-size: 24rpx;" />6451.00</view></view>
  13 + <!-- <view class="title">{{formatDate(item.tenementOrderDate)}}</view> -->
  14 + <view class="right"><view class="price"><u-icon name="rmb" style="font-size: 24rpx;" />{{item.dingPay}}</view></view>
15 15 </view>
16   - <view class="info-items" v-for="(v, i) in item.children" :key="i">
  16 + <view class="info-items" v-for="(value, ids) in item.ziList">
17 17 <view class="info-item">
18   - <view class="left title">支付订单编号</view>
19   - <view class="right"><view class="price"><u-icon name="rmb" style="font-size: 24rpx;" />500.00</view></view>
  18 + <view class="left title">{{value.tenementOrderParent==''?value.tenementOrder:value.tenementOrderParent}}</view>
  19 + <view class="right"><view class="price"><u-icon name="rmb" style="font-size: 24rpx;" />{{value.paymentAmount}}</view></view>
20 20 </view>
21 21 <view class="info-item">
22   - <view class="left" style="color: #0FBB59;">支付成功</view>
23   - <view class="right" style="color: #8A8A8A;">07.11 15:21</view>
  22 + <view class="left" style="color: #0FBB59;">{{value.payState==1?'支付成功':''}}</view>
  23 + <view class="right" style="color: #8A8A8A;">{{formatDateTime(value.paymentTime)}}</view>
24 24 </view>
25 25 </view>
26 26 </view>
27 27 </view>
  28 + <view v-if="dataList.length === 0" class="nonemsg">
  29 + 暂无数据
  30 + </view>
28 31 </view>
29 32 </template>
30 33  
... ... @@ -33,29 +36,143 @@
33 36 data() {
34 37 return {
35 38 show: false,
36   - dataList: [
37   - {
38   - children: [{}, {}]
39   - }
40   -
41   - ],
  39 + dataList: [],
  40 + allPay:0,
42 41 pageIndex:{
43 42 time:''
44   - }
  43 + },
  44 + merchants:''
45 45 }
46 46 },
47   - onShow() {
  47 + onShow(){
48 48 this.pageIndex.time = this.getCurrentYear()
49 49 },
  50 + onLoad(options) {
  51 + if(options.msg && options.merchants){
  52 + this.allPay = 0
  53 + let receivedMsg = JSON.parse(options.msg)
  54 + this.merchants = options.merchants
  55 + this.getAll(receivedMsg.list)
  56 + }
  57 + },
50 58 methods: {
  59 + getAll(receivedMsg){
  60 + let totalPay= 0
  61 + const redList = []
  62 + // 用于存储 tenementOrderParent 相同的项
  63 + const groupedItems = {};
  64 + // 遍历 receivedMsg.list 数组
  65 + receivedMsg.forEach(item => {
  66 + if(item.payState ==1){
  67 + totalPay += item.paymentAmount
  68 + if (item.tenementOrderParent === '') {
  69 + // 如果 tenementOrderParent 为空,添加 dingPay 字段并添加到 redList
  70 + let newItem = { ...item,ziList:[], dingPay: item.paymentAmount };
  71 + newItem.ziList.push(item)
  72 + redList.push(newItem);
  73 + } else {
  74 + // 如果 tenementOrderParent 不为空,将相同 tenementOrderParent 的项分组
  75 + if (!groupedItems[item.tenementOrderParent]) {
  76 + groupedItems[item.tenementOrderParent] = {
  77 + ziList: [],
  78 + dingPay: 0
  79 + };
  80 + }
  81 + groupedItems[item.tenementOrderParent].ziList.push(item);
  82 + groupedItems[item.tenementOrderParent].dingPay += item.paymentAmount;
  83 + groupedItems[item.tenementOrderParent].paymentTime = item.paymentTime;
  84 + groupedItems[item.tenementOrderParent].payDay = item.payDay;
  85 + groupedItems[item.tenementOrderParent].payState = item.payState;
  86 + }
  87 + }
  88 +
  89 + });
  90 + // 将分组后的对象添加到 redList
  91 + for (const key in groupedItems) {
  92 + redList.push({
  93 + tenementOrderParent: key,
  94 + ...groupedItems[key]
  95 + });
  96 + }
  97 +
  98 + // receivedMsg.list.map(item=>{
  99 + // let obj ={
  100 + // ...item,
  101 + // dingPay:0,
  102 + // ziList:[]
  103 + // }
  104 + // if (item.payState == 1) {
  105 + // obj.ziList.push(item)
  106 + // if(item.tenementOrderParent ){
  107 +
  108 + // }
  109 + // obj.dingPay +=item.paymentAmount
  110 + // this.orderPay+=item.paymentAmount
  111 + // this.allPay+=item.paymentAmount
  112 + // redList.push(obj)
  113 + // }
  114 +
  115 + // })
  116 + this.allPay = totalPay;
  117 + this.dataList = redList
  118 +
  119 + },
51 120 getCurrentYear() {
52 121 const year = new Date().getFullYear();
53 122 return `${year}`;
54 123 },
55 124 confirm(e){
56   -
57 125 this.pageIndex.time = e.year
58   - }
  126 +
  127 + const { firstDay, lastDay } = this.getYearFirstAndLastDay(e.year)
  128 + this.$http.sendRequest('/cerePropertyOrder/queryByName', 'POST', {
  129 + relatedMerchants:this.merchants,
  130 + paymentTimeStart:firstDay,
  131 + paymentTimeEnd:lastDay
  132 + }, 1).then(res => {
  133 + if (res.data.data.length > 0) {
  134 +
  135 + this.getAll(res.data.data[0].cerePropertyOrderList)
  136 + }else{
  137 + this.dataList=[]
  138 + this.allPay = 0
  139 + }
  140 + })
  141 + },
  142 + getYearFirstAndLastDay(year) {
  143 + console.log(year)
  144 + const firstDay = new Date(year, 0, 1);
  145 + const lastDay = new Date(year, 11, 31);
  146 + console.log(firstDay.toISOString().split('T'))
  147 + return {
  148 + firstDay: firstDay.toISOString().split('T')[0],
  149 + lastDay: lastDay.toISOString().split('T')[0]
  150 + }
  151 + },
  152 + formatDateTime(dateTimeStr) {
  153 + // 创建 Date 对象
  154 + const date = new Date(dateTimeStr);
  155 + // 获取月份,由于 getMonth() 返回值从 0 开始,所以要加 1,并确保为两位数字
  156 + const month = String(date.getMonth() + 1).padStart(2, '0');
  157 + // 获取日期,并确保为两位数字
  158 + const day = String(date.getDate()).padStart(2, '0');
  159 + // 获取小时,并确保为两位数字
  160 + const hours = String(date.getHours()).padStart(2, '0');
  161 + // 获取分钟,并确保为两位数字
  162 + const minutes = String(date.getMinutes()).padStart(2, '0');
  163 +
  164 + // 按照所需格式拼接并返回结果
  165 + return `${month}.${day} ${hours}:${minutes}`;
  166 + },
  167 + formatDate(dateStr) {
  168 + // 使用 split 方法将日期字符串按 - 分割成数组
  169 + const [year, month, day] = dateStr.split('-');
  170 + // 将 month 和 day 转换为数字,去除可能存在的前导零
  171 + const formattedMonth = parseInt(month, 10);
  172 + const formattedDay = parseInt(day, 10);
  173 + // 按照目标格式拼接字符串
  174 + return `${formattedMonth}月${formattedDay}号`;
  175 + },
59 176 }
60 177 }
61 178 </script>
... ...
lvdao-miniapp/pagesA/rentPay/webView.vue
1 1 <template>
2 2 <view>
3   - <web-view src="https://test-pay.028wlkj.com/fixedPay?payId=CDWLOLE490393BE9E049D29766DB184366132F"></web-view>
  3 + <web-view :src="url"></web-view>
4 4 </view>
5 5 </template>
6 6  
7 7 <script>
8 8 export default {
9   - props: {
10   - // 定义接收的 prop,类型为 String
11   - url: {
12   - type: String,
13   - required: true
14   - }
  9 + data() {
  10 + return {
  11 + url:'https://test-pay.028wlkj.com/fixedPay?payId=CDWLOLE490393BE9E049D29766DB184366132F'
  12 + }
  13 + },
  14 + onBackPress() {
  15 + // 拦截返回事件
  16 + uni.redirectTo({
  17 + url: '/pagesA/rentPay/rentPay'
  18 + });
  19 + return true;
15 20 },
16   - computed: {
17   - // 使用计算属性确保 url 被正确绑定到 web-view 的 src 属性
18   - webUrl() {
19   - return this.url;
20   - }
  21 + onLoad(options) {
  22 + if(options.urls){
  23 + this.url = options.urls
  24 + }
21 25 },
22 26 mounted() {
23   - // 可选:在组件挂载后进行一些验证或处理
24   - console.log('加载的网址:', this.webUrl);
  27 +
25 28 }
26 29 }
27 30 </script>
... ...
lvdao-miniapp/utils/request.js
... ... @@ -21,18 +21,22 @@ const sendRequest = (url, method = &#39;GET&#39;, data = {}, baseUrl,contentType) =&gt; {
21 21  
22 22 // bases = 'http://10.0.0.51:9003' + url;
23 23 // bases = 'https://zhld.028wlkj.com:49008/cdwlMall/admin-server' + url;
24   - // bases = 'https://jy.scjysm.asia:18086/admin-server' + url;
25 24  
26 25  
  26 +
  27 + }else if(baseUrl == 3){
  28 + bases = 'https://jy.scjysm.asia:18086/cdwlMall/meserver/api' + url;
  29 + // bases = 'http://192.168.2.107:9007' + url;
  30 + // bases = 'http://10.0.0.51:9007' + url;
  31 +
27 32 }else{
28 33 // bases = 'http://172.16.61.125:9004/' + url;
29 34 // bases = 'http://172.16.61.48/business-server' + url;
30 35 // bases = 'http://172.16.61.123/cdwlMall/business-server' + url;
31 36 bases = 'https://jy.scjysm.asia:18086/cdwlMall/business-server' + url;
32   -
  37 +
33 38 // bases = 'http://10.0.0.51:9004' + url;
34 39 // bases = 'https://zhld.028wlkj.com:49008/cdwlMall/business-server' + url;
35   - // bases = 'https://jy.scjysm.asia:18086/merchant-business' + url;
36 40  
37 41 }
38 42 var token = uni.getStorageSync('token') || '';
... ...
merchant-web-master/src/api/commodityLease.js 0 → 100644
  1 +import request from '@/utils/request'
  2 +// 上传合同
  3 +
  4 +export function miniioupload(data) {
  5 + return request({
  6 + url: '/miniio/upload',
  7 + method: 'post',
  8 + data,
  9 + headers: {
  10 + 'Content-Type': 'multipart/form-data'
  11 + }
  12 + })
  13 +}
... ...
merchant-web-master/src/assets/images/cover.svg 0 → 100644
  1 +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><defs><style>.a,.b,.c{fill:none;}.b,.c{stroke:rgba(255,255,255,0.9);stroke-linecap:round;stroke-linejoin:round;}.b{stroke-miterlimit:10;}</style></defs><g transform="translate(-530 -1091)"><g transform="translate(-14 -55)"><rect class="a" width="16" height="16" transform="translate(544 1146)"/></g><g transform="translate(525.727 1086.896)"><path class="b" d="M17.153,13.834v6.622a.7.7,0,0,1-.7.7H6.7a.7.7,0,0,1-.7-.7V10.7a.7.7,0,0,1,.7-.7h6.4" transform="translate(0 -2.739)"/><path class="b" d="M12,24.17l2.091-2.8,1.046,1.046,1.22-1.917,2.614,3.67Z" transform="translate(-3.909 -9.579)"/></g><path class="c" d="M28.726,7.59l1.3,1.308,2.5-2.5" transform="translate(511.984 1087.283)"/></g></svg>
0 2 \ No newline at end of file
... ...
merchant-web-master/src/assets/images/fengmian.png 0 → 100644

1.55 KB

merchant-web-master/src/assets/images/logo2.png 0 → 100644

3.06 KB

merchant-web-master/src/components/BaseImage/index.vue 0 → 100644
  1 +<template>
  2 + <!-- 支持官方文档Attributes、event -->
  3 + <div class="base-img-box">
  4 + <el-image
  5 + class="base-img"
  6 +
  7 + :lazy="false"
  8 + fit="cover"
  9 + :src="realSrc"
  10 + :preview-teleported="true"
  11 + :preview-src-list="isPreview ? [realSrc] : null"
  12 + ref="baseImgRef"
  13 + />
  14 + <div class="base-img-mask-layer" v-if="isSetCover">
  15 + <div class="mask-layer-box">
  16 + <div class="mask-layer-item" @click="handleLook">
  17 + <el-icon size="20" class="el-icon-zoom-in" style="color:#fff"></el-icon>
  18 + </div>
  19 + <div class="mask-layer-item" @click="handleDelete">
  20 + <el-icon size="20" class="el-icon-delete" style="color:#fff"></el-icon>
  21 + </div>
  22 + <div
  23 + class="mask-layer-item"
  24 + @click="handleSetCover"
  25 + v-if="forIndex !== onforIndex"
  26 + >
  27 + <img
  28 + class="mask-layer-item-icon"
  29 + src="@/assets/images/cover.svg"
  30 + alt=""
  31 + />
  32 + </div>
  33 + </div>
  34 + </div>
  35 + <div class="fengmian" v-if="forIndex === onforIndex && isSetCover">
  36 + <img src="@/assets/images/fengmian.png" alt="" />
  37 + </div>
  38 + </div>
  39 +</template>
  40 +
  41 +<script>
  42 +// import { reqFileFullUrl } from '@/api/commonApi/file';
  43 +// import envConfig from '@/utils/envConfig';
  44 +// import { toFullUrl } from '@/utils/index';
  45 +// import { ZoomIn, Delete } from '@element-plus/icons-vue';
  46 +
  47 +export default {
  48 + name: 'BaseImage',
  49 + props: {
  50 + onforIndex: {
  51 + type: Number,
  52 + default: 0,
  53 + },
  54 + src: {
  55 + type: String,
  56 + required: true,
  57 + },
  58 + // 获取完整预览路径
  59 + getFull: {
  60 + type: Boolean,
  61 + default: true,
  62 + },
  63 + // 是否开启图片预览
  64 + isPreview: {
  65 + type: Boolean,
  66 + default: true,
  67 + },
  68 + // 是否开启图片预览
  69 + code: {
  70 + type: Number,
  71 + default: 5000,
  72 + },
  73 + // 资源类型 sys:系统资源 business: 业务资源 用于区分上传路径
  74 + resourceType: {
  75 + type: String,
  76 + default: 'business',
  77 + },
  78 + isSetCover: {
  79 + type: Boolean,
  80 + default: false,
  81 + },
  82 + forIndex: {
  83 + type: Number,
  84 + default: 9999,
  85 + },
  86 + },
  87 + data() {
  88 + return {
  89 + accessUrl: '',
  90 + baseImgRef: null,
  91 + };
  92 + },
  93 + computed: {
  94 + realSrc() {
  95 + return this.accessUrl;
  96 + },
  97 + },
  98 + watch: {
  99 + src: {
  100 + immediate: true,
  101 + handler(newValue) {
  102 + if (newValue && this.getFull) {
  103 + this.getFileFullUrl();
  104 + }
  105 + },
  106 + },
  107 + },
  108 + methods: {
  109 + getFileFullUrl() {
  110 + if (!this.src) return;
  111 + if (process.env.NODE_ENV == 'development') {
  112 + this.accessUrl = this.$baseURL + this.src; //开发环境
  113 + } else {
  114 + this.accessUrl = this.$baseURL + this.src; //发布环境
  115 + }
  116 + },
  117 + handleLook() {
  118 + this.$refs.baseImgRef.$el.children[0].click();
  119 + },
  120 + handleDelete() {
  121 + this.$emit('handleDelete');
  122 + },
  123 + handleSetCover() {
  124 + this.$emit('handleSetCover');
  125 + },
  126 + },
  127 +};
  128 +</script>
  129 +
  130 +<style lang="scss" scoped>
  131 +.base-img-box {
  132 + width: 100%;
  133 + height: 100%;
  134 + position: relative;
  135 + .base-img {
  136 + width: 100%;
  137 + height: 100%;
  138 + }
  139 + .base-img-mask-layer {
  140 + display: none;
  141 + width: 100%;
  142 + height: 100%;
  143 + position: absolute;
  144 + top: 0;
  145 + left: 0;
  146 + z-index: 1;
  147 + .mask-layer-box {
  148 + background-color: rgba($color: #000000, $alpha: 0.5);
  149 + width: 100%;
  150 + height: 100%;
  151 + display: flex;
  152 + justify-content: space-around;
  153 + align-items: center;
  154 + .mask-layer-item {
  155 + position: relative;
  156 + z-index: 2;
  157 + cursor: pointer;
  158 + .mask-layer-item-icon {
  159 + width: 20px;
  160 + height: 20px;
  161 + }
  162 + }
  163 + }
  164 + }
  165 +
  166 + &:hover .base-img-mask-layer {
  167 + display: block;
  168 + }
  169 + .fengmian {
  170 + position: absolute;
  171 + top: 6px;
  172 + right: 9px;
  173 + img {
  174 + width: 31px;
  175 + height: 36px;
  176 + }
  177 + }
  178 +}
  179 +</style>
0 180 \ No newline at end of file
... ...
merchant-web-master/src/components/ImageUpload/index.vue 0 → 100644
  1 +<template>
  2 + <div class="upload-container">
  3 + <div class="tips" v-if="!options.disabled">
  4 + 请上传小于{{ options.limitSize }}M,格式为{{
  5 + options.accept
  6 + }}格式的图片,最多可上传{{ options.limit }}张
  7 + </div>
  8 + <div class="card-list-box">
  9 + <div v-for="(file, i) in localValue" :key="'upload-BaseImage' + i" class="card-item-box">
  10 + <BaseImage :src="file.imgPath" fit="contain" class="card-img" :code="options.reqParams.code"
  11 + :filePath="filePath" @handleDelete="handleDeleteImg(file, i)"
  12 + @handleSetCover="handleSetCover(file, i)" :isSetCover="cmpOption.isSetCover" :forIndex="i" :onforIndex="onforIndex"/>
  13 + <div v-show="!options.disabled && !cmpOption.isSetCover" title="删除" class="delete-box"
  14 + @click="handleDeleteImg(file, i)">
  15 + <i class="el-icon-close"></i>
  16 + </div>
  17 + </div>
  18 + <div v-for="(file, i) in reactiveData.filesIng" :key="i" class="card-item-box">
  19 + <div v-show="reactiveData.status === 'uploading'" class="uploading-box flex-col-center-center">
  20 + <el-progress v-if="reactiveData.lengthComputable" type="circle" :width="50"
  21 + :percentage="uploadPercentage()" />
  22 + <template v-else>
  23 + <i class="el-icon-loading"></i>
  24 + {{ reactiveData.message }}
  25 + </template>
  26 + </div>
  27 + </div>
  28 + <div style="position: relative;">
  29 + <input :accept="options.accept" style="opacity: 0;position: absolute;" :id="inputtype" ref="fileInput" type="file" :multiple="true"
  30 + @change="handleUploadFile" />
  31 + <div v-if="
  32 + localValue && localValue.length < options.limit && !options.disabled
  33 + " title="点击上传" class="card-action-box" @click="handleUpload">
  34 + <i class="el-icon-plus"></i>
  35 + <span class="card-action-text">点击上传图片</span>
  36 + </div>
  37 +
  38 + </div>
  39 + </div>
  40 + </div>
  41 +</template>
  42 +
  43 +<script>
  44 + import {
  45 + miniioupload
  46 + } from '@/api/commodityLease.js'
  47 + import BaseImage from '@/components/BaseImage/index.vue';
  48 +
  49 + export default {
  50 + components: {
  51 + BaseImage,
  52 + },
  53 + name: 'BaseUpload',
  54 + props: {
  55 + value: {
  56 + type: String,
  57 + default: '',
  58 + },
  59 + cmpOption: {
  60 + type: Object,
  61 + default: () => ({
  62 + disabled: false,
  63 + isSetCover: true,
  64 + }),
  65 + },
  66 + filePath: {
  67 + type: String,
  68 + default: 'other',
  69 + },
  70 + inputtype: {
  71 + type: String,
  72 + default: '',
  73 + },
  74 + limit: {
  75 + type: Number,
  76 + default: 10,
  77 + },
  78 + },
  79 + data() {
  80 + return {
  81 + fileList:[],
  82 + onforIndex:0,
  83 + localValue: [],
  84 + options: {
  85 + limitSize: 10,
  86 + accept: '.bmp,.jpg,.jpeg,.png',
  87 + multiple: false,
  88 + limit: 10,
  89 + disabled: false,
  90 + field: 'files',
  91 + reqParams: {
  92 + code: 2000
  93 + },
  94 + },
  95 + reactiveData: {
  96 + files: [],
  97 + filesIng: [],
  98 + status: 'uploading',
  99 + message: '上传中...',
  100 + total: 0,
  101 + loaded: 0,
  102 + lengthComputable: false,
  103 + },
  104 + };
  105 + },
  106 + watch: {
  107 + limit: {
  108 + handler() {
  109 + this.options.limit= this.limit
  110 + },
  111 + immediate: true,
  112 + },
  113 + cmpOption: {
  114 + handler() {
  115 + this.setOptions();
  116 + },
  117 + immediate: true,
  118 + },
  119 + value: {
  120 + handler(val) {
  121 + console.log('val',val)
  122 + if (val && val !='') {
  123 + // 首先将值转为数组
  124 + const list = Array.isArray(val) ? val : this.value.split(',')
  125 + // 然后将数组转为对象数组
  126 + this.fileList = list
  127 + this.localValue = list.map(item => {
  128 + if (typeof item === 'string') {
  129 + item = {
  130 + imgPath: item,
  131 + }
  132 + }
  133 + console.log('1111111111111111',item)
  134 + return item
  135 + })
  136 + } else {
  137 + console.log('22222222222222222222')
  138 + this.localValue = []
  139 + this.fileList = []
  140 + return []
  141 + }
  142 + },
  143 + immediate: true,
  144 + },
  145 + },
  146 + methods: {
  147 + async handleUploadFile(value) {
  148 + const files = value.target.files
  149 + if (!this.filesCheck(files)) {
  150 + return;
  151 + }
  152 + this.reactiveData.filesIng = new Array(files.length);
  153 + this.reactiveData.lengthComputable = false;
  154 + this.reactiveData.status = 'uploading';
  155 + this.reactiveData.total = 0;
  156 + this.reactiveData.loaded = 0;
  157 + let c1 = await this.asyncFileUpload(Array.from(files));
  158 + let list = []
  159 + for (let i = 0; i < c1.length; i++) {
  160 + let info = {
  161 + imgPath:c1[i]
  162 + }
  163 + list.push(info)
  164 + }
  165 + this.localValue = [...this.localValue,...list]
  166 + this.reactiveData.filesIng = []
  167 + this.fileList = []
  168 + for (let i = 0; i < this.localValue.length; i++) {
  169 + this.fileList.push(this.localValue[i].imgPath)
  170 + }
  171 + let urlstr = this.fileList.join(',')
  172 + this.$emit('changimg',urlstr)
  173 +
  174 + },
  175 + setOptions() {
  176 + this.options = {
  177 + ...this.options,
  178 + ...this.cmpOption
  179 + };
  180 + },
  181 + uploadPercentage() {
  182 + return parseInt(String(this.reactiveData.loaded / (this.reactiveData.total / 100)));
  183 + },
  184 + handleUpload() {
  185 + const input = document.querySelector('#'+this.inputtype)
  186 + input.click()
  187 + },
  188 + async asyncFileUpload(formDataArray) {
  189 +
  190 + try {
  191 + // 初始化上传状态
  192 + this.reactiveData.status = 'uploading';
  193 + this.reactiveData.filesIng = formDataArray.map(() => ({
  194 + status: 'pending',
  195 + loaded: 0,
  196 + total: 0
  197 + }));
  198 + this.reactiveData.lengthComputable = false;
  199 + this.reactiveData.total = 0;
  200 + this.reactiveData.loaded = 0;
  201 + let list = []
  202 + // 循环遍历每个文件并进行上传
  203 + for (let i = 0; i < formDataArray.length; i++) {
  204 + const fileData = formDataArray[i];
  205 +
  206 + // 创建一个新的 FormData 对象
  207 + let fd = new FormData();
  208 + fd.append('file', fileData); // 假设 formData 包含文件
  209 + fd.append('filePath', this.filePath);
  210 +
  211 + // 更新当前文件的上传状态
  212 + this.reactiveData.filesIng[i].status = 'uploading';
  213 +
  214 + // 调用 miniioupload 方法并等待响应
  215 + const res = await miniioupload(fd);
  216 + list.push(res.data)
  217 + // 处理成功响应
  218 + this.reactiveData.filesIng[i].status = 'success';
  219 +
  220 + }
  221 +
  222 + // 所有文件上传完成
  223 + this.reactiveData.status = 'success';
  224 + this.$message.success('文件上传成功');
  225 +
  226 + return list
  227 + } catch (error) {
  228 + // 处理错误
  229 + console.error('上传失败:', error);
  230 + this.reactiveData.status = 'error';
  231 + this.reactiveData.filesIng = formDataArray.map(() => ({
  232 + status: 'error',
  233 + loaded: 0,
  234 + total: 0
  235 + }));
  236 + this.$message.error('上传失败');
  237 + return []
  238 + }
  239 + },
  240 + async handleDeleteImg(file, i) {
  241 + console.error('1111111111111111111',file, i)
  242 + let modelValue_ = this.localValue.filter((value, index) => index != i);
  243 + this.localValue = modelValue_
  244 + this.fileList = []
  245 + for (let i = 0; i < this.localValue.length; i++) {
  246 + this.fileList.push(this.localValue[i].imgPath)
  247 + }
  248 + let urlstr = this.fileList.join(',')
  249 + console.log('urlstr',urlstr)
  250 + this.$emit('changimg',urlstr)
  251 + },
  252 + async handleSetCover(file, i) {
  253 +
  254 + this.onforIndex = i
  255 + this.$emit('changfmindex',this.onforIndex)
  256 + },
  257 + filesCheck(files) {
  258 + const {
  259 + limitSize,
  260 + accept,
  261 + limit
  262 + } = this.options;
  263 + if (this.reactiveData.files.length + files.length > limit) {
  264 + this.$message.error(`最多上传${limit}个文件`);
  265 + return false;
  266 + }
  267 + for (let index = 0; index < files.length; index++) {
  268 + const file = files[index];
  269 + if (!this.checkFileType(file)) {
  270 + this.$message.error(`请上传${accept}等格式`);
  271 + return false;
  272 + }
  273 + if (!this.checkSize(file)) {
  274 + this.$message.error(`文件大小不能超过 ${limitSize}MB!`);
  275 + return false;
  276 + }
  277 + }
  278 +
  279 + return true;
  280 + },
  281 + checkSize({
  282 + size
  283 + }) {
  284 + return size <= this.options.limitSize * 1024 * 1024;
  285 + },
  286 + checkFileType(file) {
  287 +
  288 + let {
  289 + accept
  290 + } = this.options;
  291 + if (!accept || accept === '*') {
  292 + return true;
  293 + }
  294 + accept = accept.toLowerCase().replace(/\s/g, '');
  295 + const acceptTypeList = accept.split(',');
  296 + const fileType = file.name.match(/\.\w*$/)?.shift() ?? '';
  297 + return acceptTypeList.includes(fileType.toLowerCase());
  298 + },
  299 + },
  300 + };
  301 +</script>
  302 +
  303 +<style lang="scss" scoped>
  304 + .upload-container {
  305 + width: 100%;
  306 +
  307 + .tips {
  308 + color: #0006;
  309 + font: 14px 'Alibaba PuHuiTi 2.0-55 Regular';
  310 + line-height: 38px;
  311 + }
  312 +
  313 + .action-box {
  314 + cursor: pointer;
  315 + padding-left: 10px;
  316 +
  317 + .default-action {
  318 + color: #3f9b6a;
  319 + }
  320 + }
  321 +
  322 + .card-list-box {
  323 + width: 100%;
  324 + display: flex;
  325 + flex-wrap: wrap;
  326 +
  327 + .card-item-box {
  328 + position: relative;
  329 + width: 112px;
  330 + height: 112px;
  331 + border: 1px dotted #dcdfe6;
  332 + border-radius: 2px;
  333 + overflow: hidden;
  334 + margin: 0 10px 10px 0;
  335 +
  336 + .delete-box {
  337 + padding: 2px 5px;
  338 + position: absolute;
  339 + right: 0;
  340 + top: 0;
  341 + line-height: normal;
  342 + background-color: #000;
  343 + color: #fff;
  344 + border-radius: 50%;
  345 + transform: translate(40%, -30%);
  346 +
  347 + .el-icon-close {
  348 + font-size: 12px;
  349 + transform: translate(-30%, 20%);
  350 + }
  351 + }
  352 + }
  353 +
  354 + .card-action-box {
  355 + display: flex;
  356 + flex-direction: column;
  357 + justify-content: center;
  358 + align-items: center;
  359 + width: 112px;
  360 + height: 112px;
  361 + border: 1px dashed #cdd0d6;
  362 + border-radius: 2px;
  363 + overflow: hidden;
  364 + // margin-bottom: 10px;
  365 + background-color: #fafafa;
  366 + cursor: pointer;
  367 + font-size: 12px;
  368 + color: #00000066;
  369 +
  370 + .el-icon-plus {
  371 + font-size: 20px;
  372 + }
  373 +
  374 + &:hover {
  375 + border-color: #3f9b6a;
  376 + color: #3f9b6a;
  377 + }
  378 + }
  379 + }
  380 +
  381 + .text-list-box {
  382 + .text-item-box {
  383 + padding: 0 5px;
  384 + border-radius: 2px;
  385 + overflow: hidden;
  386 +
  387 + .file-name {
  388 + flex: 1;
  389 + }
  390 +
  391 + .text-icon {
  392 + flex-shrink: 0;
  393 + padding-right: 10px;
  394 + }
  395 +
  396 + .el-icon-close {
  397 + cursor: pointer;
  398 + padding-left: 10px;
  399 + flex-shrink: 0;
  400 + }
  401 +
  402 + &:hover {
  403 + background-color: rgba(63, 155, 106, 0.2);
  404 +
  405 + .file-name {
  406 + color: #3f9b6a;
  407 + }
  408 + }
  409 +
  410 + &:nth-child(n + 2) {
  411 + margin-top: 10px;
  412 + }
  413 + }
  414 + }
  415 +
  416 + .uploading-box {
  417 + position: absolute;
  418 + top: 0;
  419 + left: 0;
  420 + width: 100%;
  421 + height: 100%;
  422 + color: #fff;
  423 + background-color: #c0c4cc;
  424 + }
  425 +
  426 + .progress-box {
  427 + width: 100%;
  428 + height: 100%;
  429 + position: relative;
  430 +
  431 + .el-progress {
  432 + position: absolute;
  433 + right: 10px;
  434 + top: 50%;
  435 + transform: translateY(-50%);
  436 + }
  437 + }
  438 + }
  439 +</style>
... ...
merchant-web-master/src/layout/index.vue
... ... @@ -2,14 +2,15 @@
2 2 <div :class="classObj" class="app-wrapper">
3 3 <div style=" width: 100%; height: 50px; background: #3F9B6A; position: fixed;top:0;left:0;z-index:1001;display: flex;flex-wrap: wrap; margin-bottom: 1px;">
4 4 <div style="width: 15%;margin-top: 8px;padding-left: 20px;">
5   - <img src="../assets/images/log2.png" alt="" style="height: 36px; object-fit: contain;" />
  5 + <img src="../assets/images/logo2.png" alt="" style="height: 36px; object-fit: contain;" />
6 6 </div>
7 7  
8   - <div style="position: absolute;top:0px;right:50px;display: flex">
9   - <div style="border-radius:20px; width: 100px; height: 24px;margin-top: 15px;margin-right: 10px;background:rgba(255, 255, 255, 0.1);display: flex;flex-flow: row nowrap;justify-content: center;
10   - align-items: center;" @click="gzt">
11   - <img src="../../src/assets/images/home.png" alt="" style="height: 20px;object-fit: contain;width:17px;margin-right:6px;"/>
12   - <div style="color: #fff;line-height: 20px;font-size:14px">工作台</div>
  8 + <div style="position: absolute;top:0px;right:50px;display: flex">
  9 + <div style="border-radius:20px; width: 110px; height: 30px;margin-top: 11px;margin-right: 10px;background:rgba(255, 255, 255, 0.1);display: flex;flex-flow: row nowrap;justify-content: center;
  10 + align-items: center;cursor: pointer;" @click="gzt">
  11 + <el-image src="https://028wlkj.cn:30021/public/static/logos/home-stable.png" style="padding:10px 0;"></el-image>
  12 + <!-- <img src="../../src/assets/images/home.png" alt="" style="height: 20px;object-fit: contain;width:17px;margin-right:6px;"/>
  13 + <div style="color: #fff;line-height: 20px;font-size:14px">工作台</div> -->
13 14 </div>
14 15 <!-- <div style="margin: 12px; 15px 0 10px">
15 16 <el-badge :value="2" class="item">
... ... @@ -214,7 +215,7 @@ export default {
214 215 },
215 216 methods: {
216 217 gzt(){
217   - window.location.href = 'https://jy.scjysm.asia:18086/home'
  218 + window.location.href = 'https://admin-uat.028wlkj.com:1020/application-manage'
218 219 },
219 220 handleClickOutside() {
220 221 this.$store.dispatch('app/closeSideBar', { withoutAnimation: false })
... ...
merchant-web-master/src/main.js
... ... @@ -18,6 +18,12 @@ Vue.prototype.$encrypt = encrypt;
18 18 Vue.prototype.$decrypt = decrypt;
19 19 Vue.prototype.$decryptall = decryptall;
20 20 Vue.prototype.$encryptall = encryptall;
  21 +let host = window.location.host;
  22 +if(host === 'localhost:8080' || host === 'localhost:8081' || host === 'localhost:9528'|| host === '192.168.31.45:9528' || host === 'localhost:9529') {
  23 + Vue.prototype.$baseURL ='https://jy.scjysm.asia:18086/cdwlMall'
  24 +} else {
  25 + Vue.prototype.$baseURL =`${window.location.protocol}//${window.location.host}/cdwlMall`
  26 +}
21 27 // if (process.env.NODE_ENV === 'production') {
22 28 // const { mockXHR } = require('../mock')
23 29 // mockXHR()
... ...
merchant-web-master/src/utils/request.js
... ... @@ -16,16 +16,17 @@ import {
16 16 const host = window.location.host;
17 17 let PREFIX;
18 18 if (host == '172.16.61.48' || host == '172.16.61.49:5173') {
19   - PREFIX = 'https://jy.scjysm.asia:18086/merchant-business';
  19 + PREFIX = 'https://jy.scjysm.asia:18086/business-server';
20 20 }else if( host == 'localhost:9528' || host == '8.130.38.56:8027' || host == 'localhost:9529'|| host == 'localhost:9530'){
21 21 // 其他情况的默认值
22 22 // PREFIX = 'http://8.130.38.56:8027/business-server';
23   - // PREFIX = 'https://jy.scjysm.asia:18086/merchant-business';
24   - PREFIX = 'http://192.168.2.225:9004';
  23 + // PREFIX = 'https://jy.scjysm.asia:18086/merchant-business';
  24 + // PREFIX = 'https://jy.scjysm.asia:18086/cdwlMall/business-server';
  25 + PREFIX = 'http://10.0.0.51:9004';
25 26 }else{
26 27 // PREFIX = '/merchant-business';
27 28 // PREFIX = 'http://8.130.38.56:9004';
28   - PREFIX = 'https://jy.scjysm.asia:18086/merchant-business';
  29 + PREFIX = 'https://jy.scjysm.asia:18086/business-server';
29 30 }
30 31 const baseURL = PREFIX
31 32 // const baseURL = 'http://10.0.0.14:9004'
... ... @@ -35,12 +36,11 @@ const service = axios.create({
35 36 // withCredentials: true, // send cookies when cross-domain requests
36 37 timeout: 300000 // request timeout
37 38 })
38   -
39   -// export const uploadUrl = 'http://192.168.1.102:8005/file/upload'
40   -export const uploadUrl = `${baseURL}/file/upload`
  39 +export const uploadUrl = `${baseURL}/miniio/upload`
  40 +// export const uploadUrl = `${baseURL}/file/upload`
41 41 export const WXuploadUrl = `${baseURL}/file/uploadWxMedia` // 直播上传专用
42 42 //export const QYuploadUrl = `${baseURL}/file/uploadQyMedia` // 微信客服上传专用
43   -export const QYuploadUrl = `${baseURL}/file/upload` // 微信客服上传专用
  43 +export const QYuploadUrl = `${baseURL}/file/upload`
44 44  
45 45 // request interceptor
46 46 service.interceptors.request.use(
... ... @@ -66,7 +66,7 @@ service.interceptors.response.use(
66 66 if (response.config.responseType === 'blob') {
67 67 return response.data
68 68 }
69   - if (res.code !== '') {
  69 + if (res.code !== '' && res.code !== '200') {
70 70 Message({
71 71 message: res.message || 'Error',
72 72 type: 'error',
... ...
merchant-web-master/src/views/commodity/commoditySystem/addCommodity.vue
... ... @@ -541,7 +541,6 @@ export default {
541 541 if (this.productId) {
542 542 this.form.productId = this.productId
543 543 const sku = JSON.parse(sessionStorage.getItem('form'))
544   - console.log(sku)
545 544 sku.forEach((element, i) => {
546 545 for (let index = 0; index < this.form.skus.length; index++) {
547 546 if (i === index) {
... ... @@ -550,6 +549,7 @@ export default {
550 549 }
551 550 })
552 551 console.log(this.form, 'this.form')
  552 +
553 553 const res = await getClassifyUpdate(this.form)
554 554 if (res.code === '') {
555 555 this.$message({
... ...
merchant-web-master/src/views/commodity/commoditySystem/addComponent.vue
... ... @@ -2,7 +2,9 @@
2 2 <div class="style-information-component">
3 3 <el-form-item label="商品图片" />
4 4 <div class="upload-wrap">
5   - <el-upload
  5 + <upimg filePath="bueniss" :value="imgsGeshi(form.imgs)" inputtype="coverImage" :limit="5"
  6 + @changimg="e=>changimg(e,'imgs')"></upimg>
  7 + <!-- <el-upload
6 8 list-type="picture-card"
7 9 :on-preview="handlePictureCardPreview"
8 10 :on-remove="handleRemove"
... ... @@ -25,7 +27,7 @@
25 27 </span>
26 28 </span>
27 29 </div>
28   - </el-upload>
  30 + </el-upload> -->
29 31 </div>
30 32 <el-form-item label="款式设置">
31 33 <el-radio-group v-model="form.attrStyle" @change="changeAttrStyle">
... ... @@ -204,7 +206,11 @@
204 206 <script>
205 207 import { uploadUrl } from '@/utils/request'
206 208 import { getToken } from '@/utils/auth'
  209 +import upimg from "@/components/ImageUpload/index"
207 210 export default {
  211 + components: {
  212 + upimg
  213 + },
208 214 filters: {
209 215 attrValueFilter(map, list) {
210 216 const hasChilds =
... ... @@ -316,6 +322,23 @@ export default {
316 322 this.headers.tenant = 'MDAwMA=='
317 323 },
318 324 methods: {
  325 + imgsGeshi(val){
  326 + let arr = []
  327 + val.forEach(item => {
  328 + arr.push(item.imgPath)
  329 + });
  330 + arr = arr.join(',')
  331 + return arr
  332 + },
  333 + changimg(e, type) {
  334 + e = e.split(',')
  335 + this.form.imgs = []
  336 + e.map(item => {
  337 + this.form.imgs.push({
  338 + imgPath: item
  339 + })
  340 + })
  341 + },
319 342 // proving1(e) {
320 343 // var keynum = window.event ? e.keyCode : e.which // 获取键盘码
321 344 // // var keychar = String.fromCharCode(keynum) // 获取键盘码对应的字符
... ...
merchant-web-master/src/views/commodity/commoditySystem/index.vue
... ... @@ -61,7 +61,7 @@
61 61 <el-table-column prop="productId" label="商品id" show-overflow-tooltip />
62 62 <el-table-column label="商品主图" width="150" align="center">
63 63 <template slot-scope="scope">
64   - <img height="80" width="80" :src="scope.row.productImage " alt srcset>
  64 + <img height="80" width="80" :src="$baseURL+msgList(scope.row.productImage)" alt srcset>
65 65 </template>
66 66 </el-table-column>
67 67 <el-table-column prop="productName" label="商品名称" width="220" />
... ... @@ -294,6 +294,12 @@ export default {
294 294 },
295 295 // 方法集合
296 296 methods: {
  297 + msgList(list){
  298 + if(list && list!=''){
  299 + let strin = list.split(',')
  300 + return strin[0]
  301 + }
  302 + },
297 303 async getBrandList() {
298 304 const { data } = await getBrandList()
299 305 this.brandList = data
... ...
merchant-web-master/src/views/order/aftersale/afterDetails.vue
... ... @@ -81,7 +81,7 @@
81 81 <div class="good_details">
82 82 <ul>
83 83 <li>
84   - <img :src="item.image">
  84 + <img :src="$baseURL+item.image">
85 85 <div class="details">
86 86 <p>{{ item.productName }}</p>
87 87 <div class="skuDetails">
... ...
merchant-web-master/src/views/order/pending/pendDetails.vue
... ... @@ -78,7 +78,7 @@
78 78 <div class="good_details">
79 79 <ul>
80 80 <li>
81   - <img :src="item.image">
  81 + <img :src="$baseURL+item.image">
82 82 <div class="details">
83 83 <p>{{ item.productName }}</p>
84 84 <p class="skuDetails">
... ...
merchant-web-master/src/views/stockControl/inventory/addComponent.vue
... ... @@ -2,7 +2,9 @@
2 2 <div class="style-information-component">
3 3 <el-form-item label="商品图片" />
4 4 <div class="upload-wrap">
5   - <el-upload
  5 + <upimg filePath="bueniss" :value="imgsGeshi(form.imgs)" inputtype="coverImage" :limit="5"
  6 + @changimg="e=>changimg(e,'imgs')"></upimg>
  7 + <!-- <el-upload
6 8 list-type="picture-card"
7 9 :on-preview="handlePictureCardPreview"
8 10 :on-remove="handleRemove"
... ... @@ -25,7 +27,7 @@
25 27 </span>
26 28 </span>
27 29 </div>
28   - </el-upload>
  30 + </el-upload> -->
29 31 </div>
30 32 <el-form-item label="款式设置">
31 33 <el-radio-group v-model="form.attrStyle" @change="changeAttrStyle">
... ... @@ -37,8 +39,7 @@
37 39 <div v-if="form.attrStyle === 0" class="single-style">
38 40 <el-table
39 41 :data="skuList"
40   - style="width: 100%"
41   - :header-cell-style="{ background: '#EEF3FF', color: '#333333' }"
  42 + :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
42 43 >
43 44 <el-table-column label="规格">
44 45 <template slot-scope="scope">
... ... @@ -208,7 +209,11 @@
208 209 <script>
209 210 import { uploadUrl } from '@/utils/request'
210 211 import { getToken } from '@/utils/auth'
  212 +import upimg from "@/components/ImageUpload/index"
211 213 export default {
  214 + components: {
  215 + upimg
  216 + },
212 217 filters: {
213 218 attrValueFilter(map, list) {
214 219 const hasChilds =
... ... @@ -320,6 +325,23 @@ export default {
320 325 this.headers.tenant = 'MDAwMA=='
321 326 },
322 327 methods: {
  328 + imgsGeshi(val){
  329 + let arr = []
  330 + val.forEach(item => {
  331 + arr.push(item.imgPath)
  332 + });
  333 + arr = arr.join(',')
  334 + return arr
  335 + },
  336 + changimg(e, type) {
  337 + e = e.split(',')
  338 + this.form.imgs = []
  339 + e.map(item => {
  340 + this.form.imgs.push({
  341 + imgPath: item
  342 + })
  343 + })
  344 + },
323 345 // proving1(e) {
324 346 // var keynum = window.event ? e.keyCode : e.which // 获取键盘码
325 347 // // var keychar = String.fromCharCode(keynum) // 获取键盘码对应的字符
... ...
merchant-web-master/src/views/stockControl/inventory/index.vue
... ... @@ -60,7 +60,7 @@
60 60 <el-table-column prop="productId" label="商品id" show-overflow-tooltip />
61 61 <el-table-column label="商品主图" width="150" align="center">
62 62 <template slot-scope="scope">
63   - <img height="80" width="80" :src="scope.row.productImage " alt srcset>
  63 + <img height="80" width="80" :src="$baseURL+msgList(scope.row.productImage)" alt srcset>
64 64 </template>
65 65 </el-table-column>
66 66 <el-table-column prop="productName" label="商品名称" width="220" />
... ... @@ -162,7 +162,7 @@
162 162 >
163 163 <el-form ref="form" label-width="80px">
164 164 <el-form-item label="优惠方式">
165   - <el-radio-group v-model="mode" @change="modeChange">
  165 + <el-radio-group v-model="mode">
166 166 <el-radio :label="1">折扣</el-radio>
167 167 <el-radio :label="2">指定价格</el-radio>
168 168 </el-radio-group>
... ... @@ -302,6 +302,12 @@ export default {
302 302 },
303 303 // 方法集合
304 304 methods: {
  305 + msgList(list){
  306 + if(list && list!=''){
  307 + let strin = list.split(',')
  308 + return strin[0]
  309 + }
  310 + },
305 311 async getBrandList() {
306 312 const { data } = await getBrandList()
307 313 this.brandList = data
... ...
merchant-web-master/src/views/stockControl/stocksForewarn/index.vue
... ... @@ -43,10 +43,9 @@
43 43 <div class="tableBox">
44 44 <el-table
45 45 ref="multipleTable"
46   - v-loading="loading"
47 46 :data="tableData"
48 47 tooltip-effect="dark"
49   - @selection-change="handleSelectionChange"
  48 +
50 49 :header-cell-style="{fontSize: '14px',color:'#0009',fontWeight: 'normal',backgroundColor:'#F2F3F5'}"
51 50 >
52 51  
... ... @@ -58,7 +57,7 @@
58 57 />
59 58 <el-table-column label="商品主图" width="150" align="center">
60 59 <template slot-scope="scope">
61   - <img height="80" width="80" :src="scope.row.productImage" alt srcset>
  60 + <img height="80" width="80" :src="$baseURL+msgList(scope.row.productImage)" alt srcset>
62 61 </template>
63 62 </el-table-column>
64 63 <el-table-column prop="productName" label="商品名称" min-width="10%" />
... ... @@ -176,7 +175,8 @@ export default {
176 175 total: 1,
177 176 tableData: [],
178 177 tableLoading: false,
179   - dialogVisible:false
  178 + dialogVisible:false,
  179 + currentPage:0
180 180 }
181 181 },
182 182 // 生命周期 - 挂载完成(可以访问DOM元素)
... ... @@ -185,6 +185,12 @@ export default {
185 185 },
186 186 // 方法集合
187 187 methods: {
  188 + msgList(list){
  189 + if(list && list!=''){
  190 + let strin = list.split(',')
  191 + return strin[0]
  192 + }
  193 + },
188 194 toggleFilter(){
189 195 this.fut = !this.fut
190 196 },
... ... @@ -235,7 +241,6 @@ export default {
235 241 this.tableLoading = true
236 242 const res = await getClassifyGetAll(formInline);
237 243 const yujing = await inventoryAlert(res.data.list);
238   - this.loading = false;
239 244 this.total = res.data.total;
240 245 this.tableData = yujing.data;
241 246 },
... ...