更新接口路径,调整配置,优化用户及订单管理功能,并修复部分bug
This commit is contained in:
parent
c5a70e321e
commit
7446d2c97f
|
@ -1,21 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="edit-popup">
|
<div class="edit-popup">
|
||||||
<popup
|
<popup ref="popupRef" title="分配权限" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||||
ref="popupRef"
|
<div>多门店后台</div>
|
||||||
title="分配权限"
|
<el-form class="ls-form" ref="formRef" :rules="rules" :model="formData" label-width="60px" v-loading="loading">
|
||||||
:async="true"
|
|
||||||
width="550px"
|
|
||||||
@confirm="handleSubmit"
|
|
||||||
@close="handleClose"
|
|
||||||
>
|
|
||||||
<el-form
|
|
||||||
class="ls-form"
|
|
||||||
ref="formRef"
|
|
||||||
:rules="rules"
|
|
||||||
:model="formData"
|
|
||||||
label-width="60px"
|
|
||||||
v-loading="loading"
|
|
||||||
>
|
|
||||||
<el-scrollbar class="h-[400px] sm:h-[600px]">
|
<el-scrollbar class="h-[400px] sm:h-[600px]">
|
||||||
<el-form-item label="权限" prop="menu_id">
|
<el-form-item label="权限" prop="menu_id">
|
||||||
<div>
|
<div>
|
||||||
|
@ -23,23 +10,35 @@
|
||||||
<el-checkbox label="全选/不全选" @change="handleSelectAll" />
|
<el-checkbox label="全选/不全选" @change="handleSelectAll" />
|
||||||
<el-checkbox v-model="checkStrictly" label="父子联动" />
|
<el-checkbox v-model="checkStrictly" label="父子联动" />
|
||||||
<div>
|
<div>
|
||||||
<el-tree
|
<el-tree ref="treeRef" :data="menuTree" :props="{
|
||||||
ref="treeRef"
|
|
||||||
:data="menuTree"
|
|
||||||
:props="{
|
|
||||||
label: 'name',
|
label: 'name',
|
||||||
children: 'children'
|
children: 'children'
|
||||||
}"
|
}" :check-strictly="!checkStrictly" node-key="id" :default-expand-all="isExpand"
|
||||||
:check-strictly="!checkStrictly"
|
show-checkbox />
|
||||||
node-key="id"
|
|
||||||
:default-expand-all="isExpand"
|
|
||||||
show-checkbox
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
<!-- <div>收银系统</div>
|
||||||
|
<el-form class="ls-form" ref="formRef" :rules="rules" :model="formData" label-width="60px" v-loading="loading">
|
||||||
|
<el-scrollbar class="h-[400px] sm:h-[600px]">
|
||||||
|
<el-form-item label="权限" prop="menu_id">
|
||||||
|
<div>
|
||||||
|
<el-checkbox label="展开/折叠" @change="handleExpand" />
|
||||||
|
<el-checkbox label="全选/不全选" @change="handleSelectAll" />
|
||||||
|
<el-checkbox v-model="checkStrictly" label="父子联动" />
|
||||||
|
<div>
|
||||||
|
<el-tree ref="treeRef" :data="menuTree" :props="{
|
||||||
|
label: 'name',
|
||||||
|
children: 'children'
|
||||||
|
}" :check-strictly="!checkStrictly" node-key="id" :default-expand-all="isExpand"
|
||||||
|
show-checkbox />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-scrollbar>
|
||||||
|
</el-form> -->
|
||||||
</popup>
|
</popup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
<el-switch v-model="formData.status" :active-value="1" :inactive-value="0"></el-switch>
|
<el-switch v-model="formData.status" :active-value="1" :inactive-value="0"></el-switch>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="营业时间" prop="title">
|
<el-form-item label="营业时间" prop="title">
|
||||||
<el-time-picker v-model="formData.times" is-range range-separator="-"
|
<el-time-picker v-model="formData.times" is-range range-separator="-" start-placeholder="开始时间"
|
||||||
start-placeholder="开始时间" end-placeholder="结束时间" value-format="HH:mm:ss" />
|
end-placeholder="结束时间" value-format="HH:mm:ss" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="门店地址" prop="title">
|
<el-form-item label="门店地址" prop="title">
|
||||||
<el-row>
|
<el-row>
|
||||||
|
@ -100,6 +100,8 @@ const formData = reactive({
|
||||||
city_id: '',
|
city_id: '',
|
||||||
area_id: '',
|
area_id: '',
|
||||||
street_id: '',
|
street_id: '',
|
||||||
|
address: "",
|
||||||
|
title: "",
|
||||||
lat: "",
|
lat: "",
|
||||||
lng: "",
|
lng: "",
|
||||||
range: '1',
|
range: '1',
|
||||||
|
|
|
@ -1,32 +1,34 @@
|
||||||
<template>
|
<template>
|
||||||
<el-autocomplete class="w-[500px]" v-model="locationInfo.title" @select="handleSelect"
|
<el-autocomplete class="w-[500px]" v-model="formData.title" @select="handleSelect" :fetch-suggestions="querySearch"
|
||||||
:fetch-suggestions="querySearch" placeholder="请输入详细地址" :trigger-on-focus="false" />
|
placeholder="请输入详细地址" :trigger-on-focus="false" />
|
||||||
<el-button type="primary" @click="getLocationByAddress">搜索</el-button>
|
<el-button type="primary" @click="getLocationByAddress">搜索</el-button>
|
||||||
<el-button type="primary" @click="getLocation">当前位置</el-button>
|
<el-button type="primary" @click="getLocation">当前位置</el-button>
|
||||||
<div id="myMap" class="w-[100%] h-[100%]"></div>
|
<div id="myMap" class="w-[100%] h-[100%]"></div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, onMounted } from "vue"
|
import { ref, onMounted, defineProps } from "vue"
|
||||||
import { jsonp } from "vue-jsonp"
|
import { jsonp } from "vue-jsonp"
|
||||||
import feedback from '@/utils/feedback'
|
import feedback from '@/utils/feedback'
|
||||||
|
|
||||||
let myMap: any = null //地图对象
|
let myMap: any = null //地图对象
|
||||||
var markerLayer: any = null //点标记图层
|
var markerLayer: any = null //点标记图层
|
||||||
var geocoder: any = null; //地址解析器
|
var geocoder: any = null; //地址解析器
|
||||||
|
const props = defineProps({
|
||||||
|
formData: {
|
||||||
let locationInfo = ref({
|
type: Object,
|
||||||
address: "",
|
},
|
||||||
title: "",
|
|
||||||
lat: "",
|
|
||||||
lng: ""
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
// let locationInfo = ref({
|
||||||
|
// address: "",
|
||||||
|
// title: "",
|
||||||
|
// lat: "",
|
||||||
|
// lng: ""
|
||||||
|
|
||||||
|
// })
|
||||||
const initMap = () => {
|
const initMap = () => {
|
||||||
var center = new window.TMap.LatLng(30.629673, 103.775231)
|
var center = new window.TMap.LatLng(props.formData.lat, props.formData.lng)
|
||||||
myMap = new window.TMap.Map(document.getElementById('myMap'), {
|
myMap = new window.TMap.Map(document.getElementById('myMap'), {
|
||||||
center: center,
|
center: center,
|
||||||
zoom: 15,
|
zoom: 15,
|
||||||
|
@ -37,6 +39,7 @@ const initMap = () => {
|
||||||
map: myMap
|
map: myMap
|
||||||
});
|
});
|
||||||
geocoder = new window.TMap.service.Geocoder()
|
geocoder = new window.TMap.service.Geocoder()
|
||||||
|
if (!props.formData.lat) getLocation()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,8 +72,9 @@ const setMarker = async (lat: number, lng: number, isSelect: Boolean = false) =>
|
||||||
if (isSelect) return
|
if (isSelect) return
|
||||||
var location = new window.TMap.LatLng(lat, lng);
|
var location = new window.TMap.LatLng(lat, lng);
|
||||||
let res = await geocoder.getAddress({ location: location })
|
let res = await geocoder.getAddress({ location: location })
|
||||||
locationInfo.value.address = res.result.address
|
console.log(res, 'res')
|
||||||
locationInfo.value.title = res.result.formatted_addresses.recommend
|
props.formData.address = res.result.address
|
||||||
|
props.formData.title = res.result.formatted_addresses.recommend
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,17 +91,17 @@ const querySearch = async (queryString: string, cb: any) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const handleSelect = (e) => {
|
const handleSelect = (e) => {
|
||||||
locationInfo.value.title = e.title
|
props.formData.title = e.title
|
||||||
locationInfo.value.address = e.address
|
props.formData.address = e.address
|
||||||
locationInfo.value.address = e.address
|
props.formData.address = e.address
|
||||||
locationInfo.value.lat = e.location.lat
|
props.formData.lat = e.location.lat
|
||||||
locationInfo.value.lng = e.location.lng
|
props.formData.lng = e.location.lng
|
||||||
setMarker(e.location.lat, e.location.lng, true)
|
setMarker(e.location.lat, e.location.lng, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 地址解析坐标
|
// 地址解析坐标
|
||||||
const getLocationByAddress = async () => {
|
const getLocationByAddress = async () => {
|
||||||
let res = await jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?key=SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7&address=${locationInfo.value.address}&output=jsonp`);
|
let res = await jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?key=SMJBZ-WCHK4-ZPZUA-DSIXI-XDDVQ-XWFX7&address=${props.formData.address}&output=jsonp`);
|
||||||
if (!res.result) return feedback.msgError("位置搜索失败,请重新输入或手动选择")
|
if (!res.result) return feedback.msgError("位置搜索失败,请重新输入或手动选择")
|
||||||
setMarker(res.result.location.lat, res.result.location.lng)
|
setMarker(res.result.location.lat, res.result.location.lng)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue