@@ -0,0 +1,132 @@
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input id="c-images" data-rule="required" class="form-control" size="50" name="row[images]" type="text">
|
||||
<div class="input-group-addon no-border no-padding">
|
||||
<span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
<span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||
</div>
|
||||
<span class="msg-box n-right" for="c-images"></span>
|
||||
</div>
|
||||
<ul class="row list-inline plupload-preview" id="p-images"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Realname')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-realname" data-rule="required" class="form-control" name="row[realname]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-phone" data-rule="required" class="form-control" name="row[phone]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Province_name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-province_name" data-rule="required" class="form-control" name="row[province_name]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('City_name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-city_name" data-rule="required" class="form-control" name="row[city_name]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Area_name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-area_name" data-rule="required" class="form-control" name="row[area_name]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Province_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-province_id" data-rule="required" data-source="province/index" class="form-control selectpage" name="row[province_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('City_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-city_id" data-rule="required" data-source="city/index" class="form-control selectpage" name="row[city_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Area_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-area_id" data-rule="required" data-source="area/index" class="form-control selectpage" name="row[area_id]" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-address" data-rule="required" class="form-control" name="row[address]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Latitude')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-latitude" data-rule="required" class="form-control" step="0.000001" name="row[latitude]" type="number" value="0.000000">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Longitude')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-longitude" data-rule="required" class="form-control" step="0.000001" name="row[longitude]" type="number" value="0.000000">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Openhours')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-openhours" data-rule="required" class="form-control" name="row[openhours]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Openweeks')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-openweeks" data-rule="required" class="form-control selectpicker" multiple="" name="row[openweeks][]">
|
||||
{foreach name="openweeksList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="1,2,3,4,5,6,7"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<div class="radio">
|
||||
{foreach name="statusList" item="vo"}
|
||||
<label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="1"}checked{/in} /> {$vo}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status_msg')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-status_msg" class="form-control" name="row[status_msg]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,172 @@
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
|
||||
<style>
|
||||
#applyIndex {
|
||||
color: #444;
|
||||
background: #fff;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.shopro-form-group-title {
|
||||
border: none;
|
||||
margin-bottom: 0px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.el-form-item__label,
|
||||
.el-form-item__content {
|
||||
font-size: 13px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.openweeks-item {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.reject-reason-input {
|
||||
width: 230px;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.reject-reason-input .el-input {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.table-image {
|
||||
width: 64px;
|
||||
height: 60px;
|
||||
border: 1px solid #e6e6e6;
|
||||
border-radius: 4px;
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.detail-button-container {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.detail-button {
|
||||
width: 78px;
|
||||
height: 34px;
|
||||
line-height: 34px;
|
||||
text-align: center;
|
||||
border: 1px solid #ED655F;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.detail-button-reject {
|
||||
color: #ED655F;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.detail-button-agree {
|
||||
color: #fff;
|
||||
background: #7536D0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.reject-reason-container {
|
||||
margin-top: 30px;
|
||||
}
|
||||
.user-image{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 1px solid #e6e6e6;
|
||||
border-radius: 15px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
.user-nickname{
|
||||
color: #7536D0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
||||
<div id="applyDetail" v-cloak>
|
||||
<el-form :model="detailForm" label-width="126px">
|
||||
<div>
|
||||
<div class="shopro-form-group-title">
|
||||
<div class="shopro-form-group-title-line"></div>门店信息
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="门店名称:">
|
||||
{{detailForm.name}}
|
||||
</el-form-item>
|
||||
<el-form-item label="门店地址:">
|
||||
{{detailForm.province_name}}{{detailForm.city_name}}{{detailForm.area_name}}{{detailForm.address}}
|
||||
</el-form-item>
|
||||
<el-form-item label="门店图片:">
|
||||
<div class="table-image">
|
||||
<el-image :src="Fast.api.cdnurl(detailForm.images)" fit="contain">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="营业时间:">
|
||||
<span class="openweeks-item">{{detailForm.openweeks_text}}</span><span>{{detailForm.openhours}}</span>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="shopro-form-group-title">
|
||||
<div class="shopro-form-group-title-line"></div>联系人信息
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="联系人姓名:">
|
||||
{{detailForm.realname}}
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人电话:">
|
||||
{{detailForm.phone}}
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="shopro-form-group-title">
|
||||
<div class="shopro-form-group-title-line"></div>申请人信息
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="申请时间:">
|
||||
{{moment(detailForm.createtime*1000).format("YYYY-MM-DD HH:mm:ss")}}
|
||||
</el-form-item>
|
||||
<el-form-item label="提交次数:">
|
||||
{{detailForm.apply_num}}
|
||||
</el-form-item>
|
||||
<el-form-item label="申请用户:">
|
||||
<div class="display-flex" v-if="detailForm.user">
|
||||
<div class="user-image" v-if="detailForm.user.avatar">
|
||||
<el-image :src="Fast.api.cdnurl(detailForm.user.avatar)" fit="contain">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
<div class="ellipsis-item user-nickname">{{detailForm.user.nickname?detailForm.user.nickname:'-'}}</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div class="reject-reason-container" v-if="detailForm.status==-1 || detailForm.status==0">
|
||||
<el-form-item label="拒绝理由:">
|
||||
<div class="reject-reason-input">
|
||||
<el-input v-model="detailForm.status_msg" placeholder="点击拒绝时请先填写拒绝理由" size="small"></el-input>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<div class="detail-button-container display-flex" v-if="detailForm.status==0">
|
||||
<div class="detail-button detail-button-reject" @click="operation('reject')">拒绝</div>
|
||||
<div class="detail-button detail-button-agree" @click="operation('agree')">同意</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,132 @@
|
||||
<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input id="c-images" data-rule="required" class="form-control" size="50" name="row[images]" type="text" value="{$row.images|htmlentities}">
|
||||
<div class="input-group-addon no-border no-padding">
|
||||
<span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
<span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||
</div>
|
||||
<span class="msg-box n-right" for="c-images"></span>
|
||||
</div>
|
||||
<ul class="row list-inline plupload-preview" id="p-images"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Realname')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-realname" data-rule="required" class="form-control" name="row[realname]" type="text" value="{$row.realname|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Phone')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-phone" data-rule="required" class="form-control" name="row[phone]" type="text" value="{$row.phone|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Province_name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-province_name" data-rule="required" class="form-control" name="row[province_name]" type="text" value="{$row.province_name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('City_name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-city_name" data-rule="required" class="form-control" name="row[city_name]" type="text" value="{$row.city_name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Area_name')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-area_name" data-rule="required" class="form-control" name="row[area_name]" type="text" value="{$row.area_name|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Province_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-province_id" data-rule="required" data-source="province/index" class="form-control selectpage" name="row[province_id]" type="text" value="{$row.province_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('City_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-city_id" data-rule="required" data-source="city/index" class="form-control selectpage" name="row[city_id]" type="text" value="{$row.city_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Area_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-area_id" data-rule="required" data-source="area/index" class="form-control selectpage" name="row[area_id]" type="text" value="{$row.area_id|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-address" data-rule="required" class="form-control" name="row[address]" type="text" value="{$row.address|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Latitude')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-latitude" data-rule="required" class="form-control" step="0.000001" name="row[latitude]" type="number" value="{$row.latitude|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Longitude')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-longitude" data-rule="required" class="form-control" step="0.000001" name="row[longitude]" type="number" value="{$row.longitude|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Openhours')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-openhours" data-rule="required" class="form-control" name="row[openhours]" type="text" value="{$row.openhours|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Openweeks')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<select id="c-openweeks" data-rule="required" class="form-control selectpicker" multiple="" name="row[openweeks][]">
|
||||
{foreach name="openweeksList" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$row.openweeks"}selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
||||
<div class="radio">
|
||||
{foreach name="statusList" item="vo"}
|
||||
<label for="row[status]-{$key}"><input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="$row.status"}checked{/in} /> {$vo}</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status_msg')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-status_msg" class="form-control" name="row[status_msg]" type="text" value="{$row.status_msg|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,292 @@
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
|
||||
<style>
|
||||
#applyIndex {
|
||||
color: #444;
|
||||
background: #fff;
|
||||
padding-bottom: 30px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.shopro-reset-button {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.reject-reason-item {
|
||||
width: 140px;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.shopro-edit-cancel {
|
||||
color: #848089;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
body .table-image {
|
||||
border-radius: 15px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #e6e6e6;
|
||||
}
|
||||
|
||||
.shopro-refresh-button {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.agent-apply-item-tip {
|
||||
font-size: 12px;
|
||||
line-height: 12px;
|
||||
color: #58575A;
|
||||
margin-bottom: 14px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.agent-apply-item {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.color-999 {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.popover-container .table-image-identity {
|
||||
width: 100px;
|
||||
height: 60px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.theme-cursor,
|
||||
.reject-cursor,
|
||||
.agree-cursor {
|
||||
color: #6E3DC8;
|
||||
cursor: pointer;
|
||||
}
|
||||
.reject-cursor{
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.apply-status--1,
|
||||
.reject-cursor {
|
||||
color: #ED655F;
|
||||
}
|
||||
.apply-status-0{
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.agree-cursor {
|
||||
color: #0ACE97;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.popover-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.reject-reason-input {
|
||||
width: 140px;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.reject-reason-define,
|
||||
.reject-reason-cancel {
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.reject-reason-define {
|
||||
color: #7438D5;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.reject-reason-cancel {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
||||
<div id="applyIndex" v-cloak v-loading="isAjax">
|
||||
<div class="shopro-tabs-container">
|
||||
<el-tabs v-model="searchForm.status" @tab-click="tabshandleClick">
|
||||
<el-tab-pane v-for="tabs in tabsList" :label="tabs.label" :name="tabs.name"></el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div class="shopro-screen-container">
|
||||
<div class="shopro-button shopro-refresh-button" @click="getListData">
|
||||
<i class="el-icon-refresh"></i>
|
||||
</div>
|
||||
<div class="display-flex shopro-screen-item shopro-screen-item-vague">
|
||||
<div class="shopro-screen-tip">门店名称</div>
|
||||
<div class="shopro-screen-condition">
|
||||
<el-input placeholder="请输入门店名称" v-model="searchForm.name" size="small">
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="display-flex shopro-screen-item shopro-screen-item-vague">
|
||||
<div class="shopro-screen-tip">联系人</div>
|
||||
<div class="shopro-screen-condition">
|
||||
<el-input placeholder="请输入联系人" v-model="searchForm.realname" size="small">
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="display-flex shopro-screen-item shopro-screen-item-vague">
|
||||
<div class="shopro-screen-tip">联系电话</div>
|
||||
<div class="shopro-screen-condition">
|
||||
<el-input placeholder="请输入联系电话" v-model="searchForm.phone" size="small">
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="display-flex shopro-screen-item-button">
|
||||
<div class="shopro-button shopro-reset-button" @click="screenEmpty">重置</div>
|
||||
<div class="shopro-button shopro-screen-button" @click="getListData">筛选</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shopro-table-container" v-loading="isAjaxtable">
|
||||
<el-table :data="listData" border stripe :cell-class-name="tableCellClassName"
|
||||
:header-cell-class-name="tableCellClassName">
|
||||
<!-- <el-table-column label="ID" prop="id" width="70">
|
||||
</el-table-column> -->
|
||||
<el-table-column label="门店信息" width="360">
|
||||
<template slot-scope="scope">
|
||||
<div class="display-flex">
|
||||
<div class="table-image">
|
||||
<el-image :src="Fast.api.cdnurl(scope.row.images)" fit="contain">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
<div class="ellipsis-item">{{scope.row.name?scope.row.name:'-'}}</div>
|
||||
</div>
|
||||
<div v-else>-</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系人" width="80">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
<div class="ellipsis-item" v-if="scope.row.realname">{{scope.row.realname}}</div>
|
||||
<div v-else>-</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系电话" width="120">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.phone">{{scope.row.phone}}</div>
|
||||
<div v-else>-</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="详细地址" min-width="300">
|
||||
<template slot-scope="scope">
|
||||
<div class="display-flex">
|
||||
<div class="ellipsis-item">
|
||||
{{scope.row.province_name}}{{scope.row.city_name}}{{scope.row.area_name}}{{scope.row.address}}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="营业时间" width="120">
|
||||
<template slot-scope="scope">
|
||||
<div>{{scope.row.openhours}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="营业天数" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>{{scope.row.openweeks}}</div>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="提交次数" width="80">
|
||||
<template slot-scope="scope">
|
||||
<div class="display-flex">
|
||||
{{scope.row.apply_num}}次
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" width="80">
|
||||
<template slot-scope="scope">
|
||||
<div class="display-flex">
|
||||
<span v-if="scope.row.status==1" class="display-flex">
|
||||
<span class="shopro-status-dot shopro-status-normal-dot"></span>
|
||||
<span class="shopro-status-normal">{{scope.row.status_text}}</span>
|
||||
</span>
|
||||
<span v-else-if="scope.row.status==-1" class="display-flex">
|
||||
<span class="shopro-status-dot shopro-status-nonormal-dot"></span>
|
||||
<span class="shopro-status-nonormal">{{scope.row.status_text}}</span>
|
||||
</span>
|
||||
<span v-else-if="scope.row.status==0" class="display-flex">
|
||||
<span class="shopro-status-dot shopro-status-default-dot"></span>
|
||||
<span class="shopro-status-default">{{scope.row.status_text}}</span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="申请用户" width="160">
|
||||
<template slot-scope="scope">
|
||||
<div class="display-flex" v-if="scope.row.user">
|
||||
<div class="table-image" v-if="scope.row.user.avatar">
|
||||
<el-image :src="Fast.api.cdnurl(scope.row.user.avatar)" fit="contain">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
</div>
|
||||
<div class="ellipsis-item">{{scope.row.user.nickname?scope.row.user.nickname:'-'}}</div>
|
||||
</div>
|
||||
<div v-else>-</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="申请时间" width="160">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
{{moment(scope.row.createtime*1000).format("YYYY-MM-DD HH:mm:ss")}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="更新时间" width="160">
|
||||
<template slot-scope="scope">
|
||||
<div>
|
||||
{{moment(scope.row.updatetime*1000).format("YYYY-MM-DD HH:mm:ss")}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column fixed="right" label="操作" min-width="140">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.status==0" class="agree-cursor" @click="operation('agree',scope.row.id)">
|
||||
同意
|
||||
</span>
|
||||
<el-popover placement="bottom" trigger="hover" :ref="'refNamePopover'+scope.$index">
|
||||
<div class="popover-container">
|
||||
<div class="reject-reason-input">
|
||||
<el-input v-model="rejectReason" placeholder="请输入拒绝理由" size="small"></el-input>
|
||||
</div>
|
||||
<div class="reject-reason-define" @click="operation('reject',scope.row.id,scope.$index)">确定</div>
|
||||
<div class="reject-reason-cancel" @click="operation('cancel',scope.row.id,scope.$index)">取消</div>
|
||||
</div>
|
||||
<span slot="reference" v-if="scope.row.status==0" class="reject-cursor">
|
||||
拒绝
|
||||
</span>
|
||||
</el-popover>
|
||||
<span class="theme-cursor" @click="operation('view',scope.row.id)">
|
||||
查看
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="shopro-pagination-container">
|
||||
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
|
||||
:page-sizes="[10, 20, 30, 40]" :page-size="limit" layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="totalPage">
|
||||
</el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,267 @@
|
||||
<style type="text/css">
|
||||
#dashboardIndex {
|
||||
background: #fff;
|
||||
padding: 0 0 20px 20px;
|
||||
font-size: 12px;
|
||||
color: #595959;
|
||||
}
|
||||
|
||||
.displf-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.el-date-editor--datetimerange.el-input,
|
||||
.el-date-editor--datetimerange.el-input__inner {
|
||||
width: 330px !important;
|
||||
}
|
||||
|
||||
.el-dropdown {
|
||||
width: 78px;
|
||||
height: 30px;
|
||||
border: 1px solid #e6e6e6;
|
||||
border-radius: 4px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
color: #595959 !important;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.fa-angle-down {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
/* .el-icon-arrow-right,
|
||||
.el-range__icon {
|
||||
display: none !important;
|
||||
} */
|
||||
|
||||
.dashboard-header {
|
||||
justify-content: space-between;
|
||||
height: 50px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.chart-container {
|
||||
margin: 0 20px 0 0;
|
||||
padding-top: 16px;
|
||||
width: auto;
|
||||
box-shadow: 0px 2px 10px rgba(29, 3, 72, 0.1);
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.chart-title-position {
|
||||
position: relative;
|
||||
justify-content: space-between;
|
||||
width: auto;
|
||||
padding: 0 40px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.chart-title-tip-image {
|
||||
width: 16px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
.dashboard-header-title {
|
||||
color: #666;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.condition-show-container {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.condition-show-row {
|
||||
padding: 20px 20px 0 0;
|
||||
}
|
||||
|
||||
.condition-show-item {
|
||||
background: #fff;
|
||||
padding: 24px 24px 28px;
|
||||
border-radius: 10px;
|
||||
position: relative;
|
||||
height: 120px;
|
||||
color: #626066;
|
||||
border: 3px solid;
|
||||
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
|
||||
|
||||
}
|
||||
|
||||
.chart-title-tip-item {
|
||||
margin-right: 16px;
|
||||
}
|
||||
|
||||
.condition-show-tip {
|
||||
justify-content: space-between;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.condition-show-dot {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-right: 8px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.condition-show-title {
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.condition-show-msg {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.condition-show-msg-num {
|
||||
font-weight: 500;
|
||||
font-size: 36px;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.condition-show-msg-unit {
|
||||
font-weight: 500;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.chart-refresh-button {
|
||||
margin-right: 20px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
color: #8C8C8C;
|
||||
}
|
||||
|
||||
#antvContainer {
|
||||
padding: 10px 20px 20px 20px;
|
||||
}
|
||||
|
||||
.dashboard-header-select {
|
||||
width: 156px;
|
||||
}
|
||||
|
||||
.dashboard-header-select .el-input__inner {
|
||||
font-size: 12px;
|
||||
color: #595959;
|
||||
}
|
||||
|
||||
.el-select-dropdown__item.selected {
|
||||
color: #753ECD !important;
|
||||
}
|
||||
|
||||
.main-chart-tip-con {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
margin-top: -20px;
|
||||
margin-left: -60px;
|
||||
}
|
||||
|
||||
.condition-show-detail {
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.condition-show-detail-icon {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 750px) {
|
||||
.el-dropdown {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.chart-title-position {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.picker-hide {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
||||
<div id="dashboardIndex" v-cloak v-loading="allAjax">
|
||||
<div class="dashboard-header displf-flex">
|
||||
<div class="dashboard-header-title">门店统计</div>
|
||||
<div class="dashboard-header-select" v-if="storeSelectList.length>0">
|
||||
<el-select v-model="storeSelected" size="small" filterable
|
||||
placeholder="请选择门店" :filter-method="dataFilter" @change="getDataInfo">
|
||||
<el-option v-for="item in storeSelectList" :key="item.id" :label="item.name" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-container">
|
||||
<div class="chart-title-position displf-flex">
|
||||
<div class="chart-title-refresh displf-flex">
|
||||
<div class="chart-refresh-button" @click="getDataInfo">
|
||||
<i class="el-icon-refresh-right"></i>
|
||||
</div>
|
||||
<div class="chart-title-tip displf-flex">
|
||||
<div class="chart-title-tip-item" v-for="item in selectInputs" v-if="item.checked" @change="getDataInfo">
|
||||
<img class="chart-title-tip-image"
|
||||
:src="'/assets/addons/shopro/img/store/dashboard/'+item.id+'.png'">
|
||||
<span class="main-chart-tip-msg">{{item.title}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-position-right">
|
||||
<el-dropdown size="small">
|
||||
<span class="el-dropdown-link">
|
||||
{{dropdownName}}<i class="fa fa-angle-down"></i>
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item v-for="(item,index) in dropdownList" @click.native="changeTime(index)">
|
||||
{{item.name}}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
<el-date-picker class="picker-hide" v-model="searchTime" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss" size="small" format="yyyy-MM-dd HH:mm:ss"
|
||||
range-separator="-" start-placeholder="开始日期" align="center" @change="getDataInfo"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<el-row>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="main-1">
|
||||
<div id="antvContainer"></div>
|
||||
<div v-if="selectInputs.length==0" class="main-chart-tip-con">请选择查看数据</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="condition-show-container">
|
||||
<el-row>
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="8" class="condition-show-row"
|
||||
v-for="(item,index) in dataList">
|
||||
<div class="condition-show-item" @click="selectLine(index)"
|
||||
:style="{'borderColor': item.checked?item.color:'#fff',background:item.checked?item.back:''}">
|
||||
<div class="condition-show-tip displf-flex">
|
||||
<div class="condition-show-tip-left displf-flex">
|
||||
<div class="condition-show-dot" :style="{background:item.color}"></div>
|
||||
<div class="condition-show-title">{{item.title}}</div>
|
||||
</div>
|
||||
<div v-if="item.id=='payed' || item.id=='nosend' || item.id=='noget'|| item.id=='aftersale' || item.id=='refund'" class="condition-show-detail" :style="{color:item.color}" @click.stop="goDetail(item.id)">
|
||||
详情<i class="el-icon-arrow-right condition-show-detail-icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="condition-show-msg">
|
||||
<span class="condition-show-msg-num">{{item.num}}</span>
|
||||
<span class="condition-show-msg-unit">{{item.unit}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,436 @@
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
||||
<style>
|
||||
#storeDetail {
|
||||
background: #fff;
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
height: calc(100vh - 66px);
|
||||
color: #666;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.btn-common {
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
line-height: 30px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.display-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.el-radio__input.is-checked+.el-radio__label,
|
||||
.el-checkbox__input.is-checked+.el-checkbox__label {
|
||||
color: #7438D5;
|
||||
}
|
||||
|
||||
.el-radio__input.is-checked .el-radio__inner,
|
||||
.el-checkbox__input.is-checked .el-checkbox__inner,
|
||||
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
||||
background: #7438D5;
|
||||
border-color: #7438D5;
|
||||
}
|
||||
|
||||
.el-radio {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
label {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.el-cascader {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
color: #444;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.form-bodys {
|
||||
height: calc(100vh - 100px);
|
||||
overflow-y: auto;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.form-bodys::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
.form-bodys::-webkit-scrollbar-thumb {
|
||||
width: 6px;
|
||||
background: #e6e6e6;
|
||||
height: 20px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.form-custom-title {
|
||||
width: 90px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-right: 12px;
|
||||
text-align: right;
|
||||
color: #444;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.form-map {
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
border: 1px solid #DCDFE6;
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.form-custom-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.form-custom-body {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.form-custom-container-item {
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#mapArea {
|
||||
height: 380px
|
||||
}
|
||||
|
||||
.form-tip {
|
||||
color: #999;
|
||||
margin-left: 24px;
|
||||
}
|
||||
|
||||
.page-footer {
|
||||
padding: 20px 10px 0;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.footer-btn-1 {
|
||||
color: #7438D5;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.footer-btn-2 {
|
||||
width: 90px;
|
||||
height: 36px;
|
||||
background: #7438D5;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
color: #fff;
|
||||
line-height: 36px;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.el-input-group__append,
|
||||
.el-input-group__prepend {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.user-container {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.user-container .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.user-container .el-select .el-select__input,
|
||||
.user-container .el-select .el-select__input:focus {
|
||||
border: none !important;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected {
|
||||
color: #7438D5;
|
||||
}
|
||||
|
||||
.radius-container {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.edit-area-btn {
|
||||
color: #7438D5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pagination {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.el-pagination__sizes {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.text-normal {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.el-pagination__jump {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.add-img {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border: 1px dashed #E6E6E6;
|
||||
border-radius: 4px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.goods-images {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 4px;
|
||||
position: relative;
|
||||
border: 1px solid #7438D5;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.label-auto {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.del-image-btn {
|
||||
position: absolute;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
background: #7438D5;
|
||||
color: #fff;
|
||||
top: -7px;
|
||||
right: -7px;
|
||||
}
|
||||
|
||||
.image-slot {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/Sortable.min.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vuedraggable.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
||||
<script type="text/javascript">
|
||||
window._AMapSecurityConfig = {
|
||||
securityJsCode: "{notempty name='amap.jscode'}{$amap['jscode']}{/notempty}",
|
||||
}
|
||||
</script>
|
||||
<script
|
||||
src="https://webapi.amap.com/maps?v=1.4.15&key={notempty name='amap.appkey'}{$amap['appkey']}{/notempty}&plugin=AMap.CircleEditor,AMap.Geocoder,AMap.Autocomplete,AMap.PlaceSearch">
|
||||
</script>
|
||||
|
||||
<div id="storeDetail" v-cloak>
|
||||
<div class="form-bodys">
|
||||
<el-form :model="storeForm" ref="storeForm" :rules="rules" label-width="114px" class="demo-storeForm">
|
||||
<el-form-item label="门店名称:" prop="name">
|
||||
<el-input v-model="storeForm.name" placeholder="请输入门店名称" size="medium"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店图片:" prop="images">
|
||||
<div class="display-flex" style="flex-wrap: wrap;">
|
||||
<div class="goods-image-box display-flex" v-if="timeData.images_arr">
|
||||
<draggable class="display-flex" :list="timeData.images_arr" v-bind="$attrs"
|
||||
:options="{animation:500}">
|
||||
<div class="goods-images" v-for="(it,index) in timeData.images_arr"
|
||||
@click="addImg(index,false)">
|
||||
<el-image class="label-auto" :src="Fast.api.cdnurl(it)" fit="cover">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
<div class="del-image-btn" @click.stop="delImg(index)">
|
||||
<img class="label-auto" src="/assets/addons/shopro/img/goods/close.png">
|
||||
</div>
|
||||
</div>
|
||||
</draggable>
|
||||
</div>
|
||||
<div class="add-img display-flex" @click="addImg(null,true)" style="margin-right: 30px;"
|
||||
v-if="9>isAddImage">
|
||||
<i class="el-icon-plus"></i>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人:" prop="realname">
|
||||
<el-input v-model="storeForm.realname" placeholder="请输入联系人" size="medium"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话:" prop="phone">
|
||||
<el-input v-model="storeForm.phone" placeholder="请输入联系电话" size="medium"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店地址:" prop="store_address">
|
||||
<div class="display-flex">
|
||||
<el-cascader v-model="storeForm.store_address" separator="-" :props="{value:'name'}"
|
||||
:options="areaOptions" @change="areaOptionsChange">
|
||||
</el-cascader>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店详细介绍:" prop="content">
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
<textarea id="c-content" class="form-control editor" rows="5"
|
||||
cols="50"></textarea>
|
||||
</form>
|
||||
</el-form-item>
|
||||
<el-form-item label="详细地址:" v-if="isAddress">
|
||||
<div class="display-flex">
|
||||
<el-input id="tipinput" placeholder="请输入详细地址信息" @input="detailAddressFilter"
|
||||
v-model="storeForm.address" size="medium"></el-input>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="添加管理员:" prop="user_ids" style="height: auto;">
|
||||
<div class="display-flex">
|
||||
<div class="user-container">
|
||||
<el-select style="position: relative;" v-model="storeForm.user_ids" multiple filterable
|
||||
size="medium" placeholder="" :filter-method="dataFilter">
|
||||
<el-option v-for="item in aboutUserOptions" :key="item.nickname" :label="item.nickname"
|
||||
:value="item.id">
|
||||
<div class="display-flex" style="justify-content: space-around;">
|
||||
<span>{{ item.id }}</span>
|
||||
<div style="width: 24px;">
|
||||
<img v-if="item.avatar" style="width:24px;height:24px;border-radius:50%;"
|
||||
:src="Fast.api.cdnurl(item.avatar)">
|
||||
</div>
|
||||
<div style="width: 80px;">{{ item.nickname }}</div>
|
||||
<div style="width: 90px;">
|
||||
<div style="width: 90px;" v-if="item.mobile">{{ item.mobile }}</div>
|
||||
<div style="width: 90px;text-align: center;" v-else>-</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-option>
|
||||
<div class="text-center"
|
||||
style="position: sticky;background: #fff;height:28px;top:0;z-index:1">
|
||||
<div class="text-normal display-flex" style="justify-content: center;">
|
||||
<el-pagination class="pagination" :page-sizes="[6]" :current-page="currentPage"
|
||||
:total="totalPage" layout="total, sizes, prev, pager,next, jumper"
|
||||
pager-count="5" @size-change.stop="pageSizeChange"
|
||||
@current-change="pageCurrentChange" />
|
||||
</el-pagination>
|
||||
<div style="cursor: pointer;color: #7438D5;margin-left: 8px;" @click="getUser">跳转
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-tip">在关联用户时请务必成为贤鼎商城用户</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="支持配送方式:" prop="express_type" v-if="expressData && storeForm.express_type">
|
||||
<div class="display-flex">
|
||||
<el-checkbox-group v-model="storeForm.express_type" @change="checkChange">
|
||||
<el-checkbox v-for="item in expressData" :label="item.id" :key="item.id">{{item.name}}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="配送费用:" prop="delivery_fee">
|
||||
<div class="display-flex">
|
||||
<el-input placeholder="商家配送费用"
|
||||
v-model="storeForm.delivery_fee" size="medium"></el-input>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div v-if="storeForm.express_type && storeForm.express_type.indexOf('store')!=-1">
|
||||
<el-form-item label="服务范围:" prop="service_type">
|
||||
<div class="display-flex" style="height: 100%;">
|
||||
<div>
|
||||
<el-radio-group v-model="storeForm.service_type" @change="radioChange">
|
||||
<el-radio label="radius">按服务半径</el-radio>
|
||||
<el-radio label="area">按行政地区</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div class="form-tip">(收货地址在配送范围之外的买家将不可见)</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务半径:" prop="radius" v-if="storeForm.service_type=='radius'">
|
||||
<div class="display-flex">
|
||||
<div class="radius-container">
|
||||
<el-input v-enter-number type="number" placeholder="请输入服务半径"
|
||||
v-model="storeForm.service_radius" size="medium" min="0">
|
||||
<template slot="append">米</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="行政地区:" prop="radius" v-if="storeForm.service_type=='area'">
|
||||
<div class="display-flex">
|
||||
<div v-if="storeForm.area_text" style="margin-right: 20px;flex: 1;">{{storeForm.area_text}}
|
||||
</div>
|
||||
<div class="edit-area-btn" @click="editArea()">
|
||||
编辑地区
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label="营业时间:" prop="openhours">
|
||||
<div class="display-flex">
|
||||
<el-time-picker size="small" value-format="HH:mm" format="HH:mm" is-range @change="changeTime"
|
||||
v-model="timeData.openhours_arr" range-separator="至" start-placeholder="开始时间"
|
||||
end-placeholder="结束时间" placeholder="选择时间范围">
|
||||
</el-time-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="openweeks">
|
||||
<div class="display-flex">
|
||||
<el-checkbox-group v-model="timeData.openweeks_arr" @change="changeWeek">
|
||||
<el-checkbox :label="1">周一</el-checkbox>
|
||||
<el-checkbox :label="2">周二</el-checkbox>
|
||||
<el-checkbox :label="3">周三</el-checkbox>
|
||||
<el-checkbox :label="4">周四</el-checkbox>
|
||||
<el-checkbox :label="5">周五</el-checkbox>
|
||||
<el-checkbox :label="6">周六</el-checkbox>
|
||||
<el-checkbox :label="7">周日</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店状态:" prop="status">
|
||||
<div class="display-flex" style="height: 40px;">
|
||||
<el-switch v-model="storeForm.status" active-value="1" inactive-value="0" active-color="#7438D5"
|
||||
inactive-color="#eee">
|
||||
</el-switch>
|
||||
<div style="margin-left: 20px;">
|
||||
{{storeForm.status==1?'启用':'禁用'}}
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div class="form-custom-container">
|
||||
<div class="form-custom-title">详细地址:</div>
|
||||
<div class="form-custom-body">
|
||||
<div class="form-map">
|
||||
<div id="mapArea"></div>
|
||||
<div
|
||||
style="position: absolute;top: 30px;right: 30px;background: #fff;padding: 10px;border-radius: 4px;">
|
||||
经纬度{{lnglat}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="page-footer display-flex">
|
||||
<div @click="storeSub" class="btn-common footer-btn-1">取消</div>
|
||||
<div @click="storeSub('yes','storeForm')" class="btn-common footer-btn-2">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,437 @@
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
||||
<style>
|
||||
#storeDetail {
|
||||
background: #fff;
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
height: calc(100vh - 66px);
|
||||
color: #666;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.btn-common {
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
line-height: 30px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.display-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.el-radio__input.is-checked+.el-radio__label,
|
||||
.el-checkbox__input.is-checked+.el-checkbox__label {
|
||||
color: #7438D5;
|
||||
}
|
||||
|
||||
.el-radio__input.is-checked .el-radio__inner,
|
||||
.el-checkbox__input.is-checked .el-checkbox__inner,
|
||||
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
||||
background: #7438D5;
|
||||
border-color: #7438D5;
|
||||
}
|
||||
|
||||
.el-radio {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
label {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.el-cascader {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
color: #444;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.form-bodys {
|
||||
height: calc(100vh - 100px);
|
||||
overflow-y: auto;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.form-bodys::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
.form-bodys::-webkit-scrollbar-thumb {
|
||||
width: 6px;
|
||||
background: #e6e6e6;
|
||||
height: 20px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.form-custom-title {
|
||||
width: 90px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-right: 12px;
|
||||
text-align: right;
|
||||
color: #444;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.form-map {
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
border: 1px solid #DCDFE6;
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.form-custom-container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.form-custom-body {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.form-custom-container-item {
|
||||
margin-bottom: 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#mapArea {
|
||||
height: 380px
|
||||
}
|
||||
|
||||
.form-tip {
|
||||
color: #999;
|
||||
margin-left: 24px;
|
||||
}
|
||||
|
||||
.page-footer {
|
||||
padding: 20px 10px 0;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.footer-btn-1 {
|
||||
color: #7438D5;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.footer-btn-2 {
|
||||
width: 90px;
|
||||
height: 36px;
|
||||
background: #7438D5;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
color: #fff;
|
||||
line-height: 36px;
|
||||
border-radius: 18px;
|
||||
}
|
||||
|
||||
.el-input-group__append,
|
||||
.el-input-group__prepend {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.user-container {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.user-container .el-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.user-container .el-select .el-select__input,
|
||||
.user-container .el-select .el-select__input:focus {
|
||||
border: none !important;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected {
|
||||
color: #7438D5;
|
||||
}
|
||||
|
||||
.radius-container {
|
||||
width: 160px;
|
||||
}
|
||||
|
||||
.edit-area-btn {
|
||||
color: #7438D5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pagination {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.el-pagination__sizes {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.text-normal {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.el-pagination__jump {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.add-img {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border: 1px dashed #E6E6E6;
|
||||
border-radius: 4px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.goods-images {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 4px;
|
||||
position: relative;
|
||||
border: 1px solid #7438D5;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.label-auto {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.del-image-btn {
|
||||
position: absolute;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
background: #7438D5;
|
||||
color: #fff;
|
||||
top: -7px;
|
||||
right: -7px;
|
||||
}
|
||||
|
||||
.image-slot {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/Sortable.min.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vuedraggable.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
||||
<script type="text/javascript">
|
||||
window._AMapSecurityConfig = {
|
||||
securityJsCode: "{notempty name='amap.jscode'}{$amap['jscode']}{/notempty}",
|
||||
}
|
||||
</script>
|
||||
<script
|
||||
src="https://webapi.amap.com/maps?v=1.4.15&key={notempty name='amap.appkey'}{$amap['appkey']}{/notempty}&plugin=AMap.CircleEditor,AMap.Geocoder,AMap.Autocomplete,AMap.PlaceSearch">
|
||||
</script>
|
||||
|
||||
<div id="storeDetail" v-cloak>
|
||||
<div class="form-bodys">
|
||||
<el-form :model="storeForm" ref="storeForm" :rules="rules" label-width="114px" class="demo-storeForm">
|
||||
<el-form-item label="门店名称:" prop="name">
|
||||
<el-input v-model="storeForm.name" placeholder="请输入门店名称" size="medium"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店图片:" prop="images">
|
||||
<div class="display-flex" style="flex-wrap: wrap;">
|
||||
<div class="goods-image-box display-flex" v-if="timeData.images_arr">
|
||||
<draggable class="display-flex" :list="timeData.images_arr" v-bind="$attrs"
|
||||
:options="{animation:500}">
|
||||
<div class="goods-images" v-for="(it,index) in timeData.images_arr"
|
||||
@click="addImg(index,false)">
|
||||
<el-image class="label-auto" :src="Fast.api.cdnurl(it)" fit="cover">
|
||||
<div slot="error" class="image-slot">
|
||||
<i class="el-icon-picture-outline"></i>
|
||||
</div>
|
||||
</el-image>
|
||||
<div class="del-image-btn" @click.stop="delImg(index)">
|
||||
<img class="label-auto" src="/assets/addons/shopro/img/goods/close.png">
|
||||
</div>
|
||||
</div>
|
||||
</draggable>
|
||||
</div>
|
||||
<div class="add-img display-flex" @click="addImg(null,true)" style="margin-right: 30px;"
|
||||
v-if="9>isAddImage">
|
||||
<i class="el-icon-plus"></i>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人:" prop="realname">
|
||||
<el-input v-model="storeForm.realname" placeholder="请输入联系人" size="medium"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话:" prop="phone">
|
||||
<el-input v-model="storeForm.phone" placeholder="请输入联系电话" size="medium"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店详细介绍:" prop="content">
|
||||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
<textarea id="c-content" class="form-control editor" rows="5"
|
||||
cols="50">{{storeForm.content}}</textarea>
|
||||
</form>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店地址:" prop="store_address">
|
||||
<div class="display-flex">
|
||||
<el-cascader v-model="storeForm.store_address" separator="-" :props="{value:'name'}"
|
||||
:options="areaOptions" @change="areaOptionsChange">
|
||||
</el-cascader>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="详细地址:" v-if="isAddress">
|
||||
<div class="display-flex">
|
||||
<el-input id="tipinput" placeholder="请输入详细地址信息" @input="detailAddressFilter"
|
||||
v-model="storeForm.address" size="medium"></el-input>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="添加管理员:" prop="user_ids" style="height: auto;">
|
||||
<div class="display-flex">
|
||||
<div class="user-container">
|
||||
<el-select style="position: relative;" v-model="storeForm.user_ids" multiple filterable
|
||||
size="medium" placeholder="" :filter-method="dataFilter" @visible-change="changeUser">
|
||||
<el-option v-for="item in aboutUserOptions" v-if="item" :key="item.id"
|
||||
:label="item.nickname" :value="item.id">
|
||||
<div class="display-flex" style="justify-content: space-around;">
|
||||
<span>{{ item.id }}</span>
|
||||
<div style="width: 24px;">
|
||||
<img v-if="item.avatar" style="width:24px;height:24px;border-radius:50%;"
|
||||
:src="Fast.api.cdnurl(item.avatar)">
|
||||
</div>
|
||||
<div style="width: 80px;">{{ item.nickname }}</div>
|
||||
<div style="width: 90px;">
|
||||
<div style="width: 90px;" v-if="item.mobile">{{ item.mobile }}</div>
|
||||
<div style="width: 90px;text-align: center;" v-else>-</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-option>
|
||||
<div class="text-center"
|
||||
style="position: sticky;background: #fff;height:28px;top:0;z-index:1">
|
||||
<div class="text-normal display-flex" style="justify-content: center;">
|
||||
<el-pagination class="pagination" :page-sizes="[6]" :current-page="currentPage"
|
||||
:total="totalPage" layout="total, sizes, prev, pager,next, jumper"
|
||||
pager-count="5" @size-change.stop="pageSizeChange"
|
||||
@current-change="pageCurrentChange" />
|
||||
</el-pagination>
|
||||
<div style="cursor: pointer;color: #7438D5;margin-left: 8px;" @click="getUser">确定
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-select>
|
||||
</div>
|
||||
<div class="form-tip">在关联用户时请务必成为Shopro用户</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="支持配送方式:" prop="express_type" v-if="expressData && storeForm.express_type">
|
||||
<div class="display-flex">
|
||||
<el-checkbox-group v-model="storeForm.express_type" @change="checkChange">
|
||||
<el-checkbox v-for="item in expressData" :label="item.id" :key="item.id">{{item.name}}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="配送费用:" prop="delivery_fee">
|
||||
<div class="display-flex">
|
||||
<el-input placeholder="商家配送费用"
|
||||
v-model="storeForm.delivery_fee" size="medium"></el-input>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div v-if="storeForm.express_type && storeForm.express_type.indexOf('store')!=-1">
|
||||
<el-form-item label="服务范围:" prop="service_type">
|
||||
<div class="display-flex" style="height: 100%;">
|
||||
<div>
|
||||
<el-radio-group v-model="storeForm.service_type" @change="radioChange">
|
||||
<el-radio label="radius">按服务半径</el-radio>
|
||||
<el-radio label="area">按行政地区</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div class="form-tip">(收货地址在配送范围之外的买家将不可见)</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务半径:" prop="radius" v-if="storeForm.service_type=='radius'">
|
||||
<div class="display-flex">
|
||||
<div class="radius-container">
|
||||
<el-input v-enter-number type="number" placeholder="请输入服务半径"
|
||||
v-model="storeForm.service_radius" size="medium" min="0">
|
||||
<template slot="append">米</template>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="行政地区:" prop="radius" v-if="storeForm.service_type=='area'">
|
||||
<div class="display-flex">
|
||||
<!-- <div class="form-tip" style="margin-left: 0;margin-right: 20px;">可配送区域</div> -->
|
||||
<div v-if="storeForm.area_text" style="margin-right: 20px;flex: 1;">{{storeForm.area_text}}
|
||||
</div>
|
||||
<div class="edit-area-btn" @click="editArea()">
|
||||
编辑地区
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label="营业时间:" prop="openhours">
|
||||
<div class="display-flex">
|
||||
<el-time-picker size="small" value-format="HH:mm" format="HH:mm" is-range @change="changeTime"
|
||||
v-model="timeData.openhours_arr" range-separator="至" start-placeholder="开始时间"
|
||||
end-placeholder="结束时间" placeholder="选择时间范围">
|
||||
</el-time-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="openweeks">
|
||||
<div class="display-flex">
|
||||
<el-checkbox-group v-model="timeData.openweeks_arr" @change="changeWeek">
|
||||
<el-checkbox label="1">周一</el-checkbox>
|
||||
<el-checkbox label="2">周二</el-checkbox>
|
||||
<el-checkbox label="3">周三</el-checkbox>
|
||||
<el-checkbox label="4">周四</el-checkbox>
|
||||
<el-checkbox label="5">周五</el-checkbox>
|
||||
<el-checkbox label="6">周六</el-checkbox>
|
||||
<el-checkbox label="7">周日</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="门店状态:" prop="status">
|
||||
<div class="display-flex" style="height: 40px;">
|
||||
<el-switch v-model="storeForm.status" active-value="1" inactive-value="0" active-color="#7438D5"
|
||||
inactive-color="#eee">
|
||||
</el-switch>
|
||||
<div style="margin-left: 20px;">
|
||||
{{storeForm.status==1?'启用':'禁用'}}
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div class="form-custom-container">
|
||||
<div class="form-custom-title">详细地址:</div>
|
||||
<div class="form-custom-body">
|
||||
<div class="form-map">
|
||||
<div id="mapArea"></div>
|
||||
<div
|
||||
style="position: absolute;top: 30px;right: 30px;background: #fff;padding: 10px;border-radius: 4px;">
|
||||
经纬度{{lnglat}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="page-footer display-flex">
|
||||
<div @click="storeSub" class="btn-common footer-btn-1">取消</div>
|
||||
<div @click="storeSub('yes','storeForm')" class="btn-common footer-btn-2">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,327 @@
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
||||
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/common.css">
|
||||
<style>
|
||||
#storeIndex {
|
||||
padding: 0 20px 30px;
|
||||
background: #fff;
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
color: #444;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.display-flex {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.el-pagination,
|
||||
.el-pagination__total,
|
||||
.el-input__inner,
|
||||
.el-pagination__jump {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.cursor-pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-common {
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
border-radius: 4px;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.el-input__inner,
|
||||
.el-input__icon {
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.btn-container {
|
||||
margin-bottom: 14px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.create-btn {
|
||||
background: #7536D0;
|
||||
color: #fff;
|
||||
width: 100px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.create-btn i {
|
||||
font-size: 14px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.store-title {
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.store-titles {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.search-container {
|
||||
width: 236px;
|
||||
}
|
||||
|
||||
.el-table {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.el-table th {
|
||||
background: #F9F9F9;
|
||||
padding: 7px 0;
|
||||
}
|
||||
|
||||
.el-table th>.cell,
|
||||
.el-table .cell {
|
||||
color: #444;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.close-status,
|
||||
.open-status {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.close-status {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.open-status,
|
||||
.edit-btn-text {
|
||||
color: #7438D5;
|
||||
}
|
||||
|
||||
.close-status,
|
||||
.delete-btn-text {
|
||||
color: #FF5959;
|
||||
}
|
||||
|
||||
.close-btn-text {
|
||||
margin: 0 20px;
|
||||
}
|
||||
|
||||
.pagination-container {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.el-pager li.active,
|
||||
.el-pager li:hover,
|
||||
.el-select-dropdown__item.selected {
|
||||
color: #7438D5;
|
||||
}
|
||||
|
||||
.el-table__fixed-right::before,
|
||||
.el-table__fixed::before {
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.el-table td,
|
||||
.el-table th {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.el-table th .cell,
|
||||
.el-table td .cell {
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
line-height: 20px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.el-table th .cell {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.el-table .bg-color {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
.cell-left .cell {
|
||||
justify-content: flex-start !important;
|
||||
}
|
||||
|
||||
.cell>div {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.cell>.ellipsis-item-1 {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 1;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.el-button--primary,
|
||||
.el-button--primary:focus,
|
||||
.el-button--primary:hover {
|
||||
background: #7536D0;
|
||||
border-color: #7536D0;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.recycle-btn {
|
||||
width: 88px;
|
||||
color: #444;
|
||||
border: #444 1px solid;
|
||||
height: 32px;
|
||||
border-radius: 4px;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.recycle-btn i {
|
||||
margin-right: 6px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.opt-container>div {
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
.store-type {
|
||||
width: 80px;
|
||||
height: 30px;
|
||||
background: #F1EBFB;
|
||||
border: 1px solid #D5C3F2;
|
||||
border-radius: 4px;
|
||||
color: #7438D5;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.selfetch-type {
|
||||
width: 80px;
|
||||
height: 30px;
|
||||
background: #E1F7F2;
|
||||
border: 1px solid #A2E3D4;
|
||||
color: #0AB58F;
|
||||
border-radius: 4px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
[v-cloak] {
|
||||
display: none
|
||||
}
|
||||
</style>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
||||
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
||||
<div id="storeIndex" v-cloak v-loading="allAjax">
|
||||
<div class="store-title display-flex">
|
||||
<div class="store-titles">
|
||||
门店管理
|
||||
</div>
|
||||
<div class="search-container">
|
||||
<el-input v-model="searchKey" placeholder="请输入门店名称" suffix-icon="el-icon-search"></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-container">
|
||||
<div class="display-flex">
|
||||
<div class="custom-refresh display-flex-c" @click="getData">
|
||||
<i class="el-icon-refresh"></i>
|
||||
</div>{if condition = "$auth->check('shopro/store/store/add')"}
|
||||
<div class="btn-common create-btn" @click="operation('create',null)"><i class="el-icon-plus"></i>创建门店</div>
|
||||
{/if}
|
||||
</div>
|
||||
{if condition = "$auth->check('shopro/store/store/recyclebin')"}
|
||||
<div class="common-btn recycle-btn display-flex" @click="operation('recycle',null)">
|
||||
<i class="fa fa-recycle"></i>
|
||||
回收站
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div v-loading="tableAjax">
|
||||
<el-table :data="storeData" border style="width: 100%" :row-class-name="tableRowClassName"
|
||||
:cell-class-name="tableCellClassName" :header-cell-class-name="tableCellClassName"
|
||||
@row-dblclick="operation">
|
||||
<el-table-column prop="id" label="ID" width="60">
|
||||
</el-table-column>
|
||||
<el-table-column label="门店名称" min-width="180">
|
||||
<template slot-scope="scope">
|
||||
<div class="ellipsis-item-1">
|
||||
{{scope.row.name}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="门店地址" min-width="320">
|
||||
<template slot-scope="scope">
|
||||
<div class="ellipsis-item-1">
|
||||
{{scope.row.province_name}}{{scope.row.city_name}}{{scope.row.area_name}}{{scope.row.address}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="realname" label="联系人" width="100">
|
||||
</el-table-column>
|
||||
<el-table-column prop="phone" label="联系电话" width="120">
|
||||
</el-table-column>
|
||||
<el-table-column prop="openhours" label="营业时间" width="100">
|
||||
</el-table-column>
|
||||
<el-table-column prop="express_type" label="配送方式" width="200">
|
||||
<template slot-scope="scope">
|
||||
<div class="display-flex" style="justify-content: space-around;">
|
||||
<div v-if="scope.row.store==1" class="store-type display-flex">{{scope.row.store==1?'商家配送':''}}
|
||||
</div>
|
||||
<div v-if="scope.row.selfetch==1" class="selfetch-type display-flex">
|
||||
{{scope.row.selfetch==1?'到店/自提':''}}</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="状态" width="80">
|
||||
<template slot-scope="scope">
|
||||
<div :class="scope.row.status==1?'open-status':'close-status'">
|
||||
{{scope.row.status_text}}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="操作" min-width="160" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<div class="opt-container display-flex">
|
||||
<div class="cursor-pointer" :class="scope.row.status==1?'open-status':'close-status'"
|
||||
@click="operation('status',scope.row.id,scope.row.status)">
|
||||
{{scope.row.status_text}}
|
||||
</div>
|
||||
{if condition = "$auth->check('shopro/store/store/edit')"}
|
||||
<div class="edit-btn-text cursor-pointer" @click="operation('edit',scope.row.id)">
|
||||
编辑
|
||||
</div>
|
||||
{/if}
|
||||
<!-- {if condition = "$auth->check('shopro/store/store/add')"}
|
||||
<span class="close-btn-text cursor-pointer" @click="operation('close',scope.row.id)">
|
||||
关闭
|
||||
</span>
|
||||
{/if} -->
|
||||
{if condition = "$auth->check('shopro/store/store/del')"}
|
||||
<div class="delete-btn-text cursor-pointer" @click="operation('delete',scope.row.id)">
|
||||
删除
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="pagination-container">
|
||||
<el-pagination @size-change="pageSizeChange" @current-change="pageCurrentChange" :current-page="currentPage"
|
||||
:page-sizes="[10, 20, 30, 40]" :page-size="10" layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="totalPage">
|
||||
</el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,25 @@
|
||||
<div class="panel panel-default panel-intro">
|
||||
{:build_heading()}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
{:build_toolbar('refresh')}
|
||||
<a class="btn btn-info btn-multi btn-disabled disabled {:$auth->check('shopro/dispatch/store/restore')?'':'hide'}" href="javascript:;" data-url="shopro/dispatch/store/restore" data-action="restore"><i class="fa fa-rotate-left"></i> {:__('Restore')}</a>
|
||||
<a class="btn btn-danger btn-multi btn-disabled disabled {:$auth->check('shopro/dispatch/store/destroy')?'':'hide'}" href="javascript:;" data-url="shopro/dispatch/store/destroy" data-action="destroy"><i class="fa fa-times"></i> {:__('Destroy')}</a>
|
||||
<a class="btn btn-success btn-restoreall {:$auth->check('shopro/dispatch/store/restore')?'':'hide'}" href="javascript:;" data-url="shopro/dispatch/store/restore" title="{:__('Restore all')}"><i class="fa fa-rotate-left"></i> {:__('Restore all')}</a>
|
||||
<a class="btn btn-danger btn-destroyall {:$auth->check('shopro/dispatch/store/destroy')?'':'hide'}" href="javascript:;" data-url="shopro/dispatch/store/destroy" title="{:__('Destroy all')}"><i class="fa fa-times"></i> {:__('Destroy all')}</a>
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover"
|
||||
data-operate-restore="{:$auth->check('shopro/dispatch/store/restore')}"
|
||||
data-operate-destroy="{:$auth->check('shopro/dispatch/store/destroy')}"
|
||||
width="100%">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
在新工单中引用
屏蔽一个用户