Commit 10a9ec99 authored by “yiyousong”'s avatar “yiyousong”

perf: 优化应用字段创建

parent 15aa9ec5
<template>
<div class="select-box">
<a-select :value="value" placeholder="请选择" @change="changeVal">
<a-select-option v-for="(v, key) in options" :key="key" :value="key">
{{ v }}
</a-select-option>
</a-select>
</div>
</template>
<script>
import local from "@/utils/local";
import { request } from "@/utils/request";
export default {
model: {
prop: "value",
event: "change",
},
props: {
value: {
required: true,
default: "",
},
info: {
type: Object,
required: true,
default: () => {},
},
},
data() {
return {
siteId: local.getLocal("siteId"),
api: process.env.VUE_APP_API_BASE_URL,
options: {},
};
},
watch: {
info: {
handler() {
this.getOptions();
},
deep: true,
immediate: true,
},
},
methods: {
// 获取数据
async getOptions() {
if (this.$_.isEmpty(this.info)) return this.options;
let { serviceApi, fieldTypeValue } = this.info;
fieldTypeValue = JSON.parse(fieldTypeValue);
if (!serviceApi && fieldTypeValue) {
this.options = fieldTypeValue;
} else if (serviceApi) {
let res = await request(this.api + serviceApi, "post", {
size: -1,
page: 1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
const firstKey = Object.keys(fieldTypeValue)[0];
const firstValue = fieldTypeValue[firstKey];
data.forEach((v) => {
this.options[v[firstValue]] = v[firstKey];
});
this.$forceUpdate();
}
}
},
changeVal(val) {
this.$emit("change", val);
},
},
beforeDestroy() {
this.options = {};
},
};
</script>
<style lang="less" scoped>
.select-box {
width: 100%;
}
</style>
......@@ -65,7 +65,13 @@
</a-radio>
</a-radio-group>
<!-- 下拉选择框 -->
<a-select
<AppSelect
v-else-if="v.fieldType == 'select'"
:info="v"
v-model="v.fieldValue"
>
</AppSelect>
<!-- <a-select
v-else-if="v.fieldType == 'select'"
v-model="v.fieldValue"
placeholder="请选择"
......@@ -77,7 +83,7 @@
>
{{ item }}
</a-select-option>
</a-select>
</a-select> -->
<!-- 日期选择器 -->
<a-date-picker
v-else-if="v.fieldType == 'date'"
......@@ -235,12 +241,14 @@
<script>
import YQuillEditor from "@/components/YQuillEditor.vue";
import AppSelect from "../components/AppSelect.vue";
import { batchSaveDataset } from "@/services/market";
import { request } from "@/utils/request";
import local from "@/utils/local";
export default {
components: {
YQuillEditor,
AppSelect,
},
props: {
title: {
......
......@@ -35,7 +35,7 @@
</a-select>
</a-form-model-item>
<a-form-model-item
v-if="form.fieldType == 'table'"
v-if="form.fieldType == 'table' || form.fieldType == 'select'"
label="数据接口"
prop="serviceApi"
>
......@@ -220,26 +220,6 @@ export default {
},
},
data() {
// 校验JSON
// const checkJSON = (rule, value, callback) => {
// if (!value) {
// callback(new Error("请输入数据配置"));
// } else {
// try {
// let Obj = JSON.parse(value);
// let isjson =
// Object.prototype.toString.call(Obj).toLowerCase() ==
// "[object object]" && Object.keys(Obj).length;
// if (isjson) {
// callback();
// } else {
// callback(new Error("请输入JSON对象格式"));
// }
// } catch (err) {
// callback(new Error("输入的JSON数据格式有误"));
// }
// }
// };
return {
fieldTypeItem,
fieldType: [
......@@ -287,9 +267,9 @@ export default {
isList: [
{ required: true, message: "请选择是否列表显示", trigger: "change" },
],
serviceApi: [
{ required: true, message: "请输入数据接口地址", trigger: "blur" },
],
// serviceApi: [
// { required: true, message: "请输入数据接口地址", trigger: "blur" },
// ],
},
};
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment