mirror of
https://gitee.com/ZhongBangKeJi/crmeb_java.git
synced 2026-04-24 12:28:33 +08:00
更新Note
1. 修复购物车,订单和退单后后置任务正确执行 2. 修复佣金记录金额和详情 3. 修复管理端 移动应用界面下订单管理数据统计不准确的问题 4. 修复短信API升级-后台使用一号通 5. 修复用户管理相关问题 6. 修复核销点核销后核销地址不准确 7. 修复资源同步云服务的问题 新增功能 1. 秒杀 a. 秒杀时段配置 b. 秒杀商品维护 2. 财务管理 a. 申请提现 b. 财务记录 i. 充值记录 ii. 资金监控 c. 佣金记录 3. 普通商品显示该商品正在参加的活动信息[秒杀]
This commit is contained in:
@@ -6,13 +6,13 @@
|
||||
prop="name"
|
||||
:rules="[{ required:true,message:'请输入分类名称',trigger:['blur','change'] }]"
|
||||
>
|
||||
<el-input v-model="editPram.name" :maxlength="biztype.value === 1 ? 5 : 20" placeholder="分类名称" />
|
||||
<el-input v-model="editPram.name" :maxlength="biztype.value === 1 ? 8 : 20" placeholder="分类名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="URL">
|
||||
<el-input v-model="editPram.url" placeholder="URL" />
|
||||
</el-form-item>
|
||||
<el-form-item label="父级" v-if="biztype.value!==3">
|
||||
<el-cascader v-model="editPram.pid" :options="biztype.value === 5 ? allTreeList : parentOptions" :props="categoryProps" style="width:100%" />
|
||||
<el-cascader v-model="editPram.pid" :disabled="isCreate ===1 && editPram.pid ===0" :options="biztype.value === 5 ? allTreeList : parentOptions" :props="categoryProps" style="width:100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菜单图标" v-if="biztype.value===5">
|
||||
<el-input placeholder="请选择菜单图标" v-model="editPram.extra">
|
||||
@@ -128,11 +128,8 @@ export default {
|
||||
initEditData() {
|
||||
this.parentOptions = [...this.allTreeList]
|
||||
this.addTreeListLabelForCasCard(this.parentOptions, 'child')
|
||||
if (this.isCreate !== 1) {
|
||||
const { id } = this.prent
|
||||
this.editPram.pid = id
|
||||
} else {
|
||||
const { extra, name, pid, sort, status, type, id, url } = this.editData
|
||||
const { extra, name, pid, sort, status, type, id, url } = this.editData
|
||||
if(this.isCreate === 1){
|
||||
this.editPram.extra = extra
|
||||
this.editPram.name = name
|
||||
this.editPram.pid = pid
|
||||
@@ -141,6 +138,9 @@ export default {
|
||||
this.editPram.type = type
|
||||
this.editPram.url = url
|
||||
this.editPram.id = id
|
||||
}else{
|
||||
this.editPram.pid = this.prent.id
|
||||
this.editPram.type = this.biztype.value
|
||||
}
|
||||
},
|
||||
addTreeListLabelForCasCard(arr, child) {
|
||||
@@ -161,12 +161,14 @@ export default {
|
||||
},
|
||||
handlerSaveOrUpdate(isSave) {
|
||||
if (isSave) {
|
||||
this.editPram.pid = this.prent.id
|
||||
// this.editPram.pid = this.prent.id
|
||||
this.loadingBtn = true
|
||||
categoryApi.addCategroy(this.editPram).then(data => {
|
||||
this.$emit('hideEditDialog')
|
||||
this.$message.success('创建目录成功')
|
||||
this.loadingBtn = false
|
||||
}).catch(() => {
|
||||
this.loadingBtn = false
|
||||
})
|
||||
} else {
|
||||
this.editPram.pid = Array.isArray(this.editPram.pid) ? this.editPram.pid[0] : this.editPram.pid
|
||||
@@ -175,6 +177,8 @@ export default {
|
||||
this.$emit('hideEditDialog')
|
||||
this.$message.success('更新目录成功')
|
||||
this.loadingBtn = false
|
||||
}).catch(() => {
|
||||
this.loadingBtn = false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="container">
|
||||
<el-form inline size="small">
|
||||
<el-form-item>
|
||||
<el-select v-model="listPram.status" placeholder="状态" clearable class="selWidth">
|
||||
<el-select v-model="listPram.status" placeholder="状态" class="selWidth">
|
||||
<el-option
|
||||
v-for="item in constants.roleListStatus"
|
||||
:key="item.value"
|
||||
@@ -86,7 +86,7 @@
|
||||
<el-table-column label="操作" min-width="200" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="(biztype.value === 1 && scope.row.pid === 0) || (biztype.value !== 1)"
|
||||
v-if="(biztype.value === 1 && scope.row.pid === 0) || biztype.value === 5"
|
||||
type="text"
|
||||
size="small"
|
||||
@click="handleAddMenu(scope.row)"
|
||||
@@ -179,10 +179,10 @@ export default {
|
||||
dataList: [],
|
||||
treeList: [],
|
||||
listPram: {
|
||||
pid: this.pid,
|
||||
pid: this.pid,
|
||||
type: this.biztype.value,
|
||||
status: null,
|
||||
name: null,
|
||||
status: -1,
|
||||
name: '',
|
||||
page: constants.page.page,
|
||||
limit: constants.page.limit[0]
|
||||
},
|
||||
@@ -193,10 +193,10 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// if(this.biztype.value === 3){
|
||||
// this.listPram.pageSize = constants.page.pageSize[4]
|
||||
// this.handlerGetList()
|
||||
// }else{
|
||||
/* if(this.biztype.value === 3){
|
||||
this.listPram.pageSize = constants.page.pageSize[4]
|
||||
this.handlerGetList()
|
||||
}else{*/
|
||||
this.handlerGetTreeList()
|
||||
// }
|
||||
},
|
||||
@@ -254,13 +254,15 @@ export default {
|
||||
})
|
||||
},
|
||||
handlerGetList() {
|
||||
categoryApi.listCategroy(this.listPram).then(data => {
|
||||
this.treeList = data.list
|
||||
})
|
||||
this.handlerGetTreeList();
|
||||
// categoryApi.listCategroy({status:this.listPram.status, type: 1 }).then(data => {
|
||||
// this.treeList = data.list
|
||||
// })
|
||||
},
|
||||
handlerGetTreeList() {
|
||||
// this.biztype.value === 5 && !this.selectModel) ? -1 : 1
|
||||
const _pram = { type: this.biztype.value, status: !this.selectModel ? -1 : (this.biztype.value === 5 ? -1 : 1) }
|
||||
// const _pram = { type: this.biztype.value, status: !this.selectModel ? -1 : (this.biztype.value === 5 ? -1 : 1) }
|
||||
const _pram = { type: this.biztype.value, status: this.listPram.status, name: this.listPram.name }
|
||||
this.loading = true
|
||||
this.biztype.value!==3 ? categoryApi.treeCategroy(_pram).then(data => {
|
||||
this.treeList = this.handleAddArrt(data)
|
||||
@@ -279,7 +281,6 @@ export default {
|
||||
console.log('data:', data)
|
||||
},
|
||||
handleAddArrt(treeData) {
|
||||
// let _result = this.addTreeListLabel(treeData)
|
||||
const _result = selfUtil.addTreeListLabel(treeData)
|
||||
return _result
|
||||
},
|
||||
|
||||
@@ -384,6 +384,28 @@ export const selectComponents = [
|
||||
format: 'HH:mm:ss',
|
||||
'value-format': 'HH:mm:ss'
|
||||
},
|
||||
{
|
||||
__config__: {
|
||||
label: '固定时间范围',
|
||||
tag: 'time-select',
|
||||
tagIcon: 'time-select',
|
||||
span: 24,
|
||||
showLabel: true,
|
||||
labelWidth: null,
|
||||
layout: 'colFormItem',
|
||||
defaultValue: null,
|
||||
required: true,
|
||||
regList: [],
|
||||
changeTag: true,
|
||||
document: 'https://element.eleme.cn/#/zh-CN/component/time-picker'
|
||||
},
|
||||
style: { width: '100%' },
|
||||
disabled: false,
|
||||
clearable: true,
|
||||
placeholder: '请选择',
|
||||
format: 'HH:mm',
|
||||
'value-format': 'HH:mm'
|
||||
},
|
||||
{
|
||||
__config__: {
|
||||
label: '日期选择',
|
||||
|
||||
@@ -57,7 +57,7 @@ function buildFromBtns(scheme, type) {
|
||||
if (scheme.formBtns && type === 'file') {
|
||||
str = `<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
<el-button @click="resetForm">取消</el-button>
|
||||
</el-form-item>`
|
||||
if (someSpanIsNot24) {
|
||||
str = `<el-col :span="24">
|
||||
@@ -304,6 +304,11 @@ const tags = {
|
||||
const height = el.height ? `:height="${el.height}"` : ''
|
||||
return `<${tag} ${vModel}${height} >`
|
||||
},
|
||||
'time-select': el => {
|
||||
const { tag, vModel } = attrBuilder(el)
|
||||
const height = el.height ? `:height="${el.height}"` : ''
|
||||
return `<${tag} ${vModel}${height} >`
|
||||
},
|
||||
tinymce: el => {
|
||||
const { tag, vModel } = attrBuilder(el)
|
||||
const branding = el.branding ? `:branding="${el.branding}"` : ''
|
||||
|
||||
@@ -13,5 +13,7 @@ export default {
|
||||
'el-time-picker': 'change',
|
||||
'el-date-picker': 'change',
|
||||
'el-rate': 'change',
|
||||
tinymce: 'blur'
|
||||
tinymce: 'blur',
|
||||
'time-select': 'change'
|
||||
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ function formBtns(h) {
|
||||
return <el-col>
|
||||
<el-form-item size='mini'>
|
||||
<el-button type='primary' onClick={this.submitForm}>提交</el-button>
|
||||
<el-button onClick={this.resetForm}>重置</el-button>
|
||||
<el-button onClick={this.resetForm}>取消</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
}
|
||||
@@ -188,6 +188,7 @@ export default {
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$emit('resetForm', this.formConf)
|
||||
this.formConfCopy = JSON.parse(JSON.stringify(this.formConf))
|
||||
this.$refs[this.formConf.formRef].resetFields()
|
||||
},
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
:form-conf="formConf"
|
||||
:form-edit-data="editData"
|
||||
@submit="handlerSubmit"
|
||||
@resetForm="resetForm"
|
||||
/>
|
||||
<!-- editData:{{ editData }}-->
|
||||
<!-- formConf:{{ formConf }}-->
|
||||
@@ -54,6 +55,9 @@ export default {
|
||||
},
|
||||
handlerSubmit(formValue) {
|
||||
this.$emit('submit', formValue)
|
||||
},
|
||||
resetForm(formValue){
|
||||
this.$emit('resetForm', formValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
57
admin/src/components/TimeSelect/index.vue
Normal file
57
admin/src/components/TimeSelect/index.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-time-select
|
||||
placeholder="起始时间"
|
||||
v-model="startTime"
|
||||
:picker-options="{
|
||||
start: '00:00',
|
||||
step: '01:00',
|
||||
end: '24:00'
|
||||
}">
|
||||
</el-time-select>
|
||||
<el-time-select
|
||||
placeholder="结束时间"
|
||||
v-model="endTime"
|
||||
:picker-options="{
|
||||
start: '00:00',
|
||||
step: '01:00',
|
||||
end: '24:00',
|
||||
minTime: startTime
|
||||
}">
|
||||
</el-time-select>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "index",
|
||||
data() {
|
||||
return {
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
}
|
||||
},
|
||||
props: {
|
||||
value: {}
|
||||
},
|
||||
beforeMount(){
|
||||
// 接收 v-model 数据
|
||||
if(this.value){
|
||||
this.startTime = this.value.split(',')[0]
|
||||
this.endTime = this.value.split(',')[1]
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
startTime: function(val) {
|
||||
this.$emit('input', [val, this.endTime].join(','))
|
||||
},
|
||||
endTime: function(val) {
|
||||
this.$emit('input', [this.startTime, val].join(','))
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -5,7 +5,7 @@
|
||||
<el-form inline size="small">
|
||||
<el-form-item label="优惠劵名称:">
|
||||
<el-input v-model="tableFrom.name" placeholder="请输入优惠券名称" class="selWidth" size="small">
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getList" />
|
||||
<el-button slot="append" icon="el-icon-search" size="small" @click="getList(1)" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -228,8 +228,9 @@ export default {
|
||||
}
|
||||
},
|
||||
// 列表
|
||||
getList() {
|
||||
getList(num) {
|
||||
this.listLoading = true
|
||||
this.tableFrom.page = num ? num : this.tableFrom.page
|
||||
marketingListApi(this.tableFrom).then(res => {
|
||||
this.tableData.data = res.list
|
||||
this.tableData.total = res.total
|
||||
|
||||
@@ -4,13 +4,11 @@
|
||||
<div class="container">
|
||||
<el-form inline>
|
||||
<el-form-item label="商品分类:">
|
||||
<el-cascader v-model="tableFrom.cateId" :options="merCateList" :props="props" clearable class="selWidth mr20" @change="getList"/>
|
||||
<el-cascader v-model="tableFrom.cateId" :options="merCateList" :props="props" clearable class="selWidth mr20" @change="getList(1)"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品搜索:">
|
||||
<!--<el-input v-model="tableFrom.keywords" placeholder="请输入内容"></el-input>-->
|
||||
|
||||
<el-input v-model="tableFrom.keywords" @input="onInput()" placeholder="请输入商品名称,关键字,产品编号" class="selWidth">
|
||||
<el-button slot="append" icon="el-icon-search" @click="getList"/>
|
||||
<el-input v-model="tableFrom.keywords" @input="onInput($event)" placeholder="请输入商品名称,关键字,产品编号" class="selWidth">
|
||||
<el-button slot="append" icon="el-icon-search" @click="getList(1)"/>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -151,7 +149,7 @@ export default {
|
||||
this.getCategorySelect()
|
||||
},
|
||||
methods: {
|
||||
onInput(){
|
||||
onInput(e){
|
||||
this.$forceUpdate();
|
||||
},
|
||||
changeType(v) {
|
||||
@@ -221,8 +219,9 @@ export default {
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
getList() {
|
||||
getList(num) {
|
||||
this.listLoading = true
|
||||
this.tableFrom.page = num ? num : this.tableFrom.page;
|
||||
productLstApi(this.tableFrom).then(res => {
|
||||
this.tableData.data = res.list
|
||||
this.tableData.total = res.total
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<img :src="item.sattDir">
|
||||
<i class="el-icon-error btndel" @click="handleRemove(index)" />
|
||||
</div>
|
||||
<div class="upLoadPicBox" @click="modalPicTap('2')">
|
||||
<div class="upLoadPicBox" @click="modalPicTap('2')" v-show="imageList.length<20">
|
||||
<div class="upLoad">
|
||||
<i class="el-icon-camera cameraIconfont" />
|
||||
</div>
|
||||
@@ -31,7 +31,7 @@
|
||||
:visible.sync="visible"
|
||||
width="896px"
|
||||
:before-close="handleClose"
|
||||
z-index="3004"
|
||||
:modal="false"
|
||||
>
|
||||
<upload-index v-if="visible" :checkedMore="imageList" :isMore="isMore" @getImage="getImage" />
|
||||
</el-dialog>
|
||||
@@ -98,7 +98,7 @@ export default {
|
||||
},
|
||||
handleRemove (i) {
|
||||
this.imageList.splice(i, 1)
|
||||
this.$emit('input', this.imageList.join(','))
|
||||
this.$emit('input', JSON.stringify(this.imageList))
|
||||
},
|
||||
// 移动
|
||||
handleDragStart (e, item) {
|
||||
|
||||
@@ -112,8 +112,9 @@
|
||||
:key="index"
|
||||
class="gridPic"
|
||||
>
|
||||
<img v-if="index === 0" v-lazy="item.localImg?item.localImg:item.sattDir" :class="item.isSelect ? 'on': '' " @click="changImage(item, index, pictrueList.list)" />
|
||||
<img v-else v-lazy="item.sattDir?item.sattDir:localImg" :class="item.isSelect ? 'on': '' " @click="changImage(item, index, pictrueList.list)" />
|
||||
<img v-lazy="item.sattDir?item.sattDir:localImg" :class="item.isSelect ? 'on': '' " @click="changImage(item, index, pictrueList.list)" />
|
||||
<!--<img v-if="index === 0" v-lazy="item.localImg?item.localImg:item.sattDir" :class="item.isSelect ? 'on': '' " @click="changImage(item, index, pictrueList.list)" />-->
|
||||
<!--<img v-else v-lazy="item.sattDir?item.sattDir:localImg" :class="item.isSelect ? 'on': '' " @click="changImage(item, index, pictrueList.list)" />-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -123,6 +124,7 @@
|
||||
:page-sizes="[12, 24, 48, 60]"
|
||||
:page-size="tableData.limit"
|
||||
:current-page="tableData.page"
|
||||
:pager-count="5"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="pictrueList.total"
|
||||
@size-change="handleSizeChange"
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
<el-dialog
|
||||
title="上传图片"
|
||||
:visible.sync="visible"
|
||||
width="896px"
|
||||
width="950px"
|
||||
:modal="false"
|
||||
append-to-body
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<upload-index v-if="visible" :isMore="isMore" :modelName="modelName" @getImage="getImage" />
|
||||
@@ -22,7 +23,8 @@ export default {
|
||||
visible: false,
|
||||
callback: function() {},
|
||||
isMore: '',
|
||||
modelName: ''
|
||||
modelName: '',
|
||||
ISmodal: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
Reference in New Issue
Block a user