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

Merge remote-tracking branch 'origin/master'

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