BUG 139
This commit is contained in:
@@ -26,7 +26,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</ai-dialog>
|
</ai-dialog>
|
||||||
<ai-locate-dialog v-model="locate" :ins="instance" :latlng="latlng" @confirm="v=>handleLocate(selected,v)"/>
|
<ai-locate-dialog v-model="locate" :ins="instance" :latlng="latlng" @confirm="v=>handleLocate(selected,v)"/>
|
||||||
<ai-area custom-clicker :input-clicker="false" v-model="selected.areaId" :hideLevel="hideLevel" :instance="instance" ref="BindArea"
|
<ai-area custom-clicker :inputClicker="false" v-model="selected.areaId" :root="user.info.areaId" :instance="instance" ref="BindArea"
|
||||||
@change="handleSubmit(selected)"/>
|
@change="handleSubmit(selected)"/>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
@@ -57,7 +57,6 @@ export default {
|
|||||||
return {width: per, height: per}
|
return {width: per, height: per}
|
||||||
},
|
},
|
||||||
...mapState(['user']),
|
...mapState(['user']),
|
||||||
hideLevel: v => v.user.info.areaList?.length
|
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
@@ -202,7 +201,7 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
:deep( .headerBar ){
|
:deep( .headerBar ) {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
@@ -255,13 +254,13 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-tree-node__content:hover ){
|
:deep(.el-tree-node__content:hover ) {
|
||||||
.menuBtn {
|
.menuBtn {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep( .flexRow ){
|
:deep( .flexRow ) {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -5,21 +5,19 @@
|
|||||||
<div class="ailist-title">
|
<div class="ailist-title">
|
||||||
<div class="ailist-title__left">
|
<div class="ailist-title__left">
|
||||||
<h2>{{ title }}</h2>
|
<h2>{{ title }}</h2>
|
||||||
<div v-if="isShowIM" class="openIM iconfont iconGroup_IM" @click="openIM"></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="ailist-title__right">
|
<div class="ailist-title__right">
|
||||||
<ai-area
|
<ai-area v-if="isShowArea"
|
||||||
v-if="isShowArea"
|
:instance="instance"
|
||||||
:instance="instance"
|
v-bind="$attrs"
|
||||||
v-bind="$attrs"
|
:value="value"
|
||||||
:value="value"
|
v-on="$listeners"
|
||||||
v-on="$listeners"
|
:areaLevel="areaLevel"
|
||||||
:areaLevel="areaLevel"
|
:hideLevel="hideLevel"
|
||||||
:hideLevel="hideLevel"
|
:valueLevel="valueLevel"
|
||||||
:valueLevel="valueLevel"
|
:disabled="disabled"/>
|
||||||
:disabled="disabled"/>
|
|
||||||
<div class="aititle-right__btns">
|
<div class="aititle-right__btns">
|
||||||
<slot name="rightBtn"></slot>
|
<slot name="rightBtn"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -65,9 +63,6 @@ export default {
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
openIM: {
|
|
||||||
type: Function
|
|
||||||
},
|
|
||||||
isShowBack: {
|
isShowBack: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
@@ -122,10 +117,6 @@ export default {
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.openIM {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.ailist-title__right {
|
.ailist-title__right {
|
||||||
|
|||||||
@@ -64,7 +64,8 @@ export default {
|
|||||||
separator: {type: String, default: ""},
|
separator: {type: String, default: ""},
|
||||||
showBadge: {type: Boolean, default: true},
|
showBadge: {type: Boolean, default: true},
|
||||||
value: String,
|
value: String,
|
||||||
valueLevel: {type: [Number, String], default: -1}
|
valueLevel: {type: [Number, String], default: -1},
|
||||||
|
root: String
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -76,13 +77,14 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
rootArea: v => new Area(v.root),
|
||||||
currentArea: v => v.selected || v.value,
|
currentArea: v => v.selected || v.value,
|
||||||
selectedArea: v => new Area(v.currentArea, v.hashMap),
|
startLevel: v => Math.max(Number(v.hideLevel), 0, v.rootArea.level),//地区最高可选行政地区等级
|
||||||
startLevel: v => Number(v.hideLevel) || 0,//地区最高可选行政地区等级
|
|
||||||
endLevel: v => Number(v.areaLevel) || 0,//地区最低可选行政地区等级
|
endLevel: v => Number(v.areaLevel) || 0,//地区最低可选行政地区等级
|
||||||
|
selectedArea: v => new Area(v.currentArea, v.hashMap),
|
||||||
selectedName: v => v.selectedArea.name || "无",
|
selectedName: v => v.selectedArea.name || "无",
|
||||||
validateState: v => ['', 'success'].includes(v.elFormItem?.validateState),
|
|
||||||
selectedMap: v => v.selectedArea.areaMap,
|
selectedMap: v => v.selectedArea.areaMap,
|
||||||
|
validateState: v => ['', 'success'].includes(v.elFormItem?.validateState),
|
||||||
hashMap() {
|
hashMap() {
|
||||||
//地区数据缓存器,用于快速获取数据
|
//地区数据缓存器,用于快速获取数据
|
||||||
const hash = {}
|
const hash = {}
|
||||||
@@ -98,10 +100,18 @@ export default {
|
|||||||
4: "村/社区"
|
4: "村/社区"
|
||||||
}
|
}
|
||||||
let ops = this.areaOps.map((list, i) => ({
|
let ops = this.areaOps.map((list, i) => ({
|
||||||
header: levelLabels[i], list
|
header: levelLabels[i], i, list
|
||||||
})).slice(Math.max(0, this.startLevel), this.endLevel)
|
})).slice(Math.max(0, this.startLevel), this.endLevel)
|
||||||
if (this.startLevel > 0 && ops.length > 0) {
|
if (this.startLevel > 0 && ops.length > 0) {
|
||||||
ops[0].list = ops[0].list.filter(e => e.id == this.selectedMap[this.startLevel])
|
const tmp = this.$copy(ops[0]?.list?.[0] || {})
|
||||||
|
if (this.startLevel >= ops[0].i) {
|
||||||
|
const opsMap = this.selectedMap.length > 0 ? this.selectedMap : this.rootArea.areaMap
|
||||||
|
ops[0].list = [this.hashMap[opsMap[ops[0].i]]].filter(Boolean) || []
|
||||||
|
} else {
|
||||||
|
const prev = +tmp.type - 1
|
||||||
|
const prevId = tmp.parentId
|
||||||
|
prev > -1 && ops.unshift({header: levelLabels[prev], list: [this.hashMap[prevId]]})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ops
|
return ops
|
||||||
}
|
}
|
||||||
@@ -113,7 +123,7 @@ export default {
|
|||||||
this.dispatch('ElFormItem', 'el.form.change', [v]);
|
this.dispatch('ElFormItem', 'el.form.change', [v]);
|
||||||
this.initAreaName()
|
this.initAreaName()
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
dispatch(componentName, eventName, params) {
|
dispatch(componentName, eventName, params) {
|
||||||
@@ -206,8 +216,9 @@ export default {
|
|||||||
},
|
},
|
||||||
initOptions() {
|
initOptions() {
|
||||||
this.areaOps = []
|
this.areaOps = []
|
||||||
|
const opsMap = this.selectedMap.length > 0 ? this.selectedMap : this.rootArea.areaMap
|
||||||
let map = {};
|
let map = {};
|
||||||
return Promise.all([null, ...this.selectedMap].map((id, i) => this.getAreasByParentId(id).then(list => map[i] = list))).then(() => {
|
return Promise.all([null, ...opsMap].map((id, i) => this.getAreasByParentId(id).then(list => map[i] = list))).then(() => {
|
||||||
this.areaOps = Object.values(map)
|
this.areaOps = Object.values(map)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user