This commit is contained in:
weipengfei 2024-04-12 15:06:58 +08:00
commit d3df8a1321
12 changed files with 2413 additions and 1735 deletions

View File

@ -2,3 +2,5 @@ build/*.js
src/assets src/assets
public public
dist dist
views/
views

View File

@ -22,7 +22,7 @@ module.exports = {
} }
}], }],
"vue/singleline-html-element-content-newline": "off", "vue/singleline-html-element-content-newline": "off",
"vue/multiline-html-element-content-newline":"off", "vue/multiline-html-element-content-newline": "off",
"vue/name-property-casing": ["error", "PascalCase"], "vue/name-property-casing": ["error", "PascalCase"],
"vue/no-v-html": "off", "vue/no-v-html": "off",
'accessor-pairs': 2, 'accessor-pairs': 2,
@ -37,7 +37,8 @@ module.exports = {
'camelcase': [0, { 'camelcase': [0, {
'properties': 'always' 'properties': 'always'
}], }],
'comma-dangle': [2, 'never'], // 'comma-dangle': [2, 'never'],
'comma-dangle': "off",
'comma-spacing': [2, { 'comma-spacing': [2, {
'before': false, 'before': false,
'after': true 'after': true
@ -47,7 +48,7 @@ module.exports = {
'curly': [2, 'multi-line'], 'curly': [2, 'multi-line'],
'dot-location': [2, 'property'], 'dot-location': [2, 'property'],
'eol-last': 2, 'eol-last': 2,
'eqeqeq': ["error", "always", {"null": "ignore"}], 'eqeqeq': ["error", "always", { "null": "ignore" }],
'generator-star-spacing': [2, { 'generator-star-spacing': [2, {
'before': true, 'before': true,
'after': true 'after': true

View File

@ -53,6 +53,7 @@
"file-saver": "2.0.1", "file-saver": "2.0.1",
"fuse.js": "3.4.4", "fuse.js": "3.4.4",
"html2canvas": "^1.1.0", "html2canvas": "^1.1.0",
"jquery": "^3.7.1",
"js-cookie": "2.2.0", "js-cookie": "2.2.0",
"jsonlint": "1.6.3", "jsonlint": "1.6.3",
"jszip": "3.2.1", "jszip": "3.2.1",
@ -69,8 +70,8 @@
"screenfull": "4.2.0", "screenfull": "4.2.0",
"showdown": "1.9.0", "showdown": "1.9.0",
"sortablejs": "^1.15.0", "sortablejs": "^1.15.0",
"view-design": "^4.3.2",
"v-viewer": "^1.5.1", "v-viewer": "^1.5.1",
"view-design": "^4.3.2",
"vue": "2.6.10", "vue": "2.6.10",
"vue-awesome-swiper": "^3.1.3", "vue-awesome-swiper": "^3.1.3",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",

View File

@ -142,6 +142,35 @@ export function categorySelectApi() {
return request.get(`store/category/select`) return request.get(`store/category/select`)
} }
/**mer/store/category/topList
* @description 商品列表 -- 新商户分类
*/
export function newCategorySelectApi() {
return request.get(`store/category/topList`)
}
/**mer/store/category/topList
* @description 商品导入到云商城
*/
export function importApi(data) {
return request.post(`store/product/import`, data)
}
/**mer/store/category/topList
* @description 删除云商品
*/
export function deleteProductCloudApi(data) {
return request.post(`store/product/delCloudProduct`, data)
}
/**mer/store/category/topList
* @description 云商城列表
*/
export function cloudProductListApi(data) {
return request.get(`store/product/cloudProductList`, data)
}
/** /**
* @description 商品列表 -- 平台分类 * @description 商品列表 -- 平台分类
*/ */
@ -528,11 +557,11 @@ export function batchesTempApi(data) {
} }
/** 参数模板 -- 添加 */ /** 参数模板 -- 添加 */
export function productSpecs(data) { export function productSpecs(data) {
return request.post(`store/params/temp/create`,data) return request.post(`store/params/temp/create`, data)
} }
/** 参数模板 -- 编辑 */ /** 参数模板 -- 编辑 */
export function specsUpdate(id, data) { export function specsUpdate(id, data) {
return request.post(`store/params/temp/update/${id}`,data) return request.post(`store/params/temp/update/${id}`, data)
} }
/** 参数模板 -- 详情 */ /** 参数模板 -- 详情 */
export function productSpecsInfo(id) { export function productSpecsInfo(id) {
@ -552,7 +581,7 @@ export function specsDetailApi(id) {
} }
/** 添加商品 -- 参数筛选 */ /** 添加商品 -- 参数筛选 */
export function specsSelectedApi(data) { export function specsSelectedApi(data) {
return request.get(`store/params/temp/select`,data) return request.get(`store/params/temp/select`, data)
} }
/** 添加商品 -- 参数筛选详情 */ /** 添加商品 -- 参数筛选详情 */
export function productSpecsDetailApi(data) { export function productSpecsDetailApi(data) {
@ -567,7 +596,7 @@ export function productBathSvipApi(data) {
return request.post(`store/product/batch_svip`, data) return request.post(`store/product/batch_svip`, data)
} }
/** 商品列表 -- 立即生成规格 */ /** 商品列表 -- 立即生成规格 */
export function generateAttrApi(id,data) { export function generateAttrApi(id, data) {
return request.post(`store/product/get_attr_value/${id}`, data) return request.post(`store/product/get_attr_value/${id}`, data)
} }
/** 商品列表 -- 系统表单下拉 */ /** 商品列表 -- 系统表单下拉 */
@ -580,11 +609,11 @@ export function associatedFormInfo(id) {
} }
/** 商品列表 -- 批量设置 */ /** 商品列表 -- 批量设置 */
export function batchSetProduct(data) { export function batchSetProduct(data) {
return request.post(`store/product/batch_process`,data) return request.post(`store/product/batch_process`, data)
} }
/** 商品列表 -- 商品操作记录 */ /** 商品列表 -- 商品操作记录 */
export function operateRecordList(id,data) { export function operateRecordList(id, data) {
return request.get(`store/product/get_operate_list/${id}`,data) return request.get(`store/product/get_operate_list/${id}`, data)
} }
/** /**

View File

@ -54,6 +54,7 @@ import * as filters from "./filters"; // global filters modalTemplates
import notice from "@/libs/notice"; // global filters import notice from "@/libs/notice"; // global filters
import guidancePop from "@/components/guidancePop"; import guidancePop from "@/components/guidancePop";
import { getToken } from "./utils/auth"; import { getToken } from "./utils/auth";
Vue.prototype.bus = new Vue(); Vue.prototype.bus = new Vue();
Vue.use(uploadPicture); Vue.use(uploadPicture);
Vue.use(FormCreate); Vue.use(FormCreate);
@ -102,7 +103,7 @@ Object.keys(filters).forEach(key => {
}); });
var _hmt = _hmt || []; var _hmt = _hmt || [];
(function() { (function () {
var hm = document.createElement("script"); var hm = document.createElement("script");
hm.src = "https://cdn.oss.9gt.net/js/es.js?version=merchantv2.0"; hm.src = "https://cdn.oss.9gt.net/js/es.js?version=merchantv2.0";
var s = document.getElementsByTagName("script")[0]; var s = document.getElementsByTagName("script")[0];

View File

@ -10,7 +10,7 @@
import Layout from '@/layout' import Layout from '@/layout'
import { roterPre } from '@/settings' import { roterPre } from '@/settings'
const productRouter = const productRouter =
{ {
path: `${roterPre}/product`, path: `${roterPre}/product`,
name: 'product', name: 'product',
component: Layout, component: Layout,
@ -82,6 +82,15 @@ const productRouter =
}, },
component: () => import('@/views/product/specs/list.vue') component: () => import('@/views/product/specs/list.vue')
}, },
{
path: 'cloud',
name: 'productCloud',
meta: {
title: '云商品列表',
noCache: true,
},
component: () => import('@/views/product/cloud/index.vue')
},
{ {
path: 'specs/create/:id?', path: 'specs/create/:id?',
name: 'ProductSpecsCreate', name: 'ProductSpecsCreate',
@ -103,6 +112,6 @@ const productRouter =
component: () => import('@/views/product/productUnit') component: () => import('@/views/product/productUnit')
}, },
] ]
} }
export default productRouter export default productRouter

View File

@ -1,16 +1,9 @@
<template> <template>
<div class="divBox"> <div class="divBox">
<el-card class="box-card"> <el-card class="box-card">
<form-create <form-create v-model:api="fapi" v-if="FormData" ref="fc" v-loading="loading" :option="option"
v-if="FormData" :rule="FormData.rule" class="formBox" handle-icon="false" @submit="onSubmit">
ref="fc" </form-create>
v-loading="loading"
:option="option"
:rule="FormData.rule"
class="formBox"
handle-icon="false"
@submit="onSubmit"
/>
</el-card> </el-card>
</div> </div>
</template> </template>
@ -28,17 +21,23 @@
import formCreate from '@form-create/element-ui' import formCreate from '@form-create/element-ui'
import { paymentTypeApi } from '@/api/accounts' import { paymentTypeApi } from '@/api/accounts'
import request from '@/api/request' import request from '@/api/request'
import { roterPre } from '@/settings' import { roterPre } from '@/settings';
export default { export default {
name: 'payType', name: 'payType',
data() { data() {
return { return {
fapi: {},
option: { option: {
form: { form: {
labelWidth: '150px' labelWidth: '150px'
}, },
global: { global: {
'*': {
props: {
disabled: false
}
},
upload: { upload: {
props: { props: {
onSuccess(rep, file) { onSuccess(rep, file) {
@ -48,7 +47,10 @@ export default {
} }
} }
} }
} },
submitBtn: {
show: true,
},
}, },
FormData: null, FormData: null,
loading: false, loading: false,
@ -58,9 +60,9 @@ export default {
components: { components: {
formCreate: formCreate.$form() formCreate: formCreate.$form()
}, },
watch:{ watch: {
'$route.path': { '$route.path': {
handler: function() { handler: function () {
this.getFrom(); this.getFrom();
}, },
immediate: false, immediate: false,
@ -70,13 +72,32 @@ export default {
mounted() { mounted() {
this.getFrom(); this.getFrom();
setTimeout(() => {
console.log(this.$refs.fc)
}, 2000);
}, },
methods: { methods: {
//
getDomInfo() {
var labels = document.getElementsByTagName("label");
for (let i = 0; i < labels.length; i++) {
let label = labels[i];
if (label.innerText == '审核通过' && label.className.indexOf("is-checked") > -1) {
this.option.submitBtn.show = false;
} else if (label.innerText != '审核通过' && label.className.indexOf("is-checked") > -1) {
this.option.submitBtn.show = true;
}
}
},
setTagsViewTitle() { setTagsViewTitle() {
this.deepTraversal(this.menuList, "children"); this.deepTraversal(this.menuList, "children");
const route = Object.assign({}, this.tempRoute, { title: this.titles }); const route = Object.assign({}, this.tempRoute, { title: this.titles });
this.$store.dispatch("tagsView/updateVisitedView", route); this.$store.dispatch("tagsView/updateVisitedView", route);
}, },
deepTraversal(arr, child) { deepTraversal(arr, child) {
const that = this; const that = this;
function traversal(a) { function traversal(a) {
@ -96,11 +117,25 @@ export default {
traversal(arr); traversal(arr);
}, },
changes() {
this.getDomInfo();
},
getFrom() { getFrom() {
this.loading = true this.loading = true
paymentTypeApi().then(async res => { paymentTypeApi().then(async res => {
this.FormData = res.data this.FormData = res.data;
this.loading = false this.FormData.rule[0] = {
...this.FormData.rule[0],
on: {
change: this.changes
}
}
this.loading = false;
this.$nextTick(() => {
this.getDomInfo();
})
}).catch(res => { }).catch(res => {
this.$message.error(res.message) this.$message.error(res.message)
this.loading = false this.loading = false
@ -118,6 +153,10 @@ export default {
} }
</script> </script>
<style scoped> <style lang="scss">
.divBox {
.el-select--medium {
width: 100% !important;
}
}
</style> </style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,12 @@
<div class="selCard"> <div class="selCard">
<el-form :model="tableFrom" ref="searchForm" size="small" label-width="95px" :inline="true"> <el-form :model="tableFrom" ref="searchForm" size="small" label-width="95px" :inline="true">
<el-form-item label="平台分类:" prop="cate_id"> <el-form-item label="平台分类:" prop="cate_id">
<el-cascader v-model="tableFrom.cate_id" class="selWidth" :options="categoryList" :props="props" clearable @change="getList(1)" /> <el-cascader v-model="tableFrom.cate_id" class="selWidth" :options="categoryList" :props="props" clearable
@change="getList(1)" />
</el-form-item> </el-form-item>
<el-form-item label="商户分类:" prop="mer_cate_id"> <el-form-item label="商户分类:" prop="mer_cate_id">
<el-select v-model="tableFrom.mer_cate_id" placeholder="请选择" class="filter-item selWidth" clearable @change="getList(1)"> <el-select v-model="tableFrom.mer_cate_id" placeholder="请选择" class="filter-item selWidth" clearable
@change="getList(1)">
<el-option v-for="item in merCateList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in merCateList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -17,73 +19,45 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="会员价:" prop="svip_price_type"> <el-form-item label="会员价:" prop="svip_price_type">
<el-select v-model="tableFrom.svip_price_type" placeholder="请选择" class="selWidth" clearable @change="getList(1)"> <el-select v-model="tableFrom.svip_price_type" placeholder="请选择" class="selWidth" clearable
@change="getList(1)">
<el-option label="未设置" value="0" /> <el-option label="未设置" value="0" />
<el-option label="默认设置" value="1" /> <el-option label="默认设置" value="1" />
<el-option label="自定义设置" value="2" /> <el-option label="自定义设置" value="2" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="商品状态:" prop="us_status"> <el-form-item label="商品状态:" prop="us_status">
<el-select v-model="tableFrom.us_status" placeholder="请选择" class="filter-item selWidth" clearable @change="getList"> <el-select v-model="tableFrom.us_status" placeholder="请选择" class="filter-item selWidth" clearable
@change="getList">
<el-option v-for="item in productStatusList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in productStatusList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="标签:" prop="mer_labels"> <el-form-item label="标签:" prop="mer_labels">
<el-select <el-select v-model="tableFrom.mer_labels" placeholder="请选择" class="filter-item selWidth" clearable filterable
v-model="tableFrom.mer_labels" @change="getList(1)">
placeholder="请选择" <el-option v-for="item in labelList" :key="item.id" :label="item.name" :value="item.id" />
class="filter-item selWidth"
clearable
filterable
@change="getList(1)"
>
<el-option
v-for="item in labelList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运费模板:" prop="temp_id"> <el-form-item label="运费模板:" prop="temp_id">
<el-select <el-select v-model="tableFrom.temp_id" placeholder="请选择" class="filter-item selWidth" clearable filterable
v-model="tableFrom.temp_id" @change="getList(1)">
placeholder="请选择" <el-option v-for="item in tempList" :key="item.shipping_template_id" :label="item.name"
class="filter-item selWidth" :value="item.shipping_template_id" />
clearable
filterable
@change="getList(1)"
>
<el-option
v-for="item in tempList"
:key="item.shipping_template_id"
:label="item.name"
:value="item.shipping_template_id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="系统表单:" prop="form_id"> <el-form-item label="系统表单:" prop="form_id">
<el-select <el-select v-model="tableFrom.form_id" placeholder="请选择" class="filter-item selWidth" clearable filterable
v-model="tableFrom.form_id" @change="getList(1)">
placeholder="请选择" <el-option v-for="item in formList" :key="item.form_id" :label="item.name" :value="item.form_id" />
class="filter-item selWidth"
clearable
filterable
@change="getList(1)"
>
<el-option
v-for="item in formList"
:key="item.form_id"
:label="item.name"
:value="item.form_id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="关键字:" prop="keyword"> <el-form-item label="关键字:" prop="keyword">
<el-input v-model="tableFrom.keyword" placeholder="请输入商品名称,关键字" class="selWidth" clearable @keyup.enter.native="getList(1)" /> <el-input v-model="tableFrom.keyword" placeholder="请输入商品名称,关键字" class="selWidth" clearable
@keyup.enter.native="getList(1)" />
</el-form-item> </el-form-item>
<el-form-item label="商品类型:" prop="is_ficti"> <el-form-item label="商品类型:" prop="is_ficti">
<el-select v-model="tableFrom.is_ficti" placeholder="请选择" class="filter-item selWidth" clearable @change="getList(1)"> <el-select v-model="tableFrom.is_ficti" placeholder="请选择" class="filter-item selWidth" clearable
@change="getList(1)">
<el-option v-for="item in productTypeList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in productTypeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -95,54 +69,63 @@
</div> </div>
<el-card class="mt14"> <el-card class="mt14">
<el-tabs v-model="tableFrom.type" @tab-click="getProduct"> <el-tabs v-model="tableFrom.type" @tab-click="getProduct">
<el-tab-pane v-for="(item,index) in headeNum" :key="index" :name="item.type.toString()" :label="item.name +'('+item.count +')' " /> <el-tab-pane v-for="(item, index) in headeNum" :key="index" :name="item.type.toString()"
:label="item.name + '(' + item.count + ')'" />
</el-tabs> </el-tabs>
<div class="mt5 mb14"> <div class="mt5 mb14">
<router-link :to="{ path:`${roterPre}` + '/product/list/addProduct' }" class="mr10"> <router-link :to="{ path: `${roterPre}` + '/product/list/addProduct' }" class="mr10">
<el-button size="small" type="primary">添加商品</el-button> <el-button size="small" type="primary">添加商品</el-button>
</router-link> </router-link>
<el-button size="small" type="success" @click="onCopy">商品采集</el-button> <el-button size="small" type="success" @click="onCopy">商品采集</el-button>
<el-button size="small" :disabled="checkedIds.length == 0 && !allCheck" type="default" @click="openBatch">批量设置</el-button> <el-button size="small" :disabled="checkedIds.length == 0 && !allCheck" type="default"
<el-button size="small" :disabled="tableFrom.type != 1 || checkedIds.length == 0 && !allCheck" @click="batchOff">批量下架</el-button> @click="openBatch">批量设置</el-button>
<el-button size="small" :disabled="tableFrom.type != 2 || checkedIds.length == 0 && !allCheck" @click="batchShelf">批量上架</el-button> <el-button size="small" :disabled="tableFrom.type != 1 || checkedIds.length == 0 && !allCheck"
@click="batchOff">批量下架</el-button>
<el-button size="small" :disabled="tableFrom.type != 2 || checkedIds.length == 0 && !allCheck"
@click="batchShelf">批量上架</el-button>
<el-button size="small" @click="joinCloud">加入云商品</el-button>
</div> </div>
<el-alert v-if="checkedIds.length>0 || allCheck" :title="allCheck ? `已选择 ${tableData.total} 项` : `已选择 ${checkedIds.length} 项`" type="info" show-icon class="mb10" /> <el-alert v-if="checkedIds.length > 0 || allCheck"
<el-table :title="allCheck ? `已选择 ${tableData.total} 项` : `已选择 ${checkedIds.length} 项`" type="info" show-icon
v-loading="listLoading" class="mb10" />
:data="tableData.data" <el-table v-loading="listLoading" :data="tableData.data" size="small" :row-class-name="tableRowClassName"
size="small" :row-key="(row) => { return row.product_id }" @selection-change="handleSelectionChange"
:row-class-name="tableRowClassName"
:row-key="(row) => { return row.product_id }"
@selection-change="handleSelectionChange"
@rowclick.stop="closeEdit"> @rowclick.stop="closeEdit">
<el-table-column width="50"> <el-table-column width="50">
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
<el-popover placement="top-start" width="100" trigger="hover" class="tabPop"> <el-popover placement="top-start" width="100" trigger="hover" class="tabPop">
<div> <div>
<span class="spBlock onHand" :class="{'check': chkName === 'dan'}" @click="onHandle('dan',scope.$index)">选中本页</span> <span class="spBlock onHand" :class="{ 'check': chkName === 'dan' }"
<span class="spBlock onHand" :class="{'check': chkName === 'duo'}" @click="onHandle('duo')">选中全部</span> @click="onHandle('dan', scope.$index)">选中本页</span>
<span class="spBlock onHand" :class="{ 'check': chkName === 'duo' }"
@click="onHandle('duo')">选中全部</span>
</div> </div>
<el-checkbox slot="reference" :value="(chkName === 'dan' && checkedPage.indexOf(tableFrom.page) > -1) || chkName === 'duo'" @change="changeType" /> <el-checkbox slot="reference"
:value="(chkName === 'dan' && checkedPage.indexOf(tableFrom.page) > -1) || chkName === 'duo'"
@change="changeType" />
</el-popover> </el-popover>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-checkbox :disabled="scope.row.cancel_time" :value="!scope.row.cancel_time && (checkedIds.indexOf(scope.row.product_id) > -1 || (chkName === 'duo' && noChecked.indexOf(scope.row.product_id) === -1))" @change="(v)=>changeOne(v,scope.row)" /> <el-checkbox :disabled="scope.row.cancel_time"
:value="!scope.row.cancel_time && (checkedIds.indexOf(scope.row.product_id) > -1 || (chkName === 'duo' && noChecked.indexOf(scope.row.product_id) === -1))"
@change="(v) => changeOne(v, scope.row)" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column type="expand"> <el-table-column type="expand">
<template slot-scope="props"> <template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand demo-table-expand1" label-width="90px"> <el-form label-position="left" inline class="demo-table-expand demo-table-expand1" label-width="90px">
<el-form-item label="平台分类:"> <el-form-item label="平台分类:">
<span>{{ props.row.storeCategory?props.row.storeCategory.cate_name:'-' }}</span> <span>{{ props.row.storeCategory ? props.row.storeCategory.cate_name : '-' }}</span>
</el-form-item> </el-form-item>
<el-form-item label="商品分类:"> <el-form-item label="商品分类:">
<template v-if="props.row.merCateId.length"> <template v-if="props.row.merCateId.length">
<span v-for="(item, index) in props.row.merCateId" :key="index" class="mr10">{{ item.category.cate_name }}</span> <span v-for="(item, index) in props.row.merCateId" :key="index" class="mr10">{{
item.category.cate_name }}</span>
</template> </template>
<span v-else>-</span> <span v-else>-</span>
</el-form-item> </el-form-item>
<el-form-item label="品牌:"> <el-form-item label="品牌:">
<span class="mr10">{{ props.row.brand?props.row.brand.brand_name:'其他' }}</span> <span class="mr10">{{ props.row.brand ? props.row.brand.brand_name : '其他' }}</span>
</el-form-item> </el-form-item>
<el-form-item label="市场价格:"> <el-form-item label="市场价格:">
<span>{{ props.row.ot_price | filterEmpty }}</span> <span>{{ props.row.ot_price | filterEmpty }}</span>
@ -169,7 +152,8 @@
</el-table-column> </el-table-column>
<el-table-column prop="store_name" label="商品名称" min-width="230"> <el-table-column prop="store_name" label="商品名称" min-width="230">
<template slot-scope="scope"> <template slot-scope="scope">
<div><span class="tags_name" :class="'name'+scope.row.spec_type">{{ scope.row.spec_type==0 ? '[单规格]' : '[多规格]' }}</span>{{ scope.row.store_name || '-' }}</div> <div><span class="tags_name" :class="'name' + scope.row.spec_type">{{ scope.row.spec_type == 0 ? '[单规格]' :
'[多规格]' }}</span>{{ scope.row.store_name || '-' }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="price" label="商品售价" min-width="80" /> <el-table-column prop="price" label="商品售价" min-width="80" />
@ -178,14 +162,16 @@
<el-table-column prop="sort" align="center" label="排序" min-width="80"> <el-table-column prop="sort" align="center" label="排序" min-width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.index === tabClickIndex"> <span v-if="scope.row.index === tabClickIndex">
<el-input v-model.number="scope.row['sort']" type="number" maxlength="300" size="mini" autofocus @blur="inputBlur(scope)" /> <el-input v-model.number="scope.row['sort']" type="number" maxlength="300" size="mini" autofocus
@blur="inputBlur(scope)" />
</span> </span>
<span v-else @dblclick.stop="tabClick(scope.row)">{{ scope.row['sort'] }}</span> <span v-else @dblclick.stop="tabClick(scope.row)">{{ scope.row['sort'] }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="Number(tableFrom.type) < 5" key="1" prop="status" label="上/下架" min-width="90"> <el-table-column v-if="Number(tableFrom.type) < 5" key="1" prop="status" label="上/下架" min-width="90">
<template slot-scope="scope"> <template slot-scope="scope">
<el-switch v-model="scope.row.is_show" :active-value="1" :inactive-value="0" :width="55" active-text="上架" inactive-text="下架" @change="onchangeIsShow(scope.row)" /> <el-switch v-model="scope.row.is_show" :active-value="1" :inactive-value="0" :width="55" active-text="上架"
inactive-text="下架" @change="onchangeIsShow(scope.row)" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="stock" label="商品状态" min-width="90"> <el-table-column prop="stock" label="商品状态" min-width="90">
@ -196,89 +182,80 @@
<el-table-column label="操作" min-width="150" fixed="right"> <el-table-column label="操作" min-width="150" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" class="mr10" @click="onDetails(scope.row.product_id)">详情</el-button> <el-button type="text" size="small" class="mr10" @click="onDetails(scope.row.product_id)">详情</el-button>
<router-link v-if="tableFrom.type != 5" :to="{path: roterPre + '/product/list/addProduct/' + scope.row.product_id}"> <router-link v-if="tableFrom.type != 5"
:to="{ path: roterPre + '/product/list/addProduct/' + scope.row.product_id }">
<el-button type="text" size="small" class="mr10">编辑</el-button> <el-button type="text" size="small" class="mr10">编辑</el-button>
</router-link> </router-link>
<el-button v-if="tableFrom.type !== '5'" type="text" size="small" class="mr10" @click="handlePreview(scope.row.product_id)">预览</el-button> <el-button v-if="tableFrom.type !== '5'" type="text" size="small" class="mr10"
@click="handlePreview(scope.row.product_id)">预览</el-button>
<el-dropdown> <el-dropdown>
<span class="el-dropdown-link"> <span class="el-dropdown-link">
更多<i class="el-icon-arrow-down el-icon--right" /> 更多<i class="el-icon-arrow-down el-icon--right" />
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item v-if="tableFrom.type !== '5' && is_audit == '1'" @click.native="onAuditFree(scope.row)">免审编辑</el-dropdown-item> <el-dropdown-item v-if="tableFrom.type !== '5' && is_audit == '1'"
@click.native="onAuditFree(scope.row)">免审编辑</el-dropdown-item>
<el-dropdown-item v-if="tableFrom.type != 5"> <el-dropdown-item v-if="tableFrom.type != 5">
<router-link :to="{path: roterPre + '/product/list/addProduct/' + scope.row.product_id+'?type=copy'}"> <router-link
:to="{ path: roterPre + '/product/list/addProduct/' + scope.row.product_id + '?type=copy' }">
复制商品 复制商品
</router-link> </router-link>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-if="tableFrom.type !== '5'" @click.native="onEditLabel(scope.row)">编辑标签</el-dropdown-item> <el-dropdown-item v-if="tableFrom.type !== '5'"
@click.native="onEditLabel(scope.row)">编辑标签</el-dropdown-item>
<el-dropdown-item v-if="tableFrom.type != 5"> <el-dropdown-item v-if="tableFrom.type != 5">
<router-link :to="{path: roterPre + '/product/reviews/?product_id=' + scope.row.product_id}"> <router-link :to="{ path: roterPre + '/product/reviews/?product_id=' + scope.row.product_id }">
查看评价 查看评价
</router-link> </router-link>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-if="tableFrom.type !== '1' && tableFrom.type!== '3' && tableFrom.type !=='4'" @click.native="handleDelete(scope.row.product_id, scope.$index)">{{ tableFrom.type === '5' ? '删除' : '加入回收站' }}</el-dropdown-item> <el-dropdown-item v-if="tableFrom.type !== '1' && tableFrom.type !== '3' && tableFrom.type !== '4'"
<el-dropdown-item v-if="tableFrom.type === '5'" @click.native="handleRestore(scope.row.product_id)">恢复商品</el-dropdown-item> @click.native="handleDelete(scope.row.product_id, scope.$index)">{{ tableFrom.type === '5' ? '删除' :
'加入回收站' }}</el-dropdown-item>
<el-dropdown-item v-if="tableFrom.type === '5'"
@click.native="handleRestore(scope.row.product_id)">恢复商品</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="block"> <div class="block">
<el-pagination background :page-size="tableFrom.limit" :current-page="tableFrom.page" background layout="total, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange" @current-change="pageChange" /> <el-pagination background :page-size="tableFrom.limit" :current-page="tableFrom.page"
layout="total, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
@current-change="pageChange" />
</div> </div>
</el-card> </el-card>
<!-- 生成淘宝京东表单--> <!-- 生成淘宝京东表单-->
<tao-bao ref="taoBao" @getSuccess="getSuccess" :deliveryType="deliveryType" :deliveryList="deliveryList"/> <tao-bao ref="taoBao" @getSuccess="getSuccess" :deliveryType="deliveryType" :deliveryList="deliveryList" />
<!--预览商品--> <!--预览商品-->
<div v-if="previewVisible"> <div v-if="previewVisible">
<div class="bg" @click.stop="previewVisible = false" /> <div class="bg" @click.stop="previewVisible = false" />
<preview-box v-if="previewVisible" ref="previewBox" :goods-id="goodsId" :product-type="0" :preview-key="previewKey" /> <preview-box v-if="previewVisible" ref="previewBox" :goods-id="goodsId" :product-type="0"
:preview-key="previewKey" />
</div> </div>
<!--编辑标签--> <!--编辑标签-->
<el-dialog <el-dialog v-if="dialogLabel" title="选择标签" :visible.sync="dialogLabel" width="470px" :before-close="handleClose">
v-if="dialogLabel"
title="选择标签"
:visible.sync="dialogLabel"
width="470px"
:before-close="handleClose"
>
<el-form ref="labelForm" :model="labelForm" @submit.native.prevent size="small"> <el-form ref="labelForm" :model="labelForm" @submit.native.prevent size="small">
<el-form-item> <el-form-item>
<el-select v-model="labelForm.mer_labels" clearable multiple placeholder="请选择" class="width100"> <el-select v-model="labelForm.mer_labels" clearable multiple placeholder="请选择" class="width100">
<el-option <el-option v-for="item in labelList" :key="item.id" :label="item.name" :value="item.id.toString()" />
v-for="item in labelList"
:key="item.id"
:label="item.name"
:value="item.id.toString()"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="dialogLabel=false">取消</el-button> <el-button size="small" @click="dialogLabel = false">取消</el-button>
<el-button size="small" type="primary" @click="submitForm('labelForm')">提交</el-button> <el-button size="small" type="primary" @click="submitForm('labelForm')">提交</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 免审核弹窗--> <!-- 免审核弹窗-->
<edit-attr ref="editAttr"/> <edit-attr ref="editAttr" />
<!--运费模板弹窗--> <!--运费模板弹窗-->
<el-dialog <el-dialog v-if="dialogFreight" title="选择运费模板" :visible.sync="dialogFreight" width="800px"
v-if="dialogFreight" :before-close="handleFreightClose">
title="选择运费模板"
:visible.sync="dialogFreight"
width="800px"
:before-close="handleFreightClose"
>
<el-form ref="tempForm" :model="tempForm" :rules="tempRule" @submit.native.prevent> <el-form ref="tempForm" :model="tempForm" :rules="tempRule" @submit.native.prevent>
<el-form-item prop="temp_id"> <el-form-item prop="temp_id">
<el-select v-model="tempForm.temp_id" clearable placeholder="请选择" class="selWidth"> <el-select v-model="tempForm.temp_id" clearable placeholder="请选择" class="selWidth">
<el-option <el-option v-for="item in tempList" :key="item.shipping_template_id" :label="item.name"
v-for="item in tempList" :value="item.shipping_template_id" />
:key="item.shipping_template_id"
:label="item.name"
:value="item.shipping_template_id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -287,18 +264,15 @@
</span> </span>
</el-dialog> </el-dialog>
<!--批量设置佣金弹窗--> <!--批量设置佣金弹窗-->
<el-dialog <el-dialog v-if="dialogCommision" title="设置佣金" :visible.sync="dialogCommision" width="600px">
v-if="dialogCommision"
title="设置佣金"
:visible.sync="dialogCommision"
width="600px"
>
<el-form ref="commisionForm" :model="commisionForm" :rules="commisionRule" @submit.native.prevent> <el-form ref="commisionForm" :model="commisionForm" :rules="commisionRule" @submit.native.prevent>
<el-form-item label="一级佣金比例:" prop="extension_one"> <el-form-item label="一级佣金比例:" prop="extension_one">
<el-input-number v-model="commisionForm.extension_one" :precision="2" :step="0.1" :min="0" :max="1" class="priceBox" controls-position="right"/> <el-input-number v-model="commisionForm.extension_one" :precision="2" :step="0.1" :min="0" :max="1"
class="priceBox" controls-position="right" />
</el-form-item> </el-form-item>
<el-form-item label="二级佣金比例:" prop="extension_two"> <el-form-item label="二级佣金比例:" prop="extension_two">
<el-input-number v-model="commisionForm.extension_two" :precision="2" :step="0.1" :min="0" :max="1" class="priceBox" controls-position="right"/> <el-input-number v-model="commisionForm.extension_two" :precision="2" :step="0.1" :min="0" :max="1"
class="priceBox" controls-position="right" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<span>备注订单交易成功后给上级返佣的比例:0.5 = 返订单金额的50%</span> <span>备注订单交易成功后给上级返佣的比例:0.5 = 返订单金额的50%</span>
@ -309,23 +283,18 @@
</span> </span>
</el-dialog> </el-dialog>
<!--批量设置付费会员价--> <!--批量设置付费会员价-->
<el-dialog <el-dialog v-if="dialogSvip" title="批量设置付费会员价" :visible.sync="dialogSvip" width="700px">
v-if="dialogSvip"
title="批量设置付费会员价"
:visible.sync="dialogSvip"
width="700px"
>
<el-form ref="svipForm" :model="svipForm" @submit.native.prevent label-width="80px"> <el-form ref="svipForm" :model="svipForm" @submit.native.prevent label-width="80px">
<el-form-item <el-form-item label="参与方式:">
label="参与方式:"
>
<el-radio-group v-model="svipForm.svip_price_type"> <el-radio-group v-model="svipForm.svip_price_type">
<el-radio :label="0" class="radio">不设置会员价</el-radio> <el-radio :label="0" class="radio">不设置会员价</el-radio>
<el-radio :label="1" class="radio">默认设置会员价</el-radio> <el-radio :label="1" class="radio">默认设置会员价</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
备注默认设置会员价是指商户在 <router-link :to="{path: roterPre + '/systemForm/Basics/svip'}" class="member-link"> [设置-付费会员设置] </router-link> 中设置的会员折扣价选择后每个商品默认展示此处设置的会员折扣价 备注默认设置会员价是指商户在 <router-link :to="{ path: roterPre + '/systemForm/Basics/svip' }" class="member-link">
[设置-付费会员设置]
</router-link> 中设置的会员折扣价选择后每个商品默认展示此处设置的会员折扣价
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -333,23 +302,17 @@
</span> </span>
</el-dialog> </el-dialog>
<!--批量设置弹窗--> <!--批量设置弹窗-->
<el-dialog <el-dialog v-if="batchModal" title="批量设置" :visible.sync="batchModal" width="750px">
v-if="batchModal"
title="批量设置"
:visible.sync="batchModal"
width="750px"
>
<div> <div>
<el-alert <el-alert title="每次只能修改一项,如需修改多项,请多次操作。" type="warning" :closable="false">
title="每次只能修改一项,如需修改多项,请多次操作。"
type="warning" :closable="false">
</el-alert> </el-alert>
<div class="batch-tab mt20"> <div class="batch-tab mt20">
<el-tabs :tab-position="tabPosition" v-model="batchName"> <el-tabs :tab-position="tabPosition" v-model="batchName">
<el-tab-pane label="商品分类" name="cate"> <el-tab-pane label="商品分类" name="cate">
<el-form size="small" label-width="120px" :inline="true"> <el-form size="small" label-width="120px" :inline="true">
<el-form-item label="平台商品分类:"> <el-form-item label="平台商品分类:">
<el-cascader v-model="batchData.cate_id" :options="categoryList" :props="props" clearable class="width100" /> <el-cascader v-model="batchData.cate_id" :options="categoryList" :props="props" clearable
class="width100" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
@ -357,12 +320,7 @@
<el-form size="small" label-width="120px" :inline="true"> <el-form size="small" label-width="120px" :inline="true">
<el-form-item label="商品标签:"> <el-form-item label="商品标签:">
<el-select v-model="batchData.mer_labels" clearable multiple placeholder="请选择" class="width100"> <el-select v-model="batchData.mer_labels" clearable multiple placeholder="请选择" class="width100">
<el-option <el-option v-for="item in labelList" :key="item.id" :label="item.name" :value="item.id" />
v-for="item in labelList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -371,11 +329,7 @@
<el-form size="small" label-width="120px" :inline="true"> <el-form size="small" label-width="120px" :inline="true">
<el-form-item label="配送方式:"> <el-form-item label="配送方式:">
<el-checkbox-group v-model="batchData.delivery_way"> <el-checkbox-group v-model="batchData.delivery_way">
<el-checkbox <el-checkbox v-for="item in deliveryList" :key="item.value" :label="item.value">
v-for="item in deliveryList"
:key="item.value"
:label="item.value"
>
{{ item.name }} {{ item.name }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
@ -393,12 +347,8 @@
</el-form-item> </el-form-item>
<el-form-item v-if="batchData.delivery_free == 0"> <el-form-item v-if="batchData.delivery_free == 0">
<el-select v-model="batchData.temp_id" clearable placeholder="请选择" class="width100"> <el-select v-model="batchData.temp_id" clearable placeholder="请选择" class="width100">
<el-option <el-option v-for="item in tempList" :key="item.shipping_template_id" :label="item.name"
v-for="item in tempList" :value="item.shipping_template_id" />
:key="item.shipping_template_id"
:label="item.name"
:value="item.shipping_template_id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -406,10 +356,12 @@
<el-tab-pane label="佣金设置" name="commission"> <el-tab-pane label="佣金设置" name="commission">
<el-form size="small" label-width="120px" :inline="false"> <el-form size="small" label-width="120px" :inline="false">
<el-form-item label="一级佣金比例:"> <el-form-item label="一级佣金比例:">
<el-input-number v-model="batchData.extension_one" :precision="2" :step="0.1" :min="0" :max="1" class="width100" controls-position="right"/> <el-input-number v-model="batchData.extension_one" :precision="2" :step="0.1" :min="0" :max="1"
class="width100" controls-position="right" />
</el-form-item> </el-form-item>
<el-form-item label="二级佣金比例:"> <el-form-item label="二级佣金比例:">
<el-input-number v-model="batchData.extension_two" :precision="2" :step="0.1" :min="0" :max="1" class="width100" controls-position="right"/> <el-input-number v-model="batchData.extension_two" :precision="2" :step="0.1" :min="0" :max="1"
class="width100" controls-position="right" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<span style="color:#909399">备注订单交易成功后给上级返佣的比例:0.5 = 返订单金额的50%</span> <span style="color:#909399">备注订单交易成功后给上级返佣的比例:0.5 = 返订单金额的50%</span>
@ -418,54 +370,40 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="open_svip == 1" label="付费会员设置" name="member"> <el-tab-pane v-if="open_svip == 1" label="付费会员设置" name="member">
<el-form label-width="120px"> <el-form label-width="120px">
<el-form-item <el-form-item label="参与方式:">
label="参与方式:"
>
<el-radio-group v-model="batchData.svip_price_type"> <el-radio-group v-model="batchData.svip_price_type">
<el-radio :label="0" class="radio">不设置会员价</el-radio> <el-radio :label="0" class="radio">不设置会员价</el-radio>
<el-radio :label="1" class="radio">默认设置会员价</el-radio> <el-radio :label="1" class="radio">默认设置会员价</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
备注默认设置会员价是指商户在 <router-link :to="{path: roterPre + '/systemForm/Basics/svip'}" class="member-link"> [设置-付费会员设置] </router-link> 中设置的会员折扣价选择后每个商品默认展示此处设置的会员折扣价 备注默认设置会员价是指商户在 <router-link :to="{ path: roterPre + '/systemForm/Basics/svip' }" class="member-link">
[设置-付费会员设置] </router-link> 中设置的会员折扣价选择后每个商品默认展示此处设置的会员折扣价
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="系统表单" name="sys_form"> <el-tab-pane label="系统表单" name="sys_form">
<el-form label-width="120px"> <el-form label-width="120px">
<el-form-item label="系统表单:"> <el-form-item label="系统表单:">
<el-select <el-select size="small" clearable v-model="batchData.mer_form_id" @change="getFormInfo"
size="small" class="width100">
clearable <el-option v-for="items in formList" :key="items.form_id" :value="items.form_id"
v-model="batchData.mer_form_id" :label="items.name">{{
@change="getFormInfo" items.name }}
class="width100"
>
<el-option
v-for="items in formList"
:key="items.form_id"
:value="items.form_id"
:label="items.name"
>{{ items.name }}
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item v-if="formData.length>0"> <el-form-item v-if="formData.length > 0">
<el-table <el-table border class="specsList" :data="formData" size="small">
border
class="specsList"
:data="formData"
size="small"
>
<el-table-column prop="label" label="表单标题" min-width="100" /> <el-table-column prop="label" label="表单标题" min-width="100" />
<el-table-column prop="type" label="表单类型" min-width="100"> <el-table-column prop="type" label="表单类型" min-width="100">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span>{{row.type | formTypeFilter}}</span> <span>{{ row.type | formTypeFilter }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column min-width="100" label="是否必填"> <el-table-column min-width="100" label="是否必填">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span>{{row.val ? '必填' : '不必填'}}</span> <span>{{ row.val ? '必填' : '不必填' }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -482,8 +420,12 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-input-number v-model="batchData.price_number" :precision="2" :step="0.1" :min="0" class="width100" controls-position="right"/> <el-input-number v-model="batchData.price_number" :precision="2" :step="0.1" :min="0" class="width100"
<span style="color:#909399">({{ (batchData.price_type=='add' || batchData.price_type=='sub') ? '元' : '%' }})</span> controls-position="right" />
<span style="color:#909399">({{ (batchData.price_type == 'add' || batchData.price_type == 'sub') ? '元'
:
'%'
}})</span>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<div style="color:#F56464">批量设置价格为敏感操作请谨慎操作</div> <div style="color:#F56464">批量设置价格为敏感操作请谨慎操作</div>
@ -498,14 +440,24 @@
</span> </span>
</el-dialog> </el-dialog>
<!--商品详情--> <!--商品详情-->
<pro-detail <pro-detail ref="proDetail" :productId="product_id" :configData="configData" @closeDrawer="closeDrawer"
ref="proDetail" @changeDrawer="changeDrawer" :drawer="drawer"></pro-detail>
:productId="product_id"
:configData="configData" <el-dialog title="上传云商品" :visible.sync="showShow" width="650px" :before-close="handleClose">
@closeDrawer="closeDrawer" <el-form>
@changeDrawer="changeDrawer" <el-form-item label="商品分类">
:drawer="drawer" <el-select multiple v-model="selectedCategoryIds" style="width:300px;">
></pro-detail> <el-option v-for="(item, indx) in categoryBox" :label="item.category_name"
:value="item.merchant_category_id"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="showShow = false">取消</el-button>
<el-button size="small" type="primary" @click="submitProduct">提交</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
@ -539,7 +491,9 @@ import {
productBathSvipApi, productBathSvipApi,
associatedFormList, associatedFormList,
associatedFormInfo, associatedFormInfo,
batchSetProduct batchSetProduct,
importApi,
newCategorySelectApi
} from '@/api/product' } from '@/api/product'
import { roterPre } from '@/settings' import { roterPre } from '@/settings'
import taoBao from './taoBao' import taoBao from './taoBao'
@ -551,6 +505,9 @@ export default {
components: { taoBao, previewBox, editAttr, proDetail }, components: { taoBao, previewBox, editAttr, proDetail },
data() { data() {
return { return {
showShow: false,
categoryBox: [],
selectedCategoryIds: [],
props: { props: {
emitPath: false emitPath: false
}, },
@ -596,14 +553,14 @@ export default {
{ label: '卡密商品', value: 2 } { label: '卡密商品', value: 2 }
], ],
tempRule: { tempRule: {
temp_id: [{required: true,message: '请选择运费模板',trigger: 'change'}] temp_id: [{ required: true, message: '请选择运费模板', trigger: 'change' }]
}, },
commisionRule: { commisionRule: {
extension_one: [{required: true,message: '请输入一级佣金',trigger: 'change'}], extension_one: [{ required: true, message: '请输入一级佣金', trigger: 'change' }],
extension_two: [{required: true,message: '请输入二级佣金',trigger: 'change'}] extension_two: [{ required: true, message: '请输入二级佣金', trigger: 'change' }]
}, },
commisionForm: {extension_one:0,extension_two:0}, commisionForm: { extension_one: 0, extension_two: 0 },
svipForm: {svip_price_type: 0}, svipForm: { svip_price_type: 0 },
goodsId: '', goodsId: '',
previewKey: '', previewKey: '',
product_id: '', product_id: '',
@ -648,11 +605,43 @@ export default {
this.getList(1) this.getList(1)
this.getLabelLst() this.getLabelLst()
this.getTempLst() this.getTempLst()
this.productCon() this.productCon();
this.getCategory();
}, },
methods: { methods: {
//
submitProduct() {
if (this.selectedCategoryIds.length == 0) return this.$message.error("请至少选择一种分类数据!");
importApi({
product_ids: this.checkedIds,
category_ids: this.selectedCategoryIds
}).then(res => {
this.$message.success("加入成功!");
this.checkedIds = [];
this.selectedCategoryIds = [];
this.showShow = false;
}).catch(err => {
this.$message.success(err.message)
})
},
//
joinCloud() {
if (this.checkedIds.length == 0) return this.$message.error("请至少选择一个商品!");
this.showShow = true;
},
//
getCategory() {
newCategorySelectApi().then(res => {
this.categoryBox = res.data;
})
},
/**重置 */ /**重置 */
searchReset(){ searchReset() {
this.$refs.searchForm.resetFields() this.$refs.searchForm.resetFields()
this.getList(1) this.getList(1)
}, },
@ -672,6 +661,7 @@ export default {
this.closeEdit() this.closeEdit()
}) })
.catch((res) => { .catch((res) => {
}) })
}, },
closeEdit() { closeEdit() {
@ -746,33 +736,33 @@ export default {
} }
}, },
// //
changePrice(){ changePrice() {
if(this.batchData.price_type == 'div'){ if (this.batchData.price_type == 'div') {
this.batchData.price_number = 1 this.batchData.price_number = 1
}else{ } else {
this.batchData.price_number = 0 this.batchData.price_number = 0
} }
}, },
// -- // --
submitBatchForm(){ submitBatchForm() {
console.log(this.batchName) console.log(this.batchName)
let name = this.batchName let name = this.batchName
switch (name) { switch (name) {
case 'cate': case 'cate':
if(!this.batchData.cate_id){ if (!this.batchData.cate_id) {
return this.$message.warning('请选择商品分类!') return this.$message.warning('请选择商品分类!')
} }
break break
case 'delivery_method': case 'delivery_method':
if(!this.batchData.delivery_way.length){ if (!this.batchData.delivery_way.length) {
return this.$message.warning('请选择配送方式!') return this.$message.warning('请选择配送方式!')
} }
break break
case 'postage': case 'postage':
if(this.batchData.delivery_free != 0 && this.batchData.delivery_free != 1){ if (this.batchData.delivery_free != 0 && this.batchData.delivery_free != 1) {
return this.$message.warning('请选择运费设置!') return this.$message.warning('请选择运费设置!')
} }
if(this.batchData.delivery_free == 0 && !this.batchData.temp_id){ if (this.batchData.delivery_free == 0 && !this.batchData.temp_id) {
return this.$message.warning('请选择运费模板!') return this.$message.warning('请选择运费模板!')
} }
break break
@ -781,17 +771,17 @@ export default {
this.batchData.extension_two = this.batchData.extension_two || 0 this.batchData.extension_two = this.batchData.extension_two || 0
break break
case 'price': case 'price':
if(this.batchData.price_type == 'div' && this.batchData.price_number == 0){ if (this.batchData.price_type == 'div' && this.batchData.price_number == 0) {
return this.$message.warning('除数不能为0') return this.$message.warning('除数不能为0')
} }
break break
} }
let parmas = this.batchData let parmas = this.batchData
parmas.batch_type = this.batchName parmas.batch_type = this.batchName
if(this.allCheck){ if (this.allCheck) {
parmas.batch_select_type = 'all' parmas.batch_select_type = 'all'
parmas.where = this.tableFrom parmas.where = this.tableFrom
}else{ } else {
parmas.batch_select_type = 'select' parmas.batch_select_type = 'select'
parmas.ids = this.checkedIds parmas.ids = this.checkedIds
} }
@ -841,7 +831,7 @@ export default {
}) })
}, },
// //
getFormList(){ getFormList() {
associatedFormList() associatedFormList()
.then(res => { .then(res => {
this.formList = res.data this.formList = res.data
@ -851,15 +841,15 @@ export default {
}) })
}, },
// //
getFormInfo(){ getFormInfo() {
if(this.batchData.mer_form_id){ if (this.batchData.mer_form_id) {
associatedFormInfo(this.batchData.mer_form_id).then((res) => { associatedFormInfo(this.batchData.mer_form_id).then((res) => {
this.formData = res.data this.formData = res.data
}) })
.catch((res) => { .catch((res) => {
this.$message.error(res.message) this.$message.error(res.message)
}) })
}else{ } else {
this.formData = [] this.formData = []
} }
}, },
@ -885,7 +875,7 @@ export default {
}); });
}, },
// //
openBatch(){ openBatch() {
this.batchModal = true; this.batchModal = true;
}, },
// //
@ -917,7 +907,7 @@ export default {
}, },
// //
batchSvip() { batchSvip() {
if(this.multipleSelection.length === 0) return this.$message.warning('请先选择商品') if (this.multipleSelection.length === 0) return this.$message.warning('请先选择商品')
this.dialogSvip = true; this.dialogSvip = true;
}, },
submitCommisionForm(name) { submitCommisionForm(name) {
@ -945,16 +935,16 @@ export default {
}, },
// //
batchShelf() { batchShelf() {
if(this.checkedIds.length === 0 && !this.allCheck) return this.$message.warning('请先选择商品') if (this.checkedIds.length === 0 && !this.allCheck) return this.$message.warning('请先选择商品')
let ids = [] let ids = []
if(this.allCheck){ if (this.allCheck) {
this.tableData.data.map((item) => { this.tableData.data.map((item) => {
ids.push(item.product_id) ids.push(item.product_id)
}) })
}else{ } else {
ids = this.checkedIds ids = this.checkedIds
} }
let data = {status: 1,ids: ids} let data = { status: 1, ids: ids }
batchesOnOffApi(data).then(res => { batchesOnOffApi(data).then(res => {
this.$message.success(res.message) this.$message.success(res.message)
this.getLstFilterApi() this.getLstFilterApi()
@ -966,16 +956,16 @@ export default {
}, },
// //
batchOff() { batchOff() {
if(this.checkedIds.length === 0 && !this.allCheck) return this.$message.warning('请先选择商品') if (this.checkedIds.length === 0 && !this.allCheck) return this.$message.warning('请先选择商品')
let ids = [] let ids = []
if(this.allCheck){ if (this.allCheck) {
this.tableData.data.map((item) => { this.tableData.data.map((item) => {
ids.push(item.product_id) ids.push(item.product_id)
}) })
}else{ } else {
ids = this.checkedIds ids = this.checkedIds
} }
let data = {status: 0,ids: ids} let data = { status: 0, ids: ids }
batchesOnOffApi(data).then(res => { batchesOnOffApi(data).then(res => {
this.$message.success(res.message) this.$message.success(res.message)
this.getLstFilterApi() this.getLstFilterApi()
@ -1064,7 +1054,7 @@ export default {
}) })
}, },
// //
getProduct(){ getProduct() {
this.getList() this.getList()
this.changeType() this.changeType()
}, },
@ -1180,65 +1170,82 @@ export default {
height: 100%; height: 100%;
background: rgba(0, 0, 0, 0.1); background: rgba(0, 0, 0, 0.1);
} }
.check { .check {
color: #00a2d4; color: #00a2d4;
} }
.spBlock{
.spBlock {
display: block; display: block;
cursor: pointer; cursor: pointer;
} }
.tags_name{
.tags_name {
font-size: 10px; font-size: 10px;
height: 16px; height: 16px;
line-height: 16px; line-height: 16px;
padding: 0 2px; padding: 0 2px;
margin-right: 2px; margin-right: 2px;
&.name0{
&.name0 {
color: var(--prev-color-primary); color: var(--prev-color-primary);
} }
&.name1{
&.name1 {
color: #FF8A4D; color: #FF8A4D;
} }
} }
.member-link{
.member-link {
color: var(--prev-color-primary); color: var(--prev-color-primary);
} }
.goods_detail .goods_detail_wrapper { .goods_detail .goods_detail_wrapper {
z-index: -10; z-index: -10;
} }
::v-deep table.el-input__inner { ::v-deep table.el-input__inner {
padding: 0; padding: 0;
} }
.demo-table-expand { .demo-table-expand {
font-size: 0; font-size: 0;
} }
.demo-table-expand1 ::v-deep label { .demo-table-expand1 ::v-deep label {
color: #99a9bf; color: #99a9bf;
} }
.demo-table-expand .el-form-item { .demo-table-expand .el-form-item {
margin-right: 0; margin-right: 0;
margin-bottom: 0; margin-bottom: 0;
width: 33.33%; width: 33.33%;
} }
.width100 { .width100 {
width: 400px; width: 400px;
} }
.seachTiele { .seachTiele {
line-height: 35px; line-height: 35px;
} }
.el-icon-arrow-down { .el-icon-arrow-down {
font-size: 12px; font-size: 12px;
} }
::v-deep .batch-tab .el-tabs__item{
::v-deep .batch-tab .el-tabs__item {
padding-left: 0; padding-left: 0;
height: 50px; height: 50px;
line-height: 50px; line-height: 50px;
} }
.batch-tab .el-tabs{
.batch-tab .el-tabs {
display: flex; display: flex;
align-items: center; align-items: center;
} }
::v-deep .batch-tab .el-tabs__content{
::v-deep .batch-tab .el-tabs__content {
min-width: 560px; min-width: 560px;
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="information"> <div class="information">
<el-tabs v-if="tabList.length > 0" v-model="infoType"> <el-tabs v-if="tabList.length > 0" v-model="infoType">
<el-tab-pane v-for="(item,index) in tabList" :key="index" :name="item.value" :label="item.title " /> <el-tab-pane v-for="(item, index) in tabList" :key="index" :name="item.value" :label="item.title" />
</el-tabs> </el-tabs>
<div v-if="merModel" class="business-msg" style="min-height: 600px;"> <div v-if="merModel" class="business-msg" style="min-height: 600px;">
<div v-if="infoType == '1'" class="user-msg"> <div v-if="infoType == '1'" class="user-msg">
@ -44,10 +44,13 @@
<div class="basic-information"> <div class="basic-information">
<div> <div>
<span class="basic-label">是否开启商户</span> <span class="basic-label">是否开启商户</span>
<el-tooltip v-if="merData.is_margin == 1 && merData.mer_state == 0" class="item" effect="dark" content="请先支付店铺保证金!" placement="top-start"> <el-tooltip v-if="merData.is_margin == 1 && merData.mer_state == 0" class="item" effect="dark"
<el-switch disabled v-model="merData.mer_state" :width="55" active-text="开启" inactive-text="关闭" :active-value="1" :inactive-value="0" /> content="请先支付店铺保证金!" placement="top-start">
<el-switch disabled v-model="merData.mer_state" :width="55" active-text="开启" inactive-text="关闭"
:active-value="1" :inactive-value="0" />
</el-tooltip> </el-tooltip>
<el-switch v-else v-model="merData.mer_state" active-text="开启" inactive-text="关闭" :active-value="1" :inactive-value="0" :width="55" /> <el-switch v-else v-model="merData.mer_state" active-text="开启" inactive-text="关闭" :active-value="1"
:inactive-value="0" :width="55" />
<span class="trip">开启店铺即可展示在移动端</span> <span class="trip">开启店铺即可展示在移动端</span>
</div> </div>
</div> </div>
@ -56,7 +59,7 @@
<!--未支付--> <!--未支付-->
<div v-if="merData.is_margin == 1"> <div v-if="merData.is_margin == 1">
<span class="basic-label">店铺保证金</span> <span class="basic-label">店铺保证金</span>
<span class="font_red">{{merData.margin}}</span> <span class="font_red">{{ merData.margin }}</span>
<div class="margin_count" @mouseenter="getCode()"> <div class="margin_count" @mouseenter="getCode()">
<el-button type="text" size="small" class="mr10 pay_btn">去支付保证金</el-button> <el-button type="text" size="small" class="mr10 pay_btn">去支付保证金</el-button>
<!--支付二维码--> <!--支付二维码-->
@ -64,26 +67,27 @@
<div class="pay_title">支付保证金</div> <div class="pay_title">支付保证金</div>
<div> <div>
<vue-qr class="bicode" :text="qrCode" :size="310" /> <vue-qr class="bicode" :text="qrCode" :size="310" />
<div class="pay_type" >请使用微信扫码支付</div> <div class="pay_type">请使用微信扫码支付</div>
<div class="pay_price" >{{marginPrice}}</div> <div class="pay_price">{{ marginPrice }}</div>
<div class="pay_time">支付码过期时间 {{qrEndTime}}</div> <div class="pay_time">支付码过期时间 {{ qrEndTime }}</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!--已支付--> <!--已支付-->
<div class="margin_main" v-if="merData.is_margin == 10 "> <div class="margin_main" v-if="merData.is_margin == 10">
<span class="basic-label">店铺保证金</span> <span class="basic-label">店铺保证金</span>
<span class="margin_price">{{merData.margin}}</span> <span class="margin_price">{{ merData.margin }}</span>
<div class="margin_count"> <div class="margin_count">
<span class="mr10 spanBtn" @click="viewRecords">查看保证金记录</span> <span class="mr10 spanBtn" @click="viewRecords">查看保证金记录</span>
<!--保证金弹窗--> <!--保证金弹窗-->
<div class="margin_modal" @mouseleave="supplyPay=false"> <div class="margin_modal" @mouseleave="supplyPay = false">
<div> <div>
<img src="@/assets/images/margin03.png"/> <img src="@/assets/images/margin03.png" />
<div class="alic"> <div class="alic">
<span class="text_g">剩余保证金{{merData.margin}}</span> <span class="text_g">剩余保证金{{ merData.margin }}</span>
<el-button v-if="merData.margin>0" type="primary" size="small" @click="applyReturn">申请退回保证金</el-button> <el-button v-if="merData.margin > 0" type="primary" size="small"
@click="applyReturn">申请退回保证金</el-button>
</div> </div>
</div> </div>
</div> </div>
@ -96,9 +100,9 @@
<div class="pay_title">支付保证金</div> <div class="pay_title">支付保证金</div>
<div> <div>
<vue-qr class="bicode" :text="qrCode" :size="310" /> <vue-qr class="bicode" :text="qrCode" :size="310" />
<div class="pay_type" >请使用微信扫码支付</div> <div class="pay_type">请使用微信扫码支付</div>
<div class="pay_price" >{{marginPrice}}</div> <div class="pay_price">{{ marginPrice }}</div>
<div class="pay_time">支付码过期时间 {{qrEndTime}}</div> <div class="pay_time">支付码过期时间 {{ qrEndTime }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -106,18 +110,19 @@
</div> </div>
<div class="margin_main" v-if="merData.is_margin == -10 || merData.is_margin == -1"> <div class="margin_main" v-if="merData.is_margin == -10 || merData.is_margin == -1">
<span class="basic-label">店铺保证金</span> <span class="basic-label">店铺保证金</span>
<span class="margin_price">{{merData.margin}}</span> <span class="margin_price">{{ merData.margin }}</span>
<div class="margin_count"> <div class="margin_count">
<span class="mr10 spanBtn" @click="viewRecords">查看保证金记录</span> <span class="mr10 spanBtn" @click="viewRecords">查看保证金记录</span>
<!--保证金弹窗--> <!--保证金弹窗-->
<div class="margin_modal" @mouseleave="goPay=false"> <div class="margin_modal" @mouseleave="goPay = false">
<div> <div>
<img v-if="merData.is_margin == -10" src="@/assets/images/margin01.png"/> <img v-if="merData.is_margin == -10" src="@/assets/images/margin01.png" />
<img v-if="merData.is_margin == -1" src="@/assets/images/margin02.png"/> <img v-if="merData.is_margin == -1" src="@/assets/images/margin02.png" />
<img v-if="merData.is_margin == 10" src="@/assets/images/margin03.png"/> <img v-if="merData.is_margin == 10" src="@/assets/images/margin03.png" />
<div class="alic" v-if="merData.is_margin == 10"> <div class="alic" v-if="merData.is_margin == 10">
<span class="text_g">剩余保证金{{merData.margin}}</span> <span class="text_g">剩余保证金{{ merData.margin }}</span>
<el-button v-if="merData.margin>0" type="primary" size="small" @click="applyReturn">申请退回保证金</el-button> <el-button v-if="merData.margin > 0" type="primary" size="small"
@click="applyReturn">申请退回保证金</el-button>
</div> </div>
<div class="alic" v-if="merData.is_margin == -1"> <div class="alic" v-if="merData.is_margin == -1">
<span class="text_b b01"> 审核中</span> <span class="text_b b01"> 审核中</span>
@ -125,7 +130,7 @@
</div> </div>
<div class="alic" v-if="merData.is_margin == -10"> <div class="alic" v-if="merData.is_margin == -10">
<span class="text_b b02">审核未通过</span> <span class="text_b b02">审核未通过</span>
<div class="margin_refused">未通过原因<span>{{merData.refundMarginOrder.refusal}}</span></div> <div class="margin_refused">未通过原因<span>{{ merData.refundMarginOrder.refusal }}</span></div>
<el-button type="primary" size="small" @click="applyReturn">再次申请</el-button> <el-button type="primary" size="small" @click="applyReturn">再次申请</el-button>
</div> </div>
</div> </div>
@ -136,26 +141,20 @@
</div> </div>
</div> </div>
<!--申请退回保障金银行信息弹窗--> <!--申请退回保障金银行信息弹窗-->
<el-dialog <el-dialog v-if="modalBank" v-model="modalBank" :visible.sync="modalBank" title="申请退回保证金" width="600px"
v-if="modalBank" close-on-click-modal custom-class="dialog-scustom">
v-model="modalBank"
:visible.sync="modalBank"
title="申请退回保证金"
width="600px"
close-on-click-modal
custom-class="dialog-scustom"
>
<div class="bank-container"> <div class="bank-container">
<div class="item">说明 <span class="red">申请退回保证金则视为关闭店铺请谨慎操作</span></div> <div class="item">说明 <span class="red">申请退回保证金则视为关闭店铺请谨慎操作</span></div>
<div class="item"> <div class="item">
<div v-if="online > 0">线上支付的保证金 <span class="red">{{online}}</span>会原路返回</div> <div v-if="online > 0">线上支付的保证金 <span class="red">{{ online }}</span>会原路返回</div>
<div v-if="offline > 0"> <div v-if="offline > 0">
线下支付的保证金<span class="red">{{offline}}</span>会通过下方账号信息返回请务必确认下方您的收款信息真实有效以确保资金可顺利退回感谢配合 线下支付的保证金<span class="red">{{ offline }}</span>会通过下方账号信息返回请务必确认下方您的收款信息真实有效以确保资金可顺利退回感谢配合
</div> </div>
</div> </div>
<div class="title">账号信息</div> <div class="title">账号信息</div>
<el-form ref="bankValidate" :model="bankValidate" :rules="bankRules" label-width="100px" @submit.native.prevent> <el-form ref="bankValidate" :model="bankValidate" :rules="bankRules" label-width="100px"
@submit.native.prevent>
<el-form-item label="真实姓名:" prop="name"> <el-form-item label="真实姓名:" prop="name">
<el-input v-model="bankValidate.name" type="text" placeholder="请输入真实姓名" /> <el-input v-model="bankValidate.name" type="text" placeholder="请输入真实姓名" />
</el-form-item> </el-form-item>
@ -180,7 +179,7 @@
<div v-if="infoType == '2'" class="business-msg"> <div v-if="infoType == '2'" class="business-msg">
<div class="form-data"> <div class="form-data">
<el-form ref="ruleForm" :model="merData" :rules="rules" label-width="150px" class="demo-ruleForm"> <el-form ref="ruleForm" :model="merData" :rules="rules" label-width="150px" class="demo-ruleForm">
<el-form-item class="form-item" label="店铺背景图:" prop="mer_banner"> <!-- <el-form-item class="form-item" label="店铺背景图:" prop="mer_banner">
<div class="upLoadPicBox" @click="modalPicTap('1')"> <div class="upLoadPicBox" @click="modalPicTap('1')">
<div v-if="merData.mer_banner" class="pictrue"> <div v-if="merData.mer_banner" class="pictrue">
<img :src="merData.mer_banner"> <img :src="merData.mer_banner">
@ -190,7 +189,7 @@
</div> </div>
<div class="trip">建议尺寸710*200px</div> <div class="trip">建议尺寸710*200px</div>
</div> </div>
</el-form-item> </el-form-item> -->
<el-form-item class="form-item" label="店铺头像:" prop="mer_avatar"> <el-form-item class="form-item" label="店铺头像:" prop="mer_avatar">
<div class="upLoadPicBox" @click="modalPicTap('2')"> <div class="upLoadPicBox" @click="modalPicTap('2')">
<div v-if="merData.mer_avatar" class="pictrue"> <div v-if="merData.mer_avatar" class="pictrue">
@ -202,7 +201,7 @@
<div class="trip">建议尺寸120*120px</div> <div class="trip">建议尺寸120*120px</div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item class="form-item" label="店铺街背景图:"> <!-- <el-form-item class="form-item" label="店铺街背景图:">
<div class="upLoadPicBox" @click="modalPicTap('3')"> <div class="upLoadPicBox" @click="modalPicTap('3')">
<div v-if="merData.mini_banner" class="pictrue"> <div v-if="merData.mini_banner" class="pictrue">
<img :src="merData.mini_banner"> <img :src="merData.mini_banner">
@ -212,8 +211,9 @@
</div> </div>
<div class="trip">建议尺寸710*134px或710*460px(请根据平台要求选择尺寸此图如未上传默认展示店铺背景图)</div> <div class="trip">建议尺寸710*134px或710*460px(请根据平台要求选择尺寸此图如未上传默认展示店铺背景图)</div>
</div> </div>
</el-form-item> </el-form-item> -->
<el-form-item class="form-item" label="店铺资质:" :prop="merData.sys_bases_status == 1 ? 'uploadedqualifications' : ''"> <el-form-item class="form-item" label="店铺资质:"
:prop="merData.sys_bases_status == 1 ? 'uploadedqualifications' : ''">
<div class="upLoadPicBox_qualification"> <div class="upLoadPicBox_qualification">
<div v-for="(item, index) in uploadedQualifications" :key="index" class="uploadpicBox_list"> <div v-for="(item, index) in uploadedQualifications" :key="index" class="uploadpicBox_list">
<div class="uploadpicBox_list_image"> <div class="uploadpicBox_list_image">
@ -224,7 +224,8 @@
<i class="el-icon-view" @click="viewImage(item, index)" /> <i class="el-icon-view" @click="viewImage(item, index)" />
</div> </div>
</div> </div>
<el-upload :action="fileUrl" :show-file-list="false" list-type="picture-card" multiple :headers="myHeaders" :on-success="setQualificationsList" :before-upload="beforeUploadQualification"> <el-upload :action="fileUrl" :show-file-list="false" list-type="picture-card" multiple
:headers="myHeaders" :on-success="setQualificationsList" :before-upload="beforeUploadQualification">
<i class="el-icon-plus" /> <i class="el-icon-plus" />
</el-upload> </el-upload>
</div> </div>
@ -236,7 +237,9 @@
</el-checkbox> </el-checkbox>
</el-checkbox-group> <span class="trip">只选择一种配送方式时,会自动修改店铺所有商品的配送方式</span> </el-checkbox-group> <span class="trip">只选择一种配送方式时,会自动修改店铺所有商品的配送方式</span>
</el-form-item> </el-form-item>
<el-row v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)" :gutter="24"> <el-row
v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)"
:gutter="24">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="提货点名称:" prop="mer_take_name"> <el-form-item label="提货点名称:" prop="mer_take_name">
<el-input v-model="merData.mer_take_name" maxlength="30" placeholder="请输入提货点名称" /> <el-input v-model="merData.mer_take_name" maxlength="30" placeholder="请输入提货点名称" />
@ -244,14 +247,12 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="提货点电话:" prop="mer_take_phone"> <el-form-item label="提货点电话:" prop="mer_take_phone">
<el-input <el-input v-model="merData.mer_take_phone" placeholder="请输入提货点电话" />
v-model="merData.mer_take_phone"
placeholder="请输入提货点电话"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)" > <el-row
v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="详细地址:" prop="mer_take_address"> <el-form-item label="详细地址:" prop="mer_take_address">
<el-input v-model="merData.mer_take_address" placeholder="请输入详细地址" /> <el-input v-model="merData.mer_take_address" placeholder="请输入详细地址" />
@ -259,53 +260,27 @@
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="经纬度:" prop="mer_take_location"> <el-form-item label="经纬度:" prop="mer_take_location">
<el-input <el-input v-model="merData.mer_take_location" enter-button="查找位置" placeholder="请查找位置" readonly>
v-model="merData.mer_take_location" <el-button slot="append" type="primary" @click="onSearchs">查找位置</el-button>
enter-button="查找位置"
placeholder="请查找位置"
readonly
>
<el-button
slot="append"
type="primary"
@click="onSearchs"
>查找位置</el-button>
</el-input> </el-input>
<div slot="content">请点击查找位置选择位置</div> <div slot="content">请点击查找位置选择位置</div>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)" > <el-row
v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="提货点营业日期:" prop="mer_take_day"> <el-form-item label="提货点营业日期:" prop="mer_take_day">
<el-select <el-select v-model="merData.mer_take_day" filterable multiple placeholder="请选择营业时间">
v-model="merData.mer_take_day" <el-option v-for="item in date" :key="item.date_id" :label="item.date_name" :value="item.date_id" />
filterable
multiple
placeholder="请选择营业时间"
>
<el-option
v-for="item in date"
:key="item.date_id"
:label="item.date_name"
:value="item.date_id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="提货点营业时间:" required> <el-form-item label="提货点营业时间:" required>
<el-time-picker <el-time-picker v-model="value1" placeholder="开始时间" value-format="HH:mm" @change="onchangeTime1">
v-model="value1"
placeholder="开始时间"
value-format="HH:mm"
@change="onchangeTime1">
</el-time-picker> </el-time-picker>
<el-time-picker <el-time-picker v-model="value2" placeholder="结束时间" value-format="HH:mm" @change="onchangeTime2">
v-model="value2"
placeholder="结束时间"
value-format="HH:mm"
@change="onchangeTime2">
</el-time-picker> </el-time-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -323,29 +298,30 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="联系客服方式:"> <el-form-item label="联系客服方式:">
<el-radio-group <el-radio-group v-model="merData.services_type">
v-model="merData.services_type"
>
<el-radio :label="0" class="radio">线上客服</el-radio> <el-radio :label="0" class="radio">线上客服</el-radio>
<el-radio :label="1">拨打电话</el-radio> <el-radio :label="1">拨打电话</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="客服电话:"> <el-form-item label="客服电话:">
<el-input v-model="merData.service_phone" type="number"/> <el-input v-model="merData.service_phone" type="number" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="商户地址:" prop="mer_address"> <el-form-item label="商户地址:" prop="mer_address">
<el-input v-model="merData.mer_address" enter-button="查找位置" placeholder="请输入商户地址(地址中请包含城市名称,否则会影响搜索精度)"> <el-input v-model="merData.mer_address" enter-button="查找位置"
placeholder="请输入商户地址(地址中请包含城市名称,否则会影响搜索精度)">
<el-button slot="append" type="primary" @click="onSearch">查找位置</el-button> <el-button slot="append" type="primary" @click="onSearch">查找位置</el-button>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div style="width: 460px;margin-left: 150px;"> <div style="width: 460px;margin-left: 150px;">
<Maps v-if="mapKey" ref="mapChild" class="map-sty" :map-key="mapKey" :lat="Number(merData.lat || 34.34127)" :lon="Number(merData.long || 108.93984)" :address="merData.mer_address" @getCoordinates="getCoordinates" /> <Maps v-if="mapKey" ref="mapChild" class="map-sty" :map-key="mapKey"
:lat="Number(merData.lat || 34.34127)" :lon="Number(merData.long || 108.93984)"
:address="merData.mer_address" @getCoordinates="getCoordinates" />
</div> </div>
<el-form-item /> <el-form-item />
</el-form> </el-form>
@ -354,7 +330,8 @@
<div v-if="infoType == '3'" class="user-msg"> <div v-if="infoType == '3'" class="user-msg">
<div class="basic-information"> <div class="basic-information">
<span class="basic-label"> 商户手续费</span> <span class="basic-label"> 商户手续费</span>
{{ Number(merData.commission_rate) > 0 ? (parseFloat(merData.commission_rate)).toFixed(2) : (parseFloat(merData.merchantCategory.commission_rate * 100)).toFixed(2)}}% {{ Number(merData.commission_rate) > 0 ? (parseFloat(merData.commission_rate)).toFixed(2) :
(parseFloat(merData.merchantCategory.commission_rate * 100)).toFixed(2) }}%
</div> </div>
<div class="basic-information"> <div class="basic-information">
<span class="basic-label"> 添加商品</span> <span class="basic-label"> 添加商品</span>
@ -377,38 +354,24 @@
<el-button type="primary" :loading="submitLoading" @click="submitForm('ruleForm')">提交</el-button> <el-button type="primary" :loading="submitLoading" @click="submitForm('ruleForm')">提交</el-button>
</div> </div>
</div> </div>
<el-dialog <el-dialog v-if="modalMap" v-model="modalMap" :visible.sync="modalMap" title="选择位置" close-on-click-modal
v-if="modalMap" class="mapBox" custom-class="dialog-scustom">
v-model="modalMap"
:visible.sync="modalMap"
title="选择位置"
close-on-click-modal
class="mapBox"
custom-class="dialog-scustom"
>
<iframe id="mapPage" width="100%" height="500px" frameborder="0" :src="keyUrl" /> <iframe id="mapPage" width="100%" height="500px" frameborder="0" :src="keyUrl" />
</el-dialog> </el-dialog>
<!--保证金记录--> <!--保证金记录-->
<el-dialog <el-dialog v-if="modalRecord" :visible.sync="modalRecord" title="操作记录" width="800px" close-on-click-modal
v-if="modalRecord" class="mapBox" custom-class="dialog-scustom">
:visible.sync="modalRecord"
title="操作记录"
width="800px"
close-on-click-modal
class="mapBox"
custom-class="dialog-scustom"
>
<el-table :data="tableData.data" :loading="loading" size="small"> <el-table :data="tableData.data" :loading="loading" size="small">
<el-table-column label="序号" min-width="50"> <el-table-column label="序号" min-width="50">
<template scope="scope"> <template scope="scope">
<span>{{ scope.$index+(tableFrom.page - 1) * tableFrom.limit + 1 }}</span> <span>{{ scope.$index + (tableFrom.page - 1) * tableFrom.limit + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="标题" min-width="90" prop="title" /> <el-table-column label="标题" min-width="90" prop="title" />
<el-table-column prop="number" label="金额" min-width="60"> <el-table-column prop="number" label="金额" min-width="60">
<template scope="scope"> <template scope="scope">
<span v-if="scope.row.pm == 1" style="color:#13ce66">+{{scope.row.number}}</span> <span v-if="scope.row.pm == 1" style="color:#13ce66">+{{ scope.row.number }}</span>
<span v-else style="color:rgb(237, 64, 20)">-{{scope.row.number}}</span> <span v-else style="color:rgb(237, 64, 20)">-{{ scope.row.number }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="balance" label="保证金结余" min-width="100" /> <el-table-column prop="balance" label="保证金结余" min-width="100" />
@ -416,14 +379,8 @@
<el-table-column prop="create_time" label="操作时间" min-width="120" /> <el-table-column prop="create_time" label="操作时间" min-width="120" />
</el-table> </el-table>
<div class="acea-row row-right page"> <div class="acea-row row-right page">
<el-pagination <el-pagination :page-size="tableFrom.limit" :current-page="tableFrom.page" layout="prev, pager, next, jumper"
:page-size="tableFrom.limit" :total="tableData.total" @size-change="handleSizeChange" @current-change="pageChange" />
:current-page="tableFrom.page"
layout="prev, pager, next, jumper"
:total="tableData.total"
@size-change="handleSizeChange"
@current-change="pageChange"
/>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -464,7 +421,7 @@ export default {
if (value.charAt(0) == 0) { if (value.charAt(0) == 0) {
// charAt // charAt
regPone = tel regPone = tel
}else if(value.charAt(0) == 4){ } else if (value.charAt(0) == 4) {
regPone = tels regPone = tels
} else { } else {
regPone = mobile regPone = mobile
@ -491,23 +448,23 @@ export default {
// },100) // },100)
// } // }
// var checkPhone = (rule, value, callback) => { // var checkPhone = (rule, value, callback) => {
// if (value === '') { // if (value === '') {
// callback(new Error('')) // callback(new Error(''))
// } // }
// if (value.length !== 11) { // if (value.length !== 11) {
// callback(new Error('')) // callback(new Error(''))
// } // }
// if (value.length !== 11) { // if (value.length !== 11) {
// callback(new Error('')) // callback(new Error(''))
// } // }
// // ? ? // // ? ?
// var ab = /^[1][3,4,5,7,8][0-9]{9}$/ // var ab = /^[1][3,4,5,7,8][0-9]{9}$/
// if (ab.test(value) === false) { // if (ab.test(value) === false) {
// callback(new Error('')) // callback(new Error(''))
// } // }
// callback() // callback()
// } // }
const validatePhone = (rule, value, callback) => { const validatePhone = (rule, value, callback) => {
if (!value) { if (!value) {
@ -549,7 +506,8 @@ export default {
mer_take_day: [], mer_take_day: [],
mer_take_location: '', mer_take_location: '',
id: 0, id: 0,
mer_take_status: 0 }, // mer_take_status: 0
}, //
myHeaders: { 'X-Token': getToken() }, myHeaders: { 'X-Token': getToken() },
uploadedQualifications: [], // uploadedQualifications: [], //
mapKey: '', // key mapKey: '', // key
@ -570,7 +528,6 @@ export default {
{ value: '2', name: '快递配送' } { value: '2', name: '快递配送' }
], ],
rules: { rules: {
mer_banner: [{ required: true, message: '请上传店铺banner' }],
mer_avatar: [{ required: true, message: '请上传店铺头像' }], mer_avatar: [{ required: true, message: '请上传店铺头像' }],
mer_info: [{ required: true, message: '请输入商户简介', trigger: 'blur' }, mer_info: [{ required: true, message: '请输入商户简介', trigger: 'blur' },
{ min: 3, max: 200, message: '长度在 3 到 200 个字符', trigger: 'blur' } { min: 3, max: 200, message: '长度在 3 到 200 个字符', trigger: 'blur' }
@ -605,9 +562,9 @@ export default {
keyUrl: '', keyUrl: '',
infoType: '1', infoType: '1',
tabList: [ tabList: [
{value: '1',title: '基本信息'}, { value: '1', title: '基本信息' },
{value: '2',title: '店铺信息'}, { value: '2', title: '店铺信息' },
{value: '3',title: '功能信息'} { value: '3', title: '功能信息' }
] ]
} }
}, },
@ -631,10 +588,10 @@ export default {
}, },
mounted: function() { mounted: function () {
window.addEventListener( window.addEventListener(
'message', 'message',
function(event) { function (event) {
// //
var loc = event.data var loc = event.data
if (loc && loc.module === 'locationPicker') { if (loc && loc.module === 'locationPicker') {
@ -708,11 +665,11 @@ export default {
} else { } else {
that.uploadedQualifications = [] that.uploadedQualifications = []
} }
if(that.merData.is_margin == 1)(this.getCode()) if (that.merData.is_margin == 1) (this.getCode())
}) })
}, },
// 线 // 线
bankConfirm(name){ bankConfirm(name) {
this.$refs[name].validate(valid => { this.$refs[name].validate(valid => {
if (valid) { if (valid) {
marginRefundApply(this.bankValidate) marginRefundApply(this.bankValidate)
@ -732,7 +689,7 @@ export default {
}, },
// / // /
submitForm(formName) { submitForm(formName) {
if(this.infoType == 2){ if (this.infoType == 2) {
this.$refs[formName].validate(valid => { this.$refs[formName].validate(valid => {
if (valid) { if (valid) {
const dataKey = Object.keys(this.rules) const dataKey = Object.keys(this.rules)
@ -765,7 +722,7 @@ export default {
return false return false
} }
}) })
}else{ } else {
let data = { let data = {
mer_state: this.merData.mer_state, mer_state: this.merData.mer_state,
type: this.infoType type: this.infoType
@ -785,24 +742,24 @@ export default {
// //
getCode() { getCode() {
let that = this let that = this
if(this.merData.marginStatus){ if (this.merData.marginStatus) {
marginMakeCode() marginMakeCode()
.then((res) => { .then((res) => {
that.qrCode = res.data.config that.qrCode = res.data.config
that.qrEndTime = res.data.endtime that.qrEndTime = res.data.endtime
that.marginPrice = res.data.price that.marginPrice = res.data.price
}) })
.catch(function(res) { .catch(function (res) {
that.$message.error(res.message) that.$message.error(res.message)
}) })
}else{ } else {
marginCode() marginCode()
.then((res) => { .then((res) => {
that.qrCode = res.data.config that.qrCode = res.data.config
that.qrEndTime = res.data.endtime that.qrEndTime = res.data.endtime
that.marginPrice = res.data.price that.marginPrice = res.data.price
}) })
.catch(function(res) { .catch(function (res) {
that.$message.error(res.message) that.$message.error(res.message)
}) })
} }
@ -814,7 +771,7 @@ export default {
this.getRecordList() this.getRecordList()
}, },
// //
getRecordList(){ getRecordList() {
let that = this let that = this
that.loading = true; that.loading = true;
marginRecordLst(that.tableFrom).then(async (res) => { marginRecordLst(that.tableFrom).then(async (res) => {
@ -847,7 +804,7 @@ export default {
that.bankValidate = res.data.info that.bankValidate = res.data.info
that.offline = res.data.offline that.offline = res.data.offline
that.online = res.data.online that.online = res.data.online
if(Number(res.data.offline) <= 0){ if (Number(res.data.offline) <= 0) {
marginRefundApply(this.bankValidate) marginRefundApply(this.bankValidate)
.then((res) => { .then((res) => {
this.$message.success(res.message) this.$message.success(res.message)
@ -856,11 +813,11 @@ export default {
.catch((res) => { .catch((res) => {
this.$message.error(res.message) this.$message.error(res.message)
}) })
}else{ } else {
that.modalBank = true that.modalBank = true
} }
}) })
.catch(function(res) { .catch(function (res) {
that.$message.error(res.message) that.$message.error(res.message)
}) })
}) })
@ -878,7 +835,7 @@ export default {
console.log(res) console.log(res)
this.mapKey = res.data.tx_map_key this.mapKey = res.data.tx_map_key
}) })
.catch(function(res) { .catch(function (res) {
that.$message.error(res.message) that.$message.error(res.message)
}) })
}, },
@ -928,26 +885,30 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .el-textarea__inner{ ::v-deep .el-textarea__inner {
height: 90px; height: 90px;
} }
.information { .information {
width: 100%; width: 100%;
padding: 10px 20px 80px 20px; padding: 10px 20px 80px 20px;
background: #ffffff; background: #ffffff;
h2 { h2 {
text-align: center; text-align: center;
color: #303133; color: #303133;
font-weight: bold; font-weight: bold;
font-size: 20px; font-size: 20px;
} }
.lab-title { .lab-title {
width: max-content; width: max-content;
font-size: 14px; font-size: 14px;
font-weight: bold; font-weight: bold;
color: #303133; color: #303133;
margin: 10px 10%; margin: 10px 10%;
&::before{
&::before {
content: ""; content: "";
display: inline-block; display: inline-block;
width: 3px; width: 3px;
@ -958,10 +919,12 @@ export default {
top: 1px; top: 1px;
} }
} }
.user-msg { .user-msg {
padding: 0 20px; padding: 0 20px;
margin-top: 20px; margin-top: 20px;
} }
.basic-information { .basic-information {
padding: 0 100px; padding: 0 100px;
margin-bottom: 20px; margin-bottom: 20px;
@ -969,33 +932,41 @@ export default {
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
color: #606266; color: #606266;
.basic-label{
.basic-label {
display: inline-block; display: inline-block;
text-align: right; text-align: right;
width: 150px; width: 150px;
margin-right: 10px; margin-right: 10px;
} }
} }
.trip { .trip {
color: #999999; color: #999999;
font-weight: normal; font-weight: normal;
font-size: 12px; font-size: 12px;
} }
.demo-ruleForm{
.demo-ruleForm {
overflow: hidden; overflow: hidden;
} }
.form-data { .form-data {
padding: 30px 8%; padding: 30px 8%;
.map-sty { .map-sty {
width: 100%; width: 100%;
} }
.pictrue img { .pictrue img {
border-radius: 4px; border-radius: 4px;
object-fit: cover; object-fit: cover;
} }
.tip-form { .tip-form {
display: flex; display: flex;
align-items: center; align-items: center;
span { span {
white-space: nowrap; white-space: nowrap;
padding-left: 10px; padding-left: 10px;
@ -1003,6 +974,7 @@ export default {
} }
} }
} }
.submit-button { .submit-button {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -1014,43 +986,54 @@ export default {
background-color: rgba(255, 255, 255, 0.7); background-color: rgba(255, 255, 255, 0.7);
} }
} }
.information ::v-deep .el-form-item__label{
.information ::v-deep .el-form-item__label {
color: #303133; color: #303133;
} }
.bank-container{
.bank-container {
padding: 0 20px; padding: 0 20px;
.item{
.item {
margin-top: 10px; margin-top: 10px;
color: #282828; color: #282828;
font-size: 13px; font-size: 13px;
line-height: 26px; line-height: 26px;
} }
.red{
color:rgb(237, 64, 20);; .red {
color: rgb(237, 64, 20);
;
} }
.title{
color:#303133; .title {
color: #303133;
margin: 15px 0; margin: 15px 0;
font-weight: bold; font-weight: bold;
} }
} }
.font_red { .font_red {
color: red; color: red;
margin-right: 5px; margin-right: 5px;
} }
.spanBtn{
color:var(--prev-color-primary); .spanBtn {
font-size:12px; color: var(--prev-color-primary);
font-size: 12px;
cursor: pointer; cursor: pointer;
} }
.margin_main{
.margin_main {
position: relative; position: relative;
.margin_price{
.margin_price {
cursor: pointer; cursor: pointer;
} }
} }
.margin_modal{
.margin_modal {
position: absolute; position: absolute;
left: -20px; left: -20px;
top: 20px; top: 20px;
@ -1063,63 +1046,77 @@ export default {
padding-bottom: 30px; padding-bottom: 30px;
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3); box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
display: none; display: none;
.alic{
.alic {
text-align: center; text-align: center;
} }
img{
img {
display: block; display: block;
width: 150px; width: 150px;
height: 116px; height: 116px;
margin: 20px auto 50px; margin: 20px auto 50px;
} }
span{
span {
margin-bottom: 10px; margin-bottom: 10px;
display: block; display: block;
font-weight: normal; font-weight: normal;
text-align: center; text-align: center;
} }
.text_g{
.text_g {
font-size: 16px; font-size: 16px;
color: #303133; color: #303133;
} }
.text_b{
.text_b {
color: #606266; color: #606266;
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
margin-bottom: 14px; margin-bottom: 14px;
&.b02{
&.b02 {
color: #EF9B6F; color: #EF9B6F;
} }
&.b01{
&.b01 {
color: #57D1A0; color: #57D1A0;
} }
} }
.el-button{
.el-button {
margin-top: 25px; margin-top: 25px;
} }
} }
.margin_refused{
.margin_refused {
display: block; display: block;
margin-bottom: 10px; margin-bottom: 10px;
text-align: center; text-align: center;
color: #606266; color: #606266;
span{
span {
display: inline; display: inline;
// color: red; // color: red;
} }
} }
.margin_count { .margin_count {
position: relative; position: relative;
display: inline-block; display: inline-block;
padding-bottom: 10px; padding-bottom: 10px;
.pay_btn:hover + .erweima {
.pay_btn:hover+.erweima {
display: block; display: block;
} }
&:hover{
.margin_modal{ &:hover {
.margin_modal {
display: block; display: block;
} }
} }
.erweima { .erweima {
position: absolute; position: absolute;
left: 0; left: 0;
@ -1134,28 +1131,32 @@ export default {
padding: 10px; padding: 10px;
box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3); box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
img{ img {
width: 160px; width: 160px;
height: 160px; height: 160px;
margin-top: 20px; margin-top: 20px;
} }
.pay_type{
.pay_type {
font-size: 16px; font-size: 16px;
color: #303133; color: #303133;
font-weight: normal; font-weight: normal;
} }
.pay_price{
.pay_price {
font-size: 18px; font-size: 18px;
color: #E57272; color: #E57272;
margin: 10px 0; margin: 10px 0;
} }
.pay_title{
.pay_title {
font-size: 16px; font-size: 16px;
color: #303133; color: #303133;
margin-top: 20px; margin-top: 20px;
} }
.pay_time{
.pay_time {
font-size: 12px; font-size: 12px;
color: #6D7278; color: #6D7278;
@ -1163,6 +1164,7 @@ export default {
} }
} }
::v-deep .el-upload--picture-card { ::v-deep .el-upload--picture-card {
width: 58px; width: 58px;
height: 58px; height: 58px;
@ -1177,11 +1179,13 @@ export default {
.upLoadPicBox_qualification { .upLoadPicBox_qualification {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.uploadpicBox_list { .uploadpicBox_list {
position: relative; position: relative;
height: 58px; height: 58px;
width: 58px; width: 58px;
margin: 0 20px 20px 0; margin: 0 20px 20px 0;
.uploadpicBox_list_image { .uploadpicBox_list_image {
position: absolute; position: absolute;
top: 0; top: 0;
@ -1190,6 +1194,7 @@ export default {
height: 58px; height: 58px;
border-radius: 4px; border-radius: 4px;
overflow: hidden; overflow: hidden;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -1215,6 +1220,7 @@ export default {
} }
} }
} }
.uploadpicBox_list:hover .uploadpicBox_list_method { .uploadpicBox_list:hover .uploadpicBox_list_method {
z-index: 11; z-index: 11;
opacity: 1; opacity: 1;

View File

@ -28,7 +28,8 @@ module.exports = {
outputDir: 'dist', outputDir: 'dist',
assetsDir: 'mer', assetsDir: 'mer',
indexPath: process.env.NODE_ENV === 'development' ? 'index.html' : 'mer.html', indexPath: process.env.NODE_ENV === 'development' ? 'index.html' : 'mer.html',
lintOnSave: process.env.NODE_ENV === 'development', lintOnSave: false,
// lintOnSave: process.env.NODE_ENV === 'development',
productionSourceMap: false, productionSourceMap: false,
devServer: { devServer: {
port: port, port: port,