|
@@ -3,7 +3,10 @@
|
|
<Transition name="fade">
|
|
<Transition name="fade">
|
|
<div class="f-panel-left panel-fcky"
|
|
<div class="f-panel-left panel-fcky"
|
|
:class="{ 'bg-shrink': form.layeringType === '广域分层', 'collapse': layoutStore.leftCollapse }">
|
|
:class="{ 'bg-shrink': form.layeringType === '广域分层', 'collapse': layoutStore.leftCollapse }">
|
|
- <h2 class="u-title">分层空域</h2>
|
|
|
|
|
|
+ <h2 class="u-title">
|
|
|
|
+ 分层空域
|
|
|
|
+ <i title="清空" @click="clearAll(true)"></i>
|
|
|
|
+ </h2>
|
|
|
|
|
|
<el-form v-model="form" class="form-top mt-3" label-position="left">
|
|
<el-form v-model="form" class="form-top mt-3" label-position="left">
|
|
<el-form-item label="分层范围" prop="rangeType">
|
|
<el-form-item label="分层范围" prop="rangeType">
|
|
@@ -28,8 +31,9 @@
|
|
<el-form v-model="form" class="mt-3" label-position="top">
|
|
<el-form v-model="form" class="mt-3" label-position="top">
|
|
<el-form-item label="分层空域" prop="layersBig" class="mb-0">
|
|
<el-form-item label="分层空域" prop="layersBig" class="mb-0">
|
|
<el-checkbox v-if="form.layeringType === '广域分层'" v-model="checkAll.big" class="mr-auto"
|
|
<el-checkbox v-if="form.layeringType === '广域分层'" v-model="checkAll.big" class="mr-auto"
|
|
- @change="val => handleCheckAll('big', val)">全选</el-checkbox>
|
|
|
|
- <el-checkbox-group v-if="form.layeringType === '广域分层'" v-model="form.layersBig">
|
|
|
|
|
|
+ :indeterminate="indeterminate.big" @change="val => handleCheckAll('big', val)">全选</el-checkbox>
|
|
|
|
+ <el-checkbox-group v-if="form.layeringType === '广域分层'" v-model="form.layersBig"
|
|
|
|
+ @change="val => handleCheck('big', val, 3)">
|
|
<el-checkbox v-for="item in layersListBig" :label="item.label" :value="item.value" />
|
|
<el-checkbox v-for="item in layersListBig" :label="item.label" :value="item.value" />
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
|
|
|
|
@@ -37,27 +41,27 @@
|
|
<div class="title-sub mb-2 w-full">
|
|
<div class="title-sub mb-2 w-full">
|
|
120以下
|
|
120以下
|
|
<el-checkbox v-model="checkAll.small_1" @change="val => handleCheckAll('small_1', val)"
|
|
<el-checkbox v-model="checkAll.small_1" @change="val => handleCheckAll('small_1', val)"
|
|
- class="ml-auto pr-1">全选</el-checkbox>
|
|
|
|
|
|
+ class="ml-auto pr-1" :indeterminate="indeterminate.small_1">全选</el-checkbox>
|
|
</div>
|
|
</div>
|
|
- <el-checkbox-group v-model="form.layersSmall">
|
|
|
|
|
|
+ <el-checkbox-group v-model="form.layersSmall" @change="val => handleCheck('small_1', val)">
|
|
<el-checkbox v-for="item in layersListSmall.slice(0, 6)" :label="item.label" :value="item.value"
|
|
<el-checkbox v-for="item in layersListSmall.slice(0, 6)" :label="item.label" :value="item.value"
|
|
class="w-1/3 mr-0 mb-1 pl-2" />
|
|
class="w-1/3 mr-0 mb-1 pl-2" />
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
<div class="title-sub my-2 w-full">
|
|
<div class="title-sub my-2 w-full">
|
|
120-300
|
|
120-300
|
|
<el-checkbox v-model="checkAll.small_2" @change="val => handleCheckAll('small_2', val)"
|
|
<el-checkbox v-model="checkAll.small_2" @change="val => handleCheckAll('small_2', val)"
|
|
- class="ml-auto pr-1">全选</el-checkbox>
|
|
|
|
|
|
+ class="ml-auto pr-1" :indeterminate="indeterminate.small_2">全选</el-checkbox>
|
|
</div>
|
|
</div>
|
|
- <el-checkbox-group v-model="form.layersSmall">
|
|
|
|
|
|
+ <el-checkbox-group v-model="form.layersSmall" @change="val => handleCheck('small_2', val)">
|
|
<el-checkbox v-for="item in layersListSmall.slice(6, 15)" :label="item.label" :value="item.value"
|
|
<el-checkbox v-for="item in layersListSmall.slice(6, 15)" :label="item.label" :value="item.value"
|
|
class="w-1/3 mr-0 mb-1 pl-2" />
|
|
class="w-1/3 mr-0 mb-1 pl-2" />
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
<div class="title-sub my-2 w-full">
|
|
<div class="title-sub my-2 w-full">
|
|
300-600
|
|
300-600
|
|
<el-checkbox v-model="checkAll.small_3" @change="val => handleCheckAll('small_3', val)"
|
|
<el-checkbox v-model="checkAll.small_3" @change="val => handleCheckAll('small_3', val)"
|
|
- class="ml-auto pr-1">全选</el-checkbox>
|
|
|
|
|
|
+ class="ml-auto pr-1" :indeterminate="indeterminate.small_3">全选</el-checkbox>
|
|
</div>
|
|
</div>
|
|
- <el-checkbox-group v-model="form.layersSmall" class="w-full">
|
|
|
|
|
|
+ <el-checkbox-group v-model="form.layersSmall" class="w-full" @change="val => handleCheck('small_3', val)">
|
|
<el-checkbox v-for="item in layersListSmall.slice(15)" :label="item.label" :value="item.value"
|
|
<el-checkbox v-for="item in layersListSmall.slice(15)" :label="item.label" :value="item.value"
|
|
class="w-1/3 mr-0 pl-2" />
|
|
class="w-1/3 mr-0 pl-2" />
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
@@ -251,12 +255,36 @@ const checkAll = reactive({
|
|
small_3: false,
|
|
small_3: false,
|
|
})
|
|
})
|
|
|
|
|
|
-function handleCheckAll(type, checkVal) {
|
|
|
|
- const typeMap = {
|
|
|
|
- 'small_1': [0, 5],
|
|
|
|
- 'small_2': [6, 14],
|
|
|
|
- 'small_3': [15, 17],
|
|
|
|
|
|
+const indeterminate = reactive({
|
|
|
|
+ big: false,
|
|
|
|
+ small_1: false,
|
|
|
|
+ small_2: false,
|
|
|
|
+ small_3: false,
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+function handleCheck(type, checkVal) {
|
|
|
|
+ let checkedLen
|
|
|
|
+ let typeAll
|
|
|
|
+ if(type==='big') {
|
|
|
|
+ checkedLen = checkVal.length
|
|
|
|
+ typeAll = layersListBig
|
|
|
|
+ } else {
|
|
|
|
+ typeAll = layersListSmall.value.slice(typeMap[type][0], typeMap[type][1])
|
|
|
|
+ checkedLen = typeAll.filter(a => checkVal.indexOf(a) > -1).length
|
|
}
|
|
}
|
|
|
|
+ indeterminate[type] = checkedLen < typeAll.length && checkedLen > 0
|
|
|
|
+ checkAll[type] = checkedLen === typeAll.length
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const typeMap = {
|
|
|
|
+ 'small_1': [0, 5],
|
|
|
|
+ 'small_2': [6, 14],
|
|
|
|
+ 'small_3': [15, 17],
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleCheckAll(type, checkVal) {
|
|
|
|
+ indeterminate[type] = false
|
|
|
|
+
|
|
if (type === 'big') {
|
|
if (type === 'big') {
|
|
form.value.layersBig = checkVal ? layersListBig.map(i => i.value) : []
|
|
form.value.layersBig = checkVal ? layersListBig.map(i => i.value) : []
|
|
} else {
|
|
} else {
|
|
@@ -278,7 +306,7 @@ function handleCheckAll(type, checkVal) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-function clearAll() {
|
|
|
|
|
|
+function clearAll(all=false) {
|
|
const currentList = form.value.layeringType === '广域分层' ? layersListBig : layersListSmall.value
|
|
const currentList = form.value.layeringType === '广域分层' ? layersListBig : layersListSmall.value
|
|
currentList.forEach(i => {
|
|
currentList.forEach(i => {
|
|
if ([...lastBigLayers, ...lastSmallLayers].includes(i.value)) {
|
|
if ([...lastBigLayers, ...lastSmallLayers].includes(i.value)) {
|
|
@@ -288,6 +316,14 @@ function clearAll() {
|
|
lastBigLayers = []
|
|
lastBigLayers = []
|
|
lastSmallLayers = []
|
|
lastSmallLayers = []
|
|
clearDraw()
|
|
clearDraw()
|
|
|
|
+ if(all) {
|
|
|
|
+ Object.keys(checkAll).forEach(k => checkAll[k] = false)
|
|
|
|
+ Object.keys(indeterminate).forEach(k => indeterminate[k] = false)
|
|
|
|
+ form.value.layersBig = []
|
|
|
|
+ form.value.layersSmall = []
|
|
|
|
+ drawResult = null
|
|
|
|
+ queryResult = null
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
function handleStoreChecked() {
|
|
function handleStoreChecked() {
|
|
@@ -323,10 +359,25 @@ onBeforeUnmount(() => {
|
|
}
|
|
}
|
|
|
|
|
|
.u-title {
|
|
.u-title {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
font-size: 26px;
|
|
font-size: 26px;
|
|
background: linear-gradient(186deg, rgba(128, 155, 237, 1) 0%, rgba(255, 255, 255, 1) 100%);
|
|
background: linear-gradient(186deg, rgba(128, 155, 237, 1) 0%, rgba(255, 255, 255, 1) 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
-webkit-text-fill-color: transparent;
|
|
|
|
+ i {
|
|
|
|
+ display: block;
|
|
|
|
+ width: 34px;
|
|
|
|
+ height: 34px;
|
|
|
|
+ margin-left: 5px;
|
|
|
|
+ background: url('../../../assets/images/page/btn-delete.png');
|
|
|
|
+ background-size: 40px 40px;
|
|
|
|
+ background-position: center;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ &:hover {
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
:deep(.form-top) {
|
|
:deep(.form-top) {
|