首页推荐

pull/2/head
xk_chenlianjie 1 year ago
parent 93cc41f557
commit c48da8d53b
  1. 88
      src/api/finance/marketing.js
  2. 94
      src/api/finance/xchargeStationAccountReverse.js
  3. 36
      src/api/finance/xchargeStationInfo.js
  4. 69
      src/api/finance/xchargeStationsAccount.js
  5. 48
      src/api/finance/xchargeStationsAccountRecord.js
  6. 215
      src/api/order/orderInfo.js
  7. 48
      src/api/order/xchargeOrderDetail.js
  8. 94
      src/api/order/xchargeOrderInfo.js
  9. 48
      src/components/Upload/index.vue
  10. 167
      src/views/marketing/advertisement/advertisementAdd.vue
  11. 148
      src/views/marketing/advertisement/advertisementList.vue
  12. 115
      src/views/marketing/advertisement/advertisementUpdate.vue
  13. 136
      src/views/marketing/home/homeFreshList.vue
  14. 137
      src/views/marketing/home/homeLikeList.vue
  15. 137
      src/views/marketing/home/homePopularityList.vue
  16. 8
      src/views/order/index.vue
  17. 433
      src/views/order/orderList.vue

@ -0,0 +1,88 @@
import request from '@/utils/request'
var service_name = 'oil-mall'
var group_name = 'mallAdvertise'
var new_group_name = 'mallHomeRecommended'
export default {
getByPage(page) {
// 分页查询
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data: page
})
},
save(data) {
// 新增广告
return request({
url: `/${service_name}/${group_name}/save`,
method: 'post',
data: data
})
},
update(data) {
// 修改广告
return request({
url: `/${service_name}/${group_name}/update`,
method: 'post',
data: data
})
},
delete(data) {
// 删除广告
return request({
url: `/${service_name}/${group_name}/delete`,
method: 'post',
data: data
})
},
get(id) {
// 查询广告详情
return request({
url: `/${service_name}/${group_name}/get/${id}`,
method: 'get'
})
},
goOnlineAndGoOffline(page) {
// 广告上下线
return request({
url: `/${service_name}/${group_name}/goOnlineAndGoOffline`,
method: 'post',
data: page
})
},
getHomeByPage(page) {
// 分页查询
return request({
url: `/${service_name}/${new_group_name}/getByPage`,
method: 'post',
data: page
})
},
topOne(id) {
// 置顶
return request({
url: `/${service_name}/${new_group_name}/topOne/${id}`,
method: 'get'
})
},
homeDelete(page) {
// 删除首页推荐
return request({
url: `/${service_name}/${new_group_name}/delete`,
method: 'post',
data: page
})
},
whetherToRecommend(page) {
// 修改是否推荐
return request({
url: `/${service_name}/${new_group_name}/whetherToRecommend`,
method: 'post',
data: page
})
}
}

@ -1,94 +0,0 @@
import request from '@/utils/request'
var service_name = 'oil-finance'
var group_name = 'xchargeStationAccountReverse'
export default {
getByPage(page) {
// 分页查询
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data: page
})
},
save(xchargeStationAccountReverse) {
// 保存
return request({
url: `/${service_name}/${group_name}/save`,
method: 'post',
data: xchargeStationAccountReverse
})
},
get(id) {
// 根据id查询
return request({
url: `/${service_name}/${group_name}/get/${id}`,
method: 'get'
})
},
update(xchargeStationAccountReverse) {
// 更新
return request({
url: `/${service_name}/${group_name}/update`,
method: 'put',
data: xchargeStationAccountReverse
})
},
exportExcel(page) {
// 导出
return request({
url: `/${service_name}/${group_name}/export`,
method: 'post',
notEncrypt: true,
data: page,
responseType: 'blob'
})
},
saveAccount(page) {
return request({
url: `/oil-finance/${group_name}/saveAccount`,
method: 'post',
data: page
})
},
//电站油站公司充值新增
saveNew(page) {
return request({
url: `/${service_name}/${group_name}/saveNew`,
method: 'post',
data: page
})
},
saveAccountNew(page) {
return request({
url: `/oil-finance/${group_name}/saveAccountNew`,
method: 'post',
data: page
})
},
findBySiteCompanyInfoId(page) {
return request({
url: `/oil-finance/xchargeStationsAccount/findBySiteCompanyInfoId`,
method: 'get',
params: page
})
},
deleteById(id) {
// 根据id删除
return request({
url: `/${service_name}/${group_name}/delete`,
method: 'put',
data: { id: id }
})
},
//审核调拨/回拨
auditAccount(data) {
return request({
url: `/${service_name}/${group_name}/auditAccount`,
method: 'post',
data
})
}
}

@ -1,36 +0,0 @@
import request from '@/utils/request'
var service_name = 'oil-electric-energy'
var group_name = 'xchargeEquipmentInfo'
export default{
//分页查询
getByPage(data) {
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data
})
},
// 模糊查询充电站点列表
queryByName(stationName) {
return request({
url: `/${service_name}/xchargeStationInfo/queryStationIdByName/${stationName}`,
method: 'get',
})
},
//充电设备禁用启用
update(data) {
return request({
url: `/${service_name}/${group_name}/update`,
method: 'put',
data
})
},
// 充电桩禁用启用
updateNew(page) {
return request({
url: `/${service_name}/xchargeConnectorInfo/update`,
method: 'put',
data :page
})
},
}

@ -1,69 +0,0 @@
import request from '@/utils/request'
var service_name = 'oil-finance'
var group_name = 'xchargeStationsAccount'
export default {
getByPage(page) {
// 分页查询
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data: page
})
},
save(xchargeStationsAccount) {
// 保存
return request({
url: `/${service_name}/${group_name}/save`,
method: 'post',
data: xchargeStationsAccount
})
},
get(id) {
// 根据id查询
return request({
url: `/${service_name}/${group_name}/get/${id}`,
method: 'get'
})
},
update(xchargeStationsAccount) {
// 更新
return request({
url: `/${service_name}/${group_name}/update`,
method: 'put',
data: xchargeStationsAccount
})
},
exportExcel(page) {
// 导出
return request({
url: `/${service_name}/${group_name}/export`,
method: 'post',
notEncrypt: true,
data: page,
responseType: 'blob'
})
},
deleteById(id) {
// 根据id删除
return request({
url: `/${service_name}/${group_name}/delete`,
method: 'put',
data: { id: id }
})
},
// 新获取账户名称 远程搜索
getChannelAccountMapsNotVoid(name) {
return request({
url: `/${service_name}/${group_name}/getChannelAccountMapsNotVoidByName/${name}`,
method: 'get'
})
},
// 新获取账户名称 远程搜索
accountState(data) {
return request({
url: `/${service_name}/${group_name}/accountState`,
method: 'post',
data: data
})
}
}

@ -1,48 +0,0 @@
import request from '@/utils/request'
var service_name = 'oil-finance'
var group_name = 'xchargeStationsAccountRecord'
export default {
getByPage(page) { // 分页查询
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data: page
})
},
save(xchargeStationsAccountRecord) { // 保存
return request({
url: `/${service_name}/${group_name}/save`,
method: 'post',
data: xchargeStationsAccountRecord
})
},
get(id) { // 根据id查询
return request({
url: `/${service_name}/${group_name}/get/${id}`,
method: 'get'
})
},
update(xchargeStationsAccountRecord) { // 更新
return request({
url: `/${service_name}/${group_name}/update`,
method: 'put',
data: xchargeStationsAccountRecord
})
},
exportExcel(page) { // 导出
return request({
url: `/${service_name}/${group_name}/export`,
method: 'post',
notEncrypt: true,
data: page,
responseType: 'blob'
})
},
deleteById(id) { // 根据id删除
return request({
url: `/${service_name}/${group_name}/delete`,
method: 'put',
data: { id: id }
})
}
}

@ -10,27 +10,7 @@ export default {
data: page
})
},
refundFY(orderInfo) { // 顺丰退款
return request({
url: `/oil-site/fuYou/refund`,
method: 'post',
data: orderInfo
})
},
refundG7(orderInfo) { // G7退款
return request({
url: `/oil-site/g7/refund`,
method: 'post',
data: orderInfo
})
},
refundSf(orderInfo) { // 顺丰退款
return request({
url: `/oil-site/sf/refund`,
method: 'post',
data: orderInfo
})
},
toCancelSf(orderId) { // 顺丰取消订单
return request({
url: `/oil-site/sf/finishOrder/${orderId}`,
@ -51,27 +31,7 @@ export default {
data: page
})
},
export2Web(page) { // 分页查询
return request({
url: `/${service_name}/${New_Name}/export2Web`,
method: 'post',
data: page,
})
},
export2WebDept(page) { // 分页查询
return request({
url: `/${service_name}/${New_Name}/export2WebDept`,
method: 'post',
data: page,
})
},
exportAllOrdersExcel(page) { // 分页查询
return request({
url: `/${service_name}/${New_Name}/exportAllOrdersExcel`,
method: 'post',
data: page,
})
},
getTotalCount() { // 查询订单统计信息
return request({
url: `/${service_name}/${group_name}/getTotalData`,
@ -88,65 +48,7 @@ export default {
})
},
getYesterdayOrder() { // 查询订单统计信息
return request({
url: `/${service_name}/${group_name}/getYesterdayOrder`,
method: 'get'
})
},
getWeekLineData() { // 查询今日平台销售额增长趋势
return request({
url: `/${service_name}/${group_name}/getWeekLineData`,
method: 'get'
})
},
getTodayOrder() { // 查询当日会员消费总数
return request({
url: `/${service_name}/${group_name}/getTodayOrder`,
method: 'get'
})
},
getMonthOrder() { // 查询当月销售额排行榜
return request({
url: `/${service_name}/${group_name}/getMonthOrder`,
method: 'get'
})
},
statisticOrderTotalData(page) { // 统计订单总数和总金额
return request({
url: `/${service_name}/${group_name}/statisticOrderTotalData`,
method: 'post',
data: page
})
},
statisticOrderTotalDataDept(page) { // 统计订单总数和总金额
return request({
url: `/${service_name}/${group_name}/statisticOrderTotalDataDept`,
method: 'post',
data: page
})
},
statisticOrderTotalDataByType(page) { // 统计企业和个人订单总数和总金额
return request({
url: `/${service_name}/${group_name}/statisticOrderTotalDataByType`,
method: 'post',
data: page
})
},
statisticOrderTotalDataByChannel(page) { // 统计渠道订单总数和总金额
return request({
url: `/${service_name}/${group_name}/statisticOrderTotalDataByChannel`,
method: 'post',
data: page
})
},
statisticOrderTotalAndAmountCus(page) { // 统计渠道订单总数和总金额
return request({
url: `/${service_name}/${group_name}/statisticOrderTotalAndAmountCus`,
method: 'post',
data: page
})
},
save(orderInfo) { // 保存
return request({
url: `/${service_name}/${group_name}/save`,
@ -166,18 +68,7 @@ export default {
method: 'get'
})
},
getInfo(id) { // 根据id查询
return request({
url: `/${service_name}/${group_name}/getInfo/${id}`,
method: 'get'
})
},
getInfoBySerialNumber(id) { // 根据订单流水号查询
return request({
url: `/${service_name}/${group_name}/getInfoBySerialNumber/${id}`,
method: 'get'
})
},
update(orderInfo) { // 更新
return request({
url: `/${service_name}/${group_name}/update`,
@ -201,53 +92,7 @@ export default {
data: { id: id }
})
},
refund(id) { // 根据id删除
return request({
url: `/${service_name}/${group_name}/refund/${id}`,
method: 'get'
})
},
supplement(orderInfo) { // 补单
return request({
url: `/${service_name}/${group_name}/supplement`,
method: 'POST',
data: orderInfo
})
},
getTfOrderInfo(data) { // 获取日期区间内匹配订单信息
return request({
url: `/${service_name}/${group_name}/getTfOrderInfo`,
method: 'POST',
data: data
})
},
TfOrder(data) { // 转换日期区间内匹配订单信息
return request({
url: `/${service_name}/${group_name}/TfOrder`,
method: 'POST',
data: data
})
},
getOrderQrCode(data) { // 转换日期区间内匹配订单信息
return request({
url: `/oil-site/oilSiteOrderInfo/getOrderQrCode/` + data,
method: 'get'
})
},
refundByOpenStatus(row) { // 开放平台类的订单退款
return request({
url: `/oil-site/openPlatform/orderRefund`,
method: 'post',
data: row
})
},
refundByNoAdviceOpenStatus(row) { // 开放平台类的订单退款(不通知)
return request({
url: `/oil-site/openPlatform/orderRefundNoadvice`,
method: 'post',
data: row
})
},
wechatPayRefund(row) { // 微信支付退款(随行付)
return request({
url: `/${service_name}/${group_name}/wechatPayRefund`,
@ -255,55 +100,7 @@ export default {
data: row
})
},
export2CompanyOrderWeb(page) { // 分页查询
return request({
url: `/${service_name}/${New_Name}/export2CompanyOrderWeb`,
method: 'post',
data: page,
timeout: 500000
})
},
getDxBottomData() { // 查询动销数据底部信息
return request({
url: `/${service_name}/${group_name}/getDxBottomData`,
method: 'get'
})
},
getDxCentralData() { // 查询动销数据中部信息
return request({
url: `/${service_name}/${group_name}/getDxCentralData`,
method: 'get'
})
},
getDxTopData() { // 查询动销数据头部信息
return request({
url: `/${service_name}/${group_name}/getDxTopData`,
method: 'get'
})
},
getToOutPutDxDate() { // 查询动销数据导出信息
return request({
url: `/${service_name}/${group_name}/getToOutPutDxDate`,
method: 'get'
})
},
uploadMailFileData(data) { // 查询动销数据导出信息
return request({
url: `/${service_name}/${group_name}/uploadMailFileData`,
method: 'post',
data: data
})
},
importExcelOrder(data) { // 查询动销数据导出信息
return request({
url: `/oil-finance/oilOrderInfo/importExcelOrder`,
method: 'post',
data: data,
headers: {
'Content-Type': 'multipart/form-data'
}
})
},
exportOrderWeb(data) { // 业务订单导出
return request({
url: `/oil-finance/oilOrderInfoExcel/exportOrderWeb`,

@ -1,48 +0,0 @@
import request from '@/utils/request'
var service_name = 'oil-electric-energy'
var group_name = 'xchargeOrderDetail'
export default {
getByPage(page) { // 分页查询
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data: page
})
},
save(xchargeOrderDetail) { // 保存
return request({
url: `/${service_name}/${group_name}/save`,
method: 'post',
data: xchargeOrderDetail
})
},
get(id) { // 根据id查询
return request({
url: `/${service_name}/${group_name}/get/${id}`,
method: 'get'
})
},
update(xchargeOrderDetail) { // 更新
return request({
url: `/${service_name}/${group_name}/update`,
method: 'put',
data: xchargeOrderDetail
})
},
exportExcel(page) { // 导出
return request({
url: `/${service_name}/${group_name}/export`,
method: 'post',
notEncrypt: true,
data: page,
responseType: 'blob'
})
},
deleteById(id) { // 根据id删除
return request({
url: `/${service_name}/${group_name}/delete`,
method: 'put',
data: { id: id }
})
}
}

@ -1,94 +0,0 @@
import request from '@/utils/request'
var service_name = 'oil-electric-energy'
var group_name = 'xchargeOrderInfo'
export default {
getByPage(page) {
// 分页查询
return request({
url: `/${service_name}/${group_name}/getByPage`,
method: 'post',
data: page
})
},
getStatusByPage(page) {
// 分页查询
return request({
url: `/${service_name}/${group_name}/getStatusByPage`,
method: 'post',
data: page
})
},
save(xchargeOrderInfo) {
// 保存
return request({
url: `/${service_name}/${group_name}/save`,
method: 'post',
data: xchargeOrderInfo
})
},
get(id) {
// 根据id查询
return request({
url: `/${service_name}/${group_name}/getWeb/${id}`,
method: 'get'
})
},
update(xchargeOrderInfo) {
// 更新
return request({
url: `/${service_name}/${group_name}/update`,
method: 'put',
data: xchargeOrderInfo
})
},
exportByPage(page) {
// 导出
return request({
url: `/${service_name}/${group_name}/exportByPage`,
method: 'post',
data: page,
responseType: 'blob'
})
},
exportExcel(page) {
// 导出
return request({
url: `/${service_name}/${group_name}/export`,
method: 'post',
notEncrypt: true,
data: page,
responseType: 'blob'
})
},
deleteById(id) {
// 根据id删除
return request({
url: `/${service_name}/${group_name}/delete`,
method: 'put',
data: { id: id }
})
},
refund(data) {
// 根据id退款
return request({
url: `/${service_name}/${group_name}/refund`,
method: 'post',
data: data
})
},
getDetail(id) {
// 根据id查询订单明细
return request({
url: `/${service_name}/${group_name}/getDetail/${id}`,
method: 'get'
})
},
toStop(data) {
// 根据id强制停止
return request({
url: `/${service_name}/${group_name}/stopOrder`,
method: 'post',
data: data
})
}
}

@ -1,14 +1,21 @@
<template>
<div class="photo-container">
<div>
<el-upload class="avatar-uploader" :action="uploadUrl" :limit="1" :show-file-list="false" :on-success="uploadSuccess"
:on-remove="removeUrl" :data="{ 'code': code, 'ossKey': 'xingyou2', 'pathKey': 'banner-group', 'encrypt': 'PUBLIC' }">
<img v-if="photoUrl" :src="photoUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload>
<div @click="removeUrl" style="width: 100%;text-align: center;" v-if="photoUrl" >
<i style="font-size: 20px;" class="el-icon-delete" />
</div>
<el-upload
class="avatar-uploader"
:action="uploadUrl"
:limit="1"
:show-file-list="false"
:on-success="uploadSuccess"
:on-remove="removeUrl"
:data="{ code: code, ossKey: 'xingyou2', pathKey: 'banner-group', encrypt: 'PUBLIC' }"
>
<img v-if="photoUrl" :src="photoUrl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload>
<div @click="removeUrl" style="width: 100%;text-align: center;" v-if="photoUrl">
<i style="font-size: 20px;" class="el-icon-delete" />
</div>
</div>
<span class="upload-span">
<slot name="bottom">{{ tip }}</slot>
@ -21,9 +28,10 @@ export default {
props: {
tip: {
type: String,
default: "请上传图片"
default: '请上传图片'
},
photo: { // url
photo: {
// url
type: String,
default: null
},
@ -31,7 +39,8 @@ export default {
type: String,
default: 'A001'
},
isPrivate: { //
isPrivate: {
//
type: Boolean,
default: false
}
@ -44,10 +53,10 @@ export default {
}
},
watch: {
photo: function (newVal, oldVal) {
photo: function(newVal, oldVal) {
this.photoUrl = newVal
},
isPrivate: function (newVal, oldVal) {
isPrivate: function(newVal, oldVal) {
this.changeUploadUrl
}
},
@ -62,8 +71,8 @@ export default {
this.uploadUrl = process.env.VUE_APP_UPLOAD_URL
}
},
removeUrl(file, fileList) {
this.$emit('success', "", {data:{publicUrl:""},code:20000});
removeUrl(file, fileList) {
this.$emit('success', '', { data: { publicUrl: '' }, code: 20000 })
},
uploadSuccess(res, file) {
if (res.code === 20000) {
@ -81,9 +90,8 @@ export default {
}
}
</script>
<style scoped lang="scss">
</style>
<style >
<style scoped lang="scss"></style>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
@ -114,8 +122,8 @@ export default {
.photo-container {
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
/* justify-content: space-around; */
/* align-items: center; */
margin-bottom: 20px;
}
</style>

@ -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>

@ -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-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 prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
<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="showFlag" label="是否推荐">
<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-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 prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
<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="showFlag" label="是否推荐">
<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-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 prop="categoryNum" label="编号"></el-table-column>
<el-table-column prop="categoryName" label="商品名称"></el-table-column>
<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="showFlag" label="是否推荐">
<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()
}
}

@ -0,0 +1,8 @@
<template>
<div>
<router-view />
</div>
</template>
<script>
export default {}
</script>

@ -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>
Loading…
Cancel
Save