Commit 78105fee authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 067bc414 a2645902
...@@ -107,8 +107,11 @@ ...@@ -107,8 +107,11 @@
<script> <script>
import AddData from "../modal/AddData.vue"; import AddData from "../modal/AddData.vue";
import { mapGetters } from "vuex"; import {
import { getDatasetList, deleteDataset } from "@/services/market"; getDatasetList,
deleteDataset,
getTempleteList,
} from "@/services/market";
import PrevieModal from "@/components/PrevieModal.vue"; import PrevieModal from "@/components/PrevieModal.vue";
export default { export default {
// props: { // props: {
...@@ -142,10 +145,10 @@ export default { ...@@ -142,10 +145,10 @@ export default {
fieldCode: "", fieldCode: "",
previewVisible: false, previewVisible: false,
previewData: {}, // 预览信息 previewData: {}, // 预览信息
appTemplate: [], // 字段模板列表
}; };
}, },
computed: { computed: {
...mapGetters("site", ["appTemplate"]),
// 初始化表头 // 初始化表头
columns() { columns() {
let index = { let index = {
...@@ -186,9 +189,24 @@ export default { ...@@ -186,9 +189,24 @@ export default {
}, },
}, },
created() { created() {
this.getTempleteList();
this.getDatasetList(); this.getDatasetList();
}, },
methods: { methods: {
// 获取数据模板
async getTempleteList() {
let res = await getTempleteList({
page: 1,
size: -1,
appId: this.appId,
});
if (res.data.code === 1) {
let { data } = res.data.data;
this.appTemplate = data.sort((a, b) => {
return a.fieldOrderNo - b.fieldOrderNo;
});
}
},
// 获取数据列表 // 获取数据列表
async getDatasetList() { async getDatasetList() {
this.loading = true; this.loading = true;
......
...@@ -23,7 +23,10 @@ ...@@ -23,7 +23,10 @@
showTotal: (total) => `共 ${total} 条`, showTotal: (total) => `共 ${total} 条`,
current: current, current: current,
total: total, total: total,
defaultPageSize: 1000, pageSize: size,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: pageSizeOptions,
onChange: handleChange, onChange: handleChange,
onShowSizeChange: showSizeChange, onShowSizeChange: showSizeChange,
}" }"
...@@ -59,7 +62,6 @@ ...@@ -59,7 +62,6 @@
<script> <script>
import AddField from "../modal/AddField.vue"; import AddField from "../modal/AddField.vue";
import { getTempleteList, deleteTemplete } from "@/services/market"; import { getTempleteList, deleteTemplete } from "@/services/market";
import { mapMutations } from "vuex";
export default { export default {
// props: { // props: {
...@@ -122,9 +124,9 @@ export default { ...@@ -122,9 +124,9 @@ export default {
columns, columns,
loading: false, loading: false,
current: 1, current: 1,
size: -1, size: 10,
total: 0, total: 0,
// pageSizeOptions: ["10", "30", "50", "100"], pageSizeOptions: ["10", "30", "50", "100"],
searchVal: "", searchVal: "",
tableData: [], tableData: [],
fieldVisible: false, fieldVisible: false,
...@@ -135,7 +137,6 @@ export default { ...@@ -135,7 +137,6 @@ export default {
this.getTempleteList(); this.getTempleteList();
}, },
methods: { methods: {
...mapMutations("site", ["SET_appTemplate"]),
// 获取数据模板 // 获取数据模板
async getTempleteList() { async getTempleteList() {
this.loading = true; this.loading = true;
...@@ -155,7 +156,6 @@ export default { ...@@ -155,7 +156,6 @@ export default {
this.tableData = data.sort((a, b) => { this.tableData = data.sort((a, b) => {
return a.fieldOrderNo - b.fieldOrderNo; return a.fieldOrderNo - b.fieldOrderNo;
}); });
this.SET_appTemplate(data);
this.total = total; this.total = total;
} }
}, },
......
...@@ -29,17 +29,61 @@ ...@@ -29,17 +29,61 @@
trigger: v.fieldType == 'text' ? 'blur' : 'change', trigger: v.fieldType == 'text' ? 'blur' : 'change',
}" }"
> >
<!-- 单行输入框 -->
<a-input <a-input
v-if="v.fieldType == 'input'" v-if="v.fieldType == 'input'"
v-model="v.fieldValue" v-model="v.fieldValue"
:placeholder="`请输入${v.fieldName}`" :placeholder="`请输入${v.fieldName}`"
/> />
<!-- 多选框 -->
<a-checkbox-group
v-else-if="v.fieldType == 'checkbox'"
v-model="v.checkbox"
@change="(vals) => changeCheckBox(vals, v)"
>
<a-checkbox
v-for="(item, key) in JSON.parse(v.fieldTypeValue)"
:key="key"
:value="key"
>
{{ item }}
</a-checkbox>
</a-checkbox-group>
<!--单选框 -->
<a-radio-group
v-else-if="v.fieldType == 'radio'"
v-model="v.fieldValue"
>
<a-radio
v-for="(item, key) in JSON.parse(v.fieldTypeValue)"
:key="key"
:value="key"
>
{{ item }}
</a-radio>
</a-radio-group>
<!-- 下拉选择框 -->
<a-select
v-else-if="v.fieldType == 'select'"
v-model="v.fieldValue"
placeholder="请选择"
>
<a-select-option
v-for="(item, key) in JSON.parse(v.fieldTypeValue)"
:key="key"
:value="key"
>
{{ item }}
</a-select-option>
</a-select>
<!-- 日期选择器 -->
<a-date-picker <a-date-picker
v-else-if="v.fieldType == 'date'" v-else-if="v.fieldType == 'date'"
v-model="v.fieldValue" v-model="v.fieldValue"
:placeholder="`请选择${v.fieldName}`" :placeholder="`请选择${v.fieldName}`"
valueFormat="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
/> />
<!-- 多行文本输入框 -->
<a-textarea <a-textarea
v-else-if="v.fieldType == 'textarea'" v-else-if="v.fieldType == 'textarea'"
v-model="v.fieldValue" v-model="v.fieldValue"
...@@ -50,9 +94,11 @@ ...@@ -50,9 +94,11 @@
:placeholder="`请输入${v.fieldName}`" :placeholder="`请输入${v.fieldName}`"
allow-clear allow-clear
/> />
<!-- 富文本 -->
<div v-else-if="v.fieldType == 'text'" class="content-box"> <div v-else-if="v.fieldType == 'text'" class="content-box">
<YQuillEditor v-model="v.fieldValue" height="auto"></YQuillEditor> <YQuillEditor v-model="v.fieldValue" height="auto"></YQuillEditor>
</div> </div>
<!-- 文件上传 -->
<a-upload <a-upload
v-else-if="v.fieldType == 'upload'" v-else-if="v.fieldType == 'upload'"
:action="api + 'base/file/commonupload'" :action="api + 'base/file/commonupload'"
...@@ -170,6 +216,9 @@ export default { ...@@ -170,6 +216,9 @@ export default {
if (v.fieldType == "upload") { if (v.fieldType == "upload") {
v.fileList = []; v.fileList = [];
} }
if (v.fieldType == "checkbox") {
v.checkbox = [];
}
return v; return v;
}); });
this.form.appId = this.$route.query.id; this.form.appId = this.$route.query.id;
...@@ -190,6 +239,12 @@ export default { ...@@ -190,6 +239,12 @@ export default {
} else { } else {
v.fileList = []; v.fileList = [];
} }
} else if (v.fieldType == "checkbox") {
if (v.fieldValue) {
v.checkbox = v.fieldValue.split(",");
} else {
v.checkbox = [];
}
} }
}); });
this.form = { ...data }; this.form = { ...data };
...@@ -206,11 +261,14 @@ export default { ...@@ -206,11 +261,14 @@ export default {
} }
return file; return file;
}); });
console.log(fileList);
row.fileList = fileList; row.fileList = fileList;
row.fieldValue = fileList.map((v) => v.url).join(","); row.fieldValue = fileList.map((v) => v.url).join(",");
this.$forceUpdate(); this.$forceUpdate();
}, },
// 改变多选框状态
changeCheckBox(vals, row) {
row.fieldValue = vals.join(",");
},
}, },
}; };
</script> </script>
......
<template> <template>
<div> <div>
<a-modal v-model="Visible" title="新增数据字段"> <a-modal :width="600" v-model="Visible" title="新增数据字段">
<a-form-model <a-form-model
:model="form" :model="form"
ref="form" ref="form"
...@@ -15,7 +15,11 @@ ...@@ -15,7 +15,11 @@
<a-input v-model="form.fieldCode" placeholder="请输入字段编码" /> <a-input v-model="form.fieldCode" placeholder="请输入字段编码" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="字段类型" prop="fieldType"> <a-form-model-item label="字段类型" prop="fieldType">
<a-select v-model="form.fieldType" placeholder="请选择字段类型"> <a-select
v-model="form.fieldType"
placeholder="请选择字段类型"
@change="changeFieldType"
>
<a-select-option <a-select-option
v-for="v in fieldTypeItem" v-for="v in fieldTypeItem"
:key="v.value" :key="v.value"
...@@ -25,6 +29,18 @@ ...@@ -25,6 +29,18 @@
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
<a-form-model-item
v-if="isNeedConfig"
label="数据配置"
prop="fieldTypeValue"
>
<a-textarea
:autoSize="{ minRows: 3, maxRows: 3 }"
v-model="form.fieldTypeValue"
placeholder='请输入JSON格式数据配置,如{"0":"否","1":"是"}'
allow-clear
/>
</a-form-model-item>
<a-form-model-item label="数据类型" prop="dataType"> <a-form-model-item label="数据类型" prop="dataType">
<a-radio-group v-model="form.dataType"> <a-radio-group v-model="form.dataType">
<a-radio value="number"> 数字 </a-radio> <a-radio value="number"> 数字 </a-radio>
...@@ -82,6 +98,18 @@ const fieldTypeItem = [ ...@@ -82,6 +98,18 @@ const fieldTypeItem = [
value: "date", value: "date",
label: "日期选择框", label: "日期选择框",
}, },
{
value: "radio",
label: "单选框",
},
{
value: "checkbox",
label: "多选框",
},
{
value: "select",
label: "下拉选择框",
},
{ {
value: "upload", value: "upload",
label: "文件上传", label: "文件上传",
...@@ -100,6 +128,29 @@ export default { ...@@ -100,6 +128,29 @@ export default {
}, },
}, },
data() { data() {
// 校验JSON
const checkJSON = (rule, value, callback) => {
if (!value) {
callback(new Error("请输入数据配置"));
} else {
try {
let Obj = JSON.parse(value);
let isjson =
typeof Obj == "object" &&
Object.prototype.toString.call(Obj).toLowerCase() ==
"[object object]" &&
Object.keys(Obj).length;
!value.length;
if (isjson) {
callback();
} else {
callback(new Error("输入的JSON对象格式"));
}
} catch (err) {
callback(new Error("输入的JSON数据格式有误"));
}
}
};
return { return {
fieldTypeItem, fieldTypeItem,
form: { form: {
...@@ -112,6 +163,8 @@ export default { ...@@ -112,6 +163,8 @@ export default {
fieldNull: "", //是否允许为空,(0.否,1.是) fieldNull: "", //是否允许为空,(0.否,1.是)
isList: "", //字段是否列表显示(0.否,1.是) isList: "", //字段是否列表显示(0.否,1.是)
fieldOrderNo: 99, // 排序号 fieldOrderNo: 99, // 排序号
fieldTypeValue: "", // 字段类型值
defaultValue: "", // 字段默认值
remark: "", // remark: "", //
}, },
rules: { rules: {
...@@ -130,6 +183,9 @@ export default { ...@@ -130,6 +183,9 @@ export default {
isList: [ isList: [
{ required: true, message: "请选择是否列表显示", trigger: "change" }, { required: true, message: "请选择是否列表显示", trigger: "change" },
], ],
fieldTypeValue: [
{ required: true, validator: checkJSON, trigger: "blur" },
],
}, },
}; };
}, },
...@@ -142,6 +198,13 @@ export default { ...@@ -142,6 +198,13 @@ export default {
this.$emit("update:fieldVisible", val); this.$emit("update:fieldVisible", val);
}, },
}, },
isNeedConfig() {
return (
this.form.fieldType == "radio" ||
this.form.fieldType == "checkbox" ||
this.form.fieldType == "select"
);
},
}, },
methods: { methods: {
handleOk() { handleOk() {
...@@ -171,9 +234,19 @@ export default { ...@@ -171,9 +234,19 @@ export default {
onEdit(data) { onEdit(data) {
this.form = { ...data }; this.form = { ...data };
}, },
// 切换字段类型
changeFieldType(val) {
if (!(val == "radio" || val == "checkbox" || val == "select")) {
this.form.fieldTypeValue = "";
}
},
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/deep/.ant-modal-body {
max-height: 600px;
overflow-y: auto;
}
</style> </style>
\ No newline at end of file
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