yshop1.8发布,新增素材管理等,详细查看readme或登录网站后台查看
This commit is contained in:
@ -30,10 +30,10 @@
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="砍价产品主图片">
|
||||
<pic-upload v-model="form.image" style="width: 500px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 500px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="砍价产品轮播图">
|
||||
<mulpic-upload v-model="form.images" style="width: 500px;" />
|
||||
<MaterialList v-model="form.sliderImageArr" style="width: 500px" type="image" :num=4 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="库存">
|
||||
<el-input-number v-model="form.stock" />
|
||||
@ -41,10 +41,6 @@
|
||||
<el-form-item label="销量">
|
||||
<el-input-number v-model="form.sales" />
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="砍价产品名称" >-->
|
||||
<!-- <el-input v-model="form.storeName" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="砍价金额">
|
||||
<el-input-number v-model="form.price" />
|
||||
</el-form-item>
|
||||
@ -106,8 +102,9 @@ import picUpload from '@/components/pic-upload'
|
||||
import mulpicUpload from '@/components/mul-pic-upload'
|
||||
import { add, edit } from '@/api/yxStoreBargain'
|
||||
import editor from '../../components/Editor'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { editor, picUpload, mulpicUpload },
|
||||
components: { editor, picUpload, mulpicUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -126,6 +123,8 @@ export default {
|
||||
stock: '',
|
||||
sales: '',
|
||||
images: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
startTime: '',
|
||||
stopTime: '',
|
||||
storeName: '',
|
||||
@ -156,6 +155,20 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.image = val.join(",");
|
||||
}
|
||||
|
||||
},
|
||||
'form.sliderImageArr': function(val) {
|
||||
if(val){
|
||||
this.form.sliderImage = val.join(",");
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -208,6 +221,8 @@ export default {
|
||||
stock: '',
|
||||
sales: '',
|
||||
images: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
startTime: '',
|
||||
stopTime: '',
|
||||
storeName: '',
|
||||
|
@ -136,6 +136,8 @@ export default {
|
||||
stock: data.stock,
|
||||
sales: data.sales,
|
||||
images: data.images,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.images.split(','),
|
||||
startTime: data.startTime,
|
||||
stopTime: data.stopTime,
|
||||
storeName: data.storeName,
|
||||
|
@ -29,10 +29,10 @@
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="产品主图片">
|
||||
<pic-upload v-model="form.image" style="width: 500px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 500px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="产品轮播图">
|
||||
<mulpic-upload v-model="form.images" style="width: 500px;" />
|
||||
<MaterialList v-model="form.sliderImageArr" style="width: 500px" type="image" :num=4 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="拼团时效(单位小时)">
|
||||
<el-input v-model="form.effectiveTime" style="width: 500px;" />
|
||||
@ -83,8 +83,9 @@ import { add, edit } from '@/api/yxStoreCombination'
|
||||
import editor from '../../components/Editor'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import mulpicUpload from '@/components/mul-pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { editor, picUpload, mulpicUpload },
|
||||
components: { editor, picUpload, mulpicUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -100,6 +101,8 @@ export default {
|
||||
merId: '',
|
||||
image: '',
|
||||
images: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
title: '',
|
||||
attr: '',
|
||||
people: '',
|
||||
@ -131,6 +134,18 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.image = val.join(",");
|
||||
}
|
||||
},
|
||||
'form.sliderImageArr': function(val) {
|
||||
if(val){
|
||||
this.form.sliderImage = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -180,6 +195,8 @@ export default {
|
||||
merId: '',
|
||||
image: '',
|
||||
images: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
title: '',
|
||||
attr: '',
|
||||
people: 0,
|
||||
|
@ -43,7 +43,7 @@
|
||||
<span>{{ formatTimeTwo(scope.row.stopTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="checkPermission(['admin','YXSTORECOMBINATION_ALL','YXSTORECOMBINATION_EDIT','YXSTORECOMBINATION_DELETE'])" label="操作" width="150px" align="center">
|
||||
<el-table-column v-if="checkPermission(['admin','YXSTORECOMBINATION_ALL','YXSTORECOMBINATION_EDIT','YXSTORECOMBINATION_DELETE'])" label="操作" width="150px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-permission="['admin','YXSTORECOMBINATION_ALL','YXSTORECOMBINATION_EDIT']" size="mini" type="primary" icon="el-icon-edit" @click="edit(scope.row)" />
|
||||
<el-popover
|
||||
@ -161,6 +161,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
images: data.images,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.images.split(','),
|
||||
title: data.title,
|
||||
attr: data.attr,
|
||||
people: data.people,
|
||||
|
@ -29,10 +29,10 @@
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="产品主图片">
|
||||
<pic-upload v-model="form.image" style="width: 500px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 500px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="产品轮播图">
|
||||
<mulpic-upload v-model="form.images" style="width: 500px;" />
|
||||
<MaterialList v-model="form.sliderImageArr" style="width: 500px" type="image" :num=4 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="秒杀价">
|
||||
<el-input-number v-model="form.price" />
|
||||
@ -82,8 +82,9 @@ import { add, edit } from '@/api/yxStoreSeckill'
|
||||
import editor from '../../components/Editor'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import mulpicUpload from '@/components/mul-pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { editor, picUpload, mulpicUpload },
|
||||
components: { editor, picUpload, mulpicUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -98,6 +99,8 @@ export default {
|
||||
productId: '',
|
||||
image: '',
|
||||
images: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
title: '',
|
||||
info: '',
|
||||
price: '',
|
||||
@ -126,6 +129,18 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.image = val.join(",");
|
||||
}
|
||||
},
|
||||
'form.sliderImageArr': function(val) {
|
||||
if(val){
|
||||
this.form.sliderImage = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -174,6 +189,8 @@ export default {
|
||||
productId: '',
|
||||
image: '',
|
||||
images: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
title: '',
|
||||
info: '',
|
||||
price: '',
|
||||
|
@ -134,6 +134,8 @@ export default {
|
||||
productId: data.productId,
|
||||
image: data.image,
|
||||
images: data.images,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.images.split(','),
|
||||
title: data.title,
|
||||
info: data.info,
|
||||
price: data.price,
|
||||
|
@ -31,7 +31,7 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'qiNiuUploadApi'
|
||||
'uploadApi'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
@ -49,7 +49,13 @@ export default {
|
||||
this.editor.customConfig.uploadImgHeaders = this.headers
|
||||
// 自定义文件名,不可修改,修改后会上传失败
|
||||
this.editor.customConfig.uploadFileName = 'file'
|
||||
this.editor.customConfig.uploadImgServer = this.qiNiuUploadApi // 上传图片到服务器
|
||||
this.editor.customConfig.uploadImgServer = this.uploadApi // 上传图片到服务器
|
||||
this.editor.customConfig.uploadImgHooks = {
|
||||
customInsert: function (insertImg, result, editor) {
|
||||
var url = result.link
|
||||
insertImg(url)
|
||||
}
|
||||
}
|
||||
this.editor.customConfig.onchange = (html) => {
|
||||
this.info = html
|
||||
this.$emit('change', this.info)
|
||||
|
171
src/views/dashboard/YshopInfo.vue
Normal file
171
src/views/dashboard/YshopInfo.vue
Normal file
@ -0,0 +1,171 @@
|
||||
<template>
|
||||
<el-row :gutter="10" class="panel-group">
|
||||
<el-col :xs="16" :sm="16" :lg="8" class="card-panel-col">
|
||||
<div class="card-panel">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span style="font-weight: bolder">项目信息</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">yshop基于当前流行技术组合的前后端分离商城系统:</span>
|
||||
SpringBoot2+Jpa+MybatisPlus+SpringSecurity
|
||||
的前后端分离的商城系统,
|
||||
包含商城、拼团、砍价、商户管理、 秒杀、优惠券、积分、分销、会员等功能。
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">技术选型:</span>
|
||||
SpringBoot2、mybatis、MyBatis-Plus
|
||||
、SpringSecurity、JPA 、Druid 、Slf4j 、Fastjson
|
||||
、JWT 、Redis 、Quartz 、Mysql 、swagger 、WxJava
|
||||
、Lombok 、Hutool
|
||||
、Mapstruct 、Redisson 、Rocketmq
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">QQ群:</span>964166879
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">gitee:</span><a target="_blank" href="https://gitee.com/guchengwuyue/yshopmall">访问码云</a>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">github:</span><a target="_blank" href="https://github.com/guchengwuyue/yshopmall">访问github</a>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">公众号演示:</span><img width="100" height="100" src="https://image.dayouqiantu.cn/qrcode_for_gh_95df5a2881cc_258.jpg">
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">H5演示:</span><a target="_blank" href="https://h5.dayouqiantu.cn">https://h5.dayouqiantu.cn</a> <br />
|
||||
<span style="font-weight: bolder">H5测试号</span>:hupeng/123456,也可以自行注册
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="16" :sm="16" :lg="8" class="card-panel-col">
|
||||
<div class="card-panel">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span style="font-weight: bolder">开源+VIP说明</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">开源版:</span>是整个商城的管理后台(后台已经封装好了图片素材库、编辑器、配置等等组件),
|
||||
它可以用于所有的Web应用程序,如网站商城管理后台,网站会员中心,CMS,CRM,OA等等,
|
||||
当然,您也可以对它进行深度定制,以做出更强系统。
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">VIP版:</span>包括了开源版,还包括了移动端(H5+公众号)、小程序(mpvue)即将发布、移动端API
|
||||
</div>
|
||||
<div class="text item">
|
||||
1、VIP为终身制、拥有全部源代码及其后续的代码(免费)升级及其技术支持。目前商城优惠券、会员、秒杀、分销、砍价等都已经完成!<br />
|
||||
2、价格:vip会员价218元,当然当前价格是整个价格,后续的系统升级vip价格会有相应的调整的,所以早上车更优惠哦!<br />
|
||||
3、VIP购买淘宝地址:https://item.taobao.com/item.htm?id=607532386325<br />
|
||||
4、加入vip群:931426444,请输入你的淘宝订单编号,即可入群<br />
|
||||
5、群里面获取私服git<br />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="16" :sm="16" :lg="8" class="card-panel-col">
|
||||
<div class="card-panel">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span style="font-weight: bolder">更新日志</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
<span style="font-weight: bolder">(2020-01-10)yshop1.8版本 发布更新如下:</span>
|
||||
</div>
|
||||
<div class="text item">
|
||||
1.新增小程序支付与登录,后台新增小程序跳转页面,
|
||||
</div>
|
||||
<div class="text item">
|
||||
2.后台新增图片素材管理
|
||||
</div>
|
||||
<div class="text item">
|
||||
3.本地上传与七牛云上传合并,修改一个yml即可两者随意切换
|
||||
</div>
|
||||
<div class="text item">
|
||||
4.升级swagger-bootstrap,swaager统一配置迁移到common(防止注解冲突)
|
||||
</div>
|
||||
<div class="text item">
|
||||
5.后台优化操作显示
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.text {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
.clearfix:after {
|
||||
clear: both
|
||||
}
|
||||
|
||||
.panel-group {
|
||||
margin-top: 18px;
|
||||
.card-panel-col{
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.card-panel {
|
||||
height: auto;
|
||||
font-size: 12px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
color: #666;
|
||||
background: #fff;
|
||||
box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
|
||||
border-color: rgba(0, 0, 0, .05);
|
||||
.icon-people {
|
||||
color: #40c9c6;
|
||||
}
|
||||
.icon-message {
|
||||
color: #36a3f7;
|
||||
}
|
||||
.icon-money {
|
||||
color: #f4516c;
|
||||
}
|
||||
.icon-shopping {
|
||||
color: #34bfa3
|
||||
}
|
||||
.card-panel-icon-wrapper {
|
||||
float: left;
|
||||
margin: 14px 0 0 14px;
|
||||
padding: 16px;
|
||||
transition: all 0.38s ease-out;
|
||||
border-radius: 6px;
|
||||
}
|
||||
.card-panel-icon {
|
||||
float: left;
|
||||
font-size: 48px;
|
||||
}
|
||||
.card-panel-description {
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
margin: 26px;
|
||||
margin-left: 0px;
|
||||
.card-panel-text {
|
||||
line-height: 18px;
|
||||
color: rgba(0, 0, 0, 0.45);
|
||||
font-size: 16px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.card-panel-num {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="dashboard-container">
|
||||
<div class="dashboard-editor-container">
|
||||
<yshop-info />
|
||||
<panel-group />
|
||||
<panel-group-t />
|
||||
|
||||
@ -32,6 +33,7 @@ import LineChart from './dashboard/LineChart'
|
||||
import PieChart from './dashboard/BarChartT'
|
||||
import BarChart from './dashboard/BarChart'
|
||||
import { count } from '@/api/visits'
|
||||
import YshopInfo from './dashboard/YshopInfo'
|
||||
|
||||
/**
|
||||
* 记录访问,只有页面刷新或者第一次加载才会记录
|
||||
@ -46,27 +48,13 @@ export default {
|
||||
PanelGroupT,
|
||||
LineChart,
|
||||
PieChart,
|
||||
BarChart
|
||||
BarChart,
|
||||
YshopInfo
|
||||
},
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'roles'
|
||||
])
|
||||
},
|
||||
|
||||
created() {
|
||||
this.open()
|
||||
},
|
||||
|
||||
methods: {
|
||||
open() {
|
||||
this.$notify({
|
||||
title: '公众号演示',
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: '<img src="https://image.dayouqiantu.cn/qrcode_for_gh_95df5a2881cc_258.jpg">',
|
||||
duration: 0
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<Search :query="query"/>
|
||||
<!--表格渲染-->
|
||||
<el-table v-loading="loading" :data="data" size="small" style="width: 100%;">
|
||||
<el-table-column prop="nickname" label="用户名"/>
|
||||
@ -27,10 +26,8 @@
|
||||
<script>
|
||||
import initData from '@/mixins/crud'
|
||||
import { parseTime } from '@/utils/index'
|
||||
import Search from './search'
|
||||
export default {
|
||||
name: 'Log',
|
||||
components: { Search },
|
||||
mixins: [initData],
|
||||
created() {
|
||||
this.$nextTick(() => {
|
||||
@ -41,7 +38,6 @@ export default {
|
||||
parseTime,
|
||||
beforeInit() {
|
||||
this.url = 'api/logs/mlogs'
|
||||
const sort = 'id,desc'
|
||||
const query = this.query
|
||||
const value = query.value
|
||||
this.params = { page: this.page, size: this.size }
|
||||
|
@ -16,7 +16,7 @@
|
||||
<el-input v-model="form.cateName" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分类图片">
|
||||
<pic-upload v-model="form.pic" style="width: 500px;" />
|
||||
<MaterialList v-model="picArr" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态">
|
||||
<el-radio-group v-model="form.isShow" style="width: 178px">
|
||||
@ -69,16 +69,18 @@ import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
|
||||
// crud交由presenter持有
|
||||
const defaultCrud = CRUD({ title: '分类', url: 'api/yxStoreCategory', crudMethod: { ...crudDept }})
|
||||
const defaultForm = { id: null, cateName: null, pid: 0, isShow: 1 }
|
||||
export default {
|
||||
name: 'Dept',
|
||||
components: { Treeselect, crudOperation, rrOperation, udOperation, picUpload },
|
||||
components: { Treeselect, crudOperation, rrOperation, udOperation, picUpload, MaterialList },
|
||||
mixins: [presenter(defaultCrud), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
return {
|
||||
picArr: [],
|
||||
depts: [],
|
||||
rules: {
|
||||
cateName: [
|
||||
@ -96,9 +98,19 @@ export default {
|
||||
]
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
picArr: function(val) {
|
||||
this.form.pic = val.join(",");
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 新增与编辑前做的操作
|
||||
[CRUD.HOOK.afterToCU](crud, form) {
|
||||
console.log(form)
|
||||
if(form.pic){
|
||||
this.picArr = form.pic.split(',')
|
||||
}
|
||||
|
||||
// 获取所有部门
|
||||
crudDept.getCates({ isShow: true }).then(res => {
|
||||
this.depts = []
|
||||
|
@ -17,10 +17,10 @@
|
||||
<el-input v-model="form.barCode" style="width: 320px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商品图片">
|
||||
<pic-upload v-model="form.image" style="width: 500px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 500px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="轮播图">
|
||||
<mulpic-upload v-model="form.sliderImage" style="width: 500px;" />
|
||||
<MaterialList v-model="form.sliderImageArr" style="width: 500px" type="image" :num=4 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品简介">
|
||||
<el-input v-model="form.storeInfo" style="width: 500px;" rows="5" type="textarea" />
|
||||
@ -31,9 +31,6 @@
|
||||
<el-form-item label="商品价格">
|
||||
<el-input v-model="form.price" />
|
||||
</el-form-item>
|
||||
<!--<el-form-item label="会员价格" >-->
|
||||
<!--<el-input v-model="form.vipPrice"/>-->
|
||||
<!--</el-form-item>-->
|
||||
<el-form-item label="市场价">
|
||||
<el-input v-model="form.otPrice" />
|
||||
</el-form-item>
|
||||
@ -98,8 +95,9 @@ import picUpload from '@/components/pic-upload'
|
||||
import mulpicUpload from '@/components/mul-pic-upload'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { editor, picUpload, mulpicUpload, Treeselect },
|
||||
components: { editor, picUpload, mulpicUpload, Treeselect, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -114,6 +112,8 @@ export default {
|
||||
merId: 0,
|
||||
image: '',
|
||||
sliderImage: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
storeName: '',
|
||||
storeInfo: '',
|
||||
keyword: '',
|
||||
@ -151,6 +151,18 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.image = val.join(",");
|
||||
}
|
||||
},
|
||||
'form.sliderImageArr': function(val) {
|
||||
if(val){
|
||||
this.form.sliderImage = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -199,6 +211,8 @@ export default {
|
||||
merId: '',
|
||||
image: '',
|
||||
sliderImage: '',
|
||||
imageArr: [],
|
||||
sliderImageArr: [],
|
||||
storeName: '',
|
||||
storeInfo: '',
|
||||
keyword: '',
|
||||
@ -210,16 +224,16 @@ export default {
|
||||
postage: '',
|
||||
unitName: '',
|
||||
sort: '',
|
||||
sales: '',
|
||||
stock: '',
|
||||
isShow: '',
|
||||
isHot: '',
|
||||
isBenefit: '',
|
||||
isBest: '',
|
||||
isNew: '',
|
||||
sales: 0,
|
||||
stock: 0,
|
||||
isShow: 1,
|
||||
isHot: 1,
|
||||
isBenefit: 1,
|
||||
isBest: 1,
|
||||
isNew: 1,
|
||||
description: '',
|
||||
addTime: '',
|
||||
isPostage: '',
|
||||
isPostage: 1,
|
||||
isDel: '',
|
||||
merUse: '',
|
||||
giveIntegral: '',
|
||||
|
@ -203,6 +203,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
sliderImage: data.sliderImage,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.sliderImage.split(','),
|
||||
storeName: data.storeName,
|
||||
storeInfo: data.storeInfo,
|
||||
keyword: data.keyword,
|
||||
@ -246,6 +248,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
images: data.sliderImage,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.sliderImage.split(','),
|
||||
title: data.storeName,
|
||||
info: data.storeInfo,
|
||||
postage: data.postage,
|
||||
@ -275,6 +279,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
images: data.sliderImage,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.sliderImage.split(','),
|
||||
title: data.storeName,
|
||||
info: data.storeInfo,
|
||||
postage: data.postage,
|
||||
@ -307,6 +313,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
images: data.sliderImage,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.sliderImage.split(','),
|
||||
title: data.storeName,
|
||||
info: data.storeInfo,
|
||||
postage: data.postage,
|
||||
|
@ -160,6 +160,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
sliderImage: data.sliderImage,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.sliderImage.split(','),
|
||||
storeName: data.storeName,
|
||||
storeInfo: data.storeInfo,
|
||||
keyword: data.keyword,
|
||||
|
@ -152,6 +152,8 @@ export default {
|
||||
merId: data.merId,
|
||||
image: data.image,
|
||||
sliderImage: data.sliderImage,
|
||||
imageArr: data.image.split(','),
|
||||
sliderImageArr: data.sliderImage.split(','),
|
||||
storeName: data.storeName,
|
||||
storeInfo: data.storeInfo,
|
||||
keyword: data.keyword,
|
||||
|
@ -64,7 +64,7 @@
|
||||
<span>{{ formatTime(scope.row.addTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="checkPermission(['admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT','YXSTOREORDER_DELETE'])" label="操作" width="200" align="center">
|
||||
<el-table-column v-if="checkPermission(['admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT','YXSTOREORDER_DELETE'])" label="操作" width="200" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-permission="['admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT']" size="mini" type="primary"
|
||||
@click="detail(scope.row)">
|
||||
|
@ -115,7 +115,8 @@ export default {
|
||||
title: data.map.title,
|
||||
info: data.map.info,
|
||||
url: data.map.url,
|
||||
pic: data.map.pic
|
||||
pic: data.map.pic,
|
||||
imageArr: data.map.pic.split(','),
|
||||
}
|
||||
_this.dialog = true
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="图片(260*260/416*214)">
|
||||
<pic-upload v-model="form.pic" style="width: 500px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 500px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -25,8 +26,9 @@
|
||||
<script>
|
||||
import { add, edit } from '@/api/yxSystemGroupData'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { picUpload },
|
||||
components: { picUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -43,6 +45,7 @@ export default {
|
||||
info: '',
|
||||
url: '',
|
||||
pic: '',
|
||||
imageArr: [],
|
||||
sort: '',
|
||||
status: ''
|
||||
},
|
||||
@ -50,6 +53,13 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.pic = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
|
@ -11,7 +11,7 @@
|
||||
<el-input v-model="form.wxapp_url" style="width: 300px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图片(750*375)">
|
||||
<pic-upload v-model="form.pic" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 300px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -25,8 +25,9 @@
|
||||
<script>
|
||||
import { add, edit } from '@/api/yxSystemGroupData'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { picUpload },
|
||||
components: { picUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -43,6 +44,7 @@ export default {
|
||||
url: '',
|
||||
wxapp_url: '',
|
||||
pic: '',
|
||||
imageArr: [],
|
||||
sort: '',
|
||||
status: ''
|
||||
},
|
||||
@ -50,6 +52,13 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.pic = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -96,6 +105,7 @@ export default {
|
||||
this.form = {
|
||||
id: '',
|
||||
groupName: 'routine_home_banner',
|
||||
imageArr: [],
|
||||
value: '',
|
||||
addTime: '',
|
||||
sort: '',
|
||||
|
@ -115,7 +115,8 @@ export default {
|
||||
name: data.map.name,
|
||||
url: data.map.url,
|
||||
wxapp_url: data.map.wxapp_url,
|
||||
pic: data.map.pic
|
||||
pic: data.map.pic,
|
||||
imageArr: data.map.pic ? data.map.pic.split(',') : []
|
||||
}
|
||||
_this.dialog = true
|
||||
}
|
||||
|
@ -115,7 +115,8 @@ export default {
|
||||
name: data.map.name,
|
||||
url: data.map.url,
|
||||
wxapp_url: data.map.wxapp_url,
|
||||
pic: data.map.pic
|
||||
pic: data.map.pic,
|
||||
imageArr: data.map.pic ? data.map.pic.split(',') : []
|
||||
}
|
||||
_this.dialog = true
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
<el-input v-model="form.wxapp_url" style="width: 300px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分类图标(90*90)">
|
||||
<pic-upload v-model="form.pic" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 300px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -25,8 +25,9 @@
|
||||
<script>
|
||||
import { add, edit } from '@/api/yxSystemGroupData'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { picUpload },
|
||||
components: { picUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -43,6 +44,7 @@ export default {
|
||||
url: '',
|
||||
wxapp_url: '',
|
||||
pic: '',
|
||||
imageArr: [],
|
||||
sort: '',
|
||||
status: ''
|
||||
},
|
||||
@ -50,6 +52,13 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.pic = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -96,6 +105,7 @@ export default {
|
||||
this.form = {
|
||||
id: '',
|
||||
groupName: 'routine_home_menus',
|
||||
imageArr: [],
|
||||
value: '',
|
||||
addTime: '',
|
||||
sort: '',
|
||||
|
@ -24,7 +24,9 @@
|
||||
<el-table-column prop="map.wxapp_url" label="小程序跳转page" />
|
||||
<el-table-column ref="table" label="图标">
|
||||
<template slot-scope="scope">
|
||||
<a :href="scope.row.map.pic" style="color: #42b983" target="_blank"><img :src="scope.row.map.pic" alt="点击打开" class="el-avatar"></a>
|
||||
<a :href="scope.row.map.pic" style="color: #42b983" target="_blank">
|
||||
<img :src="scope.row.map.pic" alt="点击打开" class="el-avatar">
|
||||
</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="checkPermission(['admin','YXSYSTEMGROUPDATA_ALL','YXSYSTEMGROUPDATA_EDIT','YXSYSTEMGROUPDATA_DELETE'])" label="操作" width="150px" align="center">
|
||||
@ -115,7 +117,8 @@ export default {
|
||||
name: data.map.name,
|
||||
url: data.map.url,
|
||||
wxapp_url: data.map.wxapp_url,
|
||||
pic: data.map.pic
|
||||
pic: data.map.pic,
|
||||
imageArr: data.map.pic ? data.map.pic.split(',') : []
|
||||
}
|
||||
_this.dialog = true
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
<el-input v-model="form.wxapp_url" style="width: 300px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="图标(52*52)">
|
||||
<pic-upload v-model="form.pic" style="width: 500px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 300px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@ -25,8 +25,9 @@
|
||||
<script>
|
||||
import { add, edit } from '@/api/yxSystemGroupData'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { picUpload },
|
||||
components: { picUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -43,6 +44,7 @@ export default {
|
||||
url: '',
|
||||
wxapp_url: '',
|
||||
pic: '',
|
||||
imageArr: [],
|
||||
sort: '',
|
||||
status: ''
|
||||
},
|
||||
@ -50,6 +52,13 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.pic = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -96,6 +105,7 @@ export default {
|
||||
this.form = {
|
||||
id: '',
|
||||
groupName: 'routine_my_menus',
|
||||
imageArr: [],
|
||||
value: '',
|
||||
addTime: '',
|
||||
sort: '',
|
||||
|
@ -41,7 +41,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="spreadUid" label="推荐人" />
|
||||
<el-table-column prop="payCount" label="购买次数" />
|
||||
<el-table-column v-if="checkPermission(['admin','YXUSER_ALL','YXUSER_EDIT','YXUSER_DELETE'])" label="操作" width="185" align="center">
|
||||
<el-table-column v-if="checkPermission(['admin','YXUSER_ALL','YXUSER_EDIT','YXUSER_DELETE'])" label="操作" width="185" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-permission="['admin','YXUSER_ALL','YXUSER_EDIT']"
|
||||
|
@ -18,10 +18,10 @@
|
||||
<el-input v-model="form.discount" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="会员背景">
|
||||
<pic-upload v-model="form.image" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 300px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="会员图标">
|
||||
<pic-upload v-model="form.icon" />
|
||||
<MaterialList v-model="form.iconArr" style="width: 300px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示">
|
||||
<el-radio v-model="form.isShow" :label="1">是</el-radio>
|
||||
@ -41,8 +41,9 @@
|
||||
<script>
|
||||
import { add, edit } from '@/api/yxSystemUserLevel'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { picUpload },
|
||||
components: { picUpload, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -58,13 +59,15 @@ export default {
|
||||
name: '',
|
||||
money: '',
|
||||
validDate: '',
|
||||
isForever: '',
|
||||
isForever: 1,
|
||||
isPay: '',
|
||||
isShow: '',
|
||||
isShow: 1,
|
||||
grade: '',
|
||||
discount: '',
|
||||
image: '',
|
||||
icon: '',
|
||||
imageArr: [],
|
||||
iconArr: [],
|
||||
explain: '',
|
||||
addTime: '',
|
||||
isDel: ''
|
||||
@ -73,6 +76,18 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.image = val.join(",");
|
||||
}
|
||||
},
|
||||
'form.iconArr': function(val) {
|
||||
if(val){
|
||||
this.form.icon = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
@ -131,6 +146,8 @@ export default {
|
||||
icon: '',
|
||||
explain: '',
|
||||
addTime: '',
|
||||
imageArr: [],
|
||||
iconArr: [],
|
||||
isDel: ''
|
||||
}
|
||||
}
|
||||
|
@ -135,6 +135,8 @@ export default {
|
||||
discount: data.discount,
|
||||
image: data.image,
|
||||
icon: data.icon,
|
||||
imageArr: data.image ? data.image.split(',') : [],
|
||||
iconArr: data.icon ? data.icon.split(',') : [],
|
||||
explain: data.explain,
|
||||
addTime: data.addTime,
|
||||
isDel: data.isDel
|
||||
|
@ -8,7 +8,7 @@
|
||||
<el-input v-model="form.author" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="封面">
|
||||
<pic-upload v-model="form.imageInput" style="width: 370px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 370px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="简介">
|
||||
<el-input v-model="form.synopsis" style="width: 370px;" rows="5" type="textarea" />
|
||||
@ -29,8 +29,9 @@ import { add, edit } from '@/api/yxArticle'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import editor from '../../components/Editor'
|
||||
import yamedit from '@/components/YamlEdit'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { editor, picUpload, yamedit },
|
||||
components: { editor, picUpload, yamedit, MaterialList },
|
||||
props: {
|
||||
isAdd: {
|
||||
type: Boolean,
|
||||
@ -46,6 +47,7 @@ export default {
|
||||
title: '',
|
||||
author: '',
|
||||
imageInput: '',
|
||||
imageArr: [],
|
||||
synopsis: '',
|
||||
content: '',
|
||||
shareTitle: '',
|
||||
@ -65,6 +67,13 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.imageInput = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.resetForm()
|
||||
|
@ -152,6 +152,7 @@ export default {
|
||||
title: data.title,
|
||||
author: data.author,
|
||||
imageInput: data.imageInput,
|
||||
imageArr: data.imageInput.split(','),
|
||||
synopsis: data.synopsis,
|
||||
content: data.content,
|
||||
shareTitle: data.shareTitle,
|
||||
|
@ -17,7 +17,7 @@
|
||||
<el-input v-model="form.api" :disabled="true" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="微信分享图片">
|
||||
<pic-upload v-model="form.wechat_share_img" style="width: 370px;" />
|
||||
<MaterialList v-model="form.imageArr" style="width: 370px" type="image" :num=1 :width=150 :height=150></MaterialList>
|
||||
</el-form-item>
|
||||
<el-form-item label="微信分享标题">
|
||||
<el-input v-model="form.wechat_share_title" style="width: 370px;" />
|
||||
@ -41,8 +41,9 @@ import { del, add, get } from '@/api/yxSystemConfig'
|
||||
import eForm from './form'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import { Message } from 'element-ui'
|
||||
import MaterialList from '@/components/material'
|
||||
export default {
|
||||
components: { eForm, picUpload },
|
||||
components: { eForm, picUpload, MaterialList },
|
||||
mixins: [initData],
|
||||
data() {
|
||||
return {
|
||||
@ -57,6 +58,7 @@ export default {
|
||||
wechat_encode: '',
|
||||
wechat_encodingaeskey: '',
|
||||
wechat_share_img: '',
|
||||
imageArr: [],
|
||||
wechat_qrcode: '',
|
||||
wechat_type: '',
|
||||
wechat_share_title: '',
|
||||
@ -68,6 +70,13 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'form.imageArr': function(val) {
|
||||
if(val){
|
||||
this.form.wechat_share_img = val.join(",");
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
get().then(rese => {
|
||||
const newObj = {}
|
||||
@ -77,6 +86,7 @@ export default {
|
||||
})
|
||||
|
||||
this.form = newObj
|
||||
this.form.imageArr =this.form.wechat_share_img.split(',')
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
|
@ -10,6 +10,9 @@
|
||||
<el-form-item label="商户密钥">
|
||||
<el-input v-model="form.wxpay_mchKey" style="width: 370px;" type="password" />
|
||||
</el-form-item>
|
||||
<el-form-item label="微信证书" >
|
||||
<file-upload v-model="form.wxpay_keyPath" style="width: 500px;"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="">
|
||||
<el-button type="primary" @click="doSubmit">提交</el-button>
|
||||
</el-form-item>
|
||||
@ -26,8 +29,9 @@ import { del, add, get } from '@/api/yxSystemConfig'
|
||||
import eForm from './form'
|
||||
import picUpload from '@/components/pic-upload'
|
||||
import { Message } from 'element-ui'
|
||||
import fileUpload from '@/components/file-upload'
|
||||
export default {
|
||||
components: { eForm, picUpload },
|
||||
components: { eForm, picUpload, fileUpload },
|
||||
mixins: [initData],
|
||||
data() {
|
||||
return {
|
||||
@ -35,7 +39,8 @@ export default {
|
||||
form: {
|
||||
wxpay_appId: '',
|
||||
wxpay_mchId: '',
|
||||
wxpay_mchKey: ''
|
||||
wxpay_mchKey: '',
|
||||
wxpay_keyPath: ''
|
||||
},
|
||||
rules: {
|
||||
}
|
||||
|
Reference in New Issue
Block a user