Commit 2f692c82 authored by 邓学云's avatar 邓学云

11.29门店管理编辑获取到详情 图片上传等

parent e3f745fb
const homeUrl= 'http://localhost/hantengfei/newShopBack1/backend/web/v1/';
const homeUrl= 'http://localhost/dengxueyun/newshopBack/backend/web/v1/';
export default homeUrl
\ No newline at end of file
......@@ -63,6 +63,7 @@ export function deleteEvaluate (id) {
// 门店管理
// 获取门店列表
export function getStoreList (parameter) {
console.log(parameter)
return axios({
url: homeUrl+'branch/branches/branch-list',
method: 'get',
......@@ -71,13 +72,45 @@ export function getStoreList (parameter) {
}
// 加载省市区
export function loadAddress (parameter) {
console.log('省市区',parameter)
return axios({
url: homeUrl+'common/shop-transport-areas/area',
method: 'get',
params: parameter
})
}
// 获取门店详情
export function getStoreDetails (parameter) {
return axios({
url: homeUrl+'branch/branches/branch-detail',
method: 'get',
params: {GUID:parameter}
})
}
// 门店管理中获取服务类目
export function getStoreServiceList (parameter) {
return axios({
url: homeUrl+'branch/branches/branch-services',
method: 'get',
params: parameter
})
}
// 门店管理中获取配送类型
export function getStoreDeveliy (parameter) {
return axios({
url: homeUrl+'branch/branches/branch-transport-type',
method: 'get',
params: parameter
})
}
// 门店管理上传图片
export function uploadStorePicture (parameter) {
return axios({
url: homeUrl+'branch/branches/branch-img-upload',
method: 'post',
data: parameter
})
}
// 获取门店服务类目管理
export function getScategorymg(parameter) {
console.log(parameter)
......
......@@ -77,6 +77,13 @@ export const asyncRouterMap = [
component: () => import('@/views/storedc/storeManage'),
meta: { title: '门店管理', keepAlive: false, permission: ['table'] }
},
{
path: '/storedc/storeManage_details',
name: 'storeManage_details',
hidden: true,
component: () => import('@/views/storedc/details/storeManage_details'),
meta: { title: '门店管理编辑', keepAlive: false, permission: ['table'] }
},
{
path: '/storedc/dcManage',
name: 'dcManage',
......
......@@ -47,7 +47,8 @@ import {
Popconfirm,
message,
notification,
Cascader
Cascader,
Collapse
} from 'ant-design-vue'
// import VueCropper from 'vue-cropper'
......@@ -91,6 +92,7 @@ Vue.use(Popconfirm)
// Vue.use(VueCropper)
Vue.use(notification)
Vue.use(Cascader)
Vue.use(Collapse)
Vue.prototype.$confirm = Modal.confirm
Vue.prototype.$message = message
......
<template>
<a-card :body-style="{padding: '24px 32px'}" :bordered="false">
<a-form :form="form">
<!-- <a-collapse v-model="activeKey"> -->
<!-- <a-collapse-panel header="基础信息" key="1"> -->
<div>
<a-form-item
label="门店名称"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
disabled
v-decorator="[
'NAME'
]"
name="NAME" />
</a-form-item>
<a-form-item
label="门店编号"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
disabled
v-decorator="[
'CODE'
]"
name="CODE" />
</a-form-item>
<a-form-item
label="营业执照"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<div class="clearfix">
<a-upload
action="1"
:customRequest="customRequest"
:remove="handleRemove"
@handleChange="handleChange"
class="onlyPreview"
v-decorator="['LICENCE_IMAGE_PATH']"
:fileList="fileList"
listType="picture-card"
@preview="handlePreview"
>
<div v-if="fileList.length < 1">
<a-icon type="plus" />
<div class="ant-upload-text">上传</div>
</div>
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
<img alt="example" style="width: 100%" :src="previewImage" />
</a-modal>
</div>
</a-form-item>
<a-form-item
label="地址"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-select style="width:30%" placeholder="请选择省份" v-decorator="['RECIVER_PROVINCE',{normalize:checkAddress}]">
<a-select-option v-for="item in provinceData" :key="item.GUID">{{item.NAME}}</a-select-option>
</a-select>
<a-select style="width:30%" placeholder="请选择省城市" v-decorator="['RECIVER_CITY']">
<a-select-option v-for="item in cityData" :key="item.GUID">{{item.NAME}}</a-select-option>
</a-select>
<a-select style="width:30%" placeholder="请选择区域" v-decorator="['RECIVER_REGION']">
<a-select-option v-for="item in regionData" :key="item.GUID">{{item.NAME}}</a-select-option>
</a-select>
</a-form-item>
<a-form-item
label="详细地址"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
disabled
v-decorator="[
'ADDRESS'
]"
name="ADDRESS" />
</a-form-item>
<a-form-item
label="门店坐标"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<div id="components-button-demo-button-group">
<a-col :span="12">
<a-input-group compact>
<a-input style="width:50%" v-decorator="['LAT']" />
<a-button type="primary" style="width:20%">LAT</a-button>
</a-input-group>
</a-col>
<a-col :span="12">
<a-input-group compact>
<a-input style="width:50%" v-decorator="['LNG']" />
<a-button type="primary" style="width:20%">LNG</a-button>
</a-input-group>
</a-col>
</div>
</a-form-item>
<a-form-item
label="是否积分兑换门店"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_POINTS_SHOP',{valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="描述"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-textarea
disabled
v-decorator="[
'DESCRIPTION'
]"
name="DESCRIPTION"
placeholder="请输入描述"
></a-textarea>
</a-form-item>
</div>
<!-- </a-collapse-panel> -->
<!-- <a-collapse-panel header="拓展信息" key="2" :disabled="false"> -->
<div>
<a-form-item
label="门店简称"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
disabled
v-decorator="[
'BRANCH_NAME'
]"
name="BRANCH_NAME" />
</a-form-item>
<a-form-item
label="门店图片"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<div class="clearfix">
<a-upload
action="2"
:customRequest="customRequest"
:remove="handleRemoveBranch"
@handleChange="handleChangeBranch"
class="onlyPreview"
v-decorator="['BRANCH_IMAGE_PATH']"
:fileList="BranchfileList"
listType="picture-card"
@preview="handlePreview"
>
<div v-if="BranchfileList.length < 1">
<a-icon type="plus" />
<div class="ant-upload-text">上传</div>
</div>
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
<img alt="example" style="width: 100%" :src="previewImage" />
</a-modal>
</div>
</a-form-item>
<a-form-item
label="电话/手机号"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
disabled
v-decorator="[
'PHONE'
]"
name="PHONE" />
</a-form-item>
<a-form-item
label="联系人姓名"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
disabled
v-decorator="[
'CONTACT_NAME'
]"
name="CONTACT_NAME" />
</a-form-item>
<a-form-item
label="服务类目"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-select
mode="multiple"
:size="size"
placeholder='请选择服务类目'
v-decorator="['BRANCH_SERVICE_TYPE',{normalize:checkService}]"
>
<a-select-option v-for="item in details_serviceGroup" :key="item.GUID">
{{item.NAME}}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item
label="门店评分"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-input
v-decorator="[
'SCORE'
]"
name="SCORE" />
</a-form-item>
<a-form-item
label="是否医保"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_CARE',{valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="是否O2O门店"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_O2O',{valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="是否支持冷链配送"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_DELIVERY_CODECHAIN_GOODS',{valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="是否营业"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox v-decorator="['IS_SHELVE',{valuePropName:'checked',normalize:checkCheckbox}]"></a-checkbox>
</a-form-item>
<a-form-item
label="营业时间"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<!-- <a-range-picker v-decorator="['WORK_TIME',{normalize:checkDate}]" show-time /> -->
<a-col :span="3"></a-col>
<a-col :span="8">
<span>开始营业时间</span>
<a-time-picker v-decorator="['WORK_TIME_START',{normalize:checkDate}]" format="h:mm" />
</a-col>
<a-col :span="2"></a-col>
<a-col :span="8">
<span>结束营业时间</span>
<a-time-picker v-decorator="['WORK_TIME_END',{normalize:checkDate}]" format="h:mm" />
</a-col>
<a-col :span="3"></a-col>
</a-form-item>
<a-form-item
label="配送时间"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-col :span="3"></a-col>
<a-col :span="8">
<span>开始配送时间</span>
<a-time-picker v-decorator="['DELIVERY_TIME_START',{normalize:checkDate}]" format="h:mm" />
</a-col>
<a-col :span="2"></a-col>
<a-col :span="8">
<span>结束配送时间</span>
<a-time-picker v-decorator="['DELIVERY_TIME_END',{normalize:checkDate}]" format="h:mm" />
</a-col>
<a-col :span="3"></a-col>
</a-form-item>
<a-form-item
label="支持配送方式"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-checkbox-group v-decorator="['TRANSPORT_TYPE',{normalize:checkCheckArr}]">
<a-checkbox :span="4" v-for="(item,index) in details_develiyGroup" :key="index" :value="item.GUID">{{item.NAME}}</a-checkbox>
</a-checkbox-group>
</a-form-item>
<a-form-item
label="退货地址"
:labelCol="labelCol"
:wrapperCol="wrapperCol">
<a-textarea
disabled
v-decorator="[
'RETURN_ADDRESS'
]"
name="RETURN_ADDRESS"
placeholder="请输入退货地址"
></a-textarea>
</a-form-item>
</div>
<!-- </a-collapse-panel> -->
<!-- </a-collapse> -->
<a-form-item
:wrapperCol="{ span: 24 }"
style="text-align: center"
>
<!-- <a-button v-if='goId==1' @click.stop.prevent="handleSubmit" htmlType="submit" type="primary">提交</a-button> -->
<!-- <a-button v-else @click.stop.prevent="handleSubmit1()" htmlType="submit" type="primary">提交</a-button> -->
<a-button @click="goBack" style="margin-left: 8px">返回</a-button>
</a-form-item>
</a-form>
</a-card>
</template>
<script>
import moment from 'moment'
import { getStoreDetails,loadAddress,getStoreServiceList,getStoreDeveliy,uploadStorePicture } from '@/api/store'
export default {
name: 'storeManageDetails',
data() {
return {
labelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 12 }
},
size: 'default',
details_serviceGroup:[],//服务类目
details_develiyGroup:[],//配送类型
targetOption:null,
// 下拉选择
addressProvince:null,
addressCity:null,
addressRegion:null,
provinceData:[],
cityData:[],
regionData:[],
previewVisible: false,
previewImage: '',
fileList: [
],
BranchfileList:[
],
// removeIds:[],
activeKey:['1']
}
},
beforeCreate(){
this.form = this.$form.createForm(this)
},
mounted(){
this.loadMessage();
this.loadProvince();
},
methods: {
customRequest(files) {
var that=this;
const { file } = files;
const reader =new FileReader();
let imgData;
reader.addEventListener("load",e => {
const data=e.target.result;
const image=new Image();
image.addEventListener("load",() => {
const w=image.width;
const h=image.height;
})
image.src=data;
imgData=image.src;
})
reader.readAsDataURL(file)
const formData = new FormData();
formData.append('uploadFile',file)
uploadStorePicture(formData).then(res => {
// that.setState(() => ({ BranchfileList: [{ ...file },{ url,status:"done"}] }))
if(files.action==1){
this.fileList.push({
uid:'-1',
name:files.file.name,
status:'done',
url:imgData
})
}else{
this.BranchfileList.push({
uid:'-1',
name:files.file.name,
status:'done',
url:imgData
})
}
})
},
checkService(value){
if(value[0].SERVICE_TYPE_GUID){
let serviceArr=[];
value.forEach(item => {
serviceArr.push(item.SERVICE_TYPE_GUID)
})
return serviceArr
}else{
return value
}
},
checkDate(value){
// if(value || value!=null || value!=""){
return moment(value,"h:mm")
// }
},
checkCheckArr(value){
if(typeof(value)=='string'){
return value.split(',')
}else{
return value
}
},
goBack(){
this.$router.push({ path: "/storedc/storeManage" })
},
checkAddress(value){
// this.addressData.push(value,this.addressCity,this.addressRegion)
this.provinceData.forEach(item => {
if(item.GUID==value){
let giveParent={
PARENT_GUID: value
}
loadAddress(giveParent).then(res => {
res.data.forEach(item => {
if(item.GUID==this.addressCity){
let giveParent={
PARENT_GUID: item.GUID
}
loadAddress(giveParent).then(res => {
this.regionData=res.data
})
}
})
this.cityData=res.data
}).catch( err=> {
})
}
})
return value
},
// 加载省
loadProvince(){
loadAddress().then( res => {
this.provinceData=res.data;
}).catch( err=> {
})
},
handleRemoveBranch(file){
this.$confirm({
title: '提示',
content: '真的要删除吗 ?',
onOk: () => {
// this.removeIds.push(file.uid)
let index=this.BranchfileList.indexOf(file)
let newFileList=this.BranchfileList.slice()
newFileList.splice(index,1)
this.BranchfileList=newFileList
},
onCancel () {
}
})
},
handleRemove(file){
this.$confirm({
title: '提示',
content: '真的要删除吗 ?',
onOk: () => {
// this.removeIds.push(file.uid)
let index=this.fileList.indexOf(file)
let newFileList=this.fileList.slice()
newFileList.splice(index,1)
this.fileList=newFileList
},
onCancel () {
}
})
},
handleCancel() {
this.previewVisible = false
},
handlePreview(file) {
this.previewImage = file.url || file.thumbUrl
this.previewVisible = true
},
handleChange({ fileList }) {
this.fileList = fileList
},
handleChangeBranch({ fileList }) {
this.BranchfileList = fileList
},
beforeUpload(file) {
const isJPG =
file.type === 'image/jpeg' ||
file.type === 'image/jpg' ||
file.type === 'image/png' ||
file.type === 'image/bmp'
if (!isJPG) {
this.$message.error('请上传图片文件')
}
const isLt2M = file.size / 1024 < 400 && file.size / 1024 > 0
if (!isLt2M) {
this.$message.error('文件大小应在 0KB~200KB之间')
}
return isJPG && isLt2M
},
// 获取信息
loadMessage(){
getStoreServiceList().then(res => {
this.details_serviceGroup=res.data;
}).catch(err => {
})
getStoreDeveliy().then(res => {
this.details_develiyGroup=res.data;
}).catch(err => {
})
var id=this.$route.query.GUID;
getStoreDetails(id).then(res => {
this.$nextTick(() => {
this.addressProvince=res.RECIVER_PROVINCE;
this.addressCity=res.RECIVER_CITY;
this.addressRegion=resizeBy.RECIVER_REGION;
res.WORK_TIME_START=this.timeGet(res.WORK_TIME)[0]
res.WORK_TIME_END=this.timeGet(res.WORK_TIME)[1]
res.DELIVERY_TIME_START=this.timeGet(res.DELIVERY_TIME)[0]
res.DELIVERY_TIME_END=this.timeGet(res.DELIVERY_TIME)[1]
this.fileList.push({
uid:'-1',
name:'test.png',
status:'done',
url:res.LICENCE_IMAGE_PATH,
})
this.BranchfileList.push({
uid:'-1',
name:'test.png',
status:'done',
url:res.BRANCH_IMAGE_PATH,
})
this.form.setFieldsValue(res)
})
}).catch(err => {
})
},
// 事件处理
timeGet(value){
return value.split('-');
},
checkCheckbox(value){
if(Number(value)==1){
return true
}else{
return false
}
}
}
}
</script>
<style scoped>
.onlyPreview .anticon-delete{
display:none;
}
</style>
\ No newline at end of file
......@@ -165,7 +165,6 @@
:wrapperCol='wrapperCol'
>
<a-input
disabled
v-decorator="['BRANCH_NAME']"
name="BRANCH_NAME"
placeholder="请输入门店名称" />
......
......@@ -28,33 +28,9 @@
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="省市区">
<a-cascader changeOnSelect :fieldNames="addressFields" :options='addressOptions' :loadData="loadChildren" placeholder="请选择地址"></a-cascader>
</a-form-item>
</a-col>
<!-- <a-col :md="8" :sm="24">
<a-form-item label="省份">
<a-select v-model="queryParam.BINDCARD" placeholder="请选择">
<a-select-option value="0"></a-select-option>
<a-select-option value="1"></a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="城市">
<a-select v-model="queryParam.BINDCARD" placeholder="请选择">
<a-select-option value="0"></a-select-option>
<a-select-option value="1"></a-select-option>
</a-select>
<a-cascader :allowClear='allowClear' changeOnSelect :fieldNames="addressFields" :options='addressOptions' :loadData="loadChildren" placeholder="请选择地址" v-model="addressTest"></a-cascader>
</a-form-item>
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="县区">
<a-select v-model="queryParam.BINDCARD" placeholder="请选择">
<a-select-option value="0"></a-select-option>
<a-select-option value="1"></a-select-option>
</a-select>
</a-form-item>
</a-col> -->
<a-col :md="8" :sm="24">
<a-form-item label="是否积分商城门店">
<a-select v-model="queryParam.IS_POINTS_SHOP" placeholder="请选择">
......@@ -81,7 +57,7 @@
</a-col>
<a-col :md="8" :sm="24">
<a-form-item label="所属分公司">
<a-select v-model="queryParam.BRANCH_TYPE" placeholder="请选择">
<a-select v-model="queryParam.SUPPROVINCE_GUID" placeholder="请选择">
<a-select-option value="0"></a-select-option>
<a-select-option value="1"></a-select-option>
</a-select>
......@@ -91,7 +67,7 @@
<a-col :md="!advanced && 8 || 24" :sm="24">
<span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
<a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
<a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
<a-button style="margin-left: 8px" @click="() =>{ queryParam = {};addressTest=[]}">重置</a-button>
<a @click="toggleAdvanced" style="margin-left: 8px">
{{ advanced ? '收起' : '展开' }}
<a-icon :type="advanced ? 'up' : 'down'"/>
......@@ -139,6 +115,7 @@ export default {
data () {
return {
mdl: {},
addressTest:null,
labelCol: {
xs: { span: 8 },
sm: { span: 8 }
......@@ -147,6 +124,7 @@ export default {
xs: { span: 12 },
sm: { span: 12 }
},
allowClear:true,
addressOptions:[],
addressFields:{
label:'NAME',
......@@ -169,18 +147,18 @@ export default {
title: '编号',
dataIndex: 'CODE'
},
// {
// title: '上级/省级编号',
// dataIndex: 'USER_GROUP_GUID'
// },
{
title: '上级/省级编号',
dataIndex: 'PARENT_GUID'
},
{
title: '电话',
dataIndex: 'PHONE'
},
// {
// title: '联系人姓名',
// dataIndex: 'WX_NO'
// },
{
title: '联系人姓名',
dataIndex: 'CONTACT_NAME'
},
{
title: '详细地址',
dataIndex: 'DETAIL_ADDRESS'
......@@ -200,7 +178,7 @@ export default {
}
],
loadData: parameter => {
return getStoreList(Object.assign(parameter, this.queryParam))
return getStoreList(Object.assign(parameter, this.addressCheck(this.addressTest)))
.then(res => {
res.pageSize=res._meta.perPage;
res.page=res._meta.currentPage;
......@@ -215,6 +193,26 @@ export default {
this.loadProvince()
},
methods: {
// queryParame处理省市区传旨
addressCheck(value){
if(value){
if(value.length>0){
if(value.length>1){
if(value.length>2){
this.queryParam.RECIVER_PROVINCE=this.addressTest[0]
this.queryParam.RECIVER_CITY=this.addressTest[1]
this.queryParam.RECIVER_REGION=this.addressTest[2]
}else{
this.queryParam.RECIVER_PROVINCE=this.addressTest[0]
this.queryParam.RECIVER_CITY=this.addressTest[1]
}
}else{
this.queryParam.RECIVER_PROVINCE=this.addressTest[0]
}
}
}
return this.queryParam
},
// 加载省
loadProvince(){
loadAddress().then( res => {
......@@ -272,6 +270,7 @@ export default {
handleOk(value){
},
handleEdit(record) {
this.$router.push({path:'/storedc/storeManage_details',query:{GUID:record.GUID}})
},
toggleAdvanced () {
this.advanced = !this.advanced
......
<template>
<a-card :bordered="false">
<div>
<div class="table-page-search-wrapper">
<a-form :form='formCheck' layout="inline">
......@@ -208,6 +209,7 @@
</a-form>
</a-modal>
</div>
</a-card>
</template>
<script>
......@@ -226,11 +228,11 @@ export default {
mdl: {},
destoryOnClose:true,
labelCol: {
xs: { span: 8 },
sm: { span: 8 }
xs: { span: 24 },
sm: { span: 7 }
},
wrapperCol: {
xs: { span: 12 },
xs: { span: 24 },
sm: { span: 12 }
},
visible:false,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment