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
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单 列表 数据统计
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export function prepareApi(params) {
|
||||||
|
return request({
|
||||||
|
url: '/admin/store/order/prepare',
|
||||||
|
method: 'post',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单 删除
|
* 订单 删除
|
||||||
* @param 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
|
* @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) {
|
imageSuccessCBK(arr) {
|
||||||
const _this = this;
|
const _this = this;
|
||||||
arr.forEach((v) => {
|
arr.forEach((v) => {
|
||||||
if (this.getFileType(v) == "video") {
|
let fileType = this.getFileType(v);
|
||||||
window.tinymce
|
if (fileType == "video") {
|
||||||
.get(_this.tinymceId)
|
window.tinymce.get(_this.tinymceId).insertContent(`<video class="wscnph" src="${v}" controls muted></video>`);
|
||||||
.insertContent(
|
} else if (fileType == 'pdf') {
|
||||||
`<video class="wscnph" src="${v}" controls muted></video>`
|
window.tinymce.get(_this.tinymceId).insertContent(`<iframe src="${v}" />`);
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
window.tinymce
|
window.tinymce.get(_this.tinymceId).insertContent(`<img class="wscnph" src="${v}" />`);
|
||||||
.get(_this.tinymceId)
|
|
||||||
.insertContent(`<img class="wscnph" src="${v}" />`);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -196,6 +193,12 @@ export default {
|
|||||||
if (result) {
|
if (result) {
|
||||||
return "video";
|
return "video";
|
||||||
}
|
}
|
||||||
|
// pdf
|
||||||
|
const pdfList = ['pdf'];
|
||||||
|
result = pdfList.find((item) => item === suffix);
|
||||||
|
if (result) {
|
||||||
|
return "pdf";
|
||||||
|
}
|
||||||
// 其他 文件类型
|
// 其他 文件类型
|
||||||
return "other";
|
return "other";
|
||||||
},
|
},
|
||||||
|
@ -2,9 +2,11 @@
|
|||||||
<div>
|
<div>
|
||||||
<input ref="excel-upload-input" class="excel-upload-input" type="file" accept=".xlsx, .xls" @change="handleClick">
|
<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">
|
<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">
|
<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>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -24,10 +26,15 @@ export default {
|
|||||||
excelData: {
|
excelData: {
|
||||||
header: null,
|
header: null,
|
||||||
results: null
|
results: null
|
||||||
}
|
},
|
||||||
|
fileName: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
resetData() {
|
||||||
|
this.$refs['excel-upload-input'].value = null;
|
||||||
|
this.fileName = '';
|
||||||
|
},
|
||||||
generateData({ header, results }) {
|
generateData({ header, results }) {
|
||||||
this.excelData.header = header
|
this.excelData.header = header
|
||||||
this.excelData.results = results
|
this.excelData.results = results
|
||||||
@ -64,7 +71,8 @@ export default {
|
|||||||
const files = e.target.files
|
const files = e.target.files
|
||||||
const rawFile = files[0] // only use files[0]
|
const rawFile = files[0] // only use files[0]
|
||||||
if (!rawFile) return
|
if (!rawFile) return
|
||||||
this.upload(rawFile)
|
this.upload(rawFile);
|
||||||
|
this.fileName = rawFile.name;
|
||||||
},
|
},
|
||||||
upload(rawFile) {
|
upload(rawFile) {
|
||||||
this.$refs['excel-upload-input'].value = null // fix can't select the same excel
|
this.$refs['excel-upload-input'].value = null // fix can't select the same excel
|
||||||
@ -125,8 +133,7 @@ export default {
|
|||||||
}
|
}
|
||||||
.drop{
|
.drop{
|
||||||
border: 2px dashed #bbb;
|
border: 2px dashed #bbb;
|
||||||
width: 600px;
|
width: 800px;
|
||||||
height: 160px;
|
|
||||||
line-height: 160px;
|
line-height: 160px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="上传图片"
|
title="上传附件"
|
||||||
:visible.sync="visible"
|
:visible.sync="visible"
|
||||||
width="896px"
|
width="896px"
|
||||||
:before-close="handleClose"
|
:before-close="handleClose"
|
||||||
@ -111,6 +111,7 @@ export default {
|
|||||||
e.dataTransfer.dropEffect = 'move'
|
e.dataTransfer.dropEffect = 'move'
|
||||||
},
|
},
|
||||||
handleDragEnter (e, item) {
|
handleDragEnter (e, item) {
|
||||||
|
alert(11)
|
||||||
e.dataTransfer.effectAllowed = 'move'
|
e.dataTransfer.effectAllowed = 'move'
|
||||||
if (item === this.dragging) {
|
if (item === this.dragging) {
|
||||||
return
|
return
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
>
|
>
|
||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
v-if="
|
v-if="
|
||||||
node.label !== '全部图片' &&
|
node.label !== '默认' &&
|
||||||
checkPermi(['admin:category:update'])
|
checkPermi(['admin:category:update'])
|
||||||
"
|
"
|
||||||
@click.native="onEdit(data.id)"
|
@click.native="onEdit(data.id)"
|
||||||
@ -63,7 +63,7 @@
|
|||||||
>
|
>
|
||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
v-if="
|
v-if="
|
||||||
node.label !== '全部图片' &&
|
node.label !== '默认' &&
|
||||||
checkPermi(['admin:category:delete'])
|
checkPermi(['admin:category:delete'])
|
||||||
"
|
"
|
||||||
@click.native="handleDelete(data.id)"
|
@click.native="handleDelete(data.id)"
|
||||||
@ -88,14 +88,14 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
class="mr15 mb20"
|
class="mr15 mb20"
|
||||||
@click="checkPics"
|
@click="checkPics"
|
||||||
>使用选中图片
|
>使用选中附件
|
||||||
</el-button
|
</el-button
|
||||||
>
|
>
|
||||||
<div class="mb20">
|
<div class="mb20">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
content="上传图片"
|
content="上传附件"
|
||||||
placement="top-start"
|
placement="top-start"
|
||||||
>
|
>
|
||||||
<el-upload
|
<el-upload
|
||||||
@ -118,7 +118,7 @@
|
|||||||
<el-tooltip
|
<el-tooltip
|
||||||
class="item"
|
class="item"
|
||||||
effect="dark"
|
effect="dark"
|
||||||
content="删除图片"
|
content="删除"
|
||||||
placement="top-start"
|
placement="top-start"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
@ -141,7 +141,7 @@
|
|||||||
:show-file-list="false"
|
:show-file-list="false"
|
||||||
multiple
|
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>
|
</el-upload>
|
||||||
<div>
|
<div>
|
||||||
<el-button
|
<el-button
|
||||||
@ -149,7 +149,7 @@
|
|||||||
type="danger"
|
type="danger"
|
||||||
@click.stop="editPicList('图片')"
|
@click.stop="editPicList('图片')"
|
||||||
v-if="pictureType"
|
v-if="pictureType"
|
||||||
>删除{{typeDate =='pic'?'图片':'视频'}}
|
>删除{{typeDate =='pic'?'图片':'文件'}}
|
||||||
</el-button
|
</el-button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@ -181,11 +181,11 @@
|
|||||||
<div class="abs_video">
|
<div class="abs_video">
|
||||||
<el-radio-group v-model="typeDate" @change="radioChange" size="small">
|
<el-radio-group v-model="typeDate" @change="radioChange" size="small">
|
||||||
<el-radio-button label="pic">图片</el-radio-button>
|
<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>
|
</el-radio-group>
|
||||||
</div>
|
</div>
|
||||||
</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">
|
<div v-show="isShowPic" class="imagesNo">
|
||||||
<i
|
<i
|
||||||
class="el-icon-picture"
|
class="el-icon-picture"
|
||||||
@ -208,17 +208,44 @@
|
|||||||
v-lazy="item.sattDir ? item.sattDir : localImg"
|
v-lazy="item.sattDir ? item.sattDir : localImg"
|
||||||
:class="item.isSelect ? 'on' : ''"
|
:class="item.isSelect ? 'on' : ''"
|
||||||
@click="changImage(item, index, pictrueList.list)"
|
@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>
|
||||||
</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>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
@ -386,7 +413,7 @@ export default {
|
|||||||
page: 1,
|
page: 1,
|
||||||
limit: 10,
|
limit: 10,
|
||||||
pid: 0,
|
pid: 0,
|
||||||
attType: "jpg,jpeg,gif,png,bmp,PNG,JPG",
|
attType: "image_ext_str",
|
||||||
},
|
},
|
||||||
classifyId: 0,
|
classifyId: 0,
|
||||||
myHeaders: {"X-Token": getToken()},
|
myHeaders: {"X-Token": getToken()},
|
||||||
@ -478,7 +505,7 @@ export default {
|
|||||||
// 表单分类
|
// 表单分类
|
||||||
handlerGetList() {
|
handlerGetList() {
|
||||||
let datas = {
|
let datas = {
|
||||||
name: "全部图片",
|
name: "默认",
|
||||||
id: "",
|
id: "",
|
||||||
};
|
};
|
||||||
treeCategroy(this.treeFrom).then((data) => {
|
treeCategroy(this.treeFrom).then((data) => {
|
||||||
@ -494,7 +521,7 @@ export default {
|
|||||||
// 所有分类
|
// 所有分类
|
||||||
getList() {
|
getList() {
|
||||||
const data = {
|
const data = {
|
||||||
name: "全部图片",
|
name: "默认",
|
||||||
id: 10000,
|
id: 10000,
|
||||||
};
|
};
|
||||||
treeCategroy(this.treeFrom).then((res) => {
|
treeCategroy(this.treeFrom).then((res) => {
|
||||||
@ -651,27 +678,30 @@ export default {
|
|||||||
// 点击使用选中图片
|
// 点击使用选中图片
|
||||||
checkPics() {
|
checkPics() {
|
||||||
if (!this.checkPicList.length)
|
if (!this.checkPicList.length)
|
||||||
return this.$message.warning("请先选择图片");
|
return this.$message.warning("请先选择");
|
||||||
if (this.$route && this.$route.query.field === "dialog") {
|
if (this.$route && this.$route.query.field === "dialog") {
|
||||||
let str = "";
|
let str = "";
|
||||||
for (let i = 0; i < this.checkPicList.length; i++) {
|
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 */
|
/* eslint-disable */
|
||||||
nowEditor.dialog.close(true);
|
nowEditor.dialog.close(true);
|
||||||
nowEditor.editor.setContent(str, true);
|
nowEditor.editor.setContent(str, true);
|
||||||
} else {
|
} else {
|
||||||
if (this.isMore === "1" && this.checkPicList.length > 1) {
|
if (this.isMore === "1" && this.checkPicList.length > 1) {
|
||||||
return this.$message.warning("最多只能选一张图片");
|
return this.$message.warning("最多只能选一张");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$emit("getImage", [...this.checkedMore, ...this.checkPicList]);
|
this.$emit("getImage", [...this.checkedMore, ...this.checkPicList]);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 删除图片
|
// 删除删除
|
||||||
editPicList(tit) {
|
editPicList(tit) {
|
||||||
if (!this.checkPicList.length)
|
if (!this.checkPicList.length)
|
||||||
return this.$message.warning("请先选择图片");
|
return this.$message.warning("请先选择");
|
||||||
this.$modalSure().then(() => {
|
this.$modalSure().then(() => {
|
||||||
fileDeleteApi(this.ids.join(",")).then(() => {
|
fileDeleteApi(this.ids.join(",")).then(() => {
|
||||||
this.$message.success("刪除成功");
|
this.$message.success("刪除成功");
|
||||||
@ -689,7 +719,7 @@ export default {
|
|||||||
};
|
};
|
||||||
this.getMove();
|
this.getMove();
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning("请先选择图片");
|
this.$message.warning("请先选择");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getMove() {
|
getMove() {
|
||||||
@ -713,10 +743,10 @@ export default {
|
|||||||
},
|
},
|
||||||
videoChange(val) {
|
videoChange(val) {
|
||||||
if (val == false) {
|
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();
|
this.getFileList();
|
||||||
} else {
|
} else {
|
||||||
this.$set(this.tableData, "attType", "video/mp4");
|
this.$set(this.tableData, "attType", "file_ext_str");
|
||||||
this.getFileList();
|
this.getFileList();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -901,8 +931,8 @@ export default {
|
|||||||
.gridPic {
|
.gridPic {
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
width: 110px;
|
width: 140px;
|
||||||
height: 110px;
|
height: 140px;
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
@ -918,6 +948,12 @@ export default {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
embed {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.num_badge {
|
.num_badge {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 6px;
|
bottom: 6px;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="上传图片"
|
title="上传附件"
|
||||||
:visible.sync="visible"
|
:visible.sync="visible"
|
||||||
width="950px"
|
width="950px"
|
||||||
:modal="booleanVal"
|
:modal="booleanVal"
|
||||||
|
@ -22,6 +22,31 @@ const operationRouter = {
|
|||||||
icon: 'clipboard'
|
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',
|
path:'notification',
|
||||||
name:'notification',
|
name:'notification',
|
||||||
@ -148,6 +173,12 @@ const operationRouter = {
|
|||||||
name: 'freightSet',
|
name: 'freightSet',
|
||||||
meta: { title: '配送模板', noCache: true }
|
meta: { title: '配送模板', noCache: true }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'deliveryTime',
|
||||||
|
component: () => import('@/views/deliveryTime'),
|
||||||
|
name: 'deliveryTime',
|
||||||
|
meta: { title: '送达时间', noCache: true }
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
@ -36,6 +36,12 @@ const storeRouter = {
|
|||||||
name: 'StoreComment',
|
name: 'StoreComment',
|
||||||
meta: { title: '商品评论', icon: '' }
|
meta: { title: '商品评论', icon: '' }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'problem/:id?',
|
||||||
|
component: () => import('@/views/store/problem/index'),
|
||||||
|
name: 'Problem',
|
||||||
|
meta: { title: '商品常见问题', icon: '' }
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: 'list/creatProduct/:id?/:isDisabled?',
|
path: 'list/creatProduct/:id?/:isDisabled?',
|
||||||
component: () => import('@/views/store/creatStore/index'),
|
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="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="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="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="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="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="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="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="refunded">已退款 {{ '(' +orderChartType.refunded?orderChartType.refunded:0+ ')' }}</el-radio-button>
|
||||||
<el-radio-button label="deleted">已删除 {{ '(' +orderChartType.deleted?orderChartType.deleted:0+ ')' }}</el-radio-button>
|
<el-radio-button label="deleted">已删除 {{ '(' +orderChartType.deleted?orderChartType.deleted:0+ ')' }}</el-radio-button>
|
||||||
@ -55,16 +56,16 @@
|
|||||||
:data="tableData.data"
|
:data="tableData.data"
|
||||||
size="mini"
|
size="mini"
|
||||||
class="table"
|
class="table"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
highlight-current-row
|
highlight-current-row
|
||||||
:header-cell-style=" {fontWeight:'bold'}"
|
:header-cell-style=" {fontWeight:'bold'}"
|
||||||
:row-key="(row)=>{ return row.orderId}"
|
:row-key="(row)=>{ return row.orderId}"
|
||||||
>
|
>
|
||||||
<!-- @selection-change="handleSelectionChange" -->
|
<el-table-column
|
||||||
<!-- <el-table-column
|
|
||||||
type="selection"
|
type="selection"
|
||||||
:reserve-selection="true"
|
:reserve-selection="true"
|
||||||
width="55"
|
width="55"
|
||||||
/> -->
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="订单号"
|
label="订单号"
|
||||||
min-width="210"
|
min-width="210"
|
||||||
@ -145,7 +146,7 @@
|
|||||||
<span class="acea-row">
|
<span class="acea-row">
|
||||||
退款凭证:
|
退款凭证:
|
||||||
<template v-if="scope.row.refundReasonWapImg">
|
<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
|
<el-image
|
||||||
:src="item"
|
:src="item"
|
||||||
:preview-src-list="[item]"
|
:preview-src-list="[item]"
|
||||||
@ -169,8 +170,9 @@
|
|||||||
/>
|
/>
|
||||||
<el-table-column label="操作" min-width="150" fixed="right" align="center">
|
<el-table-column label="操作" min-width="150" fixed="right" align="center">
|
||||||
<template slot-scope="scope">
|
<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.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.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-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">
|
<el-dropdown trigger="click">
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
@ -306,7 +308,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<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 cardsData from '@/components/cards/index'
|
||||||
import zbParser from '@/components/FormGenerator/components/parser/ZBParser'
|
import zbParser from '@/components/FormGenerator/components/parser/ZBParser'
|
||||||
import detailsFrom from './orderDetail'
|
import detailsFrom from './orderDetail'
|
||||||
@ -316,7 +318,9 @@
|
|||||||
import Cookies from 'js-cookie'
|
import Cookies from 'js-cookie'
|
||||||
import { isWriteOff } from "@/utils";
|
import { isWriteOff } from "@/utils";
|
||||||
import {orderExcelApi} from '@/api/store'
|
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 {
|
export default {
|
||||||
name: 'orderlistDetails',
|
name: 'orderlistDetails',
|
||||||
components: {
|
components: {
|
||||||
@ -436,7 +440,7 @@
|
|||||||
onOrderRefund(row) {
|
onOrderRefund(row) {
|
||||||
this.refundData = {
|
this.refundData = {
|
||||||
orderId: row.orderId,
|
orderId: row.orderId,
|
||||||
amount: row.payPrice,
|
amount: row.refundPrice,
|
||||||
type: ''
|
type: ''
|
||||||
}
|
}
|
||||||
this.orderids = row.orderId
|
this.orderids = row.orderId
|
||||||
@ -449,11 +453,25 @@
|
|||||||
this.getList()
|
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) {
|
sendOrder(row) {
|
||||||
if(row.type===0){
|
if(row.type===0){
|
||||||
this.$refs.send.modals = true;
|
this.$refs.send.modals = true;
|
||||||
this.$refs.send.getList();
|
// this.$refs.send.getList();
|
||||||
this.$refs.send.sheetInfo();
|
this.$refs.send.sheetInfo();
|
||||||
}else{
|
}else{
|
||||||
this.$refs.videoSend.modals = true;
|
this.$refs.videoSend.modals = true;
|
||||||
|
@ -66,6 +66,36 @@
|
|||||||
<div class="description-term">送货人电话:{{orderDatalist.deliveryId}}</div>
|
<div class="description-term">送货人电话:{{orderDatalist.deliveryId}}</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</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">
|
<template v-if="orderDatalist.mark">
|
||||||
<el-divider></el-divider>
|
<el-divider></el-divider>
|
||||||
<div class="title">用户备注</div>
|
<div class="title">用户备注</div>
|
||||||
@ -104,10 +134,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>0
|
<script>
|
||||||
|
import Level from "@/views/user/list/level.vue";
|
||||||
|
|
||||||
|
0
|
||||||
import { orderDetailApi, getLogisticsInfoApi } from '@/api/order'
|
import { orderDetailApi, getLogisticsInfoApi } from '@/api/order'
|
||||||
export default {
|
export default {
|
||||||
name: 'OrderDetail',
|
name: 'OrderDetail',
|
||||||
|
components: {Level},
|
||||||
props: {
|
props: {
|
||||||
orderId: {
|
orderId: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -217,4 +251,10 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
border: 1px solid #ccc; /* 设置边框 */
|
||||||
|
padding: 10px; /* 设置内边距 */
|
||||||
|
margin: 10px 0; /* 设置外边距 */
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
<el-form ref="formItem" :model="formItem" label-width="110px" @submit.native.prevent :rules="rules">
|
<el-form ref="formItem" :model="formItem" label-width="110px" @submit.native.prevent :rules="rules">
|
||||||
<el-form-item label="选择类型:">
|
<el-form-item label="选择类型:">
|
||||||
<el-radio-group v-model="formItem.type" @change="changeRadioType(formItem.type)">
|
<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="2">送货</el-radio>
|
||||||
<el-radio label="3">虚拟</el-radio>
|
<!-- <el-radio label="3">虚拟</el-radio>-->
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-if="formItem.type==='1'">
|
<div v-if="formItem.type==='1'">
|
||||||
@ -67,12 +67,12 @@
|
|||||||
<el-input v-model="formItem.deliveryTel" placeholder="请输入送货人电话" style="width:80%;"></el-input>
|
<el-input v-model="formItem.deliveryTel" placeholder="请输入送货人电话" style="width:80%;"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<!-- <div>-->
|
||||||
<el-form-item label="" >
|
<!-- <el-form-item label="" >-->
|
||||||
<div style="color:#CECECE;">顺丰请输入单号:收件人或寄件人手机号后四位</div>
|
<!-- <div style="color:#CECECE;">顺丰请输入单号:收件人或寄件人手机号后四位</div>-->
|
||||||
<div style="color:#CECECE;">例如:SF000000000000:3941</div>
|
<!-- <div style="color:#CECECE;">例如:SF000000000000:3941</div>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<el-button type="primary" @click="putSend('formItem')">提交</el-button>
|
<el-button type="primary" @click="putSend('formItem')">提交</el-button>
|
||||||
@ -103,7 +103,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
formItem: {
|
formItem: {
|
||||||
type: '1',
|
type: '2',
|
||||||
expressRecordType: '1',
|
expressRecordType: '1',
|
||||||
expressId: '',
|
expressId: '',
|
||||||
expressCode: '',
|
expressCode: '',
|
||||||
@ -220,7 +220,7 @@
|
|||||||
cancel(name) {
|
cancel(name) {
|
||||||
this.modals = false;
|
this.modals = false;
|
||||||
this.$refs[name].resetFields();
|
this.$refs[name].resetFields();
|
||||||
this.formItem.type = '1';
|
this.formItem.type = '2';
|
||||||
this.formItem.expressRecordType = '1';
|
this.formItem.expressRecordType = '1';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -291,6 +291,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</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-row v-show="currentTab === 1 && isDisabled">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="商品详情:">
|
<el-form-item label="商品详情:">
|
||||||
@ -298,6 +305,13 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</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-row v-show="currentTab === 2">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
@ -306,11 +320,11 @@
|
|||||||
<el-input-number v-model="formValidate.sort" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
<el-input-number v-model="formValidate.sort" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-bind="grid">
|
<!-- <el-col v-bind="grid">-->
|
||||||
<el-form-item label="积分:">
|
<!-- <el-form-item label="积分:">-->
|
||||||
<el-input-number v-model="formValidate.giveIntegral" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
<!-- <el-input-number v-model="formValidate.giveIntegral" :min="0" placeholder="请输入排序" :disabled="isDisabled" />-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col v-bind="grid">
|
<el-col v-bind="grid">
|
||||||
<el-form-item label="虚拟销量:">
|
<el-form-item label="虚拟销量:">
|
||||||
<el-input-number v-model="formValidate.ficti" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
<el-input-number v-model="formValidate.ficti" :min="0" placeholder="请输入排序" :disabled="isDisabled" />
|
||||||
@ -421,7 +435,7 @@
|
|||||||
cost: 0,
|
cost: 0,
|
||||||
otPrice: 0,
|
otPrice: 0,
|
||||||
stock: 0,
|
stock: 0,
|
||||||
barCode: '',
|
// barCode: '',
|
||||||
// weight: 0,
|
// weight: 0,
|
||||||
// volume: 0
|
// volume: 0
|
||||||
}],
|
}],
|
||||||
@ -429,11 +443,12 @@
|
|||||||
selectRule: '',
|
selectRule: '',
|
||||||
isSub: false,
|
isSub: false,
|
||||||
content: '',
|
content: '',
|
||||||
|
qualityTest: '',
|
||||||
specType: false,
|
specType: false,
|
||||||
id: 0,
|
id: 0,
|
||||||
couponIds: [],
|
couponIds: [],
|
||||||
coupons: [],
|
coupons: [],
|
||||||
activity: ['默认','秒杀']
|
activity: ['默认']//,'秒杀'
|
||||||
}
|
}
|
||||||
const objTitle = {
|
const objTitle = {
|
||||||
price: {
|
price: {
|
||||||
@ -448,9 +463,9 @@
|
|||||||
stock: {
|
stock: {
|
||||||
title: '库存'
|
title: '库存'
|
||||||
},
|
},
|
||||||
barCode: {
|
// barCode: {
|
||||||
title: '商品编号'
|
// title: '商品编号'
|
||||||
},
|
// },
|
||||||
// weight: {
|
// weight: {
|
||||||
// title: '重量(KG)'
|
// title: '重量(KG)'
|
||||||
// },
|
// },
|
||||||
@ -464,7 +479,7 @@
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isDisabled: this.$route.params.isDisabled==='1'?true:false,
|
isDisabled: this.$route.params.isDisabled==='1'?true:false,
|
||||||
activity: { '默认': 'red', '秒杀': 'blue' },
|
activity: { '默认': 'red'}, // , '秒杀': 'blue'
|
||||||
props2: {
|
props2: {
|
||||||
children: 'child',
|
children: 'child',
|
||||||
label: 'name',
|
label: 'name',
|
||||||
@ -705,7 +720,7 @@
|
|||||||
cost: 0,
|
cost: 0,
|
||||||
otPrice: 0,
|
otPrice: 0,
|
||||||
stock: 0,
|
stock: 0,
|
||||||
barCode: '',
|
// barCode: '',
|
||||||
// weight: 0,
|
// weight: 0,
|
||||||
// volume: 0,
|
// volume: 0,
|
||||||
brokerage: 0,
|
brokerage: 0,
|
||||||
@ -736,7 +751,7 @@
|
|||||||
cost: 0,
|
cost: 0,
|
||||||
otPrice: 0,
|
otPrice: 0,
|
||||||
stock: 0,
|
stock: 0,
|
||||||
barCode: '',
|
// barCode: '',
|
||||||
// weight: 0,
|
// weight: 0,
|
||||||
// volume: 0,
|
// volume: 0,
|
||||||
brokerage: 0,
|
brokerage: 0,
|
||||||
@ -869,7 +884,7 @@
|
|||||||
this.$set(val, 'cost', this.oneFormBatch[0].cost)
|
this.$set(val, 'cost', this.oneFormBatch[0].cost)
|
||||||
this.$set(val, 'otPrice', this.oneFormBatch[0].otPrice)
|
this.$set(val, 'otPrice', this.oneFormBatch[0].otPrice)
|
||||||
this.$set(val, 'stock', this.oneFormBatch[0].stock)
|
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, 'weight', this.oneFormBatch[0].weight)
|
||||||
// this.$set(val, 'volume', this.oneFormBatch[0].volume)
|
// this.$set(val, 'volume', this.oneFormBatch[0].volume)
|
||||||
this.$set(val, 'brokerage', this.oneFormBatch[0].brokerage)
|
this.$set(val, 'brokerage', this.oneFormBatch[0].brokerage)
|
||||||
@ -978,13 +993,14 @@
|
|||||||
selectRule: info.selectRule,
|
selectRule: info.selectRule,
|
||||||
isSub: info.isSub,
|
isSub: info.isSub,
|
||||||
content: this.$selfUtil.replaceImgSrcHttps(info.content),
|
content: this.$selfUtil.replaceImgSrcHttps(info.content),
|
||||||
|
qualityTest: this.$selfUtil.replaceImgSrcHttps(info.qualityTest),
|
||||||
specType: info.specType,
|
specType: info.specType,
|
||||||
id: info.id,
|
id: info.id,
|
||||||
giveIntegral: info.giveIntegral,
|
giveIntegral: info.giveIntegral,
|
||||||
ficti: info.ficti,
|
ficti: info.ficti,
|
||||||
coupons: info.coupons,
|
coupons: info.coupons,
|
||||||
couponIds: info.couponIds,
|
couponIds: info.couponIds,
|
||||||
activity: info.activityStr ? info.activityStr.split(',') : ['默认','秒杀']
|
activity: info.activityStr ? info.activityStr.split(',') : ['默认']// ,'秒杀'
|
||||||
}
|
}
|
||||||
marketingSendApi({type:3}).then(res=>{
|
marketingSendApi({type:3}).then(res=>{
|
||||||
if(this.formValidate.couponIds !== null){
|
if(this.formValidate.couponIds !== null){
|
||||||
@ -1217,12 +1233,13 @@
|
|||||||
goodDesignList({gid:70}).then((response)=>{
|
goodDesignList({gid:70}).then((response)=>{
|
||||||
let list = response.list;
|
let list = response.list;
|
||||||
let arr = [],arr1 = [];
|
let arr = [],arr1 = [];
|
||||||
const listArr = [{ name: '是否热卖', value: 'isGood' }];
|
const listArr = [{ name: '为你推荐', value: 'isGood' }];
|
||||||
let typeLists = [
|
let typeLists = [
|
||||||
{ name: '', value: 'isHot',type:'2' }, //热门榜单
|
// { name: '', value: 'isHot',type:'2' }, //热门榜单
|
||||||
{ name: '', value: 'isBenefit' ,type:'4'}, //促销单品
|
// { name: '', value: 'isBenefit' ,type:'4'}, //促销单品
|
||||||
{ name: '', value: 'isBest',type:'1' }, //精品推荐
|
{ name: '', value: 'isBest',type:'1' }, //精品推荐
|
||||||
{ name: '', value: 'isNew',type:'3' }]; //首发新品
|
// { name: '', value: 'isNew',type:'3' }, //首发新品
|
||||||
|
];
|
||||||
list.forEach((item)=>{
|
list.forEach((item)=>{
|
||||||
let obj = {};
|
let obj = {};
|
||||||
obj.value = JSON.parse(item.value);
|
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>
|
<el-button size="small" type="primary" class="mr10" v-hasPermi="['admin:product:save']">添加商品</el-button>
|
||||||
</router-link>
|
</router-link>
|
||||||
<!-- <el-button size="small" type="success" class="mr10" @click="onCopy" v-hasPermi="['admin:product:save']">商品采集</el-button>-->
|
<!-- <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>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
v-loading="listLoading"
|
v-loading="listLoading"
|
||||||
@ -133,14 +134,17 @@
|
|||||||
<router-link :to="{path: '/store/list/creatProduct/' + scope.row.id}">
|
<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>
|
<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>
|
</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>
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:page-sizes="[20, 40, 60, 80]"
|
:page-sizes="[10, 20, 40, 60]"
|
||||||
:page-size="tableFrom.limit"
|
:page-size="tableFrom.limit"
|
||||||
:current-page="tableFrom.page"
|
:current-page="tableFrom.page"
|
||||||
layout="total, sizes, prev, pager, next, jumper"
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
@ -150,6 +154,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-dialog
|
<el-dialog
|
||||||
title="复制淘宝、天猫、京东、苏宁"
|
title="复制淘宝、天猫、京东、苏宁"
|
||||||
:visible.sync="dialogVisible"
|
:visible.sync="dialogVisible"
|
||||||
@ -159,17 +164,56 @@
|
|||||||
:before-close="handleClose">
|
:before-close="handleClose">
|
||||||
<tao-bao v-if="dialogVisible" @handleCloseMod="handleCloseMod"></tao-bao>
|
<tao-bao v-if="dialogVisible" @handleCloseMod="handleCloseMod"></tao-bao>
|
||||||
</el-dialog>
|
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<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 { getToken } from '@/utils/auth'
|
||||||
import taoBao from './taoBao'
|
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 {
|
export default {
|
||||||
name: 'ProductList',
|
name: 'ProductList',
|
||||||
components: { taoBao },
|
computed: {
|
||||||
|
tableHeader() {
|
||||||
|
return tableHeader
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {AddOrUpdate, edit, CreatTemplates, taoBao, UploadExcelComponent },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
@ -187,15 +231,21 @@ export default {
|
|||||||
},
|
},
|
||||||
tableFrom: {
|
tableFrom: {
|
||||||
page: 1,
|
page: 1,
|
||||||
limit: 20,
|
limit: 10,
|
||||||
cateId: '',
|
cateId: '',
|
||||||
keywords: '',
|
keywords: '',
|
||||||
type: '1'
|
type: '1'
|
||||||
},
|
},
|
||||||
|
excelTableData: [],
|
||||||
|
excelTableHeader: [],
|
||||||
|
excelUploadState: true,
|
||||||
|
excelUploadFile: '',
|
||||||
categoryList: [],
|
categoryList: [],
|
||||||
merCateList: [],
|
merCateList: [],
|
||||||
objectUrl: process.env.VUE_APP_BASE_API,
|
objectUrl: process.env.VUE_APP_BASE_API,
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
|
importVisible: false,
|
||||||
|
problemVisible: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
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() {
|
seachList() {
|
||||||
this.tableFrom.page = 1
|
this.tableFrom.page = 1
|
||||||
this.getList()
|
this.getList()
|
||||||
@ -223,6 +309,11 @@ export default {
|
|||||||
handleClose() {
|
handleClose() {
|
||||||
this.dialogVisible = false
|
this.dialogVisible = false
|
||||||
},
|
},
|
||||||
|
uploadExcelClose() {
|
||||||
|
this.importVisible = false
|
||||||
|
this.excelUploadState = true;
|
||||||
|
this.$refs['excel-upload-input'].resetData();
|
||||||
|
},
|
||||||
handleCloseMod(item){
|
handleCloseMod(item){
|
||||||
this.dialogVisible = item
|
this.dialogVisible = item
|
||||||
this.goodHeade();
|
this.goodHeade();
|
||||||
@ -232,12 +323,42 @@ export default {
|
|||||||
onCopy(){
|
onCopy(){
|
||||||
this.dialogVisible = true
|
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 () {
|
exports () {
|
||||||
productExcelApi({cateId:this.tableFrom.cateId,keywords: this.tableFrom.keywords, type:this.tableFrom.type}).then((res) => {
|
productExcelApi({cateId:this.tableFrom.cateId,keywords: this.tableFrom.keywords, type:this.tableFrom.type}).then((res) => {
|
||||||
window.location.href = res.fileName;
|
window.location.href = res.fileName;
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
importExcel() {
|
||||||
|
this.importVisible = true
|
||||||
|
},
|
||||||
// 获取商品表单头数量
|
// 获取商品表单头数量
|
||||||
goodHeade () {
|
goodHeade () {
|
||||||
productHeadersApi().then(res => {
|
productHeadersApi().then(res => {
|
||||||
@ -285,6 +406,12 @@ export default {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
productProblem(id) {
|
||||||
|
this.problemVisible = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.problemList.init(id)
|
||||||
|
})
|
||||||
|
},
|
||||||
onchangeIsShow(row) {
|
onchangeIsShow(row) {
|
||||||
row.isShow
|
row.isShow
|
||||||
? putOnShellApi( row.id ).then(() => {
|
? 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>
|
</template>
|
||||||
<el-table-column align="center" label="图片" min-width="80">
|
<el-table-column align="center" label="图片" min-width="80">
|
||||||
<template slot-scope="scope">
|
<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 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-if="scope.row.image" class="pictrue pictrueTab"><img :src="scope.row.image"></div>
|
||||||
<div v-else class="upLoad pictrueTab">
|
<div v-else class="upLoad pictrueTab">
|
||||||
@ -696,7 +696,7 @@
|
|||||||
let list = response.list;
|
let list = response.list;
|
||||||
let arr = [];
|
let arr = [];
|
||||||
let arr1 = [];
|
let arr1 = [];
|
||||||
const listArr = [{ name: '是否热卖', value: 'isHot' }];
|
const listArr = [{ name: '为你推荐', value: 'isHot' }];
|
||||||
let typeLists = [
|
let typeLists = [
|
||||||
{ name: '', value: 'isGood',type:'2' }, //精品推荐1 热门榜单2 首发新品3 促销单品4
|
{ name: '', value: 'isGood',type:'2' }, //精品推荐1 热门榜单2 首发新品3 促销单品4
|
||||||
{ name: '', value: 'isBenefit' ,type:'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 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">
|
<el-table-column align="center" label="可配送区域" min-width="260">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.$index === 0">默认全国</span>
|
<!-- <span v-if="scope.$index === 0">默认全国</span>-->
|
||||||
<el-cascader
|
<el-cascader
|
||||||
v-else
|
|
||||||
v-model="scope.row.city_ids"
|
v-model="scope.row.city_ids"
|
||||||
style="width: 98%"
|
style="width: 98%"
|
||||||
:options="cityList"
|
:options="cityList"
|
||||||
@ -67,7 +66,6 @@
|
|||||||
<el-table-column align="center" label="操作" min-width="80">
|
<el-table-column align="center" label="操作" min-width="80">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.$index > 0"
|
|
||||||
type="text"
|
type="text"
|
||||||
size="small"
|
size="small"
|
||||||
@click="confirmEdit(ruleForm.region,scope.$index)"
|
@click="confirmEdit(ruleForm.region,scope.$index)"
|
||||||
@ -96,7 +94,7 @@
|
|||||||
<el-cascader
|
<el-cascader
|
||||||
v-model="row.city_ids"
|
v-model="row.city_ids"
|
||||||
style="width: 95%"
|
style="width: 95%"
|
||||||
:options="cityList"
|
:options="a_cityList"
|
||||||
:props="props"
|
:props="props"
|
||||||
collapse-tags
|
collapse-tags
|
||||||
clearable
|
clearable
|
||||||
@ -179,7 +177,7 @@ const defaultRole = {
|
|||||||
firstPrice: 0,
|
firstPrice: 0,
|
||||||
renewal: 0,
|
renewal: 0,
|
||||||
renewalPrice: 0,
|
renewalPrice: 0,
|
||||||
city_ids: []
|
city_ids: [],
|
||||||
}],
|
}],
|
||||||
undelivery: 0,
|
undelivery: 0,
|
||||||
free: [],
|
free: [],
|
||||||
@ -264,6 +262,7 @@ export default {
|
|||||||
ruleForm: Object.assign({}, defaultRole),
|
ruleForm: Object.assign({}, defaultRole),
|
||||||
listLoading: false,
|
listLoading: false,
|
||||||
cityList: [],
|
cityList: [],
|
||||||
|
a_cityList: [],
|
||||||
columns: {
|
columns: {
|
||||||
title: '首件',
|
title: '首件',
|
||||||
title2: '续件',
|
title2: '续件',
|
||||||
@ -271,13 +270,17 @@ export default {
|
|||||||
},
|
},
|
||||||
isShowPrice: true,
|
isShowPrice: true,
|
||||||
tempId: 0,
|
tempId: 0,
|
||||||
type: 0 // 0添加 1编辑
|
type: 0, // 0添加 1编辑
|
||||||
|
defaultCity : {"id":0,"cityId":0,"name":"默认全国","city_ids":[[0]],"child":null}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
cityList.unshift(this.defaultCity);
|
||||||
this.cityList = cityList;
|
this.cityList = cityList;
|
||||||
|
this.a_cityList = a_cityList;
|
||||||
},1000);
|
},1000);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -314,7 +317,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
changeRegion(value) {
|
changeRegion(value) {
|
||||||
console.log(value)
|
|
||||||
},
|
},
|
||||||
changeRadio(num) {
|
changeRadio(num) {
|
||||||
this.columns = Object.assign({}, statusMap[num - 1])
|
this.columns = Object.assign({}, statusMap[num - 1])
|
||||||
@ -403,7 +405,10 @@ export default {
|
|||||||
logistics.cityListTree().then(res => {
|
logistics.cityListTree().then(res => {
|
||||||
sessionStorage.setItem('cityList',JSON.stringify(res));
|
sessionStorage.setItem('cityList',JSON.stringify(res));
|
||||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
cityList.unshift(this.defaultCity);
|
||||||
this.cityList = cityList;
|
this.cityList = cityList;
|
||||||
|
this.a_cityList = a_cityList;
|
||||||
}).catch(res => {
|
}).catch(res => {
|
||||||
this.$message.error(res.message)
|
this.$message.error(res.message)
|
||||||
})
|
})
|
||||||
@ -441,31 +446,38 @@ export default {
|
|||||||
// // 指定包邮设置
|
// // 指定包邮设置
|
||||||
// shippingTemplatesFreeRequestList: []
|
// shippingTemplatesFreeRequestList: []
|
||||||
}
|
}
|
||||||
|
let isAllNum = 0;
|
||||||
this.ruleForm.region.forEach((el, index) => {
|
this.ruleForm.region.forEach((el, index) => {
|
||||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
let cityId = 'all';
|
||||||
for (var i = 0; i < el.city_ids.length; i++) {
|
let title = JSON.stringify([[0]]);
|
||||||
el.city_ids[i].shift()
|
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 = this.ruleForm.region
|
||||||
param.shippingTemplatesRegionRequestList.forEach((el, index) => {
|
|
||||||
// delete el.city_ids
|
|
||||||
// delete el.city_id
|
|
||||||
})
|
|
||||||
if (this.ruleForm.appoint) {
|
if (this.ruleForm.appoint) {
|
||||||
this.ruleForm.free.forEach((el, index) => {
|
this.ruleForm.free.forEach((el, index) => {
|
||||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
let cityId = 'all';
|
||||||
for (var i = 0; i < el.city_ids.length; i++) {
|
let title = JSON.stringify([[0]]);
|
||||||
el.city_ids[i].shift()
|
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 = this.ruleForm.free
|
||||||
param.shippingTemplatesFreeRequestList.forEach((el, index) => {
|
|
||||||
// delete el.city_ids
|
|
||||||
// delete el.city_id
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
if (this.type === 0) {
|
if (this.type === 0) {
|
||||||
logistics.shippingSave(param).then(res => {
|
logistics.shippingSave(param).then(res => {
|
||||||
@ -519,4 +531,7 @@ export default {
|
|||||||
width: 100px !important;
|
width: 100px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.el-table__row .el-form-item--mini.el-form-item {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -239,7 +239,7 @@
|
|||||||
onchangeTime(e){
|
onchangeTime(e){
|
||||||
this.ruleForm.dayTime = e ? e.join(',') : '';
|
this.ruleForm.dayTime = e ? e.join(',') : '';
|
||||||
},
|
},
|
||||||
//上传图片
|
//上传附件
|
||||||
modalPicTap (tit) {
|
modalPicTap (tit) {
|
||||||
const _this = this
|
const _this = this
|
||||||
this.$modalUpload(function(img) {
|
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 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">
|
<el-table-column align="center" label="可配送区域" min-width="260">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.$index === 0">默认全国</span>
|
<!-- <span v-if="scope.$index === 0">默认全国</span>-->
|
||||||
<el-cascader
|
<el-cascader
|
||||||
v-else
|
|
||||||
v-model="scope.row.city_ids"
|
v-model="scope.row.city_ids"
|
||||||
style="width: 98%"
|
style="width: 98%"
|
||||||
:options="cityList"
|
:options="cityList"
|
||||||
@ -67,7 +66,6 @@
|
|||||||
<el-table-column align="center" label="操作" min-width="80">
|
<el-table-column align="center" label="操作" min-width="80">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.$index > 0"
|
|
||||||
type="text"
|
type="text"
|
||||||
size="small"
|
size="small"
|
||||||
@click="confirmEdit(ruleForm.region,scope.$index)"
|
@click="confirmEdit(ruleForm.region,scope.$index)"
|
||||||
@ -96,7 +94,7 @@
|
|||||||
<el-cascader
|
<el-cascader
|
||||||
v-model="row.city_ids"
|
v-model="row.city_ids"
|
||||||
style="width: 95%"
|
style="width: 95%"
|
||||||
:options="cityList"
|
:options="a_cityList"
|
||||||
:props="props"
|
:props="props"
|
||||||
collapse-tags
|
collapse-tags
|
||||||
clearable
|
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"/>
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</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}">
|
<template slot-scope="{row}">
|
||||||
<el-input-number v-model="row.price" controls-position="right" />
|
<el-input-number v-model="row.price" controls-position="right" />
|
||||||
</template>
|
</template>
|
||||||
@ -263,19 +261,25 @@ export default {
|
|||||||
ruleForm: Object.assign({}, defaultRole),
|
ruleForm: Object.assign({}, defaultRole),
|
||||||
listLoading: false,
|
listLoading: false,
|
||||||
cityList: [],
|
cityList: [],
|
||||||
|
a_cityList: [],
|
||||||
columns: {
|
columns: {
|
||||||
title: '首件',
|
title: '首件',
|
||||||
title2: '续件',
|
title2: '续件',
|
||||||
title3: '包邮件数'
|
title3: '包邮件数'
|
||||||
},
|
},
|
||||||
|
isShowPrice: true,
|
||||||
tempId: 0,
|
tempId: 0,
|
||||||
type: 0 // 0添加 1编辑
|
type: 0, // 0添加 1编辑
|
||||||
|
defaultCity : {"id":0,"cityId":0,"name":"默认全国","city_ids":[[0]],"child":null}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
cityList.unshift(this.defaultCity);
|
||||||
this.cityList = cityList;
|
this.cityList = cityList;
|
||||||
|
this.a_cityList = a_cityList;
|
||||||
},1000);
|
},1000);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -312,10 +316,14 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
changeRegion(value) {
|
changeRegion(value) {
|
||||||
console.log(value)
|
|
||||||
},
|
},
|
||||||
changeRadio(num) {
|
changeRadio(num) {
|
||||||
this.columns = Object.assign({}, statusMap[num - 1])
|
this.columns = Object.assign({}, statusMap[num - 1])
|
||||||
|
if (num === 4) {
|
||||||
|
this.isShowPrice = false;
|
||||||
|
} else {
|
||||||
|
this.isShowPrice = true;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 添加配送区域
|
// 添加配送区域
|
||||||
addRegion(region) {
|
addRegion(region) {
|
||||||
@ -396,7 +404,10 @@ export default {
|
|||||||
logistics.cityListTree().then(res => {
|
logistics.cityListTree().then(res => {
|
||||||
sessionStorage.setItem('cityList',JSON.stringify(res));
|
sessionStorage.setItem('cityList',JSON.stringify(res));
|
||||||
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
let cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
let a_cityList = JSON.parse(sessionStorage.getItem('cityList'));
|
||||||
|
cityList.unshift(this.defaultCity);
|
||||||
this.cityList = cityList;
|
this.cityList = cityList;
|
||||||
|
this.a_cityList = a_cityList;
|
||||||
}).catch(res => {
|
}).catch(res => {
|
||||||
this.$message.error(res.message)
|
this.$message.error(res.message)
|
||||||
})
|
})
|
||||||
@ -434,31 +445,38 @@ export default {
|
|||||||
// // 指定包邮设置
|
// // 指定包邮设置
|
||||||
// shippingTemplatesFreeRequestList: []
|
// shippingTemplatesFreeRequestList: []
|
||||||
}
|
}
|
||||||
|
let isAllNum = 0;
|
||||||
this.ruleForm.region.forEach((el, index) => {
|
this.ruleForm.region.forEach((el, index) => {
|
||||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
let cityId = 'all';
|
||||||
for (var i = 0; i < el.city_ids.length; i++) {
|
let title = JSON.stringify([[0]]);
|
||||||
el.city_ids[i].shift()
|
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 = this.ruleForm.region
|
||||||
param.shippingTemplatesRegionRequestList.forEach((el, index) => {
|
|
||||||
// delete el.city_ids
|
|
||||||
// delete el.city_id
|
|
||||||
})
|
|
||||||
if (this.ruleForm.appoint) {
|
if (this.ruleForm.appoint) {
|
||||||
this.ruleForm.free.forEach((el, index) => {
|
this.ruleForm.free.forEach((el, index) => {
|
||||||
el.title = el.city_ids.length > 0 ? JSON.stringify(el.city_ids) : JSON.stringify([[0, 0]])
|
let cityId = 'all';
|
||||||
for (var i = 0; i < el.city_ids.length; i++) {
|
let title = JSON.stringify([[0]]);
|
||||||
el.city_ids[i].shift()
|
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 = this.ruleForm.free
|
||||||
param.shippingTemplatesFreeRequestList.forEach((el, index) => {
|
|
||||||
// delete el.city_ids
|
|
||||||
// delete el.city_id
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
if (this.type === 0) {
|
if (this.type === 0) {
|
||||||
logistics.shippingSave(param).then(res => {
|
logistics.shippingSave(param).then(res => {
|
||||||
@ -512,4 +530,7 @@ export default {
|
|||||||
width: 100px !important;
|
width: 100px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.el-table__row .el-form-item--mini.el-form-item {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -10,8 +10,7 @@
|
|||||||
:name="tab.id.toString()">
|
:name="tab.id.toString()">
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
<el-tabs v-model="activeNamel2"
|
<el-tabs v-model="activeNamel2" type="border-card" @tab-click="handleItemTabClick">
|
||||||
type="border-card" @tab-click="handleItemTabClick">
|
|
||||||
<el-tab-pane
|
<el-tab-pane
|
||||||
v-for="(tabItem,itemIndex) in tab.child"
|
v-for="(tabItem,itemIndex) in tab.child"
|
||||||
:key="itemIndex"
|
:key="itemIndex"
|
||||||
|
@ -26,13 +26,6 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</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-form-item label="状态">
|
||||||
<el-radio-group v-model="ruleForm.status">
|
<el-radio-group v-model="ruleForm.status">
|
||||||
<el-radio :label="true">开启</el-radio>
|
<el-radio :label="true">开启</el-radio>
|
||||||
@ -97,7 +90,6 @@
|
|||||||
id : res.uid,
|
id : res.uid,
|
||||||
mark: res.mark,
|
mark: res.mark,
|
||||||
// phone: res.phone,
|
// phone: res.phone,
|
||||||
isProsecutor: res.isProsecutor,
|
|
||||||
status: res.status,
|
status: res.status,
|
||||||
addres: res.addres,
|
addres: res.addres,
|
||||||
groupId: Number(res.groupId) || '',
|
groupId: Number(res.groupId) || '',
|
||||||
|
@ -16,29 +16,29 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-col>
|
</el-col>
|
||||||
<template v-if="collapse">
|
<template v-if="collapse">
|
||||||
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">-->
|
||||||
<el-col v-bind="grid">
|
<!-- <el-col v-bind="grid">-->
|
||||||
<el-form-item label="用户等级:">
|
<!-- <el-form-item label="用户等级:">-->
|
||||||
<el-select v-model="levelData" placeholder="请选择" class="selWidth" clearable filterable multiple>
|
<!-- <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-option :value="item.id" v-for="(item, index) in levelList" :key="index" :label="item.name"></el-option>-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col v-bind="grid">
|
<!-- <el-col v-bind="grid">-->
|
||||||
<el-form-item label="用户分组:">
|
<!-- <el-form-item label="用户分组:">-->
|
||||||
<el-select v-model="groupData" placeholder="请选择" class="selWidth" clearable filterable multiple>
|
<!-- <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-option :value="item.id" v-for="(item, index) in groupList" :key="index" :label="item.groupName"></el-option>-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col v-bind="grid">
|
<!-- <el-col v-bind="grid">-->
|
||||||
<el-form-item label="用户标签:">
|
<!-- <el-form-item label="用户标签:">-->
|
||||||
<el-select v-model="labelData" placeholder="请选择" class="selWidth" clearable filterable multiple>
|
<!-- <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-option :value="item.id" v-for="(item, index) in labelLists" :key="index" :label="item.name"></el-option>-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
<el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
||||||
<el-col v-bind="grid">
|
<el-col v-bind="grid">
|
||||||
<el-form-item label="国家:">
|
<el-form-item label="国家:">
|
||||||
@ -121,21 +121,21 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-bind="grid">
|
<!-- <el-col v-bind="grid">-->
|
||||||
<el-form-item label="身份:">
|
<!-- <el-form-item label="身份:">-->
|
||||||
<el-radio-group v-model="userFrom.isPromoter" type="button" class="selWidth">
|
<!-- <el-radio-group v-model="userFrom.isPromoter" type="button" class="selWidth">-->
|
||||||
<el-radio-button label="">
|
<!-- <el-radio-button label="">-->
|
||||||
<span>全部</span>
|
<!-- <span>全部</span>-->
|
||||||
</el-radio-button>
|
<!-- </el-radio-button>-->
|
||||||
<el-radio-button label="1">
|
<!-- <el-radio-button label="1">-->
|
||||||
<span>推广员</span>
|
<!-- <span>推广员</span>-->
|
||||||
</el-radio-button>
|
<!-- </el-radio-button>-->
|
||||||
<el-radio-button label="0">
|
<!-- <el-radio-button label="0">-->
|
||||||
<span>普通用户</span>
|
<!-- <span>普通用户</span>-->
|
||||||
</el-radio-button>
|
<!-- </el-radio-button>-->
|
||||||
</el-radio-group>
|
<!-- </el-radio-group>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
<!-- <el-col :xs="24" :sm="24" :md="24" :lg="18" :xl="18">
|
||||||
|
|
||||||
@ -160,8 +160,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btn_bt">
|
<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="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('group')">批量设置分组</el-button>-->
|
||||||
<el-button class="mr10" size="small" @click="setBatch('label')">批量设置标签</el-button>
|
<!-- <el-button class="mr10" size="small" @click="setBatch('label')">批量设置标签</el-button>-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
@ -229,24 +229,24 @@
|
|||||||
<span>{{scope.row.nickname | filterEmpty }} | {{scope.row.sex | sexFilter}}</span>
|
<span>{{scope.row.nickname | filterEmpty }} | {{scope.row.sex | sexFilter}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
label="用户等级"
|
<!-- label="用户等级"-->
|
||||||
min-width="100"
|
<!-- min-width="100"-->
|
||||||
>
|
<!-- >-->
|
||||||
<template slot-scope="scope">
|
<!-- <template slot-scope="scope">-->
|
||||||
<span>{{scope.row.level | levelFilter | filterEmpty}}</span>
|
<!-- <span>{{scope.row.level | levelFilter | filterEmpty}}</span>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
</el-table-column>
|
<!-- </el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="groupName"
|
<!-- prop="groupName"-->
|
||||||
label="分组"
|
<!-- label="分组"-->
|
||||||
min-width="100"
|
<!-- min-width="100"-->
|
||||||
/>
|
<!-- />-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="spreadNickname"
|
<!-- prop="spreadNickname"-->
|
||||||
label="推荐人"
|
<!-- label="推荐人"-->
|
||||||
min-width="130"
|
<!-- min-width="130"-->
|
||||||
/>
|
<!-- />-->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="手机号"
|
label="手机号"
|
||||||
min-width="100"
|
min-width="100"
|
||||||
@ -263,25 +263,16 @@
|
|||||||
<!--<span>{{scope.row.userType | typeFilter}}</span>-->
|
<!--<span>{{scope.row.userType | typeFilter}}</span>-->
|
||||||
<!--</template>-->
|
<!--</template>-->
|
||||||
<!--</el-table-column>-->
|
<!--</el-table-column>-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="nowMoney"
|
<!-- prop="nowMoney"-->
|
||||||
label="余额"
|
<!-- label="余额"-->
|
||||||
min-width="100"
|
<!-- min-width="100"-->
|
||||||
/>
|
<!-- />-->
|
||||||
<el-table-column
|
<!-- <el-table-column-->
|
||||||
prop="integral"
|
<!-- prop="integral"-->
|
||||||
label="积分"
|
<!-- label="积分"-->
|
||||||
min-width="100"
|
<!-- 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>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="操作" min-width="130" fixed="right" align="center">
|
<el-table-column label="操作" min-width="130" fixed="right" align="center">
|
||||||
@ -293,13 +284,13 @@
|
|||||||
</span>
|
</span>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<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="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="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('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="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="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="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="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="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-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user