Browse Source

完成页面优化

yjf_v3
超级管理员 1 year ago
parent
commit
2d0ff2cf8c
  1. BIN
      src/assets/image/tinymce.png
  2. BIN
      src/assets/image/tinymce1.png
  3. 86
      src/components/DesignForm/assembly/index.ts
  4. 3
      src/components/DesignForm/dragControlApp.vue
  5. 43
      src/components/DesignForm/public/expand/datePicker.vue
  6. 320
      src/components/DesignForm/public/expand/orgCitys.vue
  7. 2
      src/components/DesignForm/public/form/childTable.vue
  8. 42
      src/components/DesignForm/public/form/formItem.vue
  9. 2
      src/components/DesignForm/public/headToolsApp.vue
  10. 65
      src/views/sysworkflow/codepage/page.vue
  11. 1
      src/widget/orgcitys/index.vue

BIN
src/assets/image/tinymce.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 23 KiB

BIN
src/assets/image/tinymce1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

86
src/components/DesignForm/assembly/index.ts

@ -32,7 +32,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -61,7 +61,7 @@ export default [
selectvalue: "default",
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -82,7 +82,7 @@ export default [
config: {}, // 其他配置信息
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -103,7 +103,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -127,7 +127,7 @@ export default [
config: config,
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -151,7 +151,7 @@ export default [
config: config,
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -176,7 +176,7 @@ export default [
config: config,
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -197,7 +197,7 @@ export default [
config: config,
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -218,7 +218,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -238,7 +238,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -258,7 +258,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -277,7 +277,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -311,7 +311,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -332,7 +332,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -352,7 +352,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -372,7 +372,7 @@ export default [
// config: {},
// styles: {
// divStyle: {
// marginBot: "10"
// marginBot: "15"
// },
// labelStyle: {
// paddingLeft: "7",
@ -415,7 +415,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -435,7 +435,7 @@ export default [
item: {}, // label标题相关
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -457,7 +457,7 @@ export default [
},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -476,7 +476,7 @@ export default [
list: [],
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -501,7 +501,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -520,7 +520,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -601,7 +601,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -622,7 +622,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -642,7 +642,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -666,7 +666,7 @@ export default [
},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -685,7 +685,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -705,7 +705,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -725,7 +725,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -745,7 +745,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -778,7 +778,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -798,7 +798,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -849,7 +849,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -873,7 +873,7 @@ export default [
},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -953,7 +953,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -990,7 +990,7 @@ export default [
},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1011,7 +1011,7 @@ export default [
config: {}, // 其他配置信息
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1030,7 +1030,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1050,7 +1050,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1070,7 +1070,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1090,7 +1090,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1110,7 +1110,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",
@ -1130,7 +1130,7 @@ export default [
config: {},
styles: {
divStyle: {
marginBot: "10"
marginBot: "15"
},
labelStyle: {
paddingLeft: "7",

3
src/components/DesignForm/dragControlApp.vue

@ -157,8 +157,9 @@ const clone = (origin: any) => {
}
.fontIcon{
height: 35px;
i{
padding: 4px 0px 0 0px;
padding: 3px 0px 0 0px;
}
}
</style>

43
src/components/DesignForm/public/expand/datePicker.vue

@ -0,0 +1,43 @@
<!--
@ 作者: 秦东
@ 时间: 2024-09-25 15:01:57
@ 备注: 时间控件
-->
<script lang='ts' setup>
const props = withDefaults(
defineProps<{
modelValue?: string
disabled?: boolean
data?:any
}>(),
{}
)
const emits = defineEmits<{
(e: 'update:modelValue', value: string): void
}>()
const value = computed({
get: () => {
return props.modelValue
},
set: (newVal: any) => {
emits('update:modelValue', newVal)
},
});
</script>
<template>
<el-date-picker
align="left"
v-model="value"
:type="props.data.control.type"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:teleported="true"
:placeholder="props.data.control.placeholder"
:value-format="props.data.valueFormat"
:format="props.data.control.format"
/>
</template>
<style lang='scss' scoped>
</style>

320
src/components/DesignForm/public/expand/orgCitys.vue

@ -0,0 +1,320 @@
<!--
@ 作者: 秦东
@ 时间: 2024-09-25 09:18:33
@ 备注: 联系地址
-->
<script lang='ts' setup>
import { AnalysisCss,AnalysisInputCss } from '@/components/DesignForm/public/form/calculate/cssInfo.ts'
import {
constControlChange,
constFormProps,
} from '@/api/DesignForm/utils'
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import areaObj from '@/widget/orgcitys/pca.json'
const props = withDefaults(
defineProps<{
data: FormList
tablekey: any
numrun?: number
modelValue?: any //
tProp?: string // form-itemprop
}>(),
{}
)
const emits = defineEmits<{
(e: 'update:modelValue', numVal: any): void
}>()
const formProps = inject(constFormProps, {}) as any
const type = computed(() => {
return formProps.value.type
})
const control = computed(() => {
return props.data.control || {}
// return props.data
})
const config = computed(() => {
return props.data.config || {}
})
const changeEvent = inject(constControlChange, '') as any
const value = computed({
get: () => {
return props.modelValue
},
set: (newVal: any) => {
emits('update:modelValue', newVal)
},
});
//
const editDisabled = computed(() => {
if (type.value === 3) {
return true //
}
if (type.value === 1 && config.value.addDisabled) {
return true
}
if (type.value === 2 && config.value.editDisabled) {
return true //
}
return control.value.disabled
})
const updateModel = (val: any) => {
let controlAttribute = ""
if(props.data.control){
if(props.data.control.type){
controlAttribute = props.data.control.type
}
}
// changeEvent &&
// changeEvent({
// key: props.data.name,
// value: val,
// data: props.data,
// tProp: props.tProp,
// type: props.data.type,
// attribute: controlAttribute
// })
}
const getLabel = (ele: FormItem) => {
const showColon = formProps.value.showColon ? ':' : ''
if (ele) {
return ele.showLabel ? '' : ele.label + showColon
} else {
return ''
}
}
// item
const itemRules = computed(() => {
let temp
const itemR: any = props.data.item?.rules || []
const customR = formatCustomRules()
// undefined
if (itemR?.length || customR?.length) {
temp = [...customR, ...itemR]
}
return temp
})
// customRulesrules
const formatCustomRules = () => {
const rulesReg: any = {}
validate &&
validate.forEach(item => {
rulesReg[item.type] = item.regExp
})
// 使provide
const temp: any = []
props.data.customRules?.forEach((item: any) => {
if (!item.message && item.type !== 'methods') {
return //
}
let obj = {}
if (item.type === 'required') {
obj = { required: true }
} else if (item.type === 'rules') {
//
obj = { pattern: item.rules }
} else if (item.type === 'methods') {
//
const methods: any = item.methods
if (methods) {
obj = { validator: inject(methods, {}) }
}
} else if (item.type) {
obj = { pattern: rulesReg[item.type as string] }
}
// push
let message: any = { message: item.message }
if (!item.message) {
// 使validatormessage使 callback(new Error('x'));
message = {}
}
temp.push(
Object.assign(
{
trigger: item.trigger || 'blur'
},
obj,
message
)
)
})
return temp
}
const addressBox = ref(false)
//
const provinceArr = Object.keys(areaObj)
const province = ref(provinceArr[0])
//
const cityArr = computed(() => {
return Object.keys(areaObj[province.value])
})
const city = ref(cityArr.value[0])
//
watch(province, (newVal) => {
city.value = Object.keys(areaObj[newVal])[0];
if(value.value != "" && value.value != null){
let ads = value.value.split(" - ")
if(ads.length >=2){
city.value = ads[1]
}else{
city.value = Object.keys(areaObj[newVal])[0];
}
}else{
city.value = Object.keys(areaObj[newVal])[0];
}
});
//
const areaArr = computed(() => {
return areaObj[province.value][city.value]
})
const area = ref(areaArr.value[0])
//
watch(city, (newVal) => {
if(value.value != "" && value.value != null){
let ads = value.value.split(" - ")
if(ads.length >=3){
area.value = ads[2]
}else{
area.value = areaObj[province.value][newVal][0]
}
}else{
area.value = areaObj[province.value][newVal][0]
}
})
const fullAddress = ref<string>("")
//
const openAddress = () =>{
if(value.value != "" && value.value != null){
let ads = value.value.split(" - ")
// console.log(ads)
if(ads.length >= 4){
province.value = ads[0]
fullAddress.value = ads[3]
}else if(ads.length >0){
province.value = ads[0]
}
}else{
province.value = provinceArr[0]
city.value = cityArr.value[0]
area.value = areaArr.value[0]
fullAddress.value = ""
}
addressBox.value=true
}
//
const addressBoxClose = () => {
addressBox.value=false
initAddressData()
}
//
const submitAddress = () => {
// console.log(province.value,city.value,area.value,fullAddress.value)
if(province.value == "" || province.value == null){
ElMessage.error('未选择省份!')
return
}
if(city.value == "" || city.value == null){
ElMessage.error('未选择市/区!')
return
}
if(area.value == "" || area.value == null){
ElMessage.error('未选择县/市!')
return
}
if(fullAddress.value == "" || fullAddress.value == null){
ElMessage.error('未填写详细信息!')
return
}
value.value = province.value + " - " + city.value + " - " + area.value + " - " + fullAddress.value
console.log(province.value + " - " + city.value + " - " + area.value + " - " + fullAddress.value)
console.log(value.value)
addressBoxClose()
}
const initAddressData = () =>{
province.value = provinceArr[0]
fullAddress.value = ""
}
const configStyle = computed(() => {
return props.data.styles || {}
})
const getFormItemInputStyle = (ele: any,sty:number) => {
if(ele?.inputStyle){
//console.log("4",AnalysisInputCss(ele?.inputStyle,sty))
return AnalysisInputCss(ele?.inputStyle,sty)
}
}
</script>
<template>
<div v-if="type === 4" class="form-value" v-html="value"></div>
<el-input v-else v-model="value" :disabled="editDisabled" clearable placeholder="请选择地址" style="width:100%" @click="openAddress" :style="getFormItemInputStyle(configStyle,2)" :input-style="getFormItemInputStyle(configStyle,3)" />
<el-dialog
v-model="addressBox"
title="填写地址"
width="600px"
:append-to-body="true"
:draggable="true"
:before-close="addressBoxClose"
>
<el-row>
<el-col :span="3">所在地区</el-col>
<el-col :span="21">
<el-row :gutter="20">
<el-col :span="8">
<el-select v-model="province" class="m-2" placeholder="省">
<el-option v-for="item in provinceArr" :key="item" :label="item" :value="item" />
</el-select>
</el-col>
<el-col :span="8">
<el-select v-model="city" class="m-2" placeholder="市">
<el-option v-for="item in cityArr" :key="item" :label="item" :value="item" />
</el-select>
</el-col>
<el-col :span="8">
<el-select v-model="area" class="m-2" placeholder="区/县">
<el-option v-for="item in areaArr" :key="item" :label="item" :value="item" />
</el-select>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row>
<el-col :span="3">详细地址</el-col>
<el-col :span="21">
<el-input
v-model="fullAddress"
:autosize="{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入详细地址"
style="width:100%"
/>
</el-col>
</el-row>
<template #footer>
<span class="dialog-footer">
<el-button @click="addressBoxClose">取消</el-button>
<el-button type="primary" @click="submitAddress">确定</el-button>
</span>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>

2
src/components/DesignForm/public/form/childTable.vue

@ -197,7 +197,7 @@ const timeToString = (timeVal:any,types:int) => {
:width="item.item.span"
>
<template #default="scope">
<span v-if="item.type === 'index'">{{ scope.$index + 1 }}</span>
<div v-if="type === 4 || editDisabled">
<LokOrgCentent v-if="item.type == 'orgCentent'" :orgid="scope.row[item.name].toString()" />

42
src/components/DesignForm/public/form/formItem.vue

@ -34,6 +34,8 @@ import DigitpagePage from '@/components/DesignForm/public/expand/digitpage.vue'
import LowcodeImagePage from '@/components/DesignForm/public/expand/lowcodeImage.vue'
import UploadPage from '@/components/DesignForm/public/expand/uploadPage.vue'
import UploadPageList from '@/components/DesignForm/public/expand/uploadPageList.vue'
import OrgCitys from '@/components/DesignForm/public/expand/orgCitys.vue'
import DatePickerPage from '@/components/DesignForm/public/expand/datePicker.vue'
@ -190,9 +192,15 @@ const currentComponent = computed(() => {
}
if (props.data.type === 'upload') {
return markRaw(UploadPage)
}
if (props.data.type === 'organization') {
return markRaw(OrgCitys)
}
if (props.data.type === 'datePicker') {
props.data.control.valueFormat="x"
// props.data.control.align="right"
// props.data.control.appendToBody =true
return markRaw(DatePickerPage)
}
if (props.data.type === 'switch') {
if(typeof props.data.control.activeValue === "number"){
@ -929,14 +937,14 @@ const uploadPic = (val:any) => {
<OrgCitys v-else-if="judgeIsShow(data.name) && data.type === 'organization' " :data="data" />
<UrlLink v-else-if="judgeIsShow(data.name) && data.type === 'urllink' && type != 4" :data="data" />
<el-form-item
v-bind="data.item"
v-if="judgeIsShow(data.name) && data.type != 'owner' && data.type != 'baidumap' && data.type != 'serialNumber' && data.type != 'founder' && data.type != 'founderTime' && data.type != 'editTime' && data.type != 'associatedForms' && data.type != 'videoUpAndPlay' && data.type != 'organization' && data.type != 'lowcodeTransfer' && data.type != 'lowcodeCarsusel' && data.type != 'signaturemap' && data.type != 'signaturemap' && data.type != 'urllink'"
v-if="judgeIsShow(data.name) && data.type != 'owner' && data.type != 'baidumap' && data.type != 'serialNumber' && data.type != 'founder' && data.type != 'founderTime' && data.type != 'editTime' && data.type != 'associatedForms' && data.type != 'videoUpAndPlay' && data.type != 'lowcodeTransfer' && data.type != 'lowcodeCarsusel' && data.type != 'signaturemap' && data.type != 'signaturemap' && data.type != 'urllink'"
:disabled="judgeIsDisabled(data.name)"
:prop="tProp || data.name"
:class="config.className"
@ -1101,6 +1109,18 @@ const uploadPic = (val:any) => {
:transformOption="transformOption"
:placeholder="data.control.placeholder?data.control.placeholder:'请选择'+getLabel(data.item)"
/>
<component
v-if="['organization'].includes(data.type)"
:is="currentComponent"
:data="data"
v-bind="control"
:control="control"
:config="config"
:name="control.file || 'file'"
:disabled="judgeIsDisabled(data.name)"
:options="options"
v-model="value"
/>
<component
v-if="['upload'].includes(data.type)"
:is="currentComponent"
@ -1125,6 +1145,22 @@ const uploadPic = (val:any) => {
/>
<el-time-picker v-if="data.type=='timePicker'" v-model="value" value-format="x" :placeholder="data.control.placeholder?data.control.placeholder:'请选择'+getLabel(data.item)" />
<component
v-if="
[
'datePicker'
].includes(data.type)
"
:is="currentComponent"
v-bind="control"
:disabled="judgeIsDisabled(data.name)"
:data="data"
:placeholder="data.control.placeholder?data.control.placeholder:'请选择'+getLabel(data.item)"
v-model="value"
/>
<component
v-if="
[
@ -1133,8 +1169,6 @@ const uploadPic = (val:any) => {
'switch',
'inputNumber',
'colorPicker',
'datePicker',
'component',
'expand-user',
'orgCentent',

2
src/components/DesignForm/public/headToolsApp.vue

@ -62,7 +62,7 @@ const btnClick = (type: string) => {
v-if="(item.icon != 'branch') || (item.icon == 'branch' && (props.customerformid !=''))"
@click="btnClick(item.icon)"
:key="item.icon"
:type="item.key==6?'danger':item.key==5?'success':item.key==4?'warning':'primary'"
:type="item.key==6?'danger':item.key==5?'success':item.key==4?'warning':''"
>
<i v-if="item.iconFont==''" :class="['icon-' + item.icon]" ></i><i v-if="item.iconFont!=''" :class="['fa ' + item.iconFont]" ></i>{{ item.label }}
</el-button>

65
src/views/sysworkflow/codepage/page.vue

@ -48,8 +48,73 @@ function sendMessage() {
import Editor from "@/components/WangEditor/index.vue";
const value = ref("初始内容");
const tableData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
const dialogVisible = ref(false)
const handleClose = (done: () => void) => {
ElMessageBox.confirm('Are you sure to close this dialog?')
.then(() => {
done()
})
.catch(() => {
// catch error
})
}
</script>
<template>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="date" label="Date" width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
<el-table-column >
<el-button plain @click="dialogVisible = true">
Click to open the Dialog
</el-button>
<el-dialog
v-model="dialogVisible"
title="Tips"
width="500"
:before-close="handleClose"
>
<span>This is a message</span>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">Cancel</el-button>
<el-button type="primary" @click="dialogVisible = false">
Confirm
</el-button>
</div>
</template>
</el-dialog>
</el-table-column>
</el-table>
<div>
<input v-model="message" placeholder="输入消息" />
<button @click="sendMessage">发送</button>

1
src/widget/orgcitys/index.vue

@ -275,6 +275,7 @@ const initAddressData = () =>{
v-model="addressBox"
title="填写地址"
width="600px"
:modal="false"
:before-close="addressBoxClose"
>
<el-row>

Loading…
Cancel
Save