文件

544 行
25 KiB
HTML
可执行文件

<!DOCTYPE html>
<html>
<!--[1.9.20]-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="/Public/layui/css/layui.css"/>
<link rel="stylesheet" type="text/css" href="/Public/Retail/css/myscroll.css"/>
<link rel="stylesheet" type="text/css" href="/Public/vue/element-ui.css">
<link rel="stylesheet" type="text/css" href="/Public/css/system-gallery.css">
<script charset="utf-8" type="text/javascript" src="/Public/vue/js/vue2.5.16.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/vue/element-ui.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/jquery/js/jquery-3.2.1.min.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/js/system-gallery.js?v=1.0.2"></script>
<script charset="utf-8" type="text/javascript" src="/Public/js/select-pro-and-city.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/js/load-more-directive.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/Retail/common/js/select-industry.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/js/get-position-map-tencent.js?v=1.0.2"></script>
<script charset="utf-8" type="text/javascript" src="/Public/js/select-bank.js"></script>
<script charset="utf-8" type="text/javascript" src="/Public/js/common.js"></script>
<style>
#editStoreApp {
padding: 15px 30px 100px;
width: 748px;
}
.center-btn {
position: fixed;
bottom: 0;
right: 0;
background: #f8f8f8;
z-index: 1000;
width: 100%;
height: 60px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
box-shadow: 10px 0 10px #ddd;
}
.title {
font-size: 14px;
color: #333;
padding-bottom: 20px;
font-weight: bold;
}
.flex {
display: flex;
align-items: center;
justify-content: space-between;
}
.small-input {
width: 200px;
}
</style>
</head>
<body>
<div id="editStoreApp" v-cloak>
<div class="title" v-if="!ruleForm.id&&pageLoading">可创建门店数量:{{canAddNum}} 剩余数量:{{canUseNum}}</div>
<el-form label-width="136px" ref="ruleForm" :rules="rules" :model="ruleForm" size="small">
<el-form-item label="门店行业" prop="industry_id">
<select-industry :industry-id.sync="ruleForm.industry_id"></select-industry>
</el-form-item>
<el-form-item label="经营类型" prop="store_class">
<el-radio-group v-model="ruleForm.store_class" :disabled="ruleForm.id>0?true:false" border>
<el-radio-button label="1">直营店</el-radio-button>
<el-radio-button label="2">加盟店</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-if="platform_type == 1" label="供货商类型" prop="supplier_type">
<el-radio-group v-model="ruleForm.supplier_type" :disabled="ruleForm.id>0?true:false">
<el-radio-button label="1">常规供货商</el-radio-button>
<el-radio-button label="2">寄售供货商</el-radio-button>
</el-radio-group>
</el-form-item>
<el-divider content-position="left">门店详细信息</el-divider>
<el-form-item label="门店名称" prop="storetag" v-if="!moral_education_coin">
<el-input class="small-input" v-model="ruleForm.storetag" placeholder="请输入门店名称"></el-input>
</el-form-item>
<el-form-item label="门店名称" prop="storetag" v-else>
<el-select :value="moral_education.title" placeholder="请选择门店"
style="width: 360px"
value-key="title"
:disabled="ruleForm.id?true:false"
clearable filterable
@change="changeMECStore"
v-load-more="getMECStoreList"
remote reserve-keyword
:remote-method="searchStore">
<el-option v-for="item in moralEducationStoreList"
:value-key="item.id"
:key="item.id"
:label="item.title"
:value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="门头照片" prop="shopimg_id">
<choose-image :image-url="ruleForm.shopimg_url" :image-id="ruleForm.shopimg_id" @choose="selectImage">
</choose-image>
</el-form-item>
<el-form-item label="省市区" prop="province_id">
<select-pro-and-city :province-id.sync="ruleForm.province_id" :city-id.sync="ruleForm.city_id"
:area-id.sync="ruleForm.area_id"></select-pro-and-city>
</el-form-item>
<el-form-item label="经纬度">
<div class="flex">
<el-form-item label="经度" prop="longitude" label-width="50px" style="margin-bottom: 0">
<el-input class="small-input" readonly v-model="ruleForm.longitude" placeholder="经度"></el-input>
</el-form-item>
<el-form-item label="纬度" prop="longitude" label-width="50px" style="margin-bottom: 0">
<el-input class="small-input" readonly v-model="ruleForm.latitude" placeholder="经度"></el-input>
</el-form-item>
</div>
</el-form-item>
<el-form-item label="门店地址" prop="address">
<get-position-map-tencent v-if="pageLoading" :longitude.sync="ruleForm.longitude"
:latitude.sync="ruleForm.latitude" :address.sync="ruleForm.address">
</get-position-map-tencent>
</el-form-item>
<el-form-item label="详细地址" prop="detail_address">
<el-input v-model="ruleForm.detail_address" placeholder="请输入详细地址"></el-input>
</el-form-item>
<el-form-item v-if="platform_type == 2" label="门店编码" prop="third_code">
<el-input v-model="ruleForm.third_code" placeholder="请输入第三方门店编码"
:disabled="ruleForm.id?true:false"></el-input>
</el-form-item>
<el-divider content-position="left">达达设置</el-divider>
<el-form-item label="达达配送" prop="dadastatus">
<el-switch v-model="ruleForm.dadastatus" active-text="开启" inactive-text="关闭" active-value="2"
inactive-value="1">
</el-switch>
</el-form-item>
<template v-if="ruleForm.dadastatus==2">
<el-form-item label="门店类型" prop="attribute">
<el-select v-model="ruleForm.attribute" placeholder="请选择门店类型" clearable filterable>
<el-option v-for="item in storeTypeList" :value-key="item.id" :key="item.id" :label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="门店编码" prop="origin_shop_id">
<el-input class="small-input" v-model="ruleForm.origin_shop_id" placeholder="门店编码必须唯一"></el-input>
</el-form-item>
<el-form-item label="达达商家app账号" prop="username">
<el-input class="small-input" v-model="ruleForm.username" placeholder="请输入达达商家app账号"></el-input>
</el-form-item>
<el-form-item label="达达商家app密码" prop="password">
<el-input class="small-input" type="password" show-password v-model="ruleForm.password"
placeholder="请输入达达商家app密码"></el-input>
</el-form-item>
</template>
<template v-if="ruleForm.store_class==2">
<el-divider content-position="left">加盟信息设置</el-divider>
<el-form-item label="结算账户:" prop="clearing_form">
<el-radio v-model="ruleForm.clearing_form" label="1">银行卡</el-radio>
<el-radio v-model="ruleForm.clearing_form" label="2">支付宝</el-radio>
<el-radio v-model="ruleForm.clearing_form" label="3">微信</el-radio>
</el-form-item>
<!-- 选择银行卡-->
<div v-if="ruleForm.clearing_form==1">
<el-form-item label="开户行信息:" prop="opening_bank">
<select-bank-xdl :bank-name.sync="ruleForm.opening_bank"></select-bank-xdl>
</el-form-item>
</div>
<el-form-item :label="clearingAccountNumberLabel" prop="account_number" v-if="ruleForm.clearing_form">
<el-input class="small-input" v-model="ruleForm.account_number"
:placeholder="'请输入'+clearingAccountNumberLabel"></el-input>
</el-form-item>
<el-form-item label="结算人姓名" prop="name">
<el-input class="small-input" v-model="ruleForm.name" placeholder="请输入结算人姓名" maxlength="8">
</el-input>
</el-form-item>
<el-form-item label="结算周期" prop="period_radio">
<el-radio v-model="ruleForm.period_radio" label="1">日结</el-radio>
<el-radio v-model="ruleForm.period_radio" label="2">周结</el-radio>
<el-radio v-model="ruleForm.period_radio" label="3">月结</el-radio>
</el-form-item>
<el-form-item label="结算服务费率" prop="rate">
<el-input class="small-input" v-model="ruleForm.rate" placeholder="0.00 ~ 99.99">
<template slot="append">%</template>
</el-input>
</el-form-item>
</template>
</el-form>
<div class="center-btn">
<el-button type="primary" size="medium" @click="save">保存</el-button>
</div>
<el-dialog title="选择图片" :modal-append-to-body="false" :visible.sync="showSelectImage"
custom-class="select-image-el-dialog" :top="'10px'">
<template-select-image :can-select-num="1" @selectfile="selectFile"></template-select-image>
</el-dialog>
</div>
<script type="text/javascript">
var editStoreApp = new Vue({
el: '#editStoreApp',
data() {
let _t = this;
return {
platform_type: 1,
moral_education_coin: false,
moral_education: {},
moralEducationStoreList: [],
canAddNum: '',
canUseNum: '',
pageLoading: false,
ruleForm: {
id: '',
industry_id: '',//门店行业ID
store_class: '1', //默认单选为直营店
supplier_type: '1', //供货商类型
storetag: '',//门店名称
shopimg_id: '',//门头照ID
shopimg_url: '',//门头照地址
province_id: '',//省
city_id: '',//市
area_id: '',//区
address: '',//地址
longitude: null,//经度
latitude: null,//纬度
detail_address: '',//详细地址
third_code: '',//第三方门店编码
dadastatus: '1',//是否开启达达
attribute: '',//达达门店行业
origin_shop_id: '',//达达门店编码
username: '',//达达账号
password: '',//达达密码
clearing_form: '1', //加盟店结算类型 默认为银行卡
account_number: '',//加盟店结算人支付宝账号
name: '',//加盟店结算人姓名
period_radio: '1', //加盟店结算周期
opening_bank: '',//加盟店结算开户行
rate: '',//加盟店结算抽取佣金比
},
rules: {
industry_id: [{message: '请选择所属行业', required: false, trigger: 'change'}],
store_class: [{message: '请选择经营类型', required: true, trigger: 'change'}],
supplier_type: [{message: '请选择供货商类型', required: true, trigger: 'change'}],
storetag: [{message: '请输入门店名称', required: true, trigger: 'change'}, {
min: 1,
max: 50,
message: '限制长度 1 到 50',
}],
shopimg_id: [{message: '请设置门头照片', required: true, trigger: 'change'}],
province_id: [{message: '请选择省', required: true, trigger: 'change'}, {
validator: function (rule, value, callback) {
if (!value || value == '') {
callback(new Error("请选择省"));
} else if (!_t.ruleForm.city_id) {
callback(new Error("请选择市"));
} else if (!_t.ruleForm.area_id) {
callback(new Error("请选择区"));
} else {
callback();
}
}, trigger: 'change'
}],
address: [{message: '请填写正确的搜索栏的地址', required: true, trigger: ['change', 'blur']}, {
validator: function (rule, value, callback) {
if (!value || value == '') {
callback(new Error("请设置门店地址"));
} else if (!_t.ruleForm.longitude || !_t.ruleForm.latitude) {
callback(new Error("地址无效"));
} else {
callback();
}
}, trigger: ['change', 'blur']
}],
detail_address: [{message: '请设置门头详细地址', required: true, trigger: 'change'}],
third_code: [{message: '请设置第三方门店编码', required: true, trigger: 'change'}],
dadastatus: [{message: '请设置是否开启达达', required: true, trigger: 'change'}],
attribute: [{message: '请设置达达门店类型', required: false, trigger: 'change'}],
origin_shop_id: [{message: '请设置达达门店编码', required: false, trigger: 'change'}],
username: [{message: '请设置达达商家账号', required: false, trigger: 'change'}],
password: [{message: '请设置达达商家密码', required: false, trigger: 'change'}],
clearing_form: [{message: '请设置加盟店结算类型', required: false, trigger: 'change'}],
account_number: [{message: '请设置加盟店结算人收款账号', required: false, trigger: 'change'}],
name: [{message: '请设置加盟店结算人姓名', required: false, trigger: 'change'}],
period_radio: [{message: '请设置加盟店结算周期', required: false, trigger: 'change'}],
opening_bank: [{message: '请设置加盟店结算开户行', required: false, trigger: 'change'}],
rate: [{message: '请设置加盟店结算商户抽取的佣金比', required: false, trigger: 'change'}],
},
showSelectImage: false,//是否显示选择图片
storeTypeList: [
{id: 1, name: '食品小吃'},
{id: 2, name: '饮料'},
{id: 3, name: '鲜花'},
{id: 8, name: '文印票务'},
{id: 9, name: '便利店'},
{id: 13, name: '水果生鲜'},
{id: 19, name: '同城电商'},
{id: 20, name: '医药'},
{id: 21, name: '蛋糕'},
{id: 24, name: '酒品'},
{id: 25, name: '小商品市场'},
{id: 26, name: '服装'},
{id: 27, name: '汽修配件'},
{id: 28, name: '数码'},
{id: 29, name: '小龙虾'},
{id: 5, name: '其他'},
],
submitLoading: false,
moralObj: {
keyword: '',
page: 1,
limit: 10,
},
moralIsLoading: false,
moralCanLoad: true,
}
},
methods: {
//获取德育币门店
getMECStoreList() {
if (this.moralIsLoading || !this.moralCanLoad) return;
this.moralIsLoading = true;
this.sendRequest('MoralEducationCoin/Merchant/getStoreList', {
data: this.moralObj,
success: (res) => {
if (res.status == 1) {
if (this.moralObj.page == 1) {
this.moralEducationStoreList = res.data.list;
} else {
this.moralEducationStoreList.push.apply(this.moralEducationStoreList, res.data.list);
}
if (res.data.list.length == this.moralObj.limit) {
this.moralObj.page++;
} else {
this.moralCanLoad = false;
}
} else {
this.$message.error(res.message);
}
this.moralIsLoading = false;
}
})
},
//搜索德育币门店
searchStore(keyword) {
this.moralCanLoad = true;
this.moralObj.keyword = keyword;
this.moralObj.page = 1;
this.getMECStoreList();
},
//选择德育币门店
changeMECStore(item) {
if (item) {
this.moral_education = {...item};
} else {
this.moral_education = {};
this.searchStore('');
}
this.ruleForm.third_code = item.id;
this.ruleForm.storetag = item.title;
},
//商户平台类型 1默认系统 2微礼平台
//德育币插件 true使用 false不使用
getPlatformType() {
$.ajax({
url: '/index.php/Retail/Mgoods/getPlatformType',
type: "post",
data: {},
success: (res) => {
this.platform_type = res.platform_type;
this.moral_education_coin = res.moral_education_coin;
if (this.moral_education_coin) {
this.moralObj.keyword = this.ruleForm.storetag;
this.getMECStoreList();
}
}
})
},
//选择图片完成
selectFile(item) {
this.showSelectImage = false;
this.ruleForm.shopimg_id = item[0].id;
this.ruleForm.shopimg_url = item[0].path;
this.$nextTick(() => {
this.$refs.ruleForm.validateField('shopimg_id');
})
},
//显示选择图片
selectImage() {
this.showSelectImage = true;
},
//保存
save() {
this.$refs.ruleForm.validate((valid) => {
if (!valid) {
return this.$message.warning('请检查必填项');
}
this.submitLoading = true;
$.ajax({
url: '/index.php/Retail/Store/operateStoreInfo',
type: 'post',
data: this.ruleForm,
success: (res) => {
if (res.status == 1) {
this.$message({
type: 'success',
message: res.msg,
duration: 1000,
onClose: () => {
parent.layer.close(parent.layer.getFrameIndex(window.name)); //再执行关闭
}
});
} else {
this.submitLoading = false;
this.$message.error(res.msg);
}
},
error: (error) => {
this.submitLoading = false;
this.$message.error('请求发生错误');
console.log(error);
}
})
})
},
//修改表单验证类型
changeRequired(key, bol) {
key.forEach((item) => {
this.rules[item][0].required = bol;
})
},
//验证省市区
verifyProvince() {
setTimeout(() => {
this.$refs.ruleForm.validateField('province_id')
}, 100)
},
getStoreDetails(id) {
$.ajax({
url: '/index.php/Retail/Store/getStoreInfo',
type: 'post',
data: {
id: id,
},
success: res => {
if (res.status == 1) {
this.changeRequired(['industry_id'], false);
this.ruleForm = res.data;
this.pageLoading = true;
this.moral_education = {
id: res.data.third_code,
title: res.data.storetag,
};
this.getPlatformType();
}
}
})
},
//获取创建门店限制
getCreatedStoreLimit() {
$.ajax({
url: '/index.php/Retail/Store/getUseStoreNum',
type: 'post',
success: res => {
if (res.status == 1) {
this.canAddNum = res.data.canAddNum;
this.canUseNum = res.data.canUseNum;
this.pageLoading = true;
}
}
})
}
},
mounted() {
let id = decodeURIComponent((new RegExp('[?|&]' + 'id' + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null
if (id) {
this.getStoreDetails(id);
} else {
this.getCreatedStoreLimit();
this.getPlatformType();
}
},
computed: {
clearingAccountNumberLabel() {
let label = ''
switch (this.ruleForm.clearing_form) {
case "1":
label = '银行卡号'
break
case "2":
label = '支付宝账号'
break
case "3":
label = '微信手机号'
break
}
return label
}
},
watch: {
"ruleForm.dadastatus"(n, o) {
this.changeRequired(['attribute', 'origin_shop_id', 'username', 'password'], n == 2 ? true : false);
},
"ruleForm.store_class"(n) {
let arr = ['clearing_form', 'account_number', 'name', 'period_radio', 'rate'];
if (n == 1 || (n == 2 && this.ruleForm.clearing_form == 1)) {
arr.push('opening_bank');
}
this.changeRequired(arr, n == 2 ? true : false);
},
"ruleForm.clearing_form"(value) {
if (value == 1) {
this.changeRequired(['opening_bank'], true);
} else {
this.changeRequired(['opening_bank'], false);
}
},
"ruleForm.province_id"() {
this.verifyProvince();
},
"ruleForm.city_id"() {
this.verifyProvince();
},
"ruleForm.area_id"() {
this.verifyProvince();
},
}
});
</script>
</body>
</html>