Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dba643eb85 | ||
![]() |
6d40f3379f | ||
![]() |
9131a17369 | ||
![]() |
a47b0047ee | ||
![]() |
ef1bdea2f0 | ||
![]() |
8f32da7b24 | ||
![]() |
1060f3decc | ||
![]() |
c6d81c5e2a | ||
![]() |
39d6fe755f | ||
![]() |
866c24eb70 |
62
src/api/deliverytime.js
Normal file
62
src/api/deliverytime.js
Normal file
@ -0,0 +1,62 @@
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 新增EbdeliveryTime
|
||||
* @param pram
|
||||
*/
|
||||
export function createApi(data) {
|
||||
return request({
|
||||
url: '/admin/deliveryTime/save',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebdeliveryTime更新
|
||||
* @param pram
|
||||
*/
|
||||
export function updateApi(data) {
|
||||
return request({
|
||||
url: 'admin/deliveryTime/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* deliveryTime详情
|
||||
* @param pram
|
||||
*/
|
||||
export function detailApi(id) {
|
||||
return request({
|
||||
url: `admin/deliveryTime/info/${id}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* deliveryTime删除
|
||||
* @param pram
|
||||
*/
|
||||
export function deleteApi(id) {
|
||||
return request({
|
||||
url: `admin/deliveryTime/delete/${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* deliveryTime列表
|
||||
* @param pram
|
||||
*/
|
||||
export function listApi(params) {
|
||||
return request({
|
||||
url: 'admin/deliveryTime/list',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
63
src/api/home.js
Normal file
63
src/api/home.js
Normal file
@ -0,0 +1,63 @@
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 新增EbHome
|
||||
* @param pram
|
||||
*/
|
||||
export function homeCreateApi(data) {
|
||||
return request({
|
||||
url: '/admin/floor/save',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebhome更新
|
||||
* @param pram
|
||||
*/
|
||||
export function homeUpdateApi(data) {
|
||||
return request({
|
||||
url: '/admin/floor/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebhome详情
|
||||
* @param pram
|
||||
*/
|
||||
export function homeDetailApi(id) {
|
||||
return request({
|
||||
url: `/admin/floor/info/${id}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebhome删除
|
||||
* @param pram
|
||||
*/
|
||||
export function homeDeleteApi(params) {
|
||||
return request({
|
||||
url: `/admin/floor/delete`,
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ebhome列表
|
||||
* @param pram
|
||||
*/
|
||||
export function homeListApi(params) {
|
||||
return request({
|
||||
url: '/admin/floor/list',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
63
src/api/homeItem.js
Normal file
63
src/api/homeItem.js
Normal file
@ -0,0 +1,63 @@
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 新增EbHome
|
||||
* @param pram
|
||||
*/
|
||||
export function createApi(data) {
|
||||
return request({
|
||||
url: '/admin/floorItem/save',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebhome更新
|
||||
* @param pram
|
||||
*/
|
||||
export function updateApi(data) {
|
||||
return request({
|
||||
url: '/admin/floorItem/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebhome详情
|
||||
* @param pram
|
||||
*/
|
||||
export function detailApi(id) {
|
||||
return request({
|
||||
url: `/admin/floorItem/info/${id}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebhome删除
|
||||
* @param pram
|
||||
*/
|
||||
export function deleteApi(params) {
|
||||
return request({
|
||||
url: `/admin/floorItem/delete`,
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ebhome列表
|
||||
* @param pram
|
||||
*/
|
||||
export function listApi(params) {
|
||||
return request({
|
||||
url: '/admin/floorItem/list',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
@ -37,6 +37,19 @@ export function orderListDataApi(params) {
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单 列表 数据统计
|
||||
* @param params
|
||||
*/
|
||||
export function prepareApi(params) {
|
||||
return request({
|
||||
url: '/admin/store/order/prepare',
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单 删除
|
||||
* @param params
|
||||
|
63
src/api/problem.js
Normal file
63
src/api/problem.js
Normal file
@ -0,0 +1,63 @@
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param pram
|
||||
*/
|
||||
export function createApi(data) {
|
||||
return request({
|
||||
url: '/admin/problem/save',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
* @param pram
|
||||
*/
|
||||
export function updateApi(data) {
|
||||
return request({
|
||||
url: '/admin/problem/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
* @param pram
|
||||
*/
|
||||
export function detailApi(id) {
|
||||
return request({
|
||||
url: `/admin/problem/info/${id}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param pram
|
||||
*/
|
||||
export function deleteApi(params) {
|
||||
return request({
|
||||
url: `/admin/problem/delete`,
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 列表
|
||||
* @param pram
|
||||
*/
|
||||
export function listApi(params) {
|
||||
return request({
|
||||
url: '/admin/problem/list',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
@ -280,6 +280,19 @@ export function productExcelApi(params) {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品导入
|
||||
* @param params
|
||||
* @returns {*}
|
||||
*/
|
||||
export function importExcelApi(data) {
|
||||
return request({
|
||||
url: `/admin/import/excel/product`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品列表 获取复制商品配置
|
||||
* @param pram
|
||||
|
63
src/api/systemHelp.js
Normal file
63
src/api/systemHelp.js
Normal file
@ -0,0 +1,63 @@
|
||||
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 新增EbSystemHelpProblem
|
||||
* @param pram
|
||||
*/
|
||||
export function createApi(data) {
|
||||
return request({
|
||||
url: 'admin/system/helpProblem/save',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebsystemhelpproblem更新
|
||||
* @param pram
|
||||
*/
|
||||
export function updateApi(data) {
|
||||
return request({
|
||||
url: 'admin/system/helpProblem/update',
|
||||
method: 'POST',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebsystemhelpproblem详情
|
||||
* @param pram
|
||||
*/
|
||||
export function detailApi(id) {
|
||||
return request({
|
||||
url: `admin/system/helpProblem/info/${id}`,
|
||||
method: 'GET'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* ebsystemhelpproblem删除
|
||||
* @param pram
|
||||
*/
|
||||
export function deleteApi(params) {
|
||||
return request({
|
||||
url: `admin/system/helpProblem/delete`,
|
||||
method: 'POST',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ebsystemhelpproblem列表
|
||||
* @param pram
|
||||
*/
|
||||
export function listApi(params) {
|
||||
return request({
|
||||
url: 'admin/system/helpProblem/list',
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
@ -144,16 +144,13 @@ export default {
|
||||
imageSuccessCBK(arr) {
|
||||
const _this = this;
|
||||
arr.forEach((v) => {
|
||||
if (this.getFileType(v) == "video") {
|
||||
window.tinymce
|
||||
.get(_this.tinymceId)
|
||||
.insertContent(
|
||||
`<video class="wscnph" src="${v}" controls muted></video>`
|
||||
);
|
||||
let fileType = this.getFileType(v);
|
||||
if (fileType == "video") {
|
||||
window.tinymce.get(_this.tinymceId).insertContent(`<video class="wscnph" src="${v}" controls muted></video>`);
|
||||
} else if (fileType == 'pdf') {
|
||||
window.tinymce.get(_this.tinymceId).insertContent(`<iframe src="${v}" />`);
|
||||
} else {
|
||||
window.tinymce
|
||||
.get(_this.tinymceId)
|
||||
.insertContent(`<img class="wscnph" src="${v}" />`);
|
||||
window.tinymce.get(_this.tinymceId).insertContent(`<img class="wscnph" src="${v}" />`);
|
||||
}
|
||||
});
|
||||
},
|
||||
@ -196,6 +193,12 @@ export default {
|
||||
if (result) {
|
||||
return "video";
|
||||
}
|
||||
// pdf
|
||||
const pdfList = ['pdf'];
|
||||
result = pdfList.find((item) => item === suffix);
|
||||
if (result) {
|
||||
return "pdf";
|
||||
}
|
||||
// 其他 文件类型
|
||||
return "other";
|
||||
},
|
||||
|
@ -2,9 +2,11 @@
|
||||
<div>
|
||||
<input ref="excel-upload-input" class="excel-upload-input" type="file" accept=".xlsx, .xls" @change="handleClick">
|
||||
<div class="drop" @drop="handleDrop" @dragover="handleDragover" @dragenter="handleDragover">
|
||||
Drop excel file here or
|
||||
<span v-if="fileName">已选择:{{ fileName }}</span>
|
||||
<span v-else>将文件拖到此处或</span>
|
||||
<el-button :loading="loading" style="margin-left:16px;" size="mini" type="primary" @click="handleUpload">
|
||||
Browse
|
||||
<span v-if="fileName">重新选择</span>
|
||||
<span v-else>点击上传</span>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -24,10 +26,15 @@ export default {
|
||||
excelData: {
|
||||
header: null,
|
||||
results: null
|
||||
}
|
||||
},
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
resetData() {
|
||||
this.$refs['excel-upload-input'].value = null;
|
||||
this.fileName = '';
|
||||
},
|
||||
generateData({ header, results }) {
|
||||
this.excelData.header = header
|
||||
this.excelData.results = results
|
||||
@ -64,7 +71,8 @@ export default {
|
||||
const files = e.target.files
|
||||
const rawFile = files[0] // only use files[0]
|
||||
if (!rawFile) return
|
||||
this.upload(rawFile)
|
||||
this.upload(rawFile);
|
||||
this.fileName = rawFile.name;
|
||||
},
|
||||
upload(rawFile) {
|
||||
this.$refs['excel-upload-input'].value = null // fix can't select the same excel
|
||||
@ -125,8 +133,7 @@ export default {
|
||||
}
|
||||
.drop{
|
||||
border: 2px dashed #bbb;
|
||||
width: 600px;
|
||||
height: 160px;
|
||||
width: 800px;
|
||||
line-height: 160px;
|
||||
margin: 0 auto;
|
||||
font-size: 24px;
|
||||
|
@ -27,7 +27,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog
|
||||
title="上传图片"
|
||||
title="上传附件"
|
||||
:visible.sync="visible"
|
||||
width="896px"
|
||||
:before-close="handleClose"
|
||||
@ -111,6 +111,7 @@ export default {
|
||||
e.dataTransfer.dropEffect = 'move'
|
||||
},
|
||||
handleDragEnter (e, item) {
|
||||
alert(11)
|
||||
e.dataTransfer.effectAllowed = 'move'
|
||||
if (item === this.dragging) {
|
||||
return
|
||||
|
@ -55,7 +55,7 @@
|
||||
>
|
||||
<el-dropdown-item
|
||||
v-if="
|
||||
node.label !== '全部图片' &&
|
||||
node.label !== '默认' &&
|
||||
checkPermi(['admin:category:update'])
|
||||
"
|
||||
@click.native="onEdit(data.id)"
|
||||
@ -63,7 +63,7 @@
|
||||
>
|
||||
<el-dropdown-item
|
||||
v-if="
|
||||
node.label !== '全部图片' &&
|
||||
node.label !== '默认' &&
|
||||
checkPermi(['admin:category:delete'])
|
||||
"
|
||||
@click.native="handleDelete(data.id)"
|
||||
@ -88,14 +88,14 @@
|
||||
type="primary"
|
||||
class="mr15 mb20"
|
||||
@click="checkPics"
|
||||
>使用选中图片
|
||||
>使用选中附件
|
||||
</el-button
|
||||
>
|
||||
<div class="mb20">
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="上传图片"
|
||||
content="上传附件"
|
||||
placement="top-start"
|
||||
>
|
||||
<el-upload
|
||||
@ -118,7 +118,7 @@
|
||||
<el-tooltip
|
||||
class="item"
|
||||
effect="dark"
|
||||
content="删除图片"
|
||||
content="删除"
|
||||
placement="top-start"
|
||||
>
|
||||
<el-button
|
||||
@ -141,7 +141,7 @@
|
||||
:show-file-list="false"
|
||||
multiple
|
||||
>
|
||||
<el-button class="mr10" type="primary" v-if="pictureType">上传{{typeDate =='pic'?'图片':'视频'}}</el-button>
|
||||
<el-button class="mr10" type="primary" v-if="pictureType">上传{{typeDate =='pic'?'图片':'文件'}}</el-button>
|
||||
</el-upload>
|
||||
<div>
|
||||
<el-button
|
||||
@ -149,7 +149,7 @@
|
||||
type="danger"
|
||||
@click.stop="editPicList('图片')"
|
||||
v-if="pictureType"
|
||||
>删除{{typeDate =='pic'?'图片':'视频'}}
|
||||
>删除{{typeDate =='pic'?'图片':'文件'}}
|
||||
</el-button
|
||||
>
|
||||
</div>
|
||||
@ -181,11 +181,11 @@
|
||||
<div class="abs_video">
|
||||
<el-radio-group v-model="typeDate" @change="radioChange" size="small">
|
||||
<el-radio-button label="pic">图片</el-radio-button>
|
||||
<el-radio-button label="video">视频</el-radio-button>
|
||||
<el-radio-button label="video">文件</el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pictrueList acea-row" v-loading="loadingPic">
|
||||
<div class="pictrueList acea-row" v-loading="loadingPic" v-if="typeDate == 'pic'">
|
||||
<div v-show="isShowPic" class="imagesNo">
|
||||
<i
|
||||
class="el-icon-picture"
|
||||
@ -208,17 +208,44 @@
|
||||
v-lazy="item.sattDir ? item.sattDir : localImg"
|
||||
:class="item.isSelect ? 'on' : ''"
|
||||
@click="changImage(item, index, pictrueList.list)"
|
||||
v-if="item.attType !== 'video/mp4'"
|
||||
v-if="('jpg,jpeg,gif,png,bmp,PNG,JPG,mp4'.split(',')).includes(item.attType)"
|
||||
/>
|
||||
<video
|
||||
:src="item.sattDir"
|
||||
:class="item.isSelect ? 'on' : ''"
|
||||
@click="changImage(item, index, pictrueList.list)"
|
||||
v-if="item.attType == 'video/mp4'"
|
||||
></video>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="pictrueList acea-row" v-loading="loadingPic" v-else>
|
||||
<div v-show="isShowPic" class="imagesNo">
|
||||
<i
|
||||
class="el-icon-picture"
|
||||
style="font-size: 60px; color: rgb(219, 219, 219)"
|
||||
/>
|
||||
<span class="imagesNo_sp">附件库为空</span>
|
||||
</div>
|
||||
<div
|
||||
class="conters scrollbarAll"
|
||||
:style="{ maxHeight: !pictureType ? '500px' : '700px' }"
|
||||
>
|
||||
<div
|
||||
v-for="(item, index) in pictrueList.list"
|
||||
:key="index"
|
||||
class="gridPic" style="margin-right: 10px; margin-bottom: 40px; width: 300px; height: 200px"
|
||||
>
|
||||
<span class="num_badge" v-if="item.num > 0">{{ item.num }}</span>
|
||||
<embed
|
||||
:title="item.name"
|
||||
:class="item.isSelect ? 'on' : ''"
|
||||
style="object-fit: contain;"
|
||||
:src="item.sattDir"
|
||||
v-lazy="item.sattDir ? item.sattDir : localImg"
|
||||
v-if="('zip,doc,docx,xls,xlsx,pdf,mp3,wma,wav,amr,mp4,p12,application/pdf'.split(',')).includes(item.attType)"
|
||||
/>
|
||||
<span @click="changImage(item, index, pictrueList.list)" style="font-size: 14px">{{item.name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
@ -386,7 +413,7 @@ export default {
|
||||
page: 1,
|
||||
limit: 10,
|
||||
pid: 0,
|
||||
attType: "jpg,jpeg,gif,png,bmp,PNG,JPG",
|
||||
attType: "image_ext_str",
|
||||
},
|
||||
classifyId: 0,
|
||||
myHeaders: {"X-Token": getToken()},
|
||||
@ -478,7 +505,7 @@ export default {
|
||||
// 表单分类
|
||||
handlerGetList() {
|
||||
let datas = {
|
||||
name: "全部图片",
|
||||
name: "默认",
|
||||
id: "",
|
||||
};
|
||||
treeCategroy(this.treeFrom).then((data) => {
|
||||
@ -494,7 +521,7 @@ export default {
|
||||
// 所有分类
|
||||
getList() {
|
||||
const data = {
|
||||
name: "全部图片",
|
||||
name: "默认",
|
||||
id: 10000,
|
||||
};
|
||||
treeCategroy(this.treeFrom).then((res) => {
|
||||
@ -651,27 +678,30 @@ export default {
|
||||
// 点击使用选中图片
|
||||
checkPics() {
|
||||
if (!this.checkPicList.length)
|
||||
return this.$message.warning("请先选择图片");
|
||||
return this.$message.warning("请先选择");
|
||||
if (this.$route && this.$route.query.field === "dialog") {
|
||||
let str = "";
|
||||
for (let i = 0; i < this.checkPicList.length; i++) {
|
||||
str += '<img src="' + this.checkPicList[i].sattDir + '">';
|
||||
if (this.typeDate ==='pic') {
|
||||
str += '<img src="' + this.checkPicList[i].sattDir + '">';
|
||||
} else {
|
||||
str += '<embed src="' + this.checkPicList[i].sattDir + '">';
|
||||
}
|
||||
}
|
||||
/* eslint-disable */
|
||||
nowEditor.dialog.close(true);
|
||||
nowEditor.editor.setContent(str, true);
|
||||
} else {
|
||||
if (this.isMore === "1" && this.checkPicList.length > 1) {
|
||||
return this.$message.warning("最多只能选一张图片");
|
||||
return this.$message.warning("最多只能选一张");
|
||||
}
|
||||
|
||||
this.$emit("getImage", [...this.checkedMore, ...this.checkPicList]);
|
||||
}
|
||||
},
|
||||
// 删除图片
|
||||
// 删除删除
|
||||
editPicList(tit) {
|
||||
if (!this.checkPicList.length)
|
||||
return this.$message.warning("请先选择图片");
|
||||
return this.$message.warning("请先选择");
|
||||
this.$modalSure().then(() => {
|
||||
fileDeleteApi(this.ids.join(",")).then(() => {
|
||||
this.$message.success("刪除成功");
|
||||
@ -689,7 +719,7 @@ export default {
|
||||
};
|
||||
this.getMove();
|
||||
} else {
|
||||
this.$message.warning("请先选择图片");
|
||||
this.$message.warning("请先选择");
|
||||
}
|
||||
},
|
||||
getMove() {
|
||||
@ -713,10 +743,10 @@ export default {
|
||||
},
|
||||
videoChange(val) {
|
||||
if (val == false) {
|
||||
this.$set(this.tableData, "attType", "jpg,jpeg,gif,png,bmp,PNG,JPG");
|
||||
this.$set(this.tableData, "attType", "image_ext_str");
|
||||
this.getFileList();
|
||||
} else {
|
||||
this.$set(this.tableData, "attType", "video/mp4");
|
||||
this.$set(this.tableData, "attType", "file_ext_str");
|
||||
this.getFileList();
|
||||
}
|
||||
},
|
||||
@ -901,8 +931,8 @@ export default {
|
||||
.gridPic {
|
||||
margin-right: 15px;
|
||||
margin-bottom: 10px;
|
||||
width: 110px;
|
||||
height: 110px;
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
|
||||
@ -918,6 +948,12 @@ export default {
|
||||
display: block;
|
||||
}
|
||||
|
||||
embed {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.num_badge {
|
||||
position: absolute;
|
||||
bottom: 6px;
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog
|
||||
title="上传图片"
|
||||
title="上传附件"
|
||||
:visible.sync="visible"
|
||||
width="950px"
|
||||
:modal="booleanVal"
|
||||
|
@ -22,6 +22,31 @@ const operationRouter = {
|
||||
icon: 'clipboard'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'help',
|
||||
name: 'help',
|
||||
component: () => import('@/views/systemSetting/help'),
|
||||
meta: {
|
||||
title: '帮助与问题',
|
||||
icon: 'clipboard'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'home',
|
||||
name: 'home',
|
||||
component: () => import('@/views/home'),
|
||||
meta: {
|
||||
title: '楼层设置',
|
||||
icon: 'clipboard'
|
||||
}
|
||||
},
|
||||
{
|
||||
path: 'homeItem/list/:id',
|
||||
component: () => import('@/views/home/item/index'),
|
||||
name: 'homeItem',
|
||||
meta: { title: '楼层项', noCache: true, activeMenu: `/home/index` },
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path:'notification',
|
||||
name:'notification',
|
||||
@ -148,6 +173,12 @@ const operationRouter = {
|
||||
name: 'freightSet',
|
||||
meta: { title: '配送模板', noCache: true }
|
||||
},
|
||||
{
|
||||
path: 'deliveryTime',
|
||||
component: () => import('@/views/deliveryTime'),
|
||||
name: 'deliveryTime',
|
||||
meta: { title: '送达时间', noCache: true }
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
|
@ -36,6 +36,12 @@ const storeRouter = {
|
||||
name: 'StoreComment',
|
||||
meta: { title: '商品评论', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'problem/:id?',
|
||||
component: () => import('@/views/store/problem/index'),
|
||||
name: 'Problem',
|
||||
meta: { title: '商品常见问题', icon: '' }
|
||||
},
|
||||
{
|
||||
path: 'list/creatProduct/:id?/:isDisabled?',
|
||||
component: () => import('@/views/store/creatStore/index'),
|
||||
|
124
src/views/deliveryTime/add-and-update.vue
Normal file
124
src/views/deliveryTime/add-and-update.vue
Normal file
@ -0,0 +1,124 @@
|
||||
<template>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="!dataForm.id ? '添加' : '修改'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible">
|
||||
<!-- 新增和创建表单表单 -->
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="120px">
|
||||
<el-form-item label="预约配送天数" prop="appointDay">
|
||||
<el-input v-model="dataForm.appointDay" placeholder="预约配送天数"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="上午配送时间" prop="amSendHour">
|
||||
<el-input v-model="dataForm.amSendHour" placeholder="9点-12点(填入:9-12)"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="下午配送时间" prop="pmSendHour">
|
||||
<el-input v-model="dataForm.pmSendHour" placeholder="15点-19点(填入:15-19)"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="配送区间(分钟)" prop="sendSplit">
|
||||
<el-input v-model="dataForm.sendSplit" placeholder="配送区间(分钟)"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-select v-model="dataForm.type" prop="type">
|
||||
<el-option label="通用" :value="1"></el-option>
|
||||
<el-option label="指定门店" :value="2"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店" prop="storeId" v-if="dataForm.type === 2">
|
||||
<el-select v-model="dataForm.storeId" filterable placeholder="请选择门店">
|
||||
<el-option v-for="(item,i) in storeData" :value="item.id" :key="i" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否无效" prop="status">
|
||||
<el-select v-model="dataForm.status">
|
||||
<el-option label="有效" :value="1"></el-option>
|
||||
<el-option label="无效" :value="0"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from '@/api/deliverytime.js'
|
||||
import { storeListApi } from '@/api/storePoint';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
dataForm: {
|
||||
id: 0,
|
||||
appointDay: '',
|
||||
amSendHour: '',
|
||||
pmSendHour: '',
|
||||
sendSplit: '',
|
||||
type: 1,
|
||||
storeId: '',
|
||||
status: '',
|
||||
},
|
||||
storeData:[],
|
||||
dataRule: {
|
||||
appointDay: [
|
||||
{required: true, message: '请填写预约配送天数', trigger: 'blur'}
|
||||
],
|
||||
amSendHour: [
|
||||
{required: true, message: '请填写上午配送时间', trigger: 'blur'}
|
||||
],
|
||||
pmSendHour: [
|
||||
{required: true, message: '请填写下午配送时间', trigger: 'blur'}
|
||||
],
|
||||
sendSplit: [
|
||||
{required: true, message: '请填写配送区间', trigger: 'blur'}
|
||||
],
|
||||
type: [
|
||||
{required: true, message: '请选择类型', trigger: 'blur'}
|
||||
],
|
||||
status: [
|
||||
{required: true, message: '请选择状态', trigger: 'blur'}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) { // 初始化表单验证规则
|
||||
this.dataForm.id = id || 0
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
if (this.dataForm.id) {
|
||||
api.detailApi(id).then(res => {
|
||||
this.dataForm = res;
|
||||
})
|
||||
}
|
||||
})
|
||||
this.storeList()
|
||||
},
|
||||
storeList() {
|
||||
storeListApi({status: 1, page: 1, limit: 9999}).then((data) => {
|
||||
this.storeData = data.list;
|
||||
});
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.dataForm.id ?
|
||||
api.updateApi(this.dataForm).then(res => {
|
||||
this.$message.success('修改成功');
|
||||
}) :
|
||||
api.createApi(this.dataForm).then(res => {
|
||||
this.$message.success('新增成功');
|
||||
});
|
||||
this.visible = false;
|
||||
this.$emit('refreshDataList');
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
158
src/views/deliveryTime/index.vue
Normal file
158
src/views/deliveryTime/index.vue
Normal file
@ -0,0 +1,158 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<el-button v-hasPermi="['admin:deliveryTime:save']" size="mini" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="dataList"
|
||||
border
|
||||
v-loading="dataListLoading"
|
||||
@selection-change="selectionChangeHandle"
|
||||
style="width: 100%"
|
||||
size="mini">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="id"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="编号">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="appointDay"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="预约天数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="amSendHour"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="上午配送(点)">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="pmSendHour"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="下午配送(点)">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="sendSplit"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="配送区间(分钟)">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="类型">
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview">
|
||||
<span v-if="scope.row.type == 1">通用</span>
|
||||
<span v-else-if="scope.row.type == 2">指定门店:{{scope.row.storeId}}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="状态">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.status == 0">无效</span>
|
||||
<span v-else-if="scope.row.status == 1">有效</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="创建时间">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="150"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="pageIndex"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
<!-- 表单弹窗, 新增数据和修改数据 -->
|
||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AddOrUpdate from './add-and-update'
|
||||
import * as api from '@/api/deliverytime.js'
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
dataList: [],
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
totalPage: 0,
|
||||
dataListLoading: false,
|
||||
dataListSelections: [],
|
||||
addOrUpdateVisible: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
AddOrUpdate
|
||||
},
|
||||
created() {
|
||||
this.getDataList()
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList () {
|
||||
this.dataListLoading = true
|
||||
api.listApi().then(res => {
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.dataListLoading = false
|
||||
}).catch(res => {
|
||||
this.dataListLoading = false
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
// 每页数
|
||||
sizeChangeHandle (val) {
|
||||
this.pageSize = val
|
||||
this.pageIndex = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 当前页
|
||||
currentChangeHandle (val) {
|
||||
this.pageIndex = val
|
||||
this.getDataList()
|
||||
},
|
||||
// 新增 / 修改
|
||||
addOrUpdateHandle (id) {
|
||||
this.addOrUpdateVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.init(id)
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
232
src/views/home/add-and-update.vue
Normal file
232
src/views/home/add-and-update.vue
Normal file
@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="!dataForm.id ? '添加' : '修改'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible"
|
||||
@close="dialogClose"
|
||||
>
|
||||
<!-- 新增和创建表单表单 -->
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()"
|
||||
label-width="110px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="dataForm.name" placeholder="名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="dataForm.title" placeholder="标题"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="展示渠道" prop="channel">
|
||||
<el-select v-model="dataForm.channel" placeholder="展示渠道" class="selWidth" style="width: 220px">
|
||||
<el-option :value="item.id" v-for="(item, index) in channelList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="楼层图:" prop="imgUrl" v-if="this.dataForm.channel === '1'">
|
||||
<div class="upLoadPicBox" @click="modalPicTap('1')" :disabled="isDisabled">
|
||||
<div v-if="dataForm.imgUrl" class="pictrue"><img :src="dataForm.imgUrl"></div>
|
||||
<div v-else class="upLoad">
|
||||
<i class="el-icon-camera cameraIconfont" />
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="导航" prop="business" v-if="this.dataForm.channel === '2'">
|
||||
<el-select v-model="dataForm.business" placeholder="展示渠道" class="selWidth" style="width: 220px">
|
||||
<el-option :value="item.id" v-for="(item, index) in categoryList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="跳转类型" prop="jumpType">
|
||||
<el-select v-model="dataForm.jumpType" placeholder="请选择" class="selWidthd" style="width: 220px" @change="jumpTypeChange()">
|
||||
<el-option :value="item.id" v-for="(item, index) in jumpTypeList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="选分类" prop="jumpIds" v-if="dataForm.jumpType == 2">
|
||||
<el-select v-model="dataForm.jumpIds" placeholder="选分类" class="selWidthd" style="width: 220px" @click.native="selectCate">
|
||||
<el-option :value="item.id" v-for="(item, index) in productCateList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="选商品" prop="jumpIds" v-else-if="dataForm.jumpType == 1">
|
||||
<el-input v-model="dataForm.jumpIds" placeholder="选商品" @click.native="selectProductSwitch(1)"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="选商品" prop="jumpIds" v-else-if="dataForm.jumpType == 3">
|
||||
<el-input v-model="dataForm.jumpIds" placeholder="选商品" @click.native="selectProductSwitch(1)"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="选活动" prop="jumpIds" v-if="dataForm.jumpType === 4">-->
|
||||
<!-- <el-input v-model="dataForm.jumpIds" placeholder="选活动"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- <el-form-item label="跳转地址" prop="jumpUrl">-->
|
||||
<!-- <el-input v-model="dataForm.jumpUrl" placeholder="跳转地址"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="是否无效" prop="status">
|
||||
<el-select v-model="dataForm.delFlag" class="selWidthd" style="width: 220px">
|
||||
<el-option label="有效" :value="1"></el-option>
|
||||
<el-option label="无效" :value="0"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="选择商品"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="selectProductVisible"
|
||||
@close="selectProductSwitch(0)">
|
||||
<!-- 选择商品 -->
|
||||
<selectProductWindow v-if="selectProductShow" ref="select_product_window"/>
|
||||
<el-button type="primary" @click="selectProductOk()" style="margin-left: 90%">确定</el-button>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from '@/api/home.js'
|
||||
import {listCategroy} from "@/api/categoryApi";
|
||||
import selectProductWindow from "@/views/home/selectProduct";
|
||||
|
||||
export default {
|
||||
components: {selectProductWindow},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: false, //this.$route.params.isDisabled==='1'?true:false,
|
||||
visible: false,
|
||||
categoryList: [],
|
||||
channelList: [
|
||||
{id: '1', name: '首页楼层'},
|
||||
{id: '2', name: '随心配套餐层'},
|
||||
{id: '3', name: '首页精品推荐'},
|
||||
],
|
||||
jumpTypeList: [
|
||||
{id: 0, name: '无跳转'},
|
||||
{id: 1, name: '商品详情'},
|
||||
{id: 2, name: '分类列表'},
|
||||
{id: 3, name: '商品列表'},
|
||||
// {id: 4, name: '活动栏目'},
|
||||
],
|
||||
productCateList: [],
|
||||
selectProductVisible: false,
|
||||
selectProductShow: false,
|
||||
dataForm: {
|
||||
id: 0,
|
||||
name: '',
|
||||
title: '',
|
||||
imgUrl: '',
|
||||
jumpType: '',
|
||||
jumpUrl: '',
|
||||
jumpIds: '',
|
||||
channel: '',
|
||||
business: '',
|
||||
delFlag: '',
|
||||
orderNo: '',
|
||||
beginTime: '',
|
||||
endTime: '',
|
||||
},
|
||||
dataRule: {
|
||||
name: [
|
||||
{required: true, message: '名称 为必填项', trigger: 'blur'}
|
||||
],
|
||||
title: [
|
||||
{required: true, message: '标题 为必填项', trigger: 'blur'}
|
||||
],
|
||||
jumpType: [
|
||||
{required: true, message: '跳转类型 为必填项', trigger: 'blur'}
|
||||
],
|
||||
channel: [
|
||||
{required: true, message: '展示渠道 为必填项', trigger: 'blur'}
|
||||
],
|
||||
orderNo: [
|
||||
{required: true, message: '排序 为必填项', trigger: 'blur'}
|
||||
],
|
||||
delFlag: [
|
||||
{required: true, message: '是否有效 为必填项', trigger: 'blur'}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) { // 初始化表单验证规则
|
||||
this.dataForm.id = id || 0
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
this.dialogClose();
|
||||
if (this.dataForm.id) {
|
||||
api.homeDetailApi(id).then(res => {
|
||||
this.dataForm = res;
|
||||
})
|
||||
}
|
||||
this.getCategoryList()
|
||||
})
|
||||
},
|
||||
dialogClose() {
|
||||
this.dataForm.jumpType = '';
|
||||
this.dataForm.jumpIds = '';
|
||||
this.dataForm.delFlag = '';
|
||||
this.dataForm.business = '';
|
||||
},
|
||||
getCategoryList() {
|
||||
listCategroy({ limit: 999, page: '1', status: 1, type: 8 }).then(res => {
|
||||
this.categoryList = res.list;
|
||||
})
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.dataForm.id ?
|
||||
api.homeUpdateApi(this.dataForm).then(res => {
|
||||
this.$message.success('修改成功');
|
||||
}) :
|
||||
api.homeCreateApi(this.dataForm).then(res => {
|
||||
this.$message.success('新增成功');
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.$emit('refreshDataList')
|
||||
}, 600)
|
||||
this.visible = false;
|
||||
}
|
||||
})
|
||||
},
|
||||
jumpTypeChange() {
|
||||
this.dataForm.jumpIds = '';
|
||||
},
|
||||
selectProductOk() {
|
||||
let products = this.$refs['select_product_window'].dataListSelections;
|
||||
if (products.length <= 0) {
|
||||
this.$message.error('请选择商品');
|
||||
return;
|
||||
}
|
||||
let ids = products.map(item => {return item.id})
|
||||
this.dataForm.jumpIds = ids + "";
|
||||
this.selectProductSwitch(0);
|
||||
},
|
||||
selectProductSwitch(flag) {
|
||||
this.selectProductVisible = (flag === 1 ? true : false);
|
||||
this.selectProductShow = (flag === 1 ? true : false);
|
||||
},
|
||||
selectCate() {
|
||||
listCategroy({ limit: 999, page: '1', status: 1, type: 1 }).then(res => {
|
||||
this.productCateList = res.list;
|
||||
})
|
||||
},
|
||||
// 点击商品图
|
||||
modalPicTap (tit, num, i,status) {
|
||||
const _this = this;
|
||||
if(_this.isDisabled) return;
|
||||
this.$modalUpload(function(img) {
|
||||
if(tit==='1'&& !num){
|
||||
_this.dataForm.imgUrl = img[0].sattDir
|
||||
}
|
||||
},tit, 'content')
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
232
src/views/home/index.vue
Normal file
232
src/views/home/index.vue
Normal file
@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form ref="form" inline :model="dataForm" size="small">
|
||||
<el-form-item label="标题:">
|
||||
<el-input v-model="dataForm.name" placeholder="请输入名称/标题" class="selWidth" clearable>
|
||||
<el-button slot="append" icon="el-icon-search" @click="handleSearch" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="展示渠道:">
|
||||
<el-select v-model="dataForm.channel" placeholder="展示渠道" clearable class="selWidth" @change="handleSearch">
|
||||
<el-option label="--请选择--" value=""></el-option>
|
||||
<el-option label="首页楼层" :value="1"></el-option>
|
||||
<el-option label="随心配套餐层" :value="2"></el-option>
|
||||
<el-option label="首页精品推荐" :value="3"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="acea-row">
|
||||
<el-button v-hasPermi="['admin:home:save']" size="mini" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>
|
||||
<el-button v-hasPermi="['admin:home:delete']" size="mini" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="dataListLoading"
|
||||
:data="dataList"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
highlight-current-row
|
||||
@selection-change="selectionChangeHandle"
|
||||
>
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="props">
|
||||
<el-form label-position="left" inline class="demo-table-expand">
|
||||
<el-form-item label="跳转参数解析: " style="width: 100%">
|
||||
<span v-for="(value, key) in props.row.jumpIdsMap" class="mr10"> {{ key }} :{{ value }} <br/></span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="name"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="标题">
|
||||
</el-table-column>
|
||||
<el-table-column label="楼层图" min-width="80" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview" style="text-align: center">
|
||||
<el-image v-if="scope.row.imgUrl"
|
||||
style="width: 36px; height: 36px;"
|
||||
:src="scope.row.imgUrl"
|
||||
:preview-src-list="[scope.row.imgUrl]"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="jumpType"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="跳转类型">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.jumpType == 0">无</span>
|
||||
<span v-else-if="scope.row.jumpType == 1">商品详情</span>
|
||||
<span v-else-if="scope.row.jumpType == 2">分类列表</span>
|
||||
<span v-else-if="scope.row.jumpType == 3">商品列表</span>
|
||||
<!-- <span v-else-if="scope.row.jumpType == 4">活动栏目</span>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="jumpIds"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="跳转参数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="channelStr"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="展示渠道">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.channel == 1">首页楼层</span>
|
||||
<span v-else-if="scope.row.channel == 2">随心配套餐层</span>
|
||||
<span v-else-if="scope.row.channel == 3">首页精品推荐</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="orderNo"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="排序">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="状态">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.delFlag == 0">无效</span>
|
||||
<span v-else-if="scope.row.delFlag == 1">有效</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="250"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<router-link :to="{path: '/operation/homeItem/list/' + scope.row.id + ''}">
|
||||
<el-button type="text" size="small" class="mr10">楼层项</el-button>
|
||||
</router-link>
|
||||
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="pageIndex"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
<!-- 表单弹窗, 新增数据和修改数据 -->
|
||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import AddOrUpdate from './add-and-update'
|
||||
import * as api from '@/api/home.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataForm: {
|
||||
name: '',
|
||||
},
|
||||
dataList: [],
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
totalPage: 0,
|
||||
dataListLoading: false,
|
||||
dataListSelections: [],
|
||||
addOrUpdateVisible: false,
|
||||
addOrUpdateItemVisible: false,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
AddOrUpdate
|
||||
},
|
||||
created() {
|
||||
this.getDataList()
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true
|
||||
api.homeListApi(this.dataForm).then(res => {
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.dataListLoading = false
|
||||
}).catch(res => {
|
||||
this.dataListLoading = false
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.page = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 每页数
|
||||
sizeChangeHandle(val) {
|
||||
this.pageSize = val
|
||||
this.pageIndex = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 当前页
|
||||
currentChangeHandle(val) {
|
||||
this.pageIndex = val
|
||||
this.getDataList()
|
||||
},
|
||||
// 多选
|
||||
selectionChangeHandle(val) {
|
||||
this.dataListSelections = val
|
||||
},
|
||||
// 新增 / 修改
|
||||
addOrUpdateHandle(id) {
|
||||
this.addOrUpdateVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.init(id)
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
deleteHandle(id) {
|
||||
var ids = id ? [id] : this.dataListSelections.map(item => {
|
||||
return item.id
|
||||
})
|
||||
this.$confirm(`您确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
api.homeDeleteApi({ids : ids.join(',')}).then(res => {
|
||||
this.$message.success('操作成功')
|
||||
this.getDataList()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
295
src/views/home/item/add-item.vue
Normal file
295
src/views/home/item/add-item.vue
Normal file
@ -0,0 +1,295 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="'楼层子项调整'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
<el-form :model="itemForm" :rules="dataRule" ref="itemForm">
|
||||
<el-form-item>
|
||||
<el-button type="primary" size="mini" icon="el-icon-edit" @click="addRow()">
|
||||
添加行
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item prop="region">
|
||||
<el-table :data="itemForm.region" border style="width: 100%" size="mini" class="tempBox">
|
||||
<el-table-column min-width="120px" align="center" :label="'名称'" prop="name">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="dataRule.name" :prop="'region.'+scope.$index+'.name'">
|
||||
<el-input v-model="scope.row.name" placeholder="名称"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="120px" align="center" :label="'标题'" prop="title">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="dataRule.title" :prop="'region.'+scope.$index+'.title'">
|
||||
<el-input v-model="scope.row.title" placeholder="标题"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="50px" align="center" :label="'楼层图'" prop="imgUrl">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="dataRule.imgUrl" :prop="'region.'+scope.$index+'.imgUrl'">
|
||||
<div class="upLoadPicBox" @click="modalPicTap('1', scope.$index)" :disabled="isDisabled">
|
||||
<div v-if="scope.row.imgUrl" class="pictrue"><img :src="scope.row.imgUrl"></div>
|
||||
<div v-else class="upLoad"><i class="el-icon-camera cameraIconfont" /></div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="120px" align="center" :label="'跳转类型'" prop="jumpType">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="dataRule.jumpType" :prop="'region.'+scope.$index+'.jumpType'">
|
||||
<el-select v-model="scope.row.jumpType" placeholder="请选择" class="selWidthd" style="width: 220px" @change="jumpTypeChange(scope.$index)">
|
||||
<el-option :value="item.id" v-for="(item, index) in jumpTypeList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="120px" align="center" :label="'跳转类型'" prop="jumpIds">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="dataRule.jumpIds" :prop="'region.'+scope.$index+'.jumpIds'">
|
||||
<el-input v-if="scope.row.jumpType === 1" v-model="scope.row.jumpIdsText" placeholder="选商品" @click.native="selectProductSwitch(1, 1, scope.$index)"></el-input>
|
||||
<!-- <el-input v-if="scope.row.jumpType === 1 || scope.row.jumpType === 3" v-model="scope.row.jumpIds" type="hidden"></el-input>-->
|
||||
|
||||
<el-select v-if="scope.row.jumpType === 2" v-model="scope.row.jumpIds" placeholder="选分类" class="selWidthd" style="width: 220px" @click.native="selectCate">
|
||||
<el-option :value="item.id" v-for="(item, index) in productCateList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
|
||||
<el-input v-if="scope.row.jumpType === 3" v-model="scope.row.jumpIdsText" placeholder="选商品" @click.native="selectProductSwitch(1, 0, scope.$index)"></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column min-width="120px" align="center" :label="'跳转地址'" prop="jumpIds">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <el-form-item :rules="dataRule.jumpUrl" :prop="'region.'+scope.$index+'.jumpUrl'">-->
|
||||
<!-- <el-input v-model="scope.row.jumpUrl" placeholder="跳转地址"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column align="center" :label="'排序'" prop="orderNo">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="dataRule.orderNo" :prop="'region.'+scope.$index+'.orderNo'">
|
||||
<el-input-number v-model="scope.row.orderNo" placeholder="排序" controls-position="right" :min="0" style="width: 100px"/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="操作" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
size="small"
|
||||
@click="delRow(scope.$index)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="选择商品"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="selectProductVisible"
|
||||
@close="selectProductSwitch(0)">
|
||||
<!-- 选择商品 -->
|
||||
<selectProductWindow v-if="selectProductShow" ref="select_product_window"/>
|
||||
<el-button type="primary" @click="selectProductOk()" style="margin-left: 90%">确定</el-button>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from '@/api/homeItem.js'
|
||||
import {listCategroy} from "@/api/categoryApi";
|
||||
import selectProductWindow from "@/views/home/selectProduct";
|
||||
|
||||
const defaultRole = {
|
||||
region: [{
|
||||
name: '',
|
||||
title: '',
|
||||
homeId: '',
|
||||
imgUrl: '',
|
||||
jumpType: '',
|
||||
jumpUrl: '',
|
||||
jumpIds: '',
|
||||
jumpIdsText: '',
|
||||
business: '',
|
||||
delFlag: '',
|
||||
orderNo: '',
|
||||
}],
|
||||
}
|
||||
export default {
|
||||
components: {selectProductWindow},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: false,
|
||||
visible: false,
|
||||
jumpTypeList: [
|
||||
{id: 0, name: '无跳转'},
|
||||
{id: 1, name: '商品详情'},
|
||||
{id: 2, name: '分类列表'},
|
||||
{id: 3, name: '商品列表'},
|
||||
// {id: 4, name: '活动栏目'},
|
||||
],
|
||||
homeId: '',
|
||||
productCateList: [],
|
||||
itemForm: Object.assign({}, defaultRole),
|
||||
selectProductVisible: false,
|
||||
selectProductShow: false,
|
||||
selectProductNum: 0,
|
||||
selectProductIndex: 0,
|
||||
dataForm: {
|
||||
id: 0,
|
||||
name: '',
|
||||
title: '',
|
||||
homeId: '',
|
||||
imgUrl: '',
|
||||
jumpType: '',
|
||||
jumpUrl: '',
|
||||
jumpIds: '',
|
||||
jumpIdsText: '',
|
||||
business: '',
|
||||
delFlag: '',
|
||||
orderNo: '',
|
||||
},
|
||||
dataRule: {
|
||||
name: [
|
||||
{required: true, message: '名称 为必填项', trigger: 'blur'}
|
||||
],
|
||||
title: [
|
||||
{required: true, message: '标题 为必填项', trigger: 'blur'}
|
||||
],
|
||||
jumpType: [
|
||||
{required: true, message: '跳转类型 为必填项', trigger: 'blur'}
|
||||
],
|
||||
orderNo: [
|
||||
{required: true, message: '排序 为必填项', trigger: 'blur'}
|
||||
],
|
||||
delFlag: [
|
||||
{required: true, message: '是否有效 为必填项', trigger: 'blur'}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(homeId) { // 初始化表单验证规则
|
||||
this.homeId = homeId
|
||||
this.visible = true
|
||||
document.querySelector('.el-dialog__wrapper .el-dialog').style.width = '75%'
|
||||
},
|
||||
// 添加行
|
||||
addRow() {
|
||||
this.itemForm.region.push(Object.assign({}, {
|
||||
name: '',
|
||||
title: '',
|
||||
homeId: '',
|
||||
imgUrl: '',
|
||||
jumpType: '',
|
||||
jumpUrl: '',
|
||||
jumpIds: '',
|
||||
jumpIdsText: '',
|
||||
business: '',
|
||||
delFlag: '',
|
||||
orderNo: '',
|
||||
}))
|
||||
},
|
||||
delRow(index) {
|
||||
this.itemForm.region.splice(index, 1)
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['itemForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true;
|
||||
this.itemForm.region.forEach((el, index) => {
|
||||
el.homeId = this.homeId
|
||||
})
|
||||
const itemList = this.itemForm.region
|
||||
api.createApi(itemList).then(res => {
|
||||
this.$message.success('操作成功')
|
||||
this.handleClose()
|
||||
this.$nextTick(() => {
|
||||
this.dialogVisible = false
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.$emit('refreshDataList')
|
||||
}, 600)
|
||||
this.loading = false;
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
jumpTypeChange(index) {
|
||||
this.itemForm.region[index].jumpIds = '';
|
||||
this.itemForm.region[index].jumpIdsText = '';
|
||||
},
|
||||
selectProductOk() {
|
||||
let products = this.$refs['select_product_window'].dataListSelections;
|
||||
if (products.length <= 0) {
|
||||
this.$message.error('请选择商品');
|
||||
return;
|
||||
}
|
||||
if (this.selectProductNum !== 0 && this.selectProductNum < products.length) {
|
||||
this.$message.error('只能选择' + this.selectProductNum + '件商品');
|
||||
return;
|
||||
}
|
||||
let ids = products.map(item => { return item.id })
|
||||
let storeName = products.map(item => { return item.storeName })
|
||||
this.itemForm.region[this.selectProductIndex].jumpIds = ids + "";
|
||||
this.itemForm.region[this.selectProductIndex].jumpIdsText = storeName + "";
|
||||
this.selectProductSwitch(0);
|
||||
},
|
||||
selectProductSwitch(flag, num, index) {
|
||||
this.selectProductVisible = (flag === 1 ? true : false);
|
||||
this.selectProductShow = (flag === 1 ? true : false);
|
||||
this.selectProductNum = (flag === 1 ? num : 0);
|
||||
this.selectProductIndex = (flag === 1 ? index : 0);
|
||||
},
|
||||
selectCate() {
|
||||
listCategroy({limit: 999, page: '1', status: 1, type: 1}).then(res => {
|
||||
this.productCateList = res.list;
|
||||
})
|
||||
},
|
||||
handleClose() {
|
||||
this.visible = false
|
||||
this.itemForm = {
|
||||
region: [{
|
||||
name: '',
|
||||
title: '',
|
||||
homeId: '',
|
||||
imgUrl: '',
|
||||
jumpType: '',
|
||||
jumpUrl: '',
|
||||
jumpIds: '',
|
||||
jumpIdsText: '',
|
||||
business: '',
|
||||
delFlag: '',
|
||||
orderNo: '',
|
||||
}],
|
||||
};
|
||||
},
|
||||
// 点击商品图
|
||||
modalPicTap(tit, index) {
|
||||
let _this = this.itemForm.region[index];
|
||||
this.$modalUpload(function (img) {
|
||||
if (tit === '1') {
|
||||
_this.imgUrl = img[0].sattDir
|
||||
}
|
||||
}, tit, 'content')
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
232
src/views/home/item/index.vue
Normal file
232
src/views/home/item/index.vue
Normal file
@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form ref="form" inline :model="dataForm" size="small">
|
||||
<el-form-item label="标题:">
|
||||
<el-input v-model="dataForm.name" placeholder="请输入名称/标题" class="selWidth" clearable>
|
||||
<el-button slot="append" icon="el-icon-search" @click="handleSearch" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="acea-row">
|
||||
<el-button v-hasPermi="['admin:home:save']" size="mini" type="primary" @click="addHandle()">新增数据</el-button>
|
||||
<el-button v-hasPermi="['admin:home:delete']" size="mini" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="dataListLoading"
|
||||
:data="dataList"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
highlight-current-row
|
||||
@selection-change="selectionChangeHandle"
|
||||
>
|
||||
<el-table-column type="expand">
|
||||
<template slot-scope="props">
|
||||
<el-form label-position="left" inline class="demo-table-expand">
|
||||
<el-form-item label="跳转参数解析: " style="width: 100%">
|
||||
<span v-for="(value, key) in props.row.jumpIdsMap" class="mr10"> {{ key }} :{{ value }} <br/></span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="name"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="标题">
|
||||
</el-table-column>
|
||||
<el-table-column label="封面图" min-width="80" header-align="center">
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview" style="text-align: center">
|
||||
<el-image v-if="scope.row.imgUrl"
|
||||
style="width: 36px; height: 36px;"
|
||||
:src="scope.row.imgUrl"
|
||||
:preview-src-list="[scope.row.imgUrl]"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="jumpType"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="跳转类型">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.jumpType == 0">无</span>
|
||||
<span v-else-if="scope.row.jumpType == 1">商品详情</span>
|
||||
<span v-else-if="scope.row.jumpType == 2">分类列表</span>
|
||||
<span v-else-if="scope.row.jumpType == 3">商品列表</span>
|
||||
<!-- <span v-else-if="scope.row.jumpType == 4">活动栏目</span>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="jumpIds"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="跳转参数">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="type"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="类型">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.type == 0">商品</span>
|
||||
<span v-else-if="scope.row.type == 1">轮播图</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="orderNo"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="排序">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="状态">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.delFlag == 0">无效</span>
|
||||
<span v-else-if="scope.row.delFlag == 1">有效</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="250"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="updateHandle(scope.row.id)">修改</el-button>
|
||||
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="pageIndex"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
<!-- 新增数据 -->
|
||||
<save v-if="addVisible" ref="save" @refreshDataList="getDataList"></save>
|
||||
<!-- 修改数据 -->
|
||||
<update v-if="updateVisible" ref="update" @refreshDataList="getDataList"></update>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Update from './update-item'
|
||||
import Save from './add-item'
|
||||
import * as api from '@/api/homeItem.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataForm: {
|
||||
homeId: 0,
|
||||
name: '',
|
||||
},
|
||||
dataList: [],
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
totalPage: 0,
|
||||
dataListLoading: false,
|
||||
dataListSelections: [],
|
||||
updateVisible: false,
|
||||
addVisible: false,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
Update, Save
|
||||
},
|
||||
mounted() {
|
||||
this.dataForm.homeId = this.$route.params.id
|
||||
this.getDataList()
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true
|
||||
api.listApi(this.dataForm).then(res => {
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.dataListLoading = false
|
||||
}).catch(res => {
|
||||
this.dataListLoading = false
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.page = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 每页数
|
||||
sizeChangeHandle(val) {
|
||||
this.pageSize = val
|
||||
this.pageIndex = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 当前页
|
||||
currentChangeHandle(val) {
|
||||
this.pageIndex = val
|
||||
this.getDataList()
|
||||
},
|
||||
// 多选
|
||||
selectionChangeHandle(val) {
|
||||
this.dataListSelections = val
|
||||
},
|
||||
// 修改
|
||||
updateHandle(id) {
|
||||
this.updateVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.update.init(id)
|
||||
})
|
||||
},
|
||||
// 添加
|
||||
addHandle() {
|
||||
this.addVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.save.init(this.dataForm.homeId)
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
deleteHandle(id) {
|
||||
var ids = id ? [id] : this.dataListSelections.map(item => {
|
||||
return item.id
|
||||
})
|
||||
this.$confirm(`您确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
api.deleteApi({ids : ids.join(',')}).then(res => {
|
||||
this.$message.success('操作成功')
|
||||
this.getDataList()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
204
src/views/home/item/update-item.vue
Normal file
204
src/views/home/item/update-item.vue
Normal file
@ -0,0 +1,204 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="'楼层子项调整'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible"
|
||||
>
|
||||
<!-- 新增和创建表单表单 -->
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()"
|
||||
label-width="110px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="dataForm.name" placeholder="名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="dataForm.title" placeholder="标题"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="楼层图:" prop="imgUrl">
|
||||
<div class="upLoadPicBox" @click="modalPicTap('1')" :disabled="isDisabled">
|
||||
<div v-if="dataForm.imgUrl" class="pictrue"><img :src="dataForm.imgUrl"></div>
|
||||
<div v-else class="upLoad">
|
||||
<i class="el-icon-camera cameraIconfont" />
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="跳转类型" prop="jumpType">
|
||||
<el-select v-model="dataForm.jumpType" placeholder="请选择" class="selWidthd" style="width: 220px" @change="jumpTypeChange()">
|
||||
<el-option :value="item.id" v-for="(item, index) in jumpTypeList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="选商品" prop="jumpIdsText" v-if="dataForm.jumpType == 1">
|
||||
<el-input v-model="dataForm.jumpIdsText" placeholder="选商品" @click.native="selectProductSwitch(1)"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="选分类" prop="jumpIds" v-else-if="dataForm.jumpType == 2">
|
||||
<el-select v-model="dataForm.jumpIds" placeholder="选分类" class="selWidthd" style="width: 220px" @click.native="selectCate">
|
||||
<el-option :value="item.id.toString()" v-for="(item, index) in productCateList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="选商品" prop="jumpIdsText" v-else-if="dataForm.jumpType == 3">
|
||||
<el-input v-model="dataForm.jumpIdsText" placeholder="选商品" @click.native="selectProductSwitch(1)"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="选活动" prop="jumpIds" v-if="dataForm.jumpType === 4">-->
|
||||
<!-- <el-input v-model="dataForm.jumpIds" placeholder="选活动"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<!-- <el-form-item label="跳转地址" prop="jumpUrl">-->
|
||||
<!-- <el-input v-model="dataForm.jumpUrl" placeholder="跳转地址"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="是否无效" prop="status">
|
||||
<el-select v-model="dataForm.delFlag" class="selWidthd" style="width: 220px">
|
||||
<el-option label="有效" :value="1"></el-option>
|
||||
<el-option label="无效" :value="0"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
title="选择商品"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="selectProductVisible"
|
||||
@close="selectProductSwitch(0)">
|
||||
<!-- 选择商品 -->
|
||||
<selectProductWindow v-if="selectProductShow" ref="select_product_window"/>
|
||||
<el-button type="primary" @click="selectProductOk()" style="margin-left: 90%">确定</el-button>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from '@/api/homeItem.js'
|
||||
import { listCategroy } from "@/api/categoryApi";
|
||||
import selectProductWindow from "@/views/home/selectProduct";
|
||||
|
||||
export default {
|
||||
components: {selectProductWindow},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: false,
|
||||
visible: false,
|
||||
jumpTypeList: [
|
||||
{id: 0, name: '无跳转'},
|
||||
{id: 1, name: '商品详情'},
|
||||
{id: 2, name: '分类列表'},
|
||||
{id: 3, name: '商品列表'},
|
||||
// {id: 4, name: '活动栏目'},
|
||||
],
|
||||
productCateList: [],
|
||||
selectProductVisible: false,
|
||||
selectProductShow: false,
|
||||
dataForm: {
|
||||
id: 0,
|
||||
name: '',
|
||||
title: '',
|
||||
homeId: '',
|
||||
imgUrl: '',
|
||||
jumpType: '',
|
||||
jumpUrl: '',
|
||||
jumpIds: '',
|
||||
jumpIdsText: '',
|
||||
business: '',
|
||||
delFlag: '',
|
||||
orderNo: '',
|
||||
},
|
||||
dataRule: {
|
||||
name: [
|
||||
{required: true, message: '名称 为必填项', trigger: 'blur'}
|
||||
],
|
||||
title: [
|
||||
{required: true, message: '标题 为必填项', trigger: 'blur'}
|
||||
],
|
||||
jumpType: [
|
||||
{required: true, message: '跳转类型 为必填项', trigger: 'blur'}
|
||||
],
|
||||
orderNo: [
|
||||
{required: true, message: '排序 为必填项', trigger: 'blur'}
|
||||
],
|
||||
delFlag: [
|
||||
{required: true, message: '是否有效 为必填项', trigger: 'blur'}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) { // 初始化表单验证规则
|
||||
document.querySelector('.el-dialog__wrapper .el-dialog').style.width = '45%'
|
||||
this.dataForm.id = id
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
if (this.dataForm.id) {
|
||||
api.detailApi(id).then(res => {
|
||||
this.dataForm = res;
|
||||
})
|
||||
this.selectCate()
|
||||
}
|
||||
})
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true;
|
||||
api.updateApi(this.dataForm).then(res => {
|
||||
this.$message.success('修改成功');
|
||||
})
|
||||
this.visible = false;
|
||||
setTimeout(() => {
|
||||
this.$emit('refreshDataList')
|
||||
}, 600)
|
||||
this.loading = false;
|
||||
}
|
||||
})
|
||||
},
|
||||
jumpTypeChange() {
|
||||
this.dataForm.jumpIds = '';
|
||||
this.dataForm.jumpIdsText = '';
|
||||
},
|
||||
selectProductOk() {
|
||||
let products = this.$refs['select_product_window'].dataListSelections;
|
||||
if (products.length <= 0) {
|
||||
this.$message.error('请选择商品');
|
||||
return;
|
||||
}
|
||||
if (this.selectProductNum !== 0 && this.selectProductNum < products.length) {
|
||||
this.$message.error('只能选择' + this.selectProductNum + '件商品');
|
||||
return;
|
||||
}
|
||||
let ids = products.map(item => { return item.id })
|
||||
let storeName = products.map(item => { return item.storeName })
|
||||
this.dataForm.jumpIds = ids + "";
|
||||
this.dataForm.jumpIdsText = storeName + "";
|
||||
this.selectProductSwitch(0);
|
||||
},
|
||||
selectProductSwitch(flag, num, index) {
|
||||
this.selectProductVisible = (flag === 1 ? true : false);
|
||||
this.selectProductShow = (flag === 1 ? true : false);
|
||||
this.selectProductNum = (flag === 1 ? num : 0);
|
||||
},
|
||||
selectCate() {
|
||||
listCategroy({ limit: 999, page: '1', status: 1, type: 1 }).then(res => {
|
||||
this.productCateList = res.list;
|
||||
})
|
||||
},
|
||||
// 点击商品图
|
||||
modalPicTap (tit, num, i,status) {
|
||||
const _this = this;
|
||||
if(_this.isDisabled) return;
|
||||
this.$modalUpload(function(img) {
|
||||
if(tit==='1'&& !num){
|
||||
_this.dataForm.imgUrl = img[0].sattDir
|
||||
}
|
||||
},tit, 'content')
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
120
src/views/home/selectProduct.vue
Normal file
120
src/views/home/selectProduct.vue
Normal file
@ -0,0 +1,120 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form inline :model="dataForm" size="small">
|
||||
<el-form-item label="商品搜索:">
|
||||
<el-input v-model="dataForm.keywords" placeholder="请输入商品名称,关键字,商品ID" class="selWidth"
|
||||
size="small" clearable>
|
||||
<el-button slot="append" icon="el-icon-search" @click="handleSearch" size="small"/>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="dataListLoading"
|
||||
:data="dataList"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
highlight-current-row
|
||||
@selection-change="selectionChangeHandle"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="id"
|
||||
label="ID"
|
||||
min-width="30%"
|
||||
/>
|
||||
<el-table-column label="商品图" min-width="30%">
|
||||
<template slot-scope="scope">
|
||||
<div class="demo-image__preview">
|
||||
<el-image
|
||||
style="width: 36px; height: 36px"
|
||||
:src="scope.row.image"
|
||||
:preview-src-list="[scope.row.image]"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称"
|
||||
prop="storeName"
|
||||
min-width="40%"
|
||||
:show-overflow-tooltip="true">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="dataForm.page"
|
||||
:page-sizes="[6, 20, 50, 100]"
|
||||
:page-size="dataForm.limit"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {productLstApi} from '@/api/store'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataForm: {
|
||||
keywords: '',
|
||||
page: 1,
|
||||
limit: 6,
|
||||
type: '0'
|
||||
},
|
||||
dataList: [],
|
||||
totalPage: 0,
|
||||
dataListSelections: [],
|
||||
dataListLoading: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDataList()
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true
|
||||
productLstApi(this.dataForm).then(res => {
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.dataListLoading = false
|
||||
}).catch(res => {
|
||||
this.dataListLoading = false
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.dataForm.page = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 每页数
|
||||
sizeChangeHandle(val) {
|
||||
this.dataForm.limit = val
|
||||
this.dataForm.page = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 当前页
|
||||
currentChangeHandle(val) {
|
||||
this.dataForm.page = val
|
||||
this.getDataList()
|
||||
},
|
||||
// 多选
|
||||
selectionChangeHandle(val) {
|
||||
this.dataListSelections = val
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
@ -9,10 +9,11 @@
|
||||
<el-radio-button label="all">全部 {{ '(' +orderChartType.all?orderChartType.all:0 + ')' }}</el-radio-button>
|
||||
<el-radio-button label="unPaid">未支付 {{ '(' +orderChartType.unPaid?orderChartType.unPaid:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="notShipped">未发货 {{ '(' +orderChartType.notShipped?orderChartType.notShipped:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="prepareIng">备货中 {{ '(' +orderChartType.prepareIng?orderChartType.prepareIng:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="spike">待收货 {{ '(' +orderChartType.spike?orderChartType.spike:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="bargain">待评价 {{ '(' +orderChartType.bargain?orderChartType.bargain:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="complete">交易完成 {{ '(' +orderChartType.complete?orderChartType.complete:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="toBeWrittenOff">待核销 {{ '(' +orderChartType.toBeWrittenOff?orderChartType.toBeWrittenOff:0+ ')' }}</el-radio-button>
|
||||
<!--<el-radio-button label="toBeWrittenOff">待核销 {{ '(' +orderChartType.toBeWrittenOff?orderChartType.toBeWrittenOff:0+ ')' }}</el-radio-button>-->
|
||||
<el-radio-button label="refunding">退款中 {{ '(' +orderChartType.refunding?orderChartType.refunding:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="refunded">已退款 {{ '(' +orderChartType.refunded?orderChartType.refunded:0+ ')' }}</el-radio-button>
|
||||
<el-radio-button label="deleted">已删除 {{ '(' +orderChartType.deleted?orderChartType.deleted:0+ ')' }}</el-radio-button>
|
||||
@ -55,16 +56,16 @@
|
||||
:data="tableData.data"
|
||||
size="mini"
|
||||
class="table"
|
||||
@selection-change="handleSelectionChange"
|
||||
highlight-current-row
|
||||
:header-cell-style=" {fontWeight:'bold'}"
|
||||
:row-key="(row)=>{ return row.orderId}"
|
||||
>
|
||||
<!-- @selection-change="handleSelectionChange" -->
|
||||
<!-- <el-table-column
|
||||
<el-table-column
|
||||
type="selection"
|
||||
:reserve-selection="true"
|
||||
width="55"
|
||||
/> -->
|
||||
/>
|
||||
<el-table-column
|
||||
label="订单号"
|
||||
min-width="210"
|
||||
@ -145,7 +146,7 @@
|
||||
<span class="acea-row">
|
||||
退款凭证:
|
||||
<template v-if="scope.row.refundReasonWapImg">
|
||||
<div v-for="(item, index) in scope.row.refundReasonWapImg.split(',')" :key="index" class="demo-image__preview" style="width: 35px;height: auto;display: inline-block;">
|
||||
<div v-for="(item, index) in scope.row.refundReasonWapImg.split(',')" :key="index" class="demo-image__preview" style="width: 35px;height: auto;margin-right:5px;display: inline-block;">
|
||||
<el-image
|
||||
:src="item"
|
||||
:preview-src-list="[item]"
|
||||
@ -169,8 +170,9 @@
|
||||
/>
|
||||
<el-table-column label="操作" min-width="150" fixed="right" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.paid === false" type="text" size="small" @click="edit(scope.row)" class="mr10" v-hasPermi="['admin:order:update:price']">编辑</el-button>
|
||||
<el-button v-if="scope.row.statusStr.key === 'notShipped' && scope.row.refundStatus ===0" type="text" size="small" class="mr10" @click="sendOrder(scope.row)" v-hasPermi="['admin:order:send']">发送货</el-button>
|
||||
<el-button v-if="scope.row.paid === false" type="text" size="small" @click="edit(scope.row)" class="mr10" v-hasPermi="['admin:order:update:price']">编辑</el-button>
|
||||
<el-button v-if="scope.row.statusStr.key === 'notShipped' && scope.row.refundStatus ===0" type="text" size="small" class="mr10" @click="prepare(scope.row)" v-hasPermi="['admin:order:send']">去备货</el-button>
|
||||
<el-button v-if="scope.row.statusStr.key === 'prepareIng' && scope.row.refundStatus ===0" type="text" size="small" class="mr10" @click="sendOrder(scope.row)" v-hasPermi="['admin:order:send']">发送货</el-button>
|
||||
<el-button v-if=" scope.row.statusStr.key === 'toBeWrittenOff' && scope.row.paid == true && scope.row.refundStatus === 0 " type="text" size="small" class="mr10" v-hasPermi="['admin:order:write:update']" @click="onWriteOff(scope.row)">立即核销</el-button>
|
||||
<el-dropdown trigger="click">
|
||||
<span class="el-dropdown-link">
|
||||
@ -306,7 +308,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { orderListDataApi, orderStatusNumApi, writeUpdateApi, orderListApi, updatePriceApi, orderLogApi, orderMarkApi, orderDeleteApi, orderRefuseApi, orderRefundApi,orderPrint } from '@/api/order'
|
||||
import { orderListDataApi, orderStatusNumApi, writeUpdateApi, orderListApi, updatePriceApi, orderLogApi, orderMarkApi, orderDeleteApi, orderRefuseApi, orderRefundApi, orderPrint, prepareApi } from '@/api/order'
|
||||
import cardsData from '@/components/cards/index'
|
||||
import zbParser from '@/components/FormGenerator/components/parser/ZBParser'
|
||||
import detailsFrom from './orderDetail'
|
||||
@ -316,7 +318,9 @@
|
||||
import Cookies from 'js-cookie'
|
||||
import { isWriteOff } from "@/utils";
|
||||
import {orderExcelApi} from '@/api/store'
|
||||
import { checkPermi } from "@/utils/permission"; // 权限判断函数
|
||||
import { checkPermi } from "@/utils/permission";
|
||||
import * as categoryApi from "@/api/categoryApi";
|
||||
import * as api from "@/api/systemHelp"; // 权限判断函数
|
||||
export default {
|
||||
name: 'orderlistDetails',
|
||||
components: {
|
||||
@ -436,7 +440,7 @@
|
||||
onOrderRefund(row) {
|
||||
this.refundData = {
|
||||
orderId: row.orderId,
|
||||
amount: row.payPrice,
|
||||
amount: row.refundPrice,
|
||||
type: ''
|
||||
}
|
||||
this.orderids = row.orderId
|
||||
@ -449,11 +453,25 @@
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
// 去备货
|
||||
prepare(row) {
|
||||
var ids = row ? row.id : this.ids;
|
||||
this.$confirm(`您确定对选中的订单进行【${row ? '备货' : '批量备货'}】操作?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
prepareApi({ ids: ids}).then(data => {
|
||||
this.$message.success('备货成功')
|
||||
this.getList()
|
||||
})
|
||||
})
|
||||
},
|
||||
// 发送
|
||||
sendOrder(row) {
|
||||
if(row.type===0){
|
||||
this.$refs.send.modals = true;
|
||||
this.$refs.send.getList();
|
||||
// this.$refs.send.getList();
|
||||
this.$refs.send.sheetInfo();
|
||||
}else{
|
||||
this.$refs.videoSend.modals = true;
|
||||
|
@ -66,6 +66,36 @@
|
||||
<div class="description-term">送货人电话:{{orderDatalist.deliveryId}}</div>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="orderDatalist.refundStatus > 0">
|
||||
<el-divider></el-divider>
|
||||
<div class="title">退款售后</div>
|
||||
<div class="acea-row">
|
||||
<div class="description-term">售后单号:{{orderDatalist.returnInfo.code}}</div>
|
||||
<div class="description-term">售后金额:{{orderDatalist.returnInfo.returnAmount}}</div>
|
||||
<div class="description-term">售后时间:{{orderDatalist.returnInfo.createTime}}</div>
|
||||
<div class="description-term">售后原因:{{orderDatalist.returnInfo.returnReason}}</div>
|
||||
<div class="description-term">售后数量:{{orderDatalist.returnInfo.returnNum}}</div>
|
||||
</div>
|
||||
<fieldset class="border p-3">
|
||||
<legend>凭证</legend>
|
||||
<div v-for="(item, index) in orderDatalist.refundReasonWapImg.split(',')" :key="index" class="demo-image__preview" style="width: 35px; height: 35px; margin-right: 15px; display: inline-block;">
|
||||
<el-image :src="item" :preview-src-list="[item]"/>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="border p-3">
|
||||
<legend>商品</legend>
|
||||
<div v-if=" orderDatalist.returnInfo.returnInfoList && orderDatalist.returnInfo.returnInfoList.length">
|
||||
<div v-for="(val, i ) in orderDatalist.returnInfo.returnInfoList" :key="i" class="tabBox acea-row row-middle">
|
||||
<div class="demo-image__preview mr10" style="width: 35px; height: 35px">
|
||||
<el-image :src="val.image" :preview-src-list="[val.image]"/>
|
||||
</div>
|
||||
<div class="text_overflow">
|
||||
<div class="description-term">{{ val.storeName + ' x '+ val.returnNum }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</template>
|
||||
<template v-if="orderDatalist.mark">
|
||||
<el-divider></el-divider>
|
||||
<div class="title">用户备注</div>
|
||||
@ -104,10 +134,14 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>0
|
||||
<script>
|
||||
import Level from "@/views/user/list/level.vue";
|
||||
|
||||
0
|
||||
import { orderDetailApi, getLogisticsInfoApi } from '@/api/order'
|
||||
export default {
|
||||
name: 'OrderDetail',
|
||||
components: {Level},
|
||||
props: {
|
||||
orderId: {
|
||||
type: String,
|
||||
@ -217,4 +251,10 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
fieldset {
|
||||
border: 1px solid #ccc; /* 设置边框 */
|
||||
padding: 10px; /* 设置内边距 */
|
||||
margin: 10px 0; /* 设置外边距 */
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -3,9 +3,9 @@
|
||||
<el-form ref="formItem" :model="formItem" label-width="110px" @submit.native.prevent :rules="rules">
|
||||
<el-form-item label="选择类型:">
|
||||
<el-radio-group v-model="formItem.type" @change="changeRadioType(formItem.type)">
|
||||
<el-radio label="1">发货</el-radio>
|
||||
<!-- <el-radio label="1">发货</el-radio>-->
|
||||
<el-radio label="2">送货</el-radio>
|
||||
<el-radio label="3">虚拟</el-radio>
|
||||
<!-- <el-radio label="3">虚拟</el-radio>-->
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<div v-if="formItem.type==='1'">
|
||||
@ -67,12 +67,12 @@
|
||||
<el-input v-model="formItem.deliveryTel" placeholder="请输入送货人电话" style="width:80%;"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="" >
|
||||
<div style="color:#CECECE;">顺丰请输入单号:收件人或寄件人手机号后四位</div>
|
||||
<div style="color:#CECECE;">例如:SF000000000000:3941</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<!-- <div>-->
|
||||
<!-- <el-form-item label="" >-->
|
||||
<!-- <div style="color:#CECECE;">顺丰请输入单号:收件人或寄件人手机号后四位</div>-->
|
||||
<!-- <div style="color:#CECECE;">例如:SF000000000000:3941</div>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </div>-->
|
||||
</el-form>
|
||||
<div slot="footer">
|
||||
<el-button type="primary" @click="putSend('formItem')">提交</el-button>
|
||||
@ -103,7 +103,7 @@
|
||||
data() {
|
||||
return {
|
||||
formItem: {
|
||||
type: '1',
|
||||
type: '2',
|
||||
expressRecordType: '1',
|
||||
expressId: '',
|
||||
expressCode: '',
|
||||
@ -220,7 +220,7 @@
|
||||
cancel(name) {
|
||||
this.modals = false;
|
||||
this.$refs[name].resetFields();
|
||||
this.formItem.type = '1';
|
||||
this.formItem.type = '2';
|
||||
this.formItem.expressRecordType = '1';
|
||||
}
|
||||
}
|
||||
|
@ -291,6 +291,13 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-show="currentTab === 1 && !isDisabled">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="质检报告:">
|
||||
<Tinymce v-model="formValidate.qualityTest"></Tinymce>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-show="currentTab === 1 && isDisabled">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="商品详情:">
|
||||
@ -298,6 +305,13 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-show="currentTab === 1 && isDisabled">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="质检报告:">
|
||||
<span v-html="formValidate.qualityTest || '无'"></span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 其他设置-->
|
||||
<el-row v-show="currentTab === 2">
|
||||
<el-col :span="24">
|
||||
@ -306,11 +320,11 @@
|
||||
<el-input-number v-model="formValidate.sort" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="积分:">
|
||||
<el-input-number v-model="formValidate.giveIntegral" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col v-bind="grid">-->
|
||||
<!-- <el-form-item label="积分:">-->
|
||||
<!-- <el-input-number v-model="formValidate.giveIntegral" :min="0" placeholder="请输入排序" :disabled="isDisabled" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="虚拟销量:">
|
||||
<el-input-number v-model="formValidate.ficti" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
||||
@ -421,7 +435,7 @@
|
||||
cost: 0,
|
||||
otPrice: 0,
|
||||
stock: 0,
|
||||
barCode: '',
|
||||
// barCode: '',
|
||||
// weight: 0,
|
||||
// volume: 0
|
||||
}],
|
||||
@ -429,11 +443,12 @@
|
||||
selectRule: '',
|
||||
isSub: false,
|
||||
content: '',
|
||||
qualityTest: '',
|
||||
specType: false,
|
||||
id: 0,
|
||||
couponIds: [],
|
||||
coupons: [],
|
||||
activity: ['默认','秒杀']
|
||||
activity: ['默认']//,'秒杀'
|
||||
}
|
||||
const objTitle = {
|
||||
price: {
|
||||
@ -448,9 +463,9 @@
|
||||
stock: {
|
||||
title: '库存'
|
||||
},
|
||||
barCode: {
|
||||
title: '商品编号'
|
||||
},
|
||||
// barCode: {
|
||||
// title: '商品编号'
|
||||
// },
|
||||
// weight: {
|
||||
// title: '重量(KG)'
|
||||
// },
|
||||
@ -464,7 +479,7 @@
|
||||
data() {
|
||||
return {
|
||||
isDisabled: this.$route.params.isDisabled==='1'?true:false,
|
||||
activity: { '默认': 'red', '秒杀': 'blue' },
|
||||
activity: { '默认': 'red'}, // , '秒杀': 'blue'
|
||||
props2: {
|
||||
children: 'child',
|
||||
label: 'name',
|
||||
@ -705,7 +720,7 @@
|
||||
cost: 0,
|
||||
otPrice: 0,
|
||||
stock: 0,
|
||||
barCode: '',
|
||||
// barCode: '',
|
||||
// weight: 0,
|
||||
// volume: 0,
|
||||
brokerage: 0,
|
||||
@ -736,7 +751,7 @@
|
||||
cost: 0,
|
||||
otPrice: 0,
|
||||
stock: 0,
|
||||
barCode: '',
|
||||
// barCode: '',
|
||||
// weight: 0,
|
||||
// volume: 0,
|
||||
brokerage: 0,
|
||||
@ -869,7 +884,7 @@
|
||||
this.$set(val, 'cost', this.oneFormBatch[0].cost)
|
||||
this.$set(val, 'otPrice', this.oneFormBatch[0].otPrice)
|
||||
this.$set(val, 'stock', this.oneFormBatch[0].stock)
|
||||
this.$set(val, 'barCode', this.oneFormBatch[0].barCode)
|
||||
// this.$set(val, 'barCode', this.oneFormBatch[0].barCode)
|
||||
// this.$set(val, 'weight', this.oneFormBatch[0].weight)
|
||||
// this.$set(val, 'volume', this.oneFormBatch[0].volume)
|
||||
this.$set(val, 'brokerage', this.oneFormBatch[0].brokerage)
|
||||
@ -978,13 +993,14 @@
|
||||
selectRule: info.selectRule,
|
||||
isSub: info.isSub,
|
||||
content: this.$selfUtil.replaceImgSrcHttps(info.content),
|
||||
qualityTest: this.$selfUtil.replaceImgSrcHttps(info.qualityTest),
|
||||
specType: info.specType,
|
||||
id: info.id,
|
||||
giveIntegral: info.giveIntegral,
|
||||
ficti: info.ficti,
|
||||
coupons: info.coupons,
|
||||
couponIds: info.couponIds,
|
||||
activity: info.activityStr ? info.activityStr.split(',') : ['默认','秒杀']
|
||||
activity: info.activityStr ? info.activityStr.split(',') : ['默认']// ,'秒杀'
|
||||
}
|
||||
marketingSendApi({type:3}).then(res=>{
|
||||
if(this.formValidate.couponIds !== null){
|
||||
@ -1217,12 +1233,13 @@
|
||||
goodDesignList({gid:70}).then((response)=>{
|
||||
let list = response.list;
|
||||
let arr = [],arr1 = [];
|
||||
const listArr = [{ name: '是否热卖', value: 'isGood' }];
|
||||
const listArr = [{ name: '为你推荐', value: 'isGood' }];
|
||||
let typeLists = [
|
||||
{ name: '', value: 'isHot',type:'2' }, //热门榜单
|
||||
{ name: '', value: 'isBenefit' ,type:'4'}, //促销单品
|
||||
// { name: '', value: 'isHot',type:'2' }, //热门榜单
|
||||
// { name: '', value: 'isBenefit' ,type:'4'}, //促销单品
|
||||
{ name: '', value: 'isBest',type:'1' }, //精品推荐
|
||||
{ name: '', value: 'isNew',type:'3' }]; //首发新品
|
||||
// { name: '', value: 'isNew',type:'3' }, //首发新品
|
||||
];
|
||||
list.forEach((item)=>{
|
||||
let obj = {};
|
||||
obj.value = JSON.parse(item.value);
|
||||
|
@ -21,7 +21,8 @@
|
||||
<el-button size="small" type="primary" class="mr10" v-hasPermi="['admin:product:save']">添加商品</el-button>
|
||||
</router-link>
|
||||
<!-- <el-button size="small" type="success" class="mr10" @click="onCopy" v-hasPermi="['admin:product:save']">商品采集</el-button>-->
|
||||
<!-- <el-button size="small" icon="el-icon-upload2" @click="exports" v-hasPermi="['admin:export:excel:product']">导出</el-button>-->
|
||||
<el-button size="small" type="success" class="mr10" @click="importExcel">商品导入</el-button>
|
||||
<el-button size="small" icon="el-icon-upload2" @click="exports" v-hasPermi="['admin:export:excel:product']">导出</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
@ -133,14 +134,17 @@
|
||||
<router-link :to="{path: '/store/list/creatProduct/' + scope.row.id}">
|
||||
<el-button type="text" size="small" class="mr10" v-if="tableFrom.type !== '5' && tableFrom.type !== '1'" v-hasPermi="['admin:product:update']">编辑</el-button>
|
||||
</router-link>
|
||||
<el-button v-if="tableFrom.type === '5'" type="text" size="small" @click="handleRestore(scope.row.id, scope.$index)" v-hasPermi="['admin:product:restore']">恢复商品</el-button>
|
||||
<el-button v-if="tableFrom.type === '5'" type="text" size="small" @click="handleRestore(scope.row.id, scope.$index)" v-hasPermi="['admin:product:restore']">恢复商品</el-button>
|
||||
<el-button type="text" size="small" @click="handleDelete(scope.row.id, tableFrom.type)" v-hasPermi="['admin:product:delete']">{{ tableFrom.type === '5' ? '删除' : '加入回收站' }}</el-button>
|
||||
<router-link :to="{path: '/store/problem/' + scope.row.id + ''}">
|
||||
<el-button type="text" size="small" class="mr10" v-hasPermi="['admin:problem:info']">常见问题</el-button>
|
||||
</router-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="block">
|
||||
<el-pagination
|
||||
:page-sizes="[20, 40, 60, 80]"
|
||||
:page-sizes="[10, 20, 40, 60]"
|
||||
:page-size="tableFrom.limit"
|
||||
:current-page="tableFrom.page"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@ -150,6 +154,7 @@
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-dialog
|
||||
title="复制淘宝、天猫、京东、苏宁"
|
||||
:visible.sync="dialogVisible"
|
||||
@ -159,17 +164,56 @@
|
||||
:before-close="handleClose">
|
||||
<tao-bao v-if="dialogVisible" @handleCloseMod="handleCloseMod"></tao-bao>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="importVisible"
|
||||
title="导入文件"
|
||||
:close-on-click-modal="false"
|
||||
width="1200px"
|
||||
@close="uploadExcelClose">
|
||||
<el-row type="flex" justify="center" align="centre">
|
||||
<el-col :span="18">
|
||||
<upload-excel-component :on-success="handleSuccess" :before-upload="beforeUpload" ref="excel-upload-input"/>
|
||||
</el-col>
|
||||
<el-col :span="2" style="line-height: 160px">
|
||||
<el-button plain type="primary" @click="excelUpload" :disabled="excelUploadState">上传到服务器</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { productLstApi, productDeleteApi, categoryApi, putOnShellApi, offShellApi, productHeadersApi, productExportApi, restoreApi, productExcelApi } from '@/api/store'
|
||||
import {
|
||||
productLstApi,
|
||||
productDeleteApi,
|
||||
categoryApi,
|
||||
putOnShellApi,
|
||||
offShellApi,
|
||||
productHeadersApi,
|
||||
productExportApi,
|
||||
restoreApi,
|
||||
productExcelApi,
|
||||
importExcelApi,
|
||||
replyListApi, productDetailApi
|
||||
} from '@/api/store'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import taoBao from './taoBao'
|
||||
import { checkPermi } from "@/utils/permission"; // 权限判断函数
|
||||
import UploadExcelComponent from '@/components/UploadExcel/index.vue'
|
||||
import { checkPermi } from "@/utils/permission";
|
||||
import CreatTemplates from "@/views/systemSetting/logistics/shippingTemplates/creatTemplates.vue";
|
||||
import edit from "@/components/Category/edit.vue";
|
||||
import tableHeader from "element-ui/packages/table/src/table-header";
|
||||
import {fileImageApi} from "@/api/systemSetting";
|
||||
import AddOrUpdate from "@/views/home/add-and-update.vue"; // 权限判断函数
|
||||
export default {
|
||||
name: 'ProductList',
|
||||
components: { taoBao },
|
||||
computed: {
|
||||
tableHeader() {
|
||||
return tableHeader
|
||||
}
|
||||
},
|
||||
components: {AddOrUpdate, edit, CreatTemplates, taoBao, UploadExcelComponent },
|
||||
data() {
|
||||
return {
|
||||
props: {
|
||||
@ -187,15 +231,21 @@ export default {
|
||||
},
|
||||
tableFrom: {
|
||||
page: 1,
|
||||
limit: 20,
|
||||
limit: 10,
|
||||
cateId: '',
|
||||
keywords: '',
|
||||
type: '1'
|
||||
},
|
||||
excelTableData: [],
|
||||
excelTableHeader: [],
|
||||
excelUploadState: true,
|
||||
excelUploadFile: '',
|
||||
categoryList: [],
|
||||
merCateList: [],
|
||||
objectUrl: process.env.VUE_APP_BASE_API,
|
||||
dialogVisible: false,
|
||||
importVisible: false,
|
||||
problemVisible: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -216,6 +266,42 @@ export default {
|
||||
})
|
||||
});
|
||||
},
|
||||
beforeUpload(file) {
|
||||
this.excelUploadState = false;
|
||||
this.excelUploadFile = file;
|
||||
const isLt1M = file.size / 1024 / 1024 < 1;
|
||||
if (isLt1M) { return true; }
|
||||
this.$message.warning("上传文件不能大于1M");
|
||||
this.excelUploadState = true;
|
||||
return false;
|
||||
},
|
||||
handleSuccess({ results, header }) {
|
||||
this.excelTableData = results;
|
||||
this.excelTableHeader = header;
|
||||
},
|
||||
async excelUpload() {
|
||||
if (this.excelTableData.length === 0 || this.excelTableHeader.length === 0) {
|
||||
this.$message.error("数据为空,不能上传");
|
||||
}
|
||||
let loading = this.$loading({
|
||||
lock: true,
|
||||
text: "上传中,请稍候...",
|
||||
spinner: "el-icon-loading",
|
||||
background: "rgba(0, 0, 0, 0.7)",
|
||||
});
|
||||
const formData = new FormData();
|
||||
formData.append("multipart", this.excelUploadFile);
|
||||
importExcelApi(formData).then(res => {
|
||||
loading.close();
|
||||
this.$message.success("上传成功");
|
||||
this.tableData.page = 1;
|
||||
this.goodHeade()
|
||||
this.getList()
|
||||
this.importVisible = false;
|
||||
}).catch(() => {
|
||||
loading.close();
|
||||
})
|
||||
},
|
||||
seachList() {
|
||||
this.tableFrom.page = 1
|
||||
this.getList()
|
||||
@ -223,6 +309,11 @@ export default {
|
||||
handleClose() {
|
||||
this.dialogVisible = false
|
||||
},
|
||||
uploadExcelClose() {
|
||||
this.importVisible = false
|
||||
this.excelUploadState = true;
|
||||
this.$refs['excel-upload-input'].resetData();
|
||||
},
|
||||
handleCloseMod(item){
|
||||
this.dialogVisible = item
|
||||
this.goodHeade();
|
||||
@ -232,12 +323,42 @@ export default {
|
||||
onCopy(){
|
||||
this.dialogVisible = true
|
||||
},
|
||||
// 点击商品图
|
||||
modalPicTap (tit, num, i,status) {
|
||||
const _this = this;
|
||||
if(_this.isDisabled) return;
|
||||
this.$modalUpload(function(img) {
|
||||
if(tit==='1'&& !num){
|
||||
_this.formValidate.image = img[0].sattDir
|
||||
_this.OneattrValue[0].image = img[0].sattDir
|
||||
}
|
||||
if(tit==='2'&& !num){
|
||||
if(img.length>10) return this.$message.warning("最多选择10张图片!");
|
||||
if(img.length + _this.formValidate.sliderImages.length > 10) return this.$message.warning("最多选择10张图片!");
|
||||
img.map((item) => {
|
||||
_this.formValidate.sliderImages.push(item.sattDir)
|
||||
});
|
||||
}
|
||||
if(tit==='1'&& num === 'dan' ){
|
||||
_this.OneattrValue[0].image = img[0].sattDir
|
||||
}
|
||||
if(tit==='1'&& num === 'duo' ){
|
||||
_this.ManyAttrValue[i].image = img[0].sattDir
|
||||
}
|
||||
if(tit==='1'&& num === 'pi' ){
|
||||
_this.oneFormBatch[0].image = img[0].sattDir
|
||||
}
|
||||
},tit, 'content')
|
||||
},
|
||||
// 导出
|
||||
exports () {
|
||||
productExcelApi({cateId:this.tableFrom.cateId,keywords: this.tableFrom.keywords, type:this.tableFrom.type}).then((res) => {
|
||||
window.location.href = res.fileName;
|
||||
})
|
||||
},
|
||||
importExcel() {
|
||||
this.importVisible = true
|
||||
},
|
||||
// 获取商品表单头数量
|
||||
goodHeade () {
|
||||
productHeadersApi().then(res => {
|
||||
@ -285,6 +406,12 @@ export default {
|
||||
})
|
||||
})
|
||||
},
|
||||
productProblem(id) {
|
||||
this.problemVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.problemList.init(id)
|
||||
})
|
||||
},
|
||||
onchangeIsShow(row) {
|
||||
row.isShow
|
||||
? putOnShellApi( row.id ).then(() => {
|
||||
|
90
src/views/store/problem/add-and-update.vue
Normal file
90
src/views/store/problem/add-and-update.vue
Normal file
@ -0,0 +1,90 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="!dataForm.id ? '添加' : '修改'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible"
|
||||
>
|
||||
<!-- 新增和创建表单表单 -->
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="90px">
|
||||
<el-form-item label="问题:" prop="title">
|
||||
<el-input v-model="dataForm.title" placeholder="问题"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="回答:" prop="content">
|
||||
<Tinymce v-model="dataForm.content" placeholder="回答"></Tinymce>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Tinymce from '@/components/Tinymce/index'
|
||||
import * as api from '@/api/problem.js'
|
||||
|
||||
export default {
|
||||
components: { Tinymce },
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
productCateList: [],
|
||||
selectProductVisible: false,
|
||||
selectProductShow: false,
|
||||
dataForm: {
|
||||
id: 0,
|
||||
title: '',
|
||||
content: '',
|
||||
businessId: '',
|
||||
},
|
||||
dataRule: {
|
||||
title: [
|
||||
{required: true, message: '问题 为必填项', trigger: 'blur'}
|
||||
],
|
||||
content: [
|
||||
{required: true, message: '回答 为必填项', trigger: 'blur'}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id, businessId) {
|
||||
this.dataForm.id = id || 0
|
||||
this.dataForm.businessId = businessId
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
if (this.dataForm.id) {
|
||||
api.detailApi(id).then(res => {
|
||||
this.dataForm.title = res.title;
|
||||
this.dataForm.content = this.$selfUtil.replaceImgSrcHttps(res.content);
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.dataForm.id ?
|
||||
api.updateApi(this.dataForm).then(res => {
|
||||
this.$message.success('修改成功');
|
||||
}) :
|
||||
api.createApi(this.dataForm).then(res => {
|
||||
this.$message.success('新增成功');
|
||||
});
|
||||
setTimeout(() => {
|
||||
this.$emit('refreshDataList')
|
||||
}, 600)
|
||||
this.visible = false;
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
156
src/views/store/problem/index.vue
Normal file
156
src/views/store/problem/index.vue
Normal file
@ -0,0 +1,156 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form ref="form" inline :model="dataForm" size="small">
|
||||
<el-form-item label="标题:">
|
||||
<el-input v-model="dataForm.title" placeholder="请输入问题/回答内容" class="selWidth" clearable>
|
||||
<el-button slot="append" icon="el-icon-search" @click="handleSearch" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="acea-row">
|
||||
<el-button v-hasPermi="['admin:problem:save']" size="mini" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>
|
||||
<el-button v-hasPermi="['admin:problem:delete']" size="mini" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="dataListLoading"
|
||||
:data="dataList"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
highlight-current-row
|
||||
@selection-change="selectionChangeHandle"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="问题">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="content"-->
|
||||
<!-- header-align="center"-->
|
||||
<!-- align="center"-->
|
||||
<!-- label="回答">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="250"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="pageIndex"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
<!-- 表单弹窗, 新增数据和修改数据 -->
|
||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import AddOrUpdate from './add-and-update'
|
||||
import * as api from '@/api/problem.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataForm: {
|
||||
title: '',
|
||||
businessId: ''
|
||||
},
|
||||
dataList: [],
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
totalPage: 0,
|
||||
dataListLoading: false,
|
||||
dataListSelections: [],
|
||||
addOrUpdateVisible: false,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
AddOrUpdate
|
||||
},
|
||||
mounted() {
|
||||
this.dataForm.businessId = this.$route.params.id
|
||||
this.getDataList()
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true
|
||||
api.listApi(this.dataForm).then(res => {
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.dataListLoading = false
|
||||
}).catch(res => {
|
||||
this.dataListLoading = false
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.page = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 每页数
|
||||
sizeChangeHandle(val) {
|
||||
this.pageSize = val
|
||||
this.pageIndex = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 当前页
|
||||
currentChangeHandle(val) {
|
||||
this.pageIndex = val
|
||||
this.getDataList()
|
||||
},
|
||||
// 多选
|
||||
selectionChangeHandle(val) {
|
||||
this.dataListSelections = val
|
||||
},
|
||||
// 新增 / 修改
|
||||
addOrUpdateHandle(id) {
|
||||
this.addOrUpdateVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.init(id, this.dataForm.businessId)
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
deleteHandle(id) {
|
||||
var ids = id ? [id] : this.dataListSelections.map(item => {
|
||||
return item.id
|
||||
})
|
||||
this.$confirm(`您确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
api.deleteApi({ids : ids.join(',')}).then(res => {
|
||||
this.$message.success('操作成功')
|
||||
this.getDataList()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -146,7 +146,7 @@
|
||||
</template>
|
||||
<el-table-column align="center" label="图片" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-form-item :rules="[{required: true, message: '请上传图片', trigger: 'change'}]" :prop="'attrValue.'+scope.$index+'.image'">
|
||||
<el-form-item :rules="[{required: true, message: '请上传附件', trigger: 'change'}]" :prop="'attrValue.'+scope.$index+'.image'">
|
||||
<div class="upLoadPicBox" @click="modalPicTap('1','duo',scope.$index)">
|
||||
<div v-if="scope.row.image" class="pictrue pictrueTab"><img :src="scope.row.image"></div>
|
||||
<div v-else class="upLoad pictrueTab">
|
||||
@ -696,7 +696,7 @@
|
||||
let list = response.list;
|
||||
let arr = [];
|
||||
let arr1 = [];
|
||||
const listArr = [{ name: '是否热卖', value: 'isHot' }];
|
||||
const listArr = [{ name: '为你推荐', value: 'isHot' }];
|
||||
let typeLists = [
|
||||
{ name: '', value: 'isGood',type:'2' }, //精品推荐1 热门榜单2 首发新品3 促销单品4
|
||||
{ name: '', value: 'isBenefit' ,type:'4'},
|
||||
|
@ -22,9 +22,8 @@
|
||||
<el-table v-loading="listLoading" :data="ruleForm.region" border fit highlight-current-row style="width: 100%" size="mini" class="tempBox">
|
||||
<el-table-column align="center" label="可配送区域" min-width="260">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.$index === 0">默认全国</span>
|
||||
<!-- <span v-if="scope.$index === 0">默认全国</span>-->
|
||||
<el-cascader
|
||||
v-else
|
||||
v-model="scope.row.city_ids"
|
||||
style="width: 98%"
|
||||
:options="cityList"
|
||||
@ -67,7 +66,6 @@
|
||||
<el-table-column align="center" label="操作" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.$index > 0"
|
||||
type="text"
|
||||
size="small"
|
||||
@click="confirmEdit(ruleForm.region,scope.$index)"
|
||||
@ -96,7 +94,7 @@
|
||||
<el-cascader
|
||||
v-model="row.city_ids"
|
||||
style="width: 95%"
|
||||
:options="cityList"
|
||||
:options="a_cityList"
|
||||
:props="props"
|
||||
collapse-tags
|
||||
clearable
|
||||
@ -179,7 +177,7 @@ const defaultRole = {
|
||||
firstPrice: 0,
|
||||
renewal: 0,
|
||||
renewalPrice: 0,
|
||||
city_ids: []
|
||||
city_ids: [],
|
||||
}],
|
||||
undelivery: 0,
|
||||
free: [],
|
||||
@ -264,6 +262,7 @@ export default {
|
||||
ruleForm: Object.assign({}, defaultRole),
|
||||
listLoading: false,
|
||||
cityList: [],
|
||||
a_cityList: [],
|
||||
columns: {
|
||||
title: '首件',
|
||||
title2: '续件',
|
||||
@ -271,13 +270,17 @@ export default {
|
||||
},
|
||||
isShowPrice: true,
|
||||
tempId: 0,
|
||||
type: 0 // 0添加 1编辑
|
||||
type: 0, // 0添加 1编辑
|
||||
defaultCity : {"id":0,"cityId":0,"name":"默认全国","city_ids":[[0]],"child":null}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setTimeout(()=>{
|
||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
cityList.unshift(this.defaultCity);
|
||||
this.cityList = cityList;
|
||||
this.a_cityList = a_cityList;
|
||||
},1000);
|
||||
},
|
||||
methods: {
|
||||
@ -314,7 +317,6 @@ export default {
|
||||
}
|
||||
},
|
||||
changeRegion(value) {
|
||||
console.log(value)
|
||||
},
|
||||
changeRadio(num) {
|
||||
this.columns = Object.assign({}, statusMap[num - 1])
|
||||
@ -403,7 +405,10 @@ export default {
|
||||
logistics.cityListTree().then(res => {
|
||||
sessionStorage.setItem('cityList',JSON.stringify(res));
|
||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
cityList.unshift(this.defaultCity);
|
||||
this.cityList = cityList;
|
||||
this.a_cityList = a_cityList;
|
||||
}).catch(res => {
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
@ -441,31 +446,38 @@ export default {
|
||||
// // 指定包邮设置
|
||||
// shippingTemplatesFreeRequestList: []
|
||||
}
|
||||
let isAllNum = 0;
|
||||
this.ruleForm.region.forEach((el, index) => {
|
||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
||||
for (var i = 0; i < el.city_ids.length; i++) {
|
||||
el.city_ids[i].shift()
|
||||
let cityId = 'all';
|
||||
let title = JSON.stringify([[0]]);
|
||||
if (el.city_ids.length > 0 && el.city_ids[0] != '0') {
|
||||
cityId = el.city_ids.join(',');
|
||||
title = JSON.stringify(el.city_ids);
|
||||
} else {
|
||||
isAllNum = isAllNum + 1;
|
||||
}
|
||||
el.cityId = el.city_ids.length > 0 ? el.city_ids.join(',') : 'all'
|
||||
el.title = title;
|
||||
el.cityId = cityId
|
||||
})
|
||||
if (isAllNum > 1 || (isAllNum == 1 && this.ruleForm.region.length > 1)) {
|
||||
this.$message.error('配送区域已有全国选项,请移除其他区域')
|
||||
this.loading = false;
|
||||
return ;
|
||||
}
|
||||
param.shippingTemplatesRegionRequestList = this.ruleForm.region
|
||||
param.shippingTemplatesRegionRequestList.forEach((el, index) => {
|
||||
// delete el.city_ids
|
||||
// delete el.city_id
|
||||
})
|
||||
|
||||
if (this.ruleForm.appoint) {
|
||||
this.ruleForm.free.forEach((el, index) => {
|
||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
||||
for (var i = 0; i < el.city_ids.length; i++) {
|
||||
el.city_ids[i].shift()
|
||||
let cityId = 'all';
|
||||
let title = JSON.stringify([[0]]);
|
||||
if (el.city_ids.length > 0 && el.city_ids[0] != '0') {
|
||||
cityId = el.city_ids.join(',');
|
||||
title = JSON.stringify(el.city_ids);
|
||||
}
|
||||
el.cityId = el.city_ids.length > 0 ? el.city_ids.join(',') : 'all'
|
||||
el.title = title;
|
||||
el.cityId = cityId
|
||||
})
|
||||
param.shippingTemplatesFreeRequestList = this.ruleForm.free
|
||||
param.shippingTemplatesFreeRequestList.forEach((el, index) => {
|
||||
// delete el.city_ids
|
||||
// delete el.city_id
|
||||
})
|
||||
}
|
||||
if (this.type === 0) {
|
||||
logistics.shippingSave(param).then(res => {
|
||||
@ -519,4 +531,7 @@ export default {
|
||||
width: 100px !important;
|
||||
}
|
||||
}
|
||||
.el-table__row .el-form-item--mini.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
|
@ -239,7 +239,7 @@
|
||||
onchangeTime(e){
|
||||
this.ruleForm.dayTime = e ? e.join(',') : '';
|
||||
},
|
||||
//上传图片
|
||||
//上传附件
|
||||
modalPicTap (tit) {
|
||||
const _this = this
|
||||
this.$modalUpload(function(img) {
|
||||
|
125
src/views/systemSetting/help/add-and-update.vue
Normal file
125
src/views/systemSetting/help/add-and-update.vue
Normal file
@ -0,0 +1,125 @@
|
||||
<template>
|
||||
<!-- 基于 Element UI 新增和修改弹窗 -->
|
||||
<el-dialog
|
||||
:title="!dataForm.id ? '添加' : '修改'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible">
|
||||
<!-- 新增和创建表单表单 -->
|
||||
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="80px">
|
||||
<el-form-item label="分类" prop="cid">
|
||||
<el-select v-model="dataForm.cid" placeholder="请选择" class="selWidthd">
|
||||
<el-option
|
||||
v-for="item in categoryList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="dataForm.title" placeholder="标题"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="内容" prop="content">
|
||||
<el-input v-model="dataForm.content" placeholder="内容"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="跳转地址" prop="jumpUrl">
|
||||
<el-input v-model="dataForm.jumpUrl" placeholder="跳转地址"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否无效" prop="status">
|
||||
<el-select v-model="dataForm.status">
|
||||
<el-option label="有效" :value="true"></el-option>
|
||||
<el-option label="无效" :value="false"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="visible = false">取消</el-button>
|
||||
<el-button type="primary" @click="dataSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from '@/api/systemHelp.js'
|
||||
import { listCategroy } from "@/api/categoryApi";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
categoryList: [],
|
||||
dataForm: {
|
||||
id: 0,
|
||||
cid: '',
|
||||
title: '',
|
||||
content: '',
|
||||
jumpUrl: '',
|
||||
shareTitle: '',
|
||||
shareSynopsis: '',
|
||||
shareImage: '',
|
||||
status: '',
|
||||
sort: '',
|
||||
},
|
||||
dataRule: {
|
||||
cid: [
|
||||
{required: true, message: '分类 为必填项', trigger: 'blur'}
|
||||
],
|
||||
title: [
|
||||
{required: true, message: '标题 为必填项', trigger: 'blur'}
|
||||
],
|
||||
content: [
|
||||
{required: true, message: '内容 为必填项', trigger: 'blur'}
|
||||
],
|
||||
status: [
|
||||
{required: true, message: '状态 为必填项', trigger: 'blur'}
|
||||
],
|
||||
sort: [
|
||||
{required: true, message: '排序 为必填项', trigger: 'blur'}
|
||||
],
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(id) { // 初始化表单验证规则
|
||||
this.dataForm.id = id || 0
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['dataForm'].resetFields()
|
||||
if (this.dataForm.id) {
|
||||
api.detailApi(id).then(res => {
|
||||
this.dataForm = res;
|
||||
})
|
||||
}
|
||||
this.getCategoryList()
|
||||
})
|
||||
},
|
||||
// 表单数据提交
|
||||
dataSubmit() {
|
||||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.dataForm.id ?
|
||||
api.updateApi(this.dataForm).then(res => {
|
||||
this.$message.success('修改成功');
|
||||
}) :
|
||||
api.createApi(this.dataForm).then(res => {
|
||||
this.$message.success('新增成功');
|
||||
});
|
||||
this.visible = false;
|
||||
this.$emit('refreshDataList');
|
||||
}
|
||||
})
|
||||
},
|
||||
getCategoryList() {
|
||||
const categroy = {
|
||||
limit: 999,
|
||||
page: '1',
|
||||
status: 1,
|
||||
type : 9
|
||||
};
|
||||
listCategroy(categroy).then(res => {
|
||||
this.categoryList = res.list;
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
205
src/views/systemSetting/help/index.vue
Normal file
205
src/views/systemSetting/help/index.vue
Normal file
@ -0,0 +1,205 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<div class="container">
|
||||
<el-form ref="form" inline :model="dataForm" size="small">
|
||||
<el-form-item label="标题:">
|
||||
<el-input v-model="dataForm.title" placeholder="请输入标题" class="selWidth" clearable>
|
||||
<el-button slot="append" icon="el-icon-search" @click="handleSearch" />
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="分类:">
|
||||
<el-select v-model="dataForm.cid" placeholder="分类" clearable class="selWidth" @change="handleSearch">
|
||||
<el-option label="--请选择--" value=""></el-option>
|
||||
<el-option
|
||||
v-for="item in categoryList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="acea-row">
|
||||
<el-button v-hasPermi="['admin:helpProblem:save']" size="mini" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>
|
||||
<el-button v-hasPermi="['admin:helpProblem:delete']" size="mini" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="dataListLoading"
|
||||
:data="dataList"
|
||||
style="width: 100%"
|
||||
size="mini"
|
||||
highlight-current-row
|
||||
@selection-change="selectionChangeHandle"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cid"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="分类">
|
||||
<template slot-scope="scope">
|
||||
<span>{{scope.row.cname}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="title"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="标题">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="usefulNum"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="有用">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="uselessNum"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="无用">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="status"
|
||||
header-align="center"
|
||||
align="center"
|
||||
label="状态">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.status == 0">无效</span>
|
||||
<span v-else-if="scope.row.status == 1">有效</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="right"
|
||||
header-align="center"
|
||||
align="center"
|
||||
width="150"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
|
||||
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="sizeChangeHandle"
|
||||
@current-change="currentChangeHandle"
|
||||
:current-page="pageIndex"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
:total="totalPage"
|
||||
layout="total, sizes, prev, pager, next, jumper">
|
||||
</el-pagination>
|
||||
<!-- 表单弹窗, 新增数据和修改数据 -->
|
||||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import AddOrUpdate from './add-and-update'
|
||||
import * as api from '@/api/systemHelp.js'
|
||||
import { listCategroy } from '@/api/categoryApi.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataForm: {
|
||||
title: '',
|
||||
cid: ''
|
||||
},
|
||||
categoryList: [],
|
||||
dataList: [],
|
||||
pageIndex: 1,
|
||||
pageSize: 10,
|
||||
totalPage: 0,
|
||||
dataListLoading: false,
|
||||
dataListSelections: [],
|
||||
addOrUpdateVisible: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
AddOrUpdate
|
||||
},
|
||||
created() {
|
||||
this.getDataList()
|
||||
this.getCategoryList()
|
||||
},
|
||||
methods: {
|
||||
// 获取数据列表
|
||||
getDataList() {
|
||||
this.dataListLoading = true
|
||||
api.listApi(this.dataForm).then(res => {
|
||||
this.dataList = res.list
|
||||
this.totalPage = res.total
|
||||
this.dataListLoading = false
|
||||
}).catch(res => {
|
||||
this.dataListLoading = false
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
},
|
||||
getCategoryList() {
|
||||
const categroy = {
|
||||
limit: 999,
|
||||
page: '1',
|
||||
status: 1,
|
||||
type : 9
|
||||
};
|
||||
listCategroy(categroy).then(res => {
|
||||
this.categoryList = res.list;
|
||||
})
|
||||
},
|
||||
handleSearch() {
|
||||
this.page = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 每页数
|
||||
sizeChangeHandle(val) {
|
||||
this.pageSize = val
|
||||
this.pageIndex = 1
|
||||
this.getDataList()
|
||||
},
|
||||
// 当前页
|
||||
currentChangeHandle(val) {
|
||||
this.pageIndex = val
|
||||
this.getDataList()
|
||||
},
|
||||
// 多选
|
||||
selectionChangeHandle(val) {
|
||||
this.dataListSelections = val
|
||||
},
|
||||
// 新增 / 修改
|
||||
addOrUpdateHandle(id) {
|
||||
this.addOrUpdateVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrUpdate.init(id)
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
deleteHandle(id) {
|
||||
var ids = id ? [id] : this.dataListSelections.map(item => {
|
||||
return item.id
|
||||
})
|
||||
this.$confirm(`您确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
api.deleteApi({ids : ids.join(',')}).then(res => {
|
||||
this.$message.success('操作成功')
|
||||
this.getDataList()
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -22,9 +22,8 @@
|
||||
<el-table v-loading="listLoading" :data="ruleForm.region" border fit highlight-current-row style="width: 100%" size="mini" class="tempBox">
|
||||
<el-table-column align="center" label="可配送区域" min-width="260">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.$index === 0">默认全国</span>
|
||||
<!-- <span v-if="scope.$index === 0">默认全国</span>-->
|
||||
<el-cascader
|
||||
v-else
|
||||
v-model="scope.row.city_ids"
|
||||
style="width: 98%"
|
||||
:options="cityList"
|
||||
@ -67,7 +66,6 @@
|
||||
<el-table-column align="center" label="操作" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.$index > 0"
|
||||
type="text"
|
||||
size="small"
|
||||
@click="confirmEdit(ruleForm.region,scope.$index)"
|
||||
@ -96,7 +94,7 @@
|
||||
<el-cascader
|
||||
v-model="row.city_ids"
|
||||
style="width: 95%"
|
||||
:options="cityList"
|
||||
:options="a_cityList"
|
||||
:props="props"
|
||||
collapse-tags
|
||||
clearable
|
||||
@ -108,7 +106,7 @@
|
||||
<el-input-number v-model="row.number" controls-position="right" :step-strictly="ruleForm.type===1?true:false" :min="ruleForm.type===1?1:0.1"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="120px" align="center" label="包邮金额(元)">
|
||||
<el-table-column min-width="120px" align="center" label="包邮金额(元)" v-if="isShowPrice">
|
||||
<template slot-scope="{row}">
|
||||
<el-input-number v-model="row.price" controls-position="right" />
|
||||
</template>
|
||||
@ -263,19 +261,25 @@ export default {
|
||||
ruleForm: Object.assign({}, defaultRole),
|
||||
listLoading: false,
|
||||
cityList: [],
|
||||
a_cityList: [],
|
||||
columns: {
|
||||
title: '首件',
|
||||
title2: '续件',
|
||||
title3: '包邮件数'
|
||||
},
|
||||
isShowPrice: true,
|
||||
tempId: 0,
|
||||
type: 0 // 0添加 1编辑
|
||||
type: 0, // 0添加 1编辑
|
||||
defaultCity : {"id":0,"cityId":0,"name":"默认全国","city_ids":[[0]],"child":null}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setTimeout(()=>{
|
||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
cityList.unshift(this.defaultCity);
|
||||
this.cityList = cityList;
|
||||
this.a_cityList = a_cityList;
|
||||
},1000);
|
||||
},
|
||||
methods: {
|
||||
@ -312,10 +316,14 @@ export default {
|
||||
}
|
||||
},
|
||||
changeRegion(value) {
|
||||
console.log(value)
|
||||
},
|
||||
changeRadio(num) {
|
||||
this.columns = Object.assign({}, statusMap[num - 1])
|
||||
if (num === 4) {
|
||||
this.isShowPrice = false;
|
||||
} else {
|
||||
this.isShowPrice = true;
|
||||
}
|
||||
},
|
||||
// 添加配送区域
|
||||
addRegion(region) {
|
||||
@ -396,7 +404,10 @@ export default {
|
||||
logistics.cityListTree().then(res => {
|
||||
sessionStorage.setItem('cityList',JSON.stringify(res));
|
||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||
cityList.unshift(this.defaultCity);
|
||||
this.cityList = cityList;
|
||||
this.a_cityList = a_cityList;
|
||||
}).catch(res => {
|
||||
this.$message.error(res.message)
|
||||
})
|
||||
@ -434,31 +445,38 @@ export default {
|
||||
// // 指定包邮设置
|
||||
// shippingTemplatesFreeRequestList: []
|
||||
}
|
||||
let isAllNum = 0;
|
||||
this.ruleForm.region.forEach((el, index) => {
|
||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
||||
for (var i = 0; i < el.city_ids.length; i++) {
|
||||
el.city_ids[i].shift()
|
||||
let cityId = 'all';
|
||||
let title = JSON.stringify([[0]]);
|
||||
if (el.city_ids.length > 0 && el.city_ids[0] != '0') {
|
||||
cityId = el.city_ids.join(',');
|
||||
title = JSON.stringify(el.city_ids);
|
||||
} else {
|
||||
isAllNum = isAllNum + 1;
|
||||
}
|
||||
el.cityId = el.city_ids.length > 0 ? el.city_ids.join(',') : 'all'
|
||||
el.title = title;
|
||||
el.cityId = cityId
|
||||
})
|
||||
if (isAllNum > 1 || (isAllNum == 1 && this.ruleForm.region.length > 1)) {
|
||||
this.$message.error('配送区域已有全国选项,请移除其他区域')
|
||||
this.loading = false;
|
||||
return ;
|
||||
}
|
||||
param.shippingTemplatesRegionRequestList = this.ruleForm.region
|
||||
param.shippingTemplatesRegionRequestList.forEach((el, index) => {
|
||||
// delete el.city_ids
|
||||
// delete el.city_id
|
||||
})
|
||||
|
||||
if (this.ruleForm.appoint) {
|
||||
this.ruleForm.free.forEach((el, index) => {
|
||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
||||
for (var i = 0; i < el.city_ids.length; i++) {
|
||||
el.city_ids[i].shift()
|
||||
let cityId = 'all';
|
||||
let title = JSON.stringify([[0]]);
|
||||
if (el.city_ids.length > 0 && el.city_ids[0] != '0') {
|
||||
cityId = el.city_ids.join(',');
|
||||
title = JSON.stringify(el.city_ids);
|
||||
}
|
||||
el.cityId = el.city_ids.length > 0 ? el.city_ids.join(',') : 'all'
|
||||
el.title = title;
|
||||
el.cityId = cityId
|
||||
})
|
||||
param.shippingTemplatesFreeRequestList = this.ruleForm.free
|
||||
param.shippingTemplatesFreeRequestList.forEach((el, index) => {
|
||||
// delete el.city_ids
|
||||
// delete el.city_id
|
||||
})
|
||||
}
|
||||
if (this.type === 0) {
|
||||
logistics.shippingSave(param).then(res => {
|
||||
@ -512,4 +530,7 @@ export default {
|
||||
width: 100px !important;
|
||||
}
|
||||
}
|
||||
.el-table__row .el-form-item--mini.el-form-item {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
|
@ -10,8 +10,7 @@
|
||||
:name="tab.id.toString()">
|
||||
<template>
|
||||
|
||||
<el-tabs v-model="activeNamel2"
|
||||
type="border-card" @tab-click="handleItemTabClick">
|
||||
<el-tabs v-model="activeNamel2" type="border-card" @tab-click="handleItemTabClick">
|
||||
<el-tab-pane
|
||||
v-for="(tabItem,itemIndex) in tab.child"
|
||||
:key="itemIndex"
|
||||
|
@ -26,13 +26,6 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="核销员">
|
||||
<el-radio-group v-model="ruleForm.isProsecutor">
|
||||
<el-radio :label="1">开启</el-radio>
|
||||
<el-radio :label="0">关闭</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态">
|
||||
<el-radio-group v-model="ruleForm.status">
|
||||
<el-radio :label="true">开启</el-radio>
|
||||
@ -97,7 +90,6 @@
|
||||
id : res.uid,
|
||||
mark: res.mark,
|
||||
// phone: res.phone,
|
||||
isProsecutor: res.isProsecutor,
|
||||
status: res.status,
|
||||
addres: res.addres,
|
||||
groupId: Number(res.groupId) || '',
|
||||
|
@ -16,29 +16,29 @@
|
||||
</el-col>
|
||||
</el-col>
|
||||
<template v-if="collapse">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="用户等级:">
|
||||
<el-select v-model="levelData" placeholder="请选择" class="selWidth" clearable filterable multiple>
|
||||
<el-option :value="item.id" v-for="(item, index) in levelList" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="用户分组:">
|
||||
<el-select v-model="groupData" placeholder="请选择" class="selWidth" clearable filterable multiple>
|
||||
<el-option :value="item.id" v-for="(item, index) in groupList" :key="index" :label="item.groupName"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="用户标签:">
|
||||
<el-select v-model="labelData" placeholder="请选择" class="selWidth" clearable filterable multiple>
|
||||
<el-option :value="item.id" v-for="(item, index) in labelLists" :key="index" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col>
|
||||
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">-->
|
||||
<!-- <el-col v-bind="grid">-->
|
||||
<!-- <el-form-item label="用户等级:">-->
|
||||
<!-- <el-select v-model="levelData" placeholder="请选择" class="selWidth" clearable filterable multiple>-->
|
||||
<!-- <el-option :value="item.id" v-for="(item, index) in levelList" :key="index" :label="item.name"></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col v-bind="grid">-->
|
||||
<!-- <el-form-item label="用户分组:">-->
|
||||
<!-- <el-select v-model="groupData" placeholder="请选择" class="selWidth" clearable filterable multiple>-->
|
||||
<!-- <el-option :value="item.id" v-for="(item, index) in groupList" :key="index" :label="item.groupName"></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col v-bind="grid">-->
|
||||
<!-- <el-form-item label="用户标签:">-->
|
||||
<!-- <el-select v-model="labelData" placeholder="请选择" class="selWidth" clearable filterable multiple>-->
|
||||
<!-- <el-option :value="item.id" v-for="(item, index) in labelLists" :key="index" :label="item.name"></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="国家:">
|
||||
@ -121,21 +121,21 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col v-bind="grid">
|
||||
<el-form-item label="身份:">
|
||||
<el-radio-group v-model="userFrom.isPromoter" type="button" class="selWidth">
|
||||
<el-radio-button label="">
|
||||
<span>全部</span>
|
||||
</el-radio-button>
|
||||
<el-radio-button label="1">
|
||||
<span>推广员</span>
|
||||
</el-radio-button>
|
||||
<el-radio-button label="0">
|
||||
<span>普通用户</span>
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col v-bind="grid">-->
|
||||
<!-- <el-form-item label="身份:">-->
|
||||
<!-- <el-radio-group v-model="userFrom.isPromoter" type="button" class="selWidth">-->
|
||||
<!-- <el-radio-button label="">-->
|
||||
<!-- <span>全部</span>-->
|
||||
<!-- </el-radio-button>-->
|
||||
<!-- <el-radio-button label="1">-->
|
||||
<!-- <span>推广员</span>-->
|
||||
<!-- </el-radio-button>-->
|
||||
<!-- <el-radio-button label="0">-->
|
||||
<!-- <span>普通用户</span>-->
|
||||
<!-- </el-radio-button>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
</el-col>
|
||||
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
||||
|
||||
@ -160,8 +160,8 @@
|
||||
</div>
|
||||
<div class="btn_bt">
|
||||
<el-button class="mr10" size="small" @click="onSend" type="primary" v-hasPermi="['admin:coupon:user:receive']">发送优惠券</el-button>
|
||||
<el-button class="mr10" size="small" @click="setBatch('group')">批量设置分组</el-button>
|
||||
<el-button class="mr10" size="small" @click="setBatch('label')">批量设置标签</el-button>
|
||||
<!-- <el-button class="mr10" size="small" @click="setBatch('group')">批量设置分组</el-button>-->
|
||||
<!-- <el-button class="mr10" size="small" @click="setBatch('label')">批量设置标签</el-button>-->
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
@ -229,24 +229,24 @@
|
||||
<span>{{scope.row.nickname | filterEmpty }} | {{scope.row.sex | sexFilter}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="用户等级"
|
||||
min-width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{scope.row.level | levelFilter | filterEmpty}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="groupName"
|
||||
label="分组"
|
||||
min-width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="spreadNickname"
|
||||
label="推荐人"
|
||||
min-width="130"
|
||||
/>
|
||||
<!-- <el-table-column-->
|
||||
<!-- label="用户等级"-->
|
||||
<!-- min-width="100"-->
|
||||
<!-- >-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <span>{{scope.row.level | levelFilter | filterEmpty}}</span>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="groupName"-->
|
||||
<!-- label="分组"-->
|
||||
<!-- min-width="100"-->
|
||||
<!-- />-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="spreadNickname"-->
|
||||
<!-- label="推荐人"-->
|
||||
<!-- min-width="130"-->
|
||||
<!-- />-->
|
||||
<el-table-column
|
||||
label="手机号"
|
||||
min-width="100"
|
||||
@ -263,25 +263,16 @@
|
||||
<!--<span>{{scope.row.userType | typeFilter}}</span>-->
|
||||
<!--</template>-->
|
||||
<!--</el-table-column>-->
|
||||
<el-table-column
|
||||
prop="nowMoney"
|
||||
label="余额"
|
||||
min-width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="integral"
|
||||
label="积分"
|
||||
min-width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="isProsecutor"
|
||||
label="核销员"
|
||||
min-width="100"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.isProsecutor == 0 ">非核销员</el-tag>
|
||||
<el-tag v-else>核销员</el-tag>
|
||||
</template>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="nowMoney"-->
|
||||
<!-- label="余额"-->
|
||||
<!-- min-width="100"-->
|
||||
<!-- />-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="integral"-->
|
||||
<!-- label="积分"-->
|
||||
<!-- min-width="100"-->
|
||||
<!-- />-->
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" min-width="130" fixed="right" align="center">
|
||||
@ -293,13 +284,13 @@
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="onDetails(scope.row.uid)" v-if="checkPermi(['admin:user:topdetail'])">账户详情</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="editPoint(scope.row.uid)" v-if="checkPermi(['admin:user:operate:founds'])">积分余额</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="setBatch('group',scope.row)" v-if="checkPermi(['admin:user:group'])">设置分组</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="setBatch('label',scope.row)" v-if="checkPermi(['admin:user:tag'])">设置标签</el-dropdown-item>
|
||||
<!-- <el-dropdown-item @click.native="editPoint(scope.row.uid)" v-if="checkPermi(['admin:user:operate:founds'])">积分余额</el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item @click.native="setBatch('group',scope.row)" v-if="checkPermi(['admin:user:group'])">设置分组</el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item @click.native="setBatch('label',scope.row)" v-if="checkPermi(['admin:user:tag'])">设置标签</el-dropdown-item>-->
|
||||
<el-dropdown-item @click.native="setPhone(scope.row)" v-if="checkPermi(['admin:user:update:phone'])">修改手机号</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="onLevel(scope.row.uid,scope.row.level)" v-if="checkPermi(['admin:user:update:level'])">修改用户等级</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="setExtension(scope.row)" v-if="checkPermi(['admin:user:update:spread'])">修改上级推广人</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="clearSpread(scope.row)" v-if="scope.row.spreadUid && scope.row.spreadUid>0 && checkPermi(['admin:retail:spread:clean'])">清除上级推广人</el-dropdown-item>
|
||||
<!-- <el-dropdown-item @click.native="onLevel(scope.row.uid,scope.row.level)" v-if="checkPermi(['admin:user:update:level'])">修改用户等级</el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item @click.native="setExtension(scope.row)" v-if="checkPermi(['admin:user:update:spread'])">修改上级推广人</el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item @click.native="clearSpread(scope.row)" v-if="scope.row.spreadUid && scope.row.spreadUid>0 && checkPermi(['admin:retail:spread:clean'])">清除上级推广人</el-dropdown-item>-->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
|
Loading…
Reference in New Issue
Block a user