首页推荐
This commit is contained in:
@@ -1,109 +1,105 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<el-card class="box-card">
|
||||
<div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
|
||||
<!-- <el-card class="box-card"> -->
|
||||
<!-- <div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
|
||||
添加广告
|
||||
</div>
|
||||
<el-form :rules="rules" ref="form" :model="advertisement" class="formValidate mt20 " label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="13">
|
||||
<el-form-item label="广告名称" prop="storeName">
|
||||
<el-input v-model="advertisement.storeName" maxlength="249" placeholder="请输入商品名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</div> -->
|
||||
<el-form :rules="rules" ref="form" :model="advertisement" class="formValidate " label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="广告名称" prop="advertiseName">
|
||||
<el-input v-model="advertisement.advertiseName" maxlength="249" placeholder="请输入商品名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="13">
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker style="width:100%" v-model="advertisement.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="13">
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker style="width:100%" v-model="advertisement.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker style="width:100%" v-model="advertisement.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker style="width:100%" v-model="advertisement.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="上线/下线" prop="specType">
|
||||
<el-radio-group v-model="advertisement.specType" @change="onChangeSpec(advertisement.specType)">
|
||||
<el-radio :label="false">上线</el-radio>
|
||||
<el-radio :label="true">下线</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="上线/下线" prop="isDownline">
|
||||
<el-radio-group v-model="advertisement.isDownline">
|
||||
<el-radio :label="1">上线</el-radio>
|
||||
<el-radio :label="0">下线</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col>
|
||||
<el-form-item label="广告图片" prop="picture">
|
||||
<el-upload
|
||||
:action="updateFileUrl"
|
||||
:data="$store.state.global.headOss"
|
||||
:before-upload="imgCompress"
|
||||
:on-remove="headPhotoRemove"
|
||||
:on-success="headPhotoSuccess"
|
||||
:headers="headers"
|
||||
:limit="1"
|
||||
:on-exceed="handleExceed"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过50kb</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="广告图片" prop="positionImage">
|
||||
<div class="upLoadPicBox">
|
||||
<upload :photo="advertisement.positionImage" @success="uploadSuccess" tip="只能上传jpg/png格式文件,文件不能超过50kb"></upload>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="13">
|
||||
<el-form-item label="广告链接" prop="link">
|
||||
<el-input v-model="advertisement.link" placeholder="请输入广告链接" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-col :span="15">
|
||||
<el-form-item label="广告链接" prop="advertiseUrl">
|
||||
<el-input v-model="advertisement.advertiseUrl" type='url' placeholder="请输入广告链接" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
|
||||
<el-button :size="$store.getters.size" @click="close">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- </el-card> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { imgCompress } from '@/utils'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import utils from '@/utils/encode'
|
||||
const JSESSIONID = utils.uuid()
|
||||
import marketingApi from '@/api/finance/marketing.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
import upload from '@/components/Upload/index'
|
||||
export default {
|
||||
components: { upload },
|
||||
data() {
|
||||
return {
|
||||
advertisement: { specType: false },
|
||||
imgCompress,
|
||||
updateFileUrl: process.env.VUE_APP_UPLOAD_URL,
|
||||
headers: {
|
||||
dataSources: 'WEB',
|
||||
Authorization: getToken(),
|
||||
JSESSIONID: JSESSIONID,
|
||||
token: utils.bcrypt(JSESSIONID)
|
||||
},
|
||||
advertisement: { isDownline: '1' },
|
||||
|
||||
rules: {
|
||||
storeName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
|
||||
advertiseName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
|
||||
startTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
|
||||
endTime: [{ required: true, message: '请选择结束时间', trigger: 'change' }],
|
||||
picture: [{ required: true, message: '请上传广告图片', trigger: 'change' }],
|
||||
link: [{ required: true, message: '请输入广告链接', trigger: 'blur' }]
|
||||
positionImage: [{ required: true, message: '请上传广告图片', trigger: 'change' }],
|
||||
advertiseUrl: [{ required: true, message: '请输入广告链接', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onChangeSpec(num) {},
|
||||
headPhotoRemove(file, fileList) {
|
||||
// 删除
|
||||
this.advertisement.businessLienceImg = undefined
|
||||
handleSubmit() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
this.save()
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
headPhotoSuccess(res) {
|
||||
// 头像上传成功
|
||||
this.advertisement.businessLienceImg = res.data.publicUrl
|
||||
save() {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
marketingApi.save(this.advertisement).then(res => {
|
||||
if ((res.code = 20000)) this.$message.success(res.msg)
|
||||
this.$emit('closeDialog')
|
||||
this.$emit('getList')
|
||||
})
|
||||
)
|
||||
},
|
||||
uploadSuccess(e, res) {
|
||||
console.log(res)
|
||||
if (res.code == 20000) {
|
||||
this.advertisement.positionImage = res.data.publicUrl
|
||||
}
|
||||
},
|
||||
handleSubmit() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
@@ -111,10 +107,11 @@ export default {
|
||||
this.save(this.advertisement)
|
||||
}
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.$emit('closeDialog')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="stylus">
|
||||
|
||||
</style>
|
||||
<style scoped lang="stylus"></style>
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
|
||||
<div>
|
||||
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="广告名称:" label-for="pid">
|
||||
<el-input clearable placeholder="广告名称" v-model="artFrom.name" class="form_content_width" />
|
||||
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="广告名称:">
|
||||
<el-input clearable placeholder="广告名称" v-model="page.params.advertiseName" class="form_content_width" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否上线:" label-for="store_name">
|
||||
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-form-item label="是否上线:">
|
||||
<el-select v-model="page.params.isDownline" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-option label="是" value="0" />
|
||||
<el-option label="否" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间:" label-for="store_name">
|
||||
<el-date-picker v-model="artFrom.createTime" type="date" placeholder="选择日期"> </el-date-picker>
|
||||
<el-form-item label="到期时间:">
|
||||
<el-date-picker v-model="page.params.endTime" type="date" placeholder="选择日期"> </el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="userSearchs">查询</el-button>
|
||||
@@ -22,29 +22,44 @@
|
||||
</div>
|
||||
|
||||
<el-button type="primary" class="bnt" @click="addClass()">添加广告</el-button>
|
||||
<el-dropdown class="bnt mr14" @command="batchSelect">
|
||||
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="1">删除</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column prop="categoryNum" label="编号"></el-table-column>
|
||||
<el-table-column prop="categoryName" label="广告名称"></el-table-column>
|
||||
<el-table-column prop="categoryName" label="广告位置"></el-table-column>
|
||||
<el-table-column prop="icon" label="广告图片" min-width="80">
|
||||
<el-table-column type="selection" width="55"> </el-table-column>
|
||||
<el-table-column prop="id" label="编号" min-width="120"></el-table-column>
|
||||
<el-table-column prop="advertiseName" label="广告名称"></el-table-column>
|
||||
<el-table-column prop="advertisePosition" label="广告位置"></el-table-column>
|
||||
<el-table-column prop="positionImage" label="广告图片" min-width="80">
|
||||
<template slot-scope="scope">
|
||||
<el-image style="width: 50px; height: 50px" :src="scope.row.icon" :preview-src-list="[scope.row.icon]"> </el-image>
|
||||
<el-image style="width: 50px; height: 50px" :src="scope.row.positionImage"> </el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="时间" min-width="150">
|
||||
<template slot-scope="scope">
|
||||
<span>开始时间:{{ scope.row.createTime }}</span>
|
||||
<span>开始时间:{{ scope.row.startTime }}</span>
|
||||
<br />
|
||||
<span>到期时间:{{ scope.row.updateTime }}</span>
|
||||
<span>到期时间:{{ scope.row.endTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="showFlag" label="上线/下线">
|
||||
<el-table-column prop="isDownline" label="上线/下线">
|
||||
<template slot-scope="scope">
|
||||
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
|
||||
<el-switch
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
@change="onchangeIsShow(scope.row)"
|
||||
v-model="scope.row.isDownline"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sort" label="排序" min-width="100" tooltip="true"></el-table-column>
|
||||
<el-table-column prop="sortNumber" label="排序" min-width="50" tooltip="true"></el-table-column>
|
||||
<el-table-column prop="date" label="操作" width="120" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="edit(scope.row)">编辑</el-button>
|
||||
@@ -66,32 +81,35 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 添加 编辑表单-->
|
||||
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
|
||||
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
|
||||
<edit ref="edit" :parentOptions="tableData" />
|
||||
<el-dialog title="添加广告" :visible.sync="addDialog" v-el-drag-dialog width="45%">
|
||||
<advertisementAdd @getByPage="getByPage" @closeDialog="closeDialog" v-if="addDialog" />
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="修改广告" :visible.sync="updateDialog" v-el-drag-dialog width="45%">
|
||||
<advertisementUpdate @getByPage="getByPage" @closeDialog="closeDialog" v-if="updateDialog" :advertisement="advertisement" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import edit from '@/components/Category/edit'
|
||||
import editFrom from '../../../components/from/from'
|
||||
import productApi from '@/api/product/productAttr.js'
|
||||
import advertisementAdd from './advertisementAdd'
|
||||
import advertisementUpdate from './advertisementUpdate'
|
||||
import marketingApi from '@/api/finance/marketing.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
export default {
|
||||
name: 'product_productClassify',
|
||||
components: {
|
||||
editFrom,
|
||||
edit
|
||||
// editFrom,
|
||||
advertisementAdd,
|
||||
advertisementUpdate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
editDialogConfig: {
|
||||
visible: false
|
||||
},
|
||||
addDialog: false, // 添加弹窗
|
||||
updateDialog: false, // 修改弹窗
|
||||
treeSelect: [],
|
||||
FromData: null,
|
||||
advertisement: {},
|
||||
grid: {
|
||||
xl: 7,
|
||||
lg: 7,
|
||||
@@ -100,10 +118,7 @@ export default {
|
||||
xs: 24
|
||||
},
|
||||
loading: false,
|
||||
artFrom: {
|
||||
page: 1,
|
||||
limit: 15
|
||||
},
|
||||
|
||||
page: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
@@ -127,77 +142,60 @@ export default {
|
||||
this.page.currentPage = val
|
||||
this.getList()
|
||||
},
|
||||
// 商品分类;
|
||||
goodsCategory() {},
|
||||
|
||||
// 列表
|
||||
getList() {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyGetByPage(this.page).then(res => {
|
||||
marketingApi.getByPage(this.page).then(res => {
|
||||
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
|
||||
})
|
||||
)
|
||||
},
|
||||
pageChange(index) {
|
||||
this.artFrom.page = index
|
||||
this.page.currentPage = index
|
||||
this.getList()
|
||||
},
|
||||
// 添加
|
||||
addClass(parent = null) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$refs.edit.model = 'classifySave'
|
||||
// this.$nextTick(()=>{
|
||||
// this.$refs.edit.parent = parent;
|
||||
// });
|
||||
if (parent) {
|
||||
let { categoryName, id } = parent
|
||||
this.$nextTick(() => {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
|
||||
})
|
||||
}
|
||||
addClass() {
|
||||
this.addDialog = true
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$nextTick(() => {
|
||||
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
|
||||
console.log(this.tableData.find(item => item == parentId), 'categoryName')
|
||||
if (row.level == 1) {
|
||||
this.$refs.edit.model = 'classifyUpdate'
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
|
||||
} else {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
|
||||
level,
|
||||
icon,
|
||||
showFlag,
|
||||
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
|
||||
categoryName,
|
||||
sort,
|
||||
parentId,
|
||||
id
|
||||
})
|
||||
}
|
||||
// 跳转到更新
|
||||
marketingApi.get(row.id).then(res => {
|
||||
this.advertisement = res.data
|
||||
this.updateDialog = true
|
||||
})
|
||||
},
|
||||
|
||||
closeDialog() {
|
||||
this.addDialog = false
|
||||
this.updateDialog = false
|
||||
},
|
||||
// 修改状态
|
||||
onchangeIsShow(row) {
|
||||
console.log(row)
|
||||
let data = {
|
||||
id: row.id,
|
||||
is_show: row.is_show
|
||||
isDownline: row.isDownline
|
||||
}
|
||||
setShowApi(data)
|
||||
marketingApi
|
||||
.goOnlineAndGoOffline(data)
|
||||
.then(async res => {
|
||||
this.$message.success(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
.catch(res => {
|
||||
this.$message.error(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
|
||||
// 删除
|
||||
del(row, scope) {
|
||||
console.log(scope)
|
||||
console.log(row)
|
||||
this.$alert('请确定删除!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
@@ -205,7 +203,7 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyDelete(row).then(res => {
|
||||
marketingApi.delete(row).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
@@ -218,7 +216,7 @@ export default {
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.artFrom.page = 1
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
@@ -239,8 +237,8 @@ export default {
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
115
src/views/marketing/advertisement/advertisementUpdate.vue
Normal file
115
src/views/marketing/advertisement/advertisementUpdate.vue
Normal file
@@ -0,0 +1,115 @@
|
||||
<template>
|
||||
<div class="divBox">
|
||||
<!-- <el-card class="box-card">
|
||||
<div style="width :100%;height:45px;line-height: 45px;background: #f3f3f3; padding-left:20px">
|
||||
添加广告
|
||||
</div> -->
|
||||
<el-form :rules="rules" ref="form" :model="advertisement" class="formValidate" label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="13">
|
||||
<el-form-item label="广告名称" prop="advertiseName">
|
||||
<el-input v-model="advertisement.advertiseName" maxlength="249" placeholder="请输入商品名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="13">
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker style="width:100%" v-model="advertisement.startTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="13">
|
||||
<el-form-item label="结束时间" prop="endTime">
|
||||
<el-date-picker style="width:100%" v-model="advertisement.endTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="上线/下线" prop="isDownline">
|
||||
<el-radio-group v-model="advertisement.isDownline">
|
||||
<el-radio :label="1">上线</el-radio>
|
||||
<el-radio :label="0">下线</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col>
|
||||
<el-form-item label="广告图片" prop="positionImage">
|
||||
<div class="upLoadPicBox">
|
||||
<upload :photo="advertisement.positionImage" @success="uploadSuccess" tip="只能上传jpg/png格式文件,文件不能超过50kb"></upload>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="13">
|
||||
<el-form-item label="广告链接" prop="advertiseUrl">
|
||||
<el-input v-model="advertisement.advertiseUrl" type="url" placeholder="请输入广告链接" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="submission" @click="handleSubmit">提交</el-button>
|
||||
<el-button :size="$store.getters.size" @click="close">取消</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- </el-card> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import marketingApi from '@/api/finance/marketing.js'
|
||||
import upload from '@/components/Upload/index'
|
||||
export default {
|
||||
components: { upload },
|
||||
props: {
|
||||
advertisement: {
|
||||
type: Object,
|
||||
default() {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
advertisement: { isDownline: '1' },
|
||||
|
||||
rules: {
|
||||
advertiseName: [{ required: true, message: '请输入广告名称', trigger: 'blur' }],
|
||||
startTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
|
||||
endTime: [{ required: true, message: '请选择结束时间', trigger: 'change' }],
|
||||
picture: [{ required: true, message: '请上传广告图片', trigger: 'change' }],
|
||||
advertiseUrl: [{ required: true, message: '请输入广告链接', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSubmit() {
|
||||
this.$refs['form'].validate(valid => {
|
||||
if (valid) {
|
||||
this.update()
|
||||
}
|
||||
})
|
||||
},
|
||||
update() {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
marketingApi.update(this.advertisement).then(res => {
|
||||
if ((res.code = 20000)) this.$message.success(res.msg)
|
||||
this.$emit('closeDialog')
|
||||
this.$emit('getList')
|
||||
})
|
||||
)
|
||||
},
|
||||
uploadSuccess(e, res) {
|
||||
console.log(res)
|
||||
if (res.code == 20000) {
|
||||
this.advertisement.positionImage = res.data.publicUrl
|
||||
}
|
||||
},
|
||||
close() {
|
||||
this.$emit('closeDialog')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="stylus"></style>
|
||||
@@ -2,12 +2,12 @@
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
|
||||
<div>
|
||||
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品名称:" label-for="pid">
|
||||
<el-input clearable placeholder="商品名称" v-model="artFrom.name" class="form_content_width" />
|
||||
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品名称:">
|
||||
<el-input clearable placeholder="商品名称" v-model="page.params.productName" class="form_content_width" />
|
||||
</el-form-item>
|
||||
<el-form-item label="推荐状态:" label-for="store_name">
|
||||
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-form-item label="推荐状态:">
|
||||
<el-select v-model="page.params.isRecommended" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-option label="是" value="0" />
|
||||
<el-option label="否" value="1" />
|
||||
</el-select>
|
||||
@@ -20,18 +20,35 @@
|
||||
</div>
|
||||
|
||||
<el-button type="primary" class="bnt" @click="addClass()">选择商品</el-button>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column prop="categoryNum" label="编号"></el-table-column>
|
||||
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
|
||||
|
||||
<el-table-column prop="showFlag" label="是否推荐">
|
||||
<el-dropdown class="bnt mr14" @command="batchSelect">
|
||||
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="1">取消推荐</el-dropdown-item>
|
||||
<el-dropdown-item :command="2">删除</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column type="selection" width="55"> </el-table-column>
|
||||
<el-table-column prop="productId" label="编号"></el-table-column>
|
||||
<el-table-column prop="productName" label="商品名称"></el-table-column>
|
||||
|
||||
<el-table-column prop="isRecommended" label="是否推荐">
|
||||
<template slot-scope="scope">
|
||||
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
|
||||
<el-switch
|
||||
:active-value="0"
|
||||
:inactive-value="1"
|
||||
@change="onchangeIsShow(scope.row)"
|
||||
v-model="scope.row.isRecommended"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="date" label="操作" width="120" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="edit(scope.row)">置顶</el-button>
|
||||
<el-button type="text" @click="topOne(scope.row)">置顶</el-button>
|
||||
|
||||
<el-button @click="del(scope.row, scope)" type="text">删除</el-button>
|
||||
</template>
|
||||
@@ -49,26 +66,15 @@
|
||||
:total="page.totalCount"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 添加 编辑表单-->
|
||||
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
|
||||
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
|
||||
<edit ref="edit" :parentOptions="tableData" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import edit from '@/components/Category/edit'
|
||||
import editFrom from '../../../components/from/from'
|
||||
import productApi from '@/api/product/productAttr.js'
|
||||
import marketingApi from '@/api/finance/marketing.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
export default {
|
||||
name: 'product_productClassify',
|
||||
components: {
|
||||
editFrom,
|
||||
edit
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
editDialogConfig: {
|
||||
@@ -84,14 +90,13 @@ export default {
|
||||
xs: 24
|
||||
},
|
||||
loading: false,
|
||||
artFrom: {
|
||||
page: 1,
|
||||
limit: 15
|
||||
},
|
||||
|
||||
page: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
params: {},
|
||||
params: {
|
||||
type: '1'
|
||||
},
|
||||
totalCount: 0
|
||||
},
|
||||
total: 0,
|
||||
@@ -118,67 +123,56 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyGetByPage(this.page).then(res => {
|
||||
marketingApi.getHomeByPage(this.page).then(res => {
|
||||
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
|
||||
})
|
||||
)
|
||||
},
|
||||
pageChange(index) {
|
||||
this.artFrom.page = index
|
||||
this.page.currentPage = index
|
||||
this.getList()
|
||||
},
|
||||
// 添加
|
||||
addClass(parent = null) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$refs.edit.model = 'classifySave'
|
||||
// this.$nextTick(()=>{
|
||||
// this.$refs.edit.parent = parent;
|
||||
// });
|
||||
if (parent) {
|
||||
let { categoryName, id } = parent
|
||||
this.$nextTick(() => {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
|
||||
})
|
||||
}
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$nextTick(() => {
|
||||
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
|
||||
console.log(this.tableData.find(item => item == parentId), 'categoryName')
|
||||
if (row.level == 1) {
|
||||
this.$refs.edit.model = 'classifyUpdate'
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
|
||||
} else {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
|
||||
level,
|
||||
icon,
|
||||
showFlag,
|
||||
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
|
||||
categoryName,
|
||||
sort,
|
||||
parentId,
|
||||
id
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 修改状态
|
||||
onchangeIsShow(row) {
|
||||
console.log(row)
|
||||
let data = {
|
||||
id: row.id,
|
||||
is_show: row.is_show
|
||||
isRecommended: row.isRecommended
|
||||
}
|
||||
setShowApi(data)
|
||||
marketingApi
|
||||
.whetherToRecommend(data)
|
||||
.then(async res => {
|
||||
this.$message.success(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
.catch(res => {
|
||||
this.$message.error(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
|
||||
// 置顶
|
||||
topOne(row, scope) {
|
||||
console.log(row)
|
||||
this.$alert('请确定将改商品置顶!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
if (action == 'confirm') {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
marketingApi.topOne(row.id).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
del(row, scope) {
|
||||
console.log(scope)
|
||||
@@ -189,7 +183,7 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyDelete(row).then(res => {
|
||||
marketingApi.homeDelete(row).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
@@ -202,7 +196,7 @@ export default {
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.artFrom.page = 1
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
|
||||
<div>
|
||||
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品名称:" label-for="pid">
|
||||
<el-input clearable placeholder="商品名称" v-model="artFrom.name" class="form_content_width" />
|
||||
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品名称:">
|
||||
<el-input clearable placeholder="商品名称" v-model="page.params.productName" class="form_content_width" />
|
||||
</el-form-item>
|
||||
<el-form-item label="推荐状态:" label-for="store_name">
|
||||
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-form-item label="推荐状态:">
|
||||
<el-select v-model="page.params.isRecommended" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-option label="是" value="0" />
|
||||
<el-option label="否" value="1" />
|
||||
</el-select>
|
||||
@@ -20,18 +20,35 @@
|
||||
</div>
|
||||
|
||||
<el-button type="primary" class="bnt" @click="addClass()">选择商品</el-button>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column prop="categoryNum" label="编号"></el-table-column>
|
||||
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
|
||||
|
||||
<el-table-column prop="showFlag" label="是否推荐">
|
||||
<el-dropdown class="bnt mr14" @command="batchSelect">
|
||||
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="1">取消推荐</el-dropdown-item>
|
||||
<el-dropdown-item :command="2">删除</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column type="selection" width="55"> </el-table-column>
|
||||
<el-table-column prop="productId" label="编号"></el-table-column>
|
||||
<el-table-column prop="productName" label="商品名称"></el-table-column>
|
||||
|
||||
<el-table-column prop="isRecommended" label="是否推荐">
|
||||
<template slot-scope="scope">
|
||||
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
|
||||
<el-switch
|
||||
:active-value="0"
|
||||
:inactive-value="1"
|
||||
@change="onchangeIsShow(scope.row)"
|
||||
v-model="scope.row.isRecommended"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="date" label="操作" width="120" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="edit(scope.row)">置顶</el-button>
|
||||
<el-button type="text" @click="topOne(scope.row)">置顶</el-button>
|
||||
|
||||
<el-button @click="del(scope.row, scope)" type="text">删除</el-button>
|
||||
</template>
|
||||
@@ -49,26 +66,15 @@
|
||||
:total="page.totalCount"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 添加 编辑表单-->
|
||||
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
|
||||
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
|
||||
<edit ref="edit" :parentOptions="tableData" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import edit from '@/components/Category/edit'
|
||||
import editFrom from '../../../components/from/from'
|
||||
import productApi from '@/api/product/productAttr.js'
|
||||
import marketingApi from '@/api/finance/marketing.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
export default {
|
||||
name: 'product_productClassify',
|
||||
components: {
|
||||
editFrom,
|
||||
edit
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
editDialogConfig: {
|
||||
@@ -84,14 +90,13 @@ export default {
|
||||
xs: 24
|
||||
},
|
||||
loading: false,
|
||||
artFrom: {
|
||||
page: 1,
|
||||
limit: 15
|
||||
},
|
||||
|
||||
page: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
params: {},
|
||||
params: {
|
||||
type: '3'
|
||||
},
|
||||
totalCount: 0
|
||||
},
|
||||
total: 0,
|
||||
@@ -118,67 +123,55 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyGetByPage(this.page).then(res => {
|
||||
marketingApi.getHomeByPage(this.page).then(res => {
|
||||
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
|
||||
})
|
||||
)
|
||||
},
|
||||
pageChange(index) {
|
||||
this.artFrom.page = index
|
||||
this.page.currentPage = index
|
||||
this.getList()
|
||||
},
|
||||
// 添加
|
||||
addClass(parent = null) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$refs.edit.model = 'classifySave'
|
||||
// this.$nextTick(()=>{
|
||||
// this.$refs.edit.parent = parent;
|
||||
// });
|
||||
if (parent) {
|
||||
let { categoryName, id } = parent
|
||||
this.$nextTick(() => {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
|
||||
})
|
||||
}
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$nextTick(() => {
|
||||
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
|
||||
console.log(this.tableData.find(item => item == parentId), 'categoryName')
|
||||
if (row.level == 1) {
|
||||
this.$refs.edit.model = 'classifyUpdate'
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
|
||||
} else {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
|
||||
level,
|
||||
icon,
|
||||
showFlag,
|
||||
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
|
||||
categoryName,
|
||||
sort,
|
||||
parentId,
|
||||
id
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 修改状态
|
||||
onchangeIsShow(row) {
|
||||
console.log(row)
|
||||
let data = {
|
||||
id: row.id,
|
||||
is_show: row.is_show
|
||||
isRecommended: row.isRecommended
|
||||
}
|
||||
setShowApi(data)
|
||||
marketingApi
|
||||
.whetherToRecommend(data)
|
||||
.then(async res => {
|
||||
this.$message.success(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
.catch(res => {
|
||||
this.$message.error(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
|
||||
// 置顶
|
||||
topOne(row, scope) {
|
||||
console.log(row)
|
||||
this.$alert('请确定将改商品置顶!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
if (action == 'confirm') {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
marketingApi.topOne(row.id).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
del(row, scope) {
|
||||
console.log(scope)
|
||||
@@ -189,7 +182,7 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyDelete(row).then(res => {
|
||||
marketingApi.homeDelete(row).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
@@ -202,7 +195,7 @@ export default {
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.artFrom.page = 1
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt-16">
|
||||
<div>
|
||||
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品名称:" label-for="pid">
|
||||
<el-input clearable placeholder="商品名称" v-model="artFrom.name" class="form_content_width" />
|
||||
<el-form :model="page" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品名称:">
|
||||
<el-input clearable placeholder="商品名称" v-model="page.params.productName" class="form_content_width" />
|
||||
</el-form-item>
|
||||
<el-form-item label="推荐状态:" label-for="store_name">
|
||||
<el-select v-model="artFrom.type" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-form-item label="推荐状态:">
|
||||
<el-select v-model="page.params.isRecommended" placeholder="状态" clearable @keyup.enter.native="getByPage">
|
||||
<el-option label="是" value="0" />
|
||||
<el-option label="否" value="1" />
|
||||
</el-select>
|
||||
@@ -20,18 +20,35 @@
|
||||
</div>
|
||||
|
||||
<el-button type="primary" class="bnt" @click="addClass()">选择商品</el-button>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column prop="categoryNum" label="编号"></el-table-column>
|
||||
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
|
||||
|
||||
<el-table-column prop="showFlag" label="是否推荐">
|
||||
<el-dropdown class="bnt mr14" @command="batchSelect">
|
||||
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="1">取消推荐</el-dropdown-item>
|
||||
<el-dropdown-item :command="2">删除</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-table row-key="id" class="mt14" v-loading="loading" :data="tableData" empty-text="暂无数据">
|
||||
<el-table-column type="selection" width="55"> </el-table-column>
|
||||
<el-table-column prop="productId" label="编号"></el-table-column>
|
||||
<el-table-column prop="productName" label="商品名称"></el-table-column>
|
||||
|
||||
<el-table-column prop="isRecommended" label="是否推荐">
|
||||
<template slot-scope="scope">
|
||||
<el-switch active-value="1" inactive-value="0" v-model="scope.row.showFlag" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
|
||||
<el-switch
|
||||
:active-value="0"
|
||||
:inactive-value="1"
|
||||
@change="onchangeIsShow(scope.row)"
|
||||
v-model="scope.row.isRecommended"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="date" label="操作" width="120" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="edit(scope.row)">置顶</el-button>
|
||||
<el-button type="text" @click="topOne(scope.row)">置顶</el-button>
|
||||
|
||||
<el-button @click="del(scope.row, scope)" type="text">删除</el-button>
|
||||
</template>
|
||||
@@ -49,26 +66,15 @@
|
||||
:total="page.totalCount"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 添加 编辑表单-->
|
||||
<edit-from ref="edits" :FromData="FromData" @submitFail="userSearchs"></edit-from>
|
||||
<el-dialog title="添加分类" :visible.sync="editDialogConfig.visible" destroy-on-close :close-on-click-modal="false">
|
||||
<edit ref="edit" :parentOptions="tableData" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import edit from '@/components/Category/edit'
|
||||
import editFrom from '../../../components/from/from'
|
||||
import productApi from '@/api/product/productAttr.js'
|
||||
import marketingApi from '@/api/finance/marketing.js'
|
||||
import { loadingFn } from '@/utils/validate'
|
||||
export default {
|
||||
name: 'product_productClassify',
|
||||
components: {
|
||||
editFrom,
|
||||
edit
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
editDialogConfig: {
|
||||
@@ -84,14 +90,13 @@ export default {
|
||||
xs: 24
|
||||
},
|
||||
loading: false,
|
||||
artFrom: {
|
||||
page: 1,
|
||||
limit: 15
|
||||
},
|
||||
|
||||
page: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
params: {},
|
||||
params: {
|
||||
type: '2'
|
||||
},
|
||||
totalCount: 0
|
||||
},
|
||||
total: 0,
|
||||
@@ -118,67 +123,55 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyGetByPage(this.page).then(res => {
|
||||
marketingApi.getHomeByPage(this.page).then(res => {
|
||||
if ((res.code = 20000)) ({ list: this.tableData = [], totalCount: this.page.totalCount = 0 } = res.data)
|
||||
})
|
||||
)
|
||||
},
|
||||
pageChange(index) {
|
||||
this.artFrom.page = index
|
||||
this.page.currentPage = index
|
||||
this.getList()
|
||||
},
|
||||
// 添加
|
||||
addClass(parent = null) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$refs.edit.model = 'classifySave'
|
||||
// this.$nextTick(()=>{
|
||||
// this.$refs.edit.parent = parent;
|
||||
// });
|
||||
if (parent) {
|
||||
let { categoryName, id } = parent
|
||||
this.$nextTick(() => {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { parentCategoryName: categoryName, parentId: id, level: 2 })
|
||||
})
|
||||
}
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
this.editDialogConfig.visible = true
|
||||
this.$nextTick(() => {
|
||||
let { level, icon, showFlag, categoryName, sort, parentId, id } = row
|
||||
console.log(this.tableData.find(item => item == parentId), 'categoryName')
|
||||
if (row.level == 1) {
|
||||
this.$refs.edit.model = 'classifyUpdate'
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, { level, icon, showFlag, categoryName, sort, parentId, id })
|
||||
} else {
|
||||
this.$refs.edit.editPram = Object.assign(this.$refs.edit.editPram, {
|
||||
level,
|
||||
icon,
|
||||
showFlag,
|
||||
parentCategoryName: this.tableData.find(item => item == parentId).categoryName,
|
||||
categoryName,
|
||||
sort,
|
||||
parentId,
|
||||
id
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 修改状态
|
||||
onchangeIsShow(row) {
|
||||
console.log(row)
|
||||
let data = {
|
||||
id: row.id,
|
||||
is_show: row.is_show
|
||||
isRecommended: row.isRecommended
|
||||
}
|
||||
setShowApi(data)
|
||||
marketingApi
|
||||
.whetherToRecommend(data)
|
||||
.then(async res => {
|
||||
this.$message.success(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
.catch(res => {
|
||||
this.$message.error(res.msg)
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
|
||||
// 置顶
|
||||
topOne(row, scope) {
|
||||
console.log(row)
|
||||
this.$alert('请确定将改商品置顶!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
callback: action => {
|
||||
if (action == 'confirm') {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
marketingApi.topOne(row.id).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
del(row, scope) {
|
||||
console.log(scope)
|
||||
@@ -189,7 +182,7 @@ export default {
|
||||
loadingFn.call(
|
||||
this,
|
||||
'loading',
|
||||
productApi.classifyDelete(row).then(res => {
|
||||
marketingApi.homeDelete(row).then(res => {
|
||||
if ((res.code = 20000)) {
|
||||
this.$message.success('操作成功!')
|
||||
this.handleCurrentChange()
|
||||
@@ -202,7 +195,7 @@ export default {
|
||||
},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.artFrom.page = 1
|
||||
this.page.currentPage = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
|
||||
8
src/views/order/index.vue
Normal file
8
src/views/order/index.vue
Normal file
@@ -0,0 +1,8 @@
|
||||
<template>
|
||||
<div>
|
||||
<router-view />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {}
|
||||
</script>
|
||||
433
src/views/order/orderList.vue
Normal file
433
src/views/order/orderList.vue
Normal file
@@ -0,0 +1,433 @@
|
||||
<template>
|
||||
<div class="article-manager">
|
||||
<el-card :bordered="false" shadow="never" class="ivu-mt mt16" :body-style="{ padding: '0 20px 20px' }">
|
||||
<el-tabs v-model="artFrom.type" @tab-click="onClickTab">
|
||||
<el-tab-pane :label="item.name + '(' + item.count + ')'" :name="item.type.toString()" v-for="(item, index) in headeNum" :key="index" />
|
||||
</el-tabs>
|
||||
<div>
|
||||
<el-form ref="artFrom" :model="artFrom" label-width="80px" label-position="right" inline @submit.native.prevent>
|
||||
<el-form-item label="商品分类:" label-for="pid">
|
||||
<el-cascader
|
||||
v-model="artFrom.cate_id"
|
||||
size="small"
|
||||
:options="treeSelect"
|
||||
:props="{ multiple: false, emitPath: false, checkStrictly: true }"
|
||||
clearable
|
||||
class="form_content_width"
|
||||
></el-cascader>
|
||||
</el-form-item>
|
||||
<el-form-item label="商品搜索:" label-for="store_name">
|
||||
<el-input clearable placeholder="请输入商品名称/关键字/ID" v-model="artFrom.store_name" class="form_content_width" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="userSearchs">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="Button">
|
||||
<el-button type="primary" class="mr14">添加商品</el-button>
|
||||
<el-button type="success" class="mr14" @click="onCopy">商品采集</el-button>
|
||||
<el-dropdown class="bnt mr14" @command="batchSelect">
|
||||
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item :command="1">商品分类</el-dropdown-item>
|
||||
<el-dropdown-item :command="2">物流设置</el-dropdown-item>
|
||||
<el-dropdown-item :command="3">购买送积分</el-dropdown-item>
|
||||
<el-dropdown-item :command="4">购买送优惠券</el-dropdown-item>
|
||||
<el-dropdown-item :command="5">关联用户标签</el-dropdown-item>
|
||||
<el-dropdown-item :command="6">活动推荐</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-button @click="onDismount" v-show="artFrom.type === '1'">批量下架</el-button>
|
||||
<el-button @click="onShelves" v-show="artFrom.type === '2'">批量上架</el-button>
|
||||
<el-button class="export" @click="exports">导出</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
ref="table"
|
||||
:data="tableList"
|
||||
class="ivu-mt mt14"
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
:row-key="getRowKey"
|
||||
@selection-change="handleSelectRow"
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="expand" width="50" v-if="['1', '2'].includes(artFrom.type)">
|
||||
<template slot-scope="scope">
|
||||
<expandRow :row="scope.row"></expandRow>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="selection" width="60" :reserve-selection="true"> </el-table-column>
|
||||
<el-table-column label="商品ID" width="80">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.id }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品图" min-width="90">
|
||||
<template slot-scope="scope">
|
||||
<div class="tabBox_img" v-viewer>
|
||||
<img v-lazy="scope.row.image" />
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品名称" min-width="250">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.store_name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品类型" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.product_type }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品售价" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.price }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="销量" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.sales }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="库存" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.stock }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="排序" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.sort }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
class="defineSwitch"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
v-model="scope.row.is_show"
|
||||
:value="scope.row.is_show"
|
||||
:disabled="scope.row.stop_status ? true : false"
|
||||
@change="changeSwitch(scope.row)"
|
||||
size="large"
|
||||
active-text="上架"
|
||||
inactive-text="下架"
|
||||
>
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" minWidth="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="edit(scope.row)">查看订单</el-button>
|
||||
<el-button @click="del(scope.row, scope)" type="text">取消订单</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="acea-row row-right page">
|
||||
<pagination v-if="total" :total="total" :page.sync="artFrom.page" :limit.sync="artFrom.limit" @pagination="getDataList" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'product_productList',
|
||||
// components: { expandRow, attribute, taoBao, goodsDetail, userLabel, couponList },
|
||||
data() {
|
||||
return {
|
||||
template: false,
|
||||
modals: false,
|
||||
batchModal: false,
|
||||
labelShow: false,
|
||||
batchType: 1, // 批量设置类型
|
||||
batchFormData: {
|
||||
cate_id: [],
|
||||
logistics: [],
|
||||
freight: 2,
|
||||
postage: 0,
|
||||
temp_id: null,
|
||||
give_integral: 0,
|
||||
label_id: [],
|
||||
coupon_ids: [],
|
||||
recommend: []
|
||||
},
|
||||
ruleBatch: {},
|
||||
couponName: [], // 优惠券
|
||||
dataLabel: [], // 标签
|
||||
templateList: [], // 运费模版
|
||||
grid: {
|
||||
xl: 6,
|
||||
lg: 8,
|
||||
md: 12,
|
||||
sm: 24,
|
||||
xs: 24
|
||||
},
|
||||
artFrom: {
|
||||
page: 1,
|
||||
limit: 15,
|
||||
cate_id: '',
|
||||
type: '1',
|
||||
store_name: ''
|
||||
},
|
||||
list: [],
|
||||
tableList: [],
|
||||
headeNum: [
|
||||
{
|
||||
count: 2,
|
||||
name: '出售中商品',
|
||||
type: 1
|
||||
},
|
||||
{
|
||||
count: 40,
|
||||
name: '仓库中商品',
|
||||
type: 2
|
||||
},
|
||||
{
|
||||
count: 5,
|
||||
name: '已经售馨商品',
|
||||
type: 3
|
||||
},
|
||||
{
|
||||
count: 10,
|
||||
name: '警戒库存',
|
||||
type: 4
|
||||
},
|
||||
{
|
||||
count: 1,
|
||||
name: '商品回收站',
|
||||
type: 5
|
||||
}
|
||||
],
|
||||
loading: false,
|
||||
data: [],
|
||||
total: 0,
|
||||
attrTemplate: false,
|
||||
ids: [],
|
||||
goodsId: '',
|
||||
isProductBox: false,
|
||||
treeSelect: [],
|
||||
multipleSelection: []
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
activated() {},
|
||||
methods: {
|
||||
// 标签弹窗关闭
|
||||
labelClose() {},
|
||||
look(row) {
|
||||
this.goodsId = row.id
|
||||
this.isProductBox = true
|
||||
},
|
||||
// 物流方式
|
||||
logisticsBtn(e) {
|
||||
this.batchFormData.logistics = e
|
||||
},
|
||||
// 关联用户标签
|
||||
openLabel() {
|
||||
this.labelShow = true
|
||||
},
|
||||
closeLabel(label) {
|
||||
let index = this.dataLabel.indexOf(this.dataLabel.filter(d => d.id == label.id)[0])
|
||||
this.dataLabel.splice(index, 1)
|
||||
},
|
||||
|
||||
getPath() {},
|
||||
// 导出
|
||||
async exports() {
|
||||
let [th, filekey, data, fileName] = [[], [], [], '']
|
||||
let excelData = JSON.parse(JSON.stringify(this.artFrom))
|
||||
excelData.page = 1
|
||||
excelData.limit = 50
|
||||
excelData.ids = this.ids
|
||||
for (let i = 0; i < excelData.page + 1; i++) {
|
||||
let lebData = await this.getExcelData(excelData)
|
||||
if (!fileName) fileName = lebData.filename
|
||||
if (!filekey.length) {
|
||||
filekey = lebData.fileKey
|
||||
}
|
||||
if (!th.length) th = lebData.header
|
||||
if (lebData.export.length) {
|
||||
data = data.concat(lebData.export)
|
||||
excelData.page++
|
||||
} else {
|
||||
this.$exportExcel(th, filekey, fileName, data)
|
||||
return
|
||||
}
|
||||
}
|
||||
},
|
||||
getExcelData(excelData) {},
|
||||
freight() {},
|
||||
// 批量上架
|
||||
onShelves() {},
|
||||
// 批量下架
|
||||
onDismount() {},
|
||||
getRowKey(row) {
|
||||
return row.id
|
||||
},
|
||||
// 选中某一行
|
||||
handleSelectRow(selection) {
|
||||
const uniqueArr = []
|
||||
const ids = []
|
||||
for (let i = 0; i < selection.length; i++) {
|
||||
const item = selection[i]
|
||||
if (!ids.includes(item.id)) {
|
||||
uniqueArr.push(item)
|
||||
ids.push(item.id)
|
||||
}
|
||||
}
|
||||
this.ids = ids
|
||||
this.multipleSelection = uniqueArr
|
||||
},
|
||||
|
||||
// tab选择
|
||||
onClickTab() {
|
||||
this.artFrom.page = 1
|
||||
this.multipleSelection = []
|
||||
this.$refs.table.clearSelection()
|
||||
this.getDataList()
|
||||
},
|
||||
|
||||
// 获取商品表单头数量
|
||||
goodHeade() {},
|
||||
// 商品分类;
|
||||
goodsCategory() {},
|
||||
// 商品列表;
|
||||
getDataList() {},
|
||||
showSelectData() {},
|
||||
// 表格搜索
|
||||
userSearchs() {
|
||||
this.artFrom.page = 1
|
||||
},
|
||||
// 上下架
|
||||
changeSwitch(row) {},
|
||||
// 数据导出;
|
||||
exportData: function() {},
|
||||
// 属性弹出;
|
||||
attrTap() {
|
||||
this.attrTemplate = true
|
||||
},
|
||||
changeTemplate(msg) {
|
||||
this.attrTemplate = msg
|
||||
},
|
||||
// 编辑
|
||||
edit(row) {
|
||||
// this.$router.push({ path: this.$routeProStr + '/product/add_product/' + row.id });
|
||||
},
|
||||
// 确认
|
||||
del(row, tit, num) {}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-tabs__item {
|
||||
height: 54px !important;
|
||||
line-height: 54px !important;
|
||||
}
|
||||
::v-deep .ivu-modal-mask {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
::v-deep .ivu-modal-wrap {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
|
||||
.Box {
|
||||
::v-deep .ivu-modal-body {
|
||||
height: 700px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.batch-box {
|
||||
::v-deep .ivu-modal-body {
|
||||
overflow: auto;
|
||||
min-height: 350px;
|
||||
}
|
||||
}
|
||||
|
||||
.tabBox_img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
::v-deep .happy-scroll-content {
|
||||
width: 100%;
|
||||
|
||||
.demo-spin-icon-load {
|
||||
animation: ani-demo-spin 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes ani-demo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.demo-spin-col {
|
||||
height: 100px;
|
||||
position: relative;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
}
|
||||
|
||||
.labelInput {
|
||||
border: 1px solid #dcdee2;
|
||||
width: 100%;
|
||||
padding: 0 15px;
|
||||
border-radius: 5px;
|
||||
min-height: 30px;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
|
||||
.span {
|
||||
color: #c5c8ce;
|
||||
}
|
||||
|
||||
.iconxiayi {
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.el-dropdown-link {
|
||||
cursor: pointer;
|
||||
color: var(--prev-color-primary);
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-icon-arrow-down {
|
||||
font-size: 12px;
|
||||
}
|
||||
.el-dropdown-menu__item {
|
||||
a {
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
.label_width {
|
||||
width: 400px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user