Commit 35c0e0c4 by cpa

商城的商家端前端代码

parent 3559071b
import request from '@/router/axios' import request from '@/router/axios'
export function fetchList(query) { export function fetchList(query) {
return request({ return request({
url: '/admin/mallGoods/page', url: '/admin/mallGoods/page',
......
import request from '@/router/axios'
export function isUpon(parameter) {
return request({
url: '/admin/merchantMallGoods/batchUpon',
method: 'put',
params:parameter
})
}
export function isNotUpon(parameter) {
return request({
url: '/admin/merchantMallGoods/batchDown',
method: 'put',
params:parameter
})
}
export function fetchList(query) {
return request({
url: '/admin/merchantMallGoods/page',
method: 'get',
params: query
})
}
export function getGoodsInfo(query) {
return request({
url: '/admin/merchantMallGoods/getMerchantGoodsDetail',
method: 'get',
params: query
})
}
//
// export function addObj(obj) {
// return request({
// url: '/general/mallGoods',
// method: 'post',
// params: obj
// })
// }
//
// export function getObj(id) {
// return request({
// url: '/general/mallGoods/' + id,
// method: 'get'
// })
// }
//
//
// export function putObj(obj) {
// return request({
// url: '/general/mallGoods',
// method: 'put',
// params: obj
// })
// }
// export function getGoodsInfo(params) {
// return request({
// url: '/general/mallGoods/getGoodsDetails',
// method: 'get',
// params:params
// })
// }
//
//
//
// export function isNotHot(parameter) {
// return request({
// url: '/general/mallGoods/batchSetIsNotHot',
// method: 'put',
// params:parameter
// })
// }
//
// export function isHot(parameter) {
// return request({
// url: '/general/mallGoods/batchSetIsHot',
// method: 'put',
// params:parameter
// })
// }
//
//
//
// export function delObj(parameter) {
// return request({
// url: '/general/merchant/mallGoods/',
// method: 'delete',
// params:parameter
// })
// }
//
// export function querySpecNameById(parameter) {
// return request({
// url: '/general/mallGoodsSpec/querySpecNameById',
// method: 'get',
// params:parameter
// })
// }
//
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/admin/merchantMallOrder/page',
method: 'get',
params: query
})
}
export function putObj(obj) {
return request({
url: '/admin/merchantMallOrder',
method: 'put',
params: obj
})
}
export function shipsImmediately(query) {
return request({
url: '/admin/merchantMallOrder/shipsImmediately',
method: 'put',
params: query
})
}
export function getOrderInfo(params) {
return request({
url: '/admin/merchantMallOrder/queryOrderDetails',
method: 'get',
params:params
})
}
export function cancelOrderMethod(query) {
return request({
url: '/admin/merchantMallOrder/cancelOrder',
method: 'get',
params: query
})
}
//
// export function getShopDetails(params) {
// return request({
// url: '/general/mallOrder/getShopDetails',
// method: 'get',
// params
// })
// }
// export function isVirtualGoods(query) {
// return request({
// url: '/admin/merchantMallOrder/isVirtualGoods',
// method: 'get',
// params: query
// })
// }
// export function getObj(id) {
// return request({
// url: '/general/mallOrder/' + id,
// method: 'get'
// })
// }
//
// export function addObj(obj) {
// return request({
// url: '/general/mallOrder',
// method: 'post',
// data: obj
// })
// }
//
//
// export function delObj(ids) {
// return request({
// url: '/general/mallOrder/' + ids,
// method: 'delete'
// })
// }
//
// export function confirmPayObj(obj) {
// return request({
// url: '/general/mallOrder/confirmPayment',
// method: 'put',
// params: obj
// })
// }
//
//
//
// export function shopClass(params) {
// return request({
// url: '/general/mallOrder/getShopClassOptions',
// method: 'get',
// params
// })
// }
//
// export function searchShopClass(params) {
// return request({
// url: '/general/mallOrder/searchShopClassOptions',
// method: 'get',
// params
// })
// }
//
// export function authApply(data) {
// return request({
// url: '/general/mallOrder/verifyMerchantApply',
// method: 'post',
// data
// })
// }
//
// export function fetchShopList(data) {
// return request({
// url: '/general/mallOrder/searchList',
// method: 'post',
// data
// })
// }
//
//
// export function editShopInfo(data) {
// return request({
// url: '/general/mallOrder/editShopInfo',
// method: 'post',
// data
// })
// }
//
// export function editDeposit(params) {
// return request({
// url: '/general/mallOrder/editDeposit',
// method: 'get',
// params
// })
// }
//
// export function resetPassword(params) {
// return request({
// url: '/general/mallOrder/resetPassword',
// method: 'get',
// params
// })
// }
//
// export function block(params) {
// return request({
// url: '/general/mallOrder/blocked',
// method: 'get',
// params
// })
// }
//
// export function unBlock(params) {
// return request({
// url: '/general/mallOrder/unBlock',
// method: 'get',
// params
// })
// }
/* 商品管理-添加商品页面-添加规格 */
export const tableOption = {
"selection": false,
"border": true,
"stripe": true,
"menuAlign": "center",
"align": "center",
"delBtn":true,
"editBtn":false,
"addBtn":false,
"searchMenuSpan": 6,
"column": [
{
"type": "input",
"label": "ID",
"prop": "id",
"span": 12,
},
{
"type": "input",
"label": "版本",
"prop": "merchantId",
"span": 12,
},
{
"type": "input",
"label": "类型",
"prop": "classifyId",
"span": 12,
},
{
"type": "number",
"label": "售卖价格",
"prop": "classifyId",
"span": 12,
},
{
"listType": 'picture-img',
"type":"upload",
"label": "图片",
"prop": "goodsImage",
},
{
"type": "number",
"label": "商品库存",
"prop": "classifyId",
"span": 12,
},
]
}
export const tableOption = {
"selection": true,
"border": true,
"stripe": true,
"menuAlign": "center",
"align": "center",
"searchMenuSpan": 8,
"emptyBtn":false,
"addBtn": false,
"delBtn": false,
"editBtn": false,
searchBtnText:"查询",
searchSpan:4,
"column": [
{
"type": "date",
"label": "创建时间",
"prop": "createTime",
"span": 12,
"searchRange": true,
"valueFormat": 'yyyy-MM-dd',
"format": 'yyyy-MM-dd',
},
{
"type": "input",
"label": "商品ID",
"prop": "id",
span: 12,
"search": true,
},
{
"type": "input",
"label": "商品名称",
"prop": "goodsName",
"search": true,
},
{
"listType": 'picture-img',
"type":"upload",
"label": "商品列表图",
"prop": "goodsImage",
},
{
"type": "select",
"label": "商品分类",
"prop": "classifyId",
"span": 12,
showColumn: false,
"dicUrl": "/general/mallClassify/dropDownBox",
},
{
"type": "input",
"label": "商品分类",
"prop": "classifyName",
"span": 12,
"dicUrl": "/general/mallClassify/dropDownBox",
},
{
"type": "input",
"label": "累计剩余库存",
"prop": "stock",
},
{
"type": "input",
"label": "销量",
"prop": "sales",
},
{
"type": "select",
"label": "状态",
"prop": "state",
"search": true,
"showColumn":false,
dicUrl: "/general/mallGoods/getStateOptions",
},
{
"type": "input",
"label": "状态",
"prop": "stateName",
},
{
"type": "select",
"label": "审核状态",
"prop": "auditState",
"search": true,
"showColumn":false,
dicUrl: "/general/mallGoods/getAuditStateOptions",
},
{
"type": "input",
"label": "审核状态",
"prop": "auditStateName",
},
]
}
export const tableOption = {
selection: false,
border: true,
index: false,
indexLabel: "序号",
stripe: true,
menuAlign: "center",
align: "center",
searchMenuSpan: 8,
emptyBtn: false,
addBtn: false, // 启用添加按钮-行外
delBtn: false, // 启用删除按钮-行內
editBtn: false, // 启用编辑按钮-行內
searchBtnText:"查询",
searchSpan:4,
column: [
{
"type": "date",
"label": "下单时间",
"prop": "createTime",
"searchRange": true,
"valueFormat": 'yyyy-MM-dd',
},
{
"type": "input",
"label": "订单编号",
"prop": "orderNo",
"search": true,
span: 5
},
{
"type": "select",
"label": "状态",
"prop": "state",
"search": true,
"dicUrl": "/general/mallOrder/getStateOptions",
},
{
"type": "date",
"label": "下单用户",
"prop": "takeName",
search: true,
},
{
"type": "input",
"label": "商品名称",
"prop": "goodsName",
search: true,
},
{
"listType": 'picture-img',
"type": "upload",
"label": "商品图片",
"prop": "goodsImage",
span: 5
},
{
"type": "input",
"label": "购买数量",
"prop": "number",
span: 5
},
{
"type": "input",
"label": "商品金额",
"prop": "goodsMoney",
span: 5
},
{
"type": "input",
"label": "收货信息",
"prop": "payMoney",
formatter:row => {
return row.takeName+"--"+row.phone+"--"+row.address
}
},
]
}
import Layout from '@/page/index/' import Layout from '@/page/index/'
export default [{ export default [{
path: '/info', path: '/info',
component: Layout, component: Layout,
...@@ -28,4 +29,33 @@ export default [{ ...@@ -28,4 +29,33 @@ export default [{
component: () => component: () =>
import(/* webpackChunkName: "views" */ '@/views/userMgt/components/UserDetails') import(/* webpackChunkName: "views" */ '@/views/userMgt/components/UserDetails')
}] }]
}] },
// 商家-商品
{
path: '/businessGoods',
component: Layout,
redirect: '/businessGoods/index',
children: [{
path: 'update',
component: () =>
import('@/views/businessGoods/update')
},{
path: 'details',
component: () =>
import('@/views/businessGoods/details')
},]
},
// 商家-订单
{
path: '/businessOrder',
component: Layout,
redirect: '/businessOrder/index',
children: [{
path: 'details',
component: () =>
import('@/views/businessOrder/details')
}]
},
]
<template>
<div class="execution">
<basic-container v-loading="loading">
<el-form :inline="true" class="demo-form-inline">
<!-- 商品详情 -->
<div class="zm_info_header">
<span>商品详情</span>
</div>
<el-row>
<el-col :span="12"><div class="grid-content bg-purple">
<el-form-item label="创建时间">
<span>{{info.createTime || ''}}</span>
</el-form-item>
</div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light">
<el-form-item label="商品ID">
<span>{{info.id || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="12"><div class="grid-content bg-purple">
<el-form-item label="商品名称">
<span>{{info.goodsName || ''}}</span>
</el-form-item>
</div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light">
<el-form-item label="商品分类">
<span>{{info.classifyName || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="商品规格">
<div style="margin-top: 50px;padding:0px;margin-left:70px;border: 1px solid silver ">
<el-row :gutter="15">
<el-col :span="24">
<el-table class="tableClass" :data="formData.result" >
<el-table-column
v-for="key in formData.listkey"
:key="key"
:prop="key"
:label="key"></el-table-column>
</el-table>
</el-col>
</el-row>
</div>
</el-form-item>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="商品列表图" label-width="100px" style="float: left">
<el-image v-for="(item, index) in goodsImageList" class="image_item" :key="index" :src="item"
:preview-src-list="goodsImageList" fit="cover">
</el-image>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="商品详情图" label-width="100px">
<el-image v-for="(item, index) in goodsImageDetail" class="image_item" :key="index" :src="item"
:preview-src-list="goodsImageDetail" fit="cover">
</el-image>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="商品视频" label-width="100px">
<video :src="goodsVideo" width="320" height="240" prop="video" controls="controls">
</video>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="商品认证视频" label-width="100px">
<video :src="certificationVideoUrl" width="320" height="240" prop="video" controls="controls">
</video>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="12"><div class="grid-content bg-purple">
<el-form-item label="累计剩余库存">
<span>{{info.stock || ''}}</span>
</el-form-item>
</div></el-col>
<el-col :span="12"><div class="grid-content bg-purple-light">
<el-form-item label="状态">
<span>{{info.stateName || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="审核状态" label-width="100px">
<span>{{info.auditStateName || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="商品详情" label-width="100px">
<editor :content="initContent" height="300px" style="margin-top: 30px"/>
</el-form-item>
</div></el-col>
</el-row>
<!-- 审核信息 -->
<div class="zm_info_header">
<span>审核信息</span>
</div>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="审核时间 :" prop="content">
<span>{{info.auditTime || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="审核结果 :" prop="content">
<span>{{info.auditStateName || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple">
<el-form-item label="审核备注 :" prop="content">
<span>{{info.auditRemark || ''}}</span>
</el-form-item>
</div></el-col>
</el-row>
<el-row>
<el-col :span="24"><div class="grid-content bg-purple-dark" style="width: 600px;margin:0px auto">
<el-button type="primary" size="medium"@click="$router.go(-1)">返回</el-button>
</div></el-col>
</el-row>
</el-form>
</basic-container>
</div>
</template>
<script>
import {getGoodsInfo} from '@/api/mall/merchantMallgoods'
import {ZmMixin} from '@/mixins/ZmMixin.js'
export default {
mixins: [ZmMixin],
components: {
'editor': () => import('@/components/ckeditor/index.vue')
},
data() {
return {
goodsVideo:'',
certificationVideoUrl:'',
isLogistics: '',isElectronicContract:'',isVerified: '', isAPay: '', isUploadVideo: '',
formData: {
result: [],
listkey:[],
},
editing: false,
saving: false,
loading: false,
info: {},
form: {
goodsDetails:''
},
rules: {
}
}
},
mounted() {
this.loadInfo()
},
computed: {
initContent() {
return this.form.goodsDetails? this.form.goodsDetails:'初始化'
},
id() {
return this.$route.query.id
},
goodsImageDetail() {
if (this.info) {
let urls = []
let shopImg = this.info.goodsImageDetail
if (shopImg) {
urls = shopImg.split(",")
}
return urls
}
return []
},
goodsImageList() {
if (this.info) {
let urls = []
let shopImg = this.info.goodsImageList
if (shopImg) {
urls = shopImg.split(",")
}
return urls
}
return []
},
},
methods: {
generateTable(r){
this.formData.listkey=[]
this.formData.result=[]
this.formData.result=r
//提取表头字段====
for (let i = 0, l = this.formData.result.length; i < l; i++) {
for (let key in this.formData.result[i]) {
if (this.formData.listkey.indexOf(key)==-1){
this.formData.listkey.push(key)
}else{
}
}
}
},
loadInfo() {
this.loading = true
getGoodsInfo({
id: this.id
}).then(r => {
this.loading = false
this.info = this.zmRes(r)
let table=[]
for (let i = 0; i <r.data.data.skus.length ; i++) {
table.push({商家价格:''})
table.push({售卖价格:''})
table.push({图片:''})
table.push({商品库存:''})
table[i].商家价格=r.data.data.skus[i].merchantPrice
table[i].售卖价格=r.data.data.skus[i].sellPrice
table[i].图片=r.data.data.skus[i].goodsImage
table[i].商品库存=r.data.data.skus[i].stock
}
this.generateTable(table)
}).catch(r => {
this.loading = false
this.error('加载信息失败')
})
},
}
}
</script>
<style scoped>
.zm_info_header {
padding: 10px 16px;
display: flex;
align-items: center;
font-size: 14px;
color: #606266;
font-weight: 700;
background: #dedede;
}
.zm_info_body .zm_info_row:not(:first-child) {
margin-top: 10px;
}
.image_item {
width: 100px;
height: 100px;
margin-right: 10px;
}
</style>
import request from '@/router/axios'
export function getClassifyDropDown() {
return request({
url: '/admin/mallGoodsSpec/dropDownBox',
method: 'get'
})
}
export function searchSpecByName(query) {
return request({
url: '/general/mallGoodsSpec/getSpecByName',
method: 'get',
params: query
})
}
export function getSpecValue(query) {
return request({
url: '/admin/mallGoodsSpec/getSpecValueById',
method: 'get',
params: query
})
}
export function getGoodsDetails(query) {
return request({
url: '/admin/mallGoodsSpec/getDetails',
method: 'get',
params: query
})
}
export function addOrEditGoods(data) {
return request({
url: '/admin/mallGoodsSpec/addOrEditGoods',
method: 'post',
data
})
}
<template>
<el-dialog
:title="topTitle"
:visible.sync="show"
width="70%"
:close-on-click-modal="false"
:before-close="handleClose" append-to-body>
<goods-edit ref="editContent" :id="id" />
</el-dialog>
</template>
<script>
export default {
props: {
show: Boolean,
id: [String, Number],
},
components: {
'goods-edit': () => import('./goods_edit.vue')
},
computed: {
topTitle() {
if(this.id>=0&&this.id!=undefined){
return "编辑商品"
}
return "新增商品"
}
},
watch: {
show(n, o) {
if(n) {
this.$nextTick(() => {
this.$refs['editContent'].reload(this.id)
})
}
}
},
methods: {
handleClose() {
this.$emit('close')
}
}
}
</script>
<style scoped>
</style>
export const mock = {
"goodsName": "你行你上",
"goodsClassId": 1,
"skus": [
{
"specs": [
{
"specId": 2,
"id": 3,
"name": "100m³",
"specName": "体积"
},
{
"specId": 1,
"id": 1,
"name": "阿玛尼",
"specName": "品牌"
}
],
"merchantPrice": 10,
"sellPrice": 50,
"goodsImage": "https://s.cn.bing.net/th?id=OJ.yL3aH2PmKyuCjQ",
"stock": 10
},
{
"specs": [
{
"specId": 2,
"id": 3,
"name": "100m³",
"specName": "体积"
},
{
"specId": 1,
"id": 15,
"name": "圣罗兰",
"specName": "品牌"
}
],
"merchantPrice": 20,
"sellPrice": 60,
"goodsImage": "http://linshenxs.oss-cn-beijing.aliyuncs.com/images/640.webp",
"stock": 10
},
{
"specs": [
{
"specId": 2,
"id": 5,
"name": "300m³"
},
{
"specId": 1,
"id": 1,
"name": "阿玛尼"
}
],
"merchantPrice": 30,
"sellPrice": 70,
"goodsImage": "http://linshenxs.oss-cn-beijing.aliyuncs.com/images/26115112U08.jpg",
"stock": 10
},
{
"specs": [
{
"specId": 2,
"id": 5,
"name": "300m³"
},
{
"specId": 1,
"id": 15,
"name": "圣罗兰"
}
],
"merchantPrice": 40,
"sellPrice": 80,
"goodsImage": "http://linshenxs.oss-cn-beijing.aliyuncs.com/images/77917d1ceb8196b18fdcb512d5f3088b_hd.jpg",
"stock": 10
}
],
"listImage": "http://linshenxs.oss-cn-beijing.aliyuncs.com/images/38dbb6fd5266d016465f27a8952bd40734fa35ef.jpg",
"detailImage": "http://linshenxs.oss-cn-beijing.aliyuncs.com/images/07cf86548b94145bd68c4e4b9b035684_hd.jpg",
"videoUrl": "",
"authUrl": "http://linshenxs.oss-cn-beijing.aliyuncs.com/videos/1122.mp4",
"details": "<p>这是描述老牛牛批的一件商品</p>",
"fakeNumber": 9999,
"needReal": true,
"payWithA": true,
"needVideo": false,
"needContract": false,
"needDelivery": true,
"hireRate": 3
}
<template>
<el-dialog
title="添加规格"
:visible.sync="show"
width="30%"
:close-on-click-modal="false"
:before-close="handleClose" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="选择规格" prop="class">
<el-select
v-model="form.class"
filterable
remote
reserve-keyword
placeholder="搜索规格名称"
@change="onSelect"
:remote-method="remoteMethod"
:disabled="valuing"
:loading="searching">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="选择规格值" prop="value">
<el-checkbox-group v-model="form.value">
<el-checkbox v-for="(item, index) in values" :key="index" :label="item.id">{{item.name}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="onSubmit">确 认</el-button>
</span>
</el-dialog>
</template>
<script>
import {
ZmMixin
} from '@/mixins/ZmMixin.js'
import {
searchSpecByName,
getSpecValue
} from './goods_api.js'
export default {
mixins: [ZmMixin],
props: {
show: Boolean,
classifyId: [String, Number]
},
data() {
return {
loading: false,
searching: false,
valuing: false,
options: [],
values: [],
form: {
class: "",
value: []
},
rules: {
class: [{
trigger: 'blur',
message: "请选择规格",
required: true
}],
value: [{
trigger: 'blur',
message: "请选择规格值",
required: true
}]
}
}
},
watch: {
show(n, o) {
if(n) {
this.options = []
this.values = []
this.form.class = ""
this.form.value = []
}
}
},
methods: {
handleClose() {
this.$emit('close')
},
remoteMethod(query) {
this.options = []
if(query !== '') {
this.searching = true
searchSpecByName({specName: query, classifyId: this.classifyId})
.then(z => {
this.searching = false
let r = this.zmRes(z)
if(r) {
this.options = r.map(r => {
return {
label: r.specName,
value: r.id
}})
}
})
.catch(e => {
this.searching = false
})
}
},
onSelect(select) {
if(select) {
this.valuing = true
getSpecValue({specId: select})
.then(r => {
this.valuing = false
let z = this.zmRes(r)
if(z) {
this.values = z.map(r => {
return {
id: r.id,
name: r.specValue
}
})
}
})
.catch(e => {
this.valuing = false
})
}
},
onSubmit() {
this.$refs['form'].validate((valid) => {
if(valid) {
let spec = this.options.filter(r => { return r.value == this.form.class })[0]
let out = {
specId: this.form.class,
specName: spec.label,
values: this.form.value.map(id => {
let find = undefined
for(let i = 0; i < this.values.length; i++) {
let value = this.values[i]
if(value.id == id) {
find = value
break
}
}
return find
})
}
this.$emit('chosen', out)
}
})
}
}
}
</script>
<style scoped>
</style>
<!-- 商城商品管理 -->
<template>
<div class="execution">
<basic-container>
<avue-crud ref="crud"
:page.sync="page"
:data="tableData"
:permission="permissionList"
:table-loading="tableLoading"
:option="tableOption"
@on-load="getList"
@selection-change="onSelectionChange"
@search-change="searchChange"
@refresh-change="refreshChange"
@size-change="sizeChange"
@current-change="currentChange"
@row-update="handleUpdate"
@row-save="handleSave"
@row-del="handleDel">
<!-- 1.行内按钮-->
<template slot-scope="scope" slot="menu">
<el-button type="button" size="small"
@click="lookDetail(scope.row)" style="color: #409EFF;margin: 5px;padding: 0px;border: 0px">详情</el-button>
<el-button type="button" size="small"
@click="handleUpdate(scope.row)" style="color: #409EFF;margin: 5px;padding: 0px;border: 0px">编辑</el-button>
<el-button type="button" size="small"
@click="handleDel(scope.row)" style="color: #409EFF;margin: 5px;padding: 0px;border: 0px">删除</el-button>
</template>
<!-- 2.表外按钮 -->
<template slot-scope="scope" slot="menuLeft">
<div class="layout_h">
<el-button
type="primary"
size="small"
@click="add">添加</el-button>
<el-button
type="primary"
size="small"
@click="batchIsUpon">上架</el-button>
<el-button
type="primary"
size="small"
@click="batchIsNotUpon">下架</el-button>
<el-button
type="primary"
size="small"
@click="handleDelBatch(scope.row)">删除</el-button>
</div>
</template>
</avue-crud>
</basic-container>
<goods_edits :show="goodsEditVue" :id="id" @close="goodsEditVue=false" @success="onChangeDone" />
</div>
</template>
<script>
import {fetchList,addObj,delObj,isUpon, isNotUpon} from '@/api/mall/merchantMallgoods'
import {tableOption} from '@/const/crud/mall/merchantMallgoods'
import {mapGetters} from 'vuex'
export default {
name: 'businessGoods',
data() {
return {
goodsEditVue:false,
id:undefined,
searchForm: {},
tableData: [],
page: {
total: 0, // 总页数
currentPage: 1, // 当前页数
pageSize: 20 // 每页显示多少条
},
tableLoading: false,
tableOption: tableOption
}
},
computed: {
...mapGetters(['permissions']),
permissionList() {
return {
addBtn: this.vaildData(this.permissions.admin_mallgoods_add, false),
delBtn: this.vaildData(this.permissions.admin_mallgoods_del, false),
editBtn: this.vaildData(this.permissions.admin_mallgoods_edit, false)
};
}
},
components: {
'goods_edits': () => import('./goodsEdit/goods_edit_pop'),
},
methods: {
// 更新
handleUpdate: function (row, index, done,loading) {
console.log("执行编辑方法")
this.id=row.id
console.log("赋值id:"+row.id)
this.goodsEditVue=true
},
// 添加
add() {
this.goodsEditVue=true
},
// 查看详情
lookDetail(row) {
this.$router.push('/businessGoods/details?id=' + row.id)
},
onChangeDone() {
this.refreshChange()
},
// 列表查询
getList(page, params) {
this.tableLoading = true
fetchList(Object.assign({
current: page.currentPage,
size: page.pageSize
}, params, this.searchForm )).then(response => {
this.tableData = response.data.data.records
this.page.total = response.data.data.total
this.tableLoading = false
}).catch(() => {
this.tableLoading=false
})
},
// 删除
handleDel: function (row, index) {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
return delObj(row.id)
}).then(data => {
this.$message.success('删除成功')
this.getList(this.page)
})
},
// 选择事件(多选事件)
onSelectionChange(r) {
this.selectedData = r
},
// 批量 上架
batchIsUpon() {
let d = this.selectedData
if(d == undefined || d.length == 0) {
this.$message.error('请选择项进行上架')
return
}
let ids = d.map(r => { return r.id }).join(',')
console.log(ids)
this.$confirm('请确认是否上架已勾选的商品', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
return isUpon({ids: ids})
}).then(data => {
this.$message.success('删除成功')
this.getList(this.page)
})
},
// 批量 下架
batchIsNotUpon() {
let d = this.selectedData
if(d == undefined || d.length == 0) {
this.$message.error('请选择项进行下架')
return
}
let ids = d.map(r => { return r.id }).join(',')
this.$confirm('请确认是否下架已勾选的商品', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
return isNotUpon({ids: ids})
}).then(data => {
this.$message.success('删除成功')
this.getList(this.page)
})
},
// 批量删除
handleDelBatch() {
let d = this.selectedData
if(d == undefined || d.length == 0) {
this.$message.error('请选择项进行删除')
return
}
let ids = d.map(r => { return r.id }).join(',')
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
return delObj({ids: ids})
}).then(data => {
this.$notify.success('删除成功')
this.$refs.crud.toggleSelection();
this.refreshChange();
})
},
// 保存
handleSave: function (row, done,loading) {
addObj(row).then(data => {
this.$message.success('添加成功')
done()
this.getList(this.page)
}).catch(() => {
loading();
});
},
// 每页条数改变事件
sizeChange(pageSize){
this.page.pageSize = pageSize
},
// 当前页发生改变事件
currentChange(current){
this.page.currentPage = current
},
// 查询事件
searchChange(form, done) {
this.searchForm = form
this.page.currentPage = 0
this.getList(this.page, form)
done()
},
// 刷新事件
refreshChange() {
this.getList(this.page)
},
}
}
</script>
<!-- 取消订单 -->
<template>
<el-dialog :title="topTitle"
:visible.sync="show"
:close-on-click-modal="false"
:before-close="handleClose" append-to-body >
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="退货地址" label-width="120px">
<p>收 件 人 - {{this.form.takeName}}</p>
<p>联系电话 - {{this.form.phone}}</p>
<p>退货地址 - {{this.form.address}}</p>
</el-form-item>
<el-form-item label="退还给用户金" prop="refundMoney" label-width="120px" required>
<el-input-number v-model="form.refundMoney" size="30px"></el-input-number>
<p style="color: red">支付金额:{{this.form.payMoney}}</p>
</el-form-item>
<el-form-item label="商家金额" prop="goodsMoney" label-width="120px" required v-if="this.form.isPlatformOrder==0">
<el-input-number v-model="form.goodsMoney" size="30px"></el-input-number>
</el-form-item>
<el-form-item label="备注" prop="mark" label-width="120px" required>
<el-input v-model="form.mark" ></el-input>
</el-form-item>
</el-form>
<!-- 底部 -->
<span slot="footer" class="dialog-footer">
<el-button type="primary" :loading="loading" @click="onSubmit" style="width: 200px; height: 40px;display:block;margin:0 auto;" >确 认</el-button>
</span>
</el-dialog>
</template>
<script>
import {putObj,getStateOptions} from '@/api/mall/mallclassify'
import {ZmMixin} from '@/mixins/ZmMixin.js'
import request from "@/router/axios";
export default {
props: {
show: Boolean,
params: Object
},
mixins: [ZmMixin],
components: {},
computed: {
topTitle() {
console.log(JSON.stringify(this.params))
this.form.isPlatformOrder=0
return '取消订单'
},
},
watch: {
params(n, o) {
if(n) {
this.form.classifyName = n.classifyName
this.form.sort = n.sort
}
}
},
methods: {
handleClose() {
this.$emit('close')
},
onSubmit() {
this.params.classifyName=this.form.classifyName
this.params.sort=this.form.sort
putObj(this.params).then(r => {
this.loading = false
this.$emit('success')
this.$message.success('修改成功')
}).catch(e => {
this.loading = false
})
},
},
data() {
return {
loading: false,
form: {
takeName:'张三',
address:'成都市高新区',
phone:'12345687892',
refundMoney:'200.00',
goodsMoney:'350.00',
mark:'备注消息',
pay_money:'100A币',
}
}
}
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment