fixed bug

qianlishi 3 years ago
parent 2e8236a135
commit 9c4a21017b

@ -5,38 +5,44 @@
</template>
<script>
import '@/assets/iconfont/iconfont.css'
import { initDictToLocalstorage } from '@/api/dict-data'
import "@/assets/iconfont/iconfont.css";
import { initDictToLocalstorage } from "@/api/dict-data";
export default {
name: 'App',
provide () {
name: "App",
provide() {
return {
reload: this.reload,
}
reload: this.reload
};
},
data () {
data() {
return {
isRouterAlive: false,
isRouterAlive: false
};
},
watch: {
$route(to, form) {
if (to.path == "/login") {
this.queryDictName();
}
}
},
computed: {},
created () {
//
initDictToLocalstorage(() => {
this.isRouterAlive = true
})
},
mounted () {
},
beforeDestroy () {
created() {
this.queryDictName();
},
methods: {
reload () {
this.isRouterAlive = false
this.$nextTick(function () {
this.isRouterAlive = true
})
queryDictName() {
//
initDictToLocalstorage(() => {
this.isRouterAlive = true;
});
},
reload() {
this.isRouterAlive = false;
this.$nextTick(function() {
this.isRouterAlive = true;
});
}
}
}
};
</script>

@ -22,38 +22,41 @@
-->
<template>
<div>
<el-select v-model="selectValue"
:clearable="clearable"
:collapse-tags="collapseTags"
filterable
class="filter-item"
:placeholder="placeholder"
:disabled="disabled"
:multiple="multiple == null ? false : true"
:remote="remoteFilter"
:remote-method="remoteQuery"
@change="change">
<el-option v-for="(item, index) in options"
:key="index"
:label="getItemLabel(item, label)"
:value="item[option]"
:disabled="isDisabledOption(item)">
<el-select
v-model="selectValue"
:clearable="clearable"
:collapse-tags="collapseTags"
filterable
class="filter-item"
:placeholder="placeholder"
:disabled="disabled"
:multiple="multiple == null ? false : true"
:remote="remoteFilter"
:remote-method="remoteQuery"
@change="change"
>
<el-option
v-for="(item, index) in options"
:key="index"
:label="getItemLabel(item, label)"
:value="item[option]"
:disabled="isDisabledOption(item)"
>
<template v-if="mergeLabel">
<span style="float: left">{{ getItemLabel(item, label) }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item[option] }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{
item[option]
}}</span>
</template>
</el-option>
<el-option v-if="totalPage > 1"
label="搜索更多"
value=""
disabled />
<el-option v-if="totalPage > 1" label="搜索更多" value="" disabled />
</el-select>
</div>
</template>
<script>
import request from '@/utils/request'
import { getStorageItem } from '@/utils/storage';
import request from "@/utils/request";
import { getStorageItem } from "@/utils/storage";
export default {
props: {
dictCode: null, // dictCodeurl
@ -62,240 +65,254 @@ export default {
queryParam: {
type: Object,
default: () => {
return {}
},
return {};
}
},
value: null,
placeholder: null,
label: {
type: String,
default: 'text',
default: "text"
},
option: {
type: String,
default: 'id',
default: "id"
},
multiple: null,
localOptions: null,
disabled: null,
clearable: {
type: Boolean,
default: true,
default: true
},
collapseTags: {
type: Boolean,
default: false,
default: false
},
mergeLabel: {
type: Boolean,
default: false,
default: false
},
//
disabledOptions: {
type: String,
default: () => {
return ''
},
return "";
}
},
// 使
remoteFilter: {
type: Boolean,
default: false,
},
default: false
}
},
data () {
data() {
return {
options: null,
selectValue: null,
//
totalPage: 0,
}
totalPage: 0
};
},
computed: {
// dictCodeurlurl
requestUrl () {
if (this.url != null && this.url.trim() != '') {
if (this.url.indexOf('?') > 0) {
requestUrl() {
if (this.url != null && this.url.trim() != "") {
if (this.url.indexOf("?") > 0) {
if (this.option == null) {
console.log('url-' + this.url.substring(this.url.indexOf('?')))
console.log("url-" + this.url.substring(this.url.indexOf("?")));
}
if (this.label == null) {
}
}
return this.url
return this.url;
}
if (this.dictCode != null && this.dictCode.trim() != '') {
return `/meta/gaeaDict/select/${this.dictCode}`
if (this.dictCode != null && this.dictCode.trim() != "") {
return `/meta/gaeaDict/select/${this.dictCode}`;
}
return null
},
return null;
}
},
watch: {
value: function (val, oldVal) {
value: function(val, oldVal) {
if (this.multiple != null) {
if (!this.value) {
this.selectValue = []
this.selectValue = [];
} else {
this.selectValue = this.value
this.selectValue = this.value;
}
} else {
if (this.value != null && this.value != undefined) {
this.selectValue = this.value
this.selectValue = this.value;
} else {
this.selectValue = ''
this.selectValue = "";
}
}
},
url () {
url() {
setTimeout(() => {
this.queryData()
}, 500)
},
this.queryData();
}, 500);
}
},
created () {
created() {
if (this.multiple != null) {
this.selectValue = this.value
this.selectValue = this.value;
} else {
if (this.value != null) {
this.selectValue = this.value
this.selectValue = this.value;
}
}
},
mounted () {
mounted() {
if (this.requestUrl == null) {
this.options = this.localOptions
return
this.options = this.localOptions;
return;
}
this.queryData()
this.queryData();
},
methods: {
//
isDisabledOption (option) {
if (option == null || this.disabledOptions == null || this.disabledOptions.length == 0) {
return false
isDisabledOption(option) {
if (
option == null ||
this.disabledOptions == null ||
this.disabledOptions.length == 0
) {
return false;
}
var currentOptionVal = option[this.option]
return this.disabledOptions.indexOf(currentOptionVal) >= 0
var currentOptionVal = option[this.option];
return this.disabledOptions.indexOf(currentOptionVal) >= 0;
},
change (value) {
if (value === '') {
value = null
change(value) {
if (value === "") {
value = null;
}
this.$emit('input', value)
this.$emit("input", value);
//
var optionItem = this.options.find((item) => item[this.option] == value)
this.$emit('change', value, optionItem)
var optionItem = this.options.find(item => item[this.option] == value);
this.$emit("change", value, optionItem);
},
// label
getItemLabel (item, label) {
if (label.indexOf('${') < 0 && label.indexOf('}' < 0)) {
return item[label]
getItemLabel(item, label) {
if (label.indexOf("${") < 0 && label.indexOf("}" < 0)) {
return item[label];
}
var reg = /\$\{[a-zA-Z0-9]*\}/g
var list = label.match(reg)
var reg = /\$\{[a-zA-Z0-9]*\}/g;
var list = label.match(reg);
// ["${id}", "${text}"]
var result = label
var result = label;
for (var i = 0; i < list.length; i++) {
var sub = list[i]
var key = sub.replace('${', '').replace('}', '')
result = result.replace(sub, item[key])
var sub = list[i];
var key = sub.replace("${", "").replace("}", "");
result = result.replace(sub, item[key]);
}
return result
return result;
},
// localStorage gaeaDict
getOptionsFromLocalStorage () {
var dicts = getStorageItem('gaeaDict')
var options = []
getOptionsFromLocalStorage() {
var dicts = getStorageItem("gaeaDict");
var options = [];
if (!dicts.hasOwnProperty(this.dictCode)) {
return []
return [];
}
var dictItems = dicts[this.dictCode]
var dictItems = dicts[this.dictCode];
for (var i = 0; i < dictItems.length; i++) {
var dictItem = dictItems[i]
options.push({ id: dictItem.id, text: dictItem.text })
var dictItem = dictItems[i];
options.push({ id: dictItem.id, text: dictItem.text });
}
return options
return options;
},
queryData () {
queryData() {
// localStorageApp.vue
var options = this.getOptionsFromLocalStorage()
var options = this.getOptionsFromLocalStorage();
if (this.isNotBlank(options)) {
this.options = options
return
this.options = options;
return;
}
// localStorage
if (this.requestUrl == null) {
return
return;
}
if (this.method != null && this.method.toLocaleLowerCase().trim() == 'post') {
this.queryDataByPost()
if (
this.method != null &&
this.method.toLocaleLowerCase().trim() == "post"
) {
this.queryDataByPost();
} else {
this.queryDataByGet()
this.queryDataByGet();
}
},
queryDataByGet (keyword) {
var param = this.deepClone(this.queryParam)
queryDataByGet(keyword) {
var param = this.deepClone(this.queryParam);
if (this.isNotBlank(keyword)) {
param['keyword'] = keyword
param["keyword"] = keyword;
}
param['multiple'] = this.multiple == null ? null : 1
param["multiple"] = this.multiple == null ? null : 1;
request({
url: this.requestUrl,
headers: { noPrompt: true },
params: param,
}).then((response) => {
this.setOptions(response.data)
})
params: param
}).then(response => {
this.setOptions(response.data);
});
},
queryDataByPost (keyword) {
var param = this.deepClone(this.queryParam)
queryDataByPost(keyword) {
var param = this.deepClone(this.queryParam);
if (this.isNotBlank(keyword)) {
param['keyword'] = keyword
param["keyword"] = keyword;
}
request({
url: this.requestUrl,
method: 'post',
method: "post",
headers: { noPrompt: true },
data: param,
}).then((response) => {
this.setOptions(response.data)
})
data: param
}).then(response => {
this.setOptions(response.data);
});
},
setOptions (resData) {
setOptions(resData) {
if (resData == null || resData.length == 0) {
this.options = []
this.totalPage = 0
return
this.options = [];
this.totalPage = 0;
return;
}
if (this.isArray(resData)) {
this.options = resData
this.totalPage = 1
return
this.options = resData;
this.totalPage = 1;
return;
}
if (resData.records == null || resData.total == null || resData.pages == null) {
this.options = []
return
if (
resData.records == null ||
resData.total == null ||
resData.pages == null
) {
this.options = [];
return;
}
this.totalPage = resData.pages
this.totalPage = resData.pages;
// resData.records
// resData.total
// resData.size
// resData.current
this.options = resData.records
this.options = resData.records;
},
remoteQuery (keyword) {
remoteQuery(keyword) {
if (this.isBlank(keyword)) {
return
return;
}
setTimeout(() => {
if (this.method != null && this.method.toLocaleLowerCase().trim() == 'post') {
this.queryDataByPost(keyword)
if (
this.method != null &&
this.method.toLocaleLowerCase().trim() == "post"
) {
this.queryDataByPost(keyword);
} else {
this.queryDataByGet(keyword)
this.queryDataByGet(keyword);
}
}, 200)
},
},
}
}, 200);
}
}
};
</script>

Loading…
Cancel
Save