hgwms-2098 fix 策略参数弹窗修改

hwork-master
A0066811 2025-11-07 14:21:38 +08:00
parent 65b8f5d368
commit d7c8e2758b
4 changed files with 762 additions and 645 deletions

View File

@ -1,63 +1,100 @@
<template>
<a-modal :open="visible" title="新增配置信息" cancelText="取消" okText="提交" @ok="submit" @cancel="cancel">
<a-form ref="formRef" :model="formState" :rules="formRules" v-bind="formItemLayoutWithOutLabel"
:label-col="labelCol" :wrapper-col="wrapperCol">
<a-modal
:open="visible"
title="新增配置信息"
cancelText="取消"
okText="提交"
@ok="submit"
@cancel="cancel"
>
<a-form
ref="formRef"
:model="formState"
:rules="formRules"
layout="vertical"
>
<a-row :gutter="[16, 0]">
<a-col :span="24">
<a-form-item ref="name" label="描述" name="name">
<a-textarea v-model:value="formState.name" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item ref="code" label="编号" name="code">
<a-input v-model:value="formState.code" />
</a-form-item>
<a-form-item ref="collectionType" label="集合类型" name="collectionType">
<a-select v-model:value="formState.collectionType" :options="configCollectionType"
@change="configCollectionTypeChanged" />
</a-col>
<a-col :span="24">
<a-form-item
ref="collectionType"
label="集合类型"
name="collectionType"
>
<a-select
v-model:value="formState.collectionType"
:options="configCollectionType"
@change="configCollectionTypeChanged"
/>
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item ref="valueType" label="值类型" name="valueType">
<a-select v-model:value="formState.valueType" :options="configValueType" @change="valueTypeChanged" />
<a-select
v-model:value="formState.valueType"
:options="configValueType"
@change="valueTypeChanged"
/>
</a-form-item>
<template v-if="formState.collectionType==='Single'">
</a-col>
<template v-if="formState.collectionType === 'Single'">
<p>Single</p>
<!-- 单值-Interage代表 数字框-->
<!-- 单值-String代表 文本框-->
<!-- 单值-Bool代表 开关-->
<!-- 单值-日期代表 时间选择器-->
<template v-if="formState.valueType==='STRING'">
<template v-if="formState.valueType === 'STRING'">
<a-form-item ref="" label="值" name="value">
<a-textarea v-model:value="formState.value" />
</a-form-item>
</template>
<template v-else-if="formState.valueType==='INT'">
<template v-else-if="formState.valueType === 'INT'">
<a-form-item ref="" label="值" name="value">
<a-input v-model:value="formState.value" />
</a-form-item>
</template>
<template v-else-if="formState.valueType==='BOOLEAN'">
<template v-else-if="formState.valueType === 'BOOLEAN'">
<a-form-item ref="" label="值" name="value">
<a-input v-model:value="formState.value" />
</a-form-item>
</template>
<template v-else-if="formState.valueType==='DATE'">
<template v-else-if="formState.valueType === 'DATE'">
<a-form-item ref="" label="值" name="value">
<a-input v-model:value="formState.value" />
</a-form-item>
</template>
</template>
<template v-else-if="formState.collectionType==='Map'">
<template v-else-if="formState.collectionType === 'Map'">
<p>Map</p>
<!-- 单值-Interage代表 数字框 数字选择器-->
<!-- 单值-String代表 文本框 输入框-->
<!-- 单值-Bool代表 开关 -->
<!-- 单值-日期代表 时间选择器-->
<template v-if="formState.valueType==='INT'">
<template v-if="formState.valueType === 'INT'">
<p>INT</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="6">
<a-input v-model:value="domain.name" placeholder="name" />
@ -79,16 +116,21 @@
</a-row>
</a-form-item>
</template>
<template v-else-if="formState.valueType==='BOOLEAN'">
<template v-else-if="formState.valueType === 'BOOLEAN'">
<p>BOOLEAN</p>
<!-- <p>BOOLEAN {{formState.valueType}}</p> -->
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -110,15 +152,20 @@
</a-row>
</a-form-item>
</template>
<template v-else-if="formState.valueType==='DATE'">
<template v-else-if="formState.valueType === 'DATE'">
<p>DATE</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -142,13 +189,18 @@
</template>
<template v-else>
<p>STRING</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -171,21 +223,26 @@
</a-form-item>
</template>
</template>
<template v-else-if="formState.collectionType==='List'">
<template v-else-if="formState.collectionType === 'List'">
<p>List</p>
<!-- 单值-Interage代表 数字框-->
<!-- 单值-String代表 文本框-->
<!-- 单值-Bool代表 开关-->
<!-- 单值-日期代表 时间选择器-->
<template v-if="formState.valueType==='STRING'">
<template v-if="formState.valueType === 'STRING'">
<p>STRING</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -207,15 +264,20 @@
</a-row>
</a-form-item>
</template>
<template v-else-if="formState.valueType==='INT'">
<template v-else-if="formState.valueType === 'INT'">
<p>INT</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -238,15 +300,20 @@
</a-form-item>
</template>
<template v-else-if="formState.valueType==='BOOLEAN'">
<template v-else-if="formState.valueType === 'BOOLEAN'">
<p>BOOLEAN</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -268,15 +335,20 @@
</a-row>
</a-form-item>
</template>
<template v-else-if="formState.valueType==='DATE'">
<template v-else-if="formState.valueType === 'DATE'">
<p>DATE</p>
<a-form-item v-for="(domain, index) in formState.domains" :key="domain.key"
v-bind="index === 0 ? formItemLayout : {}" :label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']" :rules="{
<a-form-item
v-for="(domain, index) in formState.domains"
:key="domain.key"
v-bind="index === 0 ? formItemLayout : {}"
:label="index === 0 ? 'Domains' : 'Domains'"
:name="['domains', index, 'value']"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'change',
}">
}"
>
<a-row>
<a-col :span="8">
<a-input v-model:value="domain.name" placeholder="name" />
@ -298,7 +370,6 @@
</a-row>
</a-form-item>
</template>
</template>
<template v-else>
<!-- 单值-Interage代表 数字框-->
@ -336,35 +407,25 @@
</a-row>
</a-form-item> -->
<!-- <a-form-item label="状态" name="enable">
<a-switch v-model:checked="formState.enable" />
</a-form-item> -->
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="formState.remark" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
<script>
import {
message
} from '@hwork/ant-design-vue';
import {
addConfig
} from "@/api/module/config";
import {
defineComponent,
reactive,
ref,
toRaw
} from "vue";
import {
MinusCircleOutlined,
PlusOutlined
} from '@ant-design/icons-vue';
import { message } from "@hwork/ant-design-vue";
import { addConfig } from "@/api/module/config";
import { defineComponent, reactive, ref, toRaw } from "vue";
import { MinusCircleOutlined, PlusOutlined } from "@ant-design/icons-vue";
export default defineComponent({
export default defineComponent({
props: {
visible: {
type: Boolean,
@ -372,7 +433,6 @@
},
emit: ["close"],
setup(props, context) {
const formRef = ref();
const formState = reactive({
@ -382,26 +442,34 @@
});
const formRules = {
name: [{
name: [
{
required: true,
message: '请输入名称',
trigger: 'blur'
}, ],
code: [{
message: "请输入名称",
trigger: "blur",
},
],
code: [
{
required: true,
message: '请输入键',
trigger: 'blur'
}, ],
valueType: [{
message: "请输入键",
trigger: "blur",
},
],
valueType: [
{
required: true,
message: '请选择值类型',
trigger: 'blur'
}, ],
collectionType: [{
message: "请选择值类型",
trigger: "blur",
},
],
collectionType: [
{
required: true,
message: '请选择集合类型',
trigger: 'blur'
}, ]
message: "请选择集合类型",
trigger: "blur",
},
],
};
const formItemLayout = {
labelCol: {
@ -434,20 +502,25 @@
},
};
const removeDomain = item => {
const removeDomain = (item) => {
let index = formState.domains.indexOf(item);
if (index !== -1) {
formState.domains.splice(index, 1);
}
};
const configCollectionTypeChanged = function(e) {
formState.domain = []
}
const valueTypeChanged = function(e) {
formState.domain = []
if (formState.collectionType === "" || formState.collectionType === undefined) return;
if (formState.valueType === "" || formState.valueType === undefined) return;
const configCollectionTypeChanged = function (e) {
formState.domain = [];
};
const valueTypeChanged = function (e) {
formState.domain = [];
if (
formState.collectionType === "" ||
formState.collectionType === undefined
)
return;
if (formState.valueType === "" || formState.valueType === undefined)
return;
// switch(formState.collectionType){
// case "Single": break;
// case "Map":
@ -464,78 +537,84 @@
// case "List":break;
// default:break;
// }
if (formState.domains)
console.log("valueTypeChanged", e)
console.log("valueTypeChanged", e.value)
}
if (formState.domains) console.log("valueTypeChanged", e);
console.log("valueTypeChanged", e.value);
};
const addDomain = () => {
formState.domains.push({
value: '',
name: '',
value: "",
name: "",
key: Date.now(),
});
};
const configValueType = ref([{
value: 'STRING',
label: '字符串类型',
}, {
value: 'BOOLEAN',
label: 'boolean类型',
const configValueType = ref([
{
value: "STRING",
label: "字符串类型",
},
{
value: 'INT',
label: 'Int数据类型',
value: "BOOLEAN",
label: "boolean类型",
},
{
value: 'DATE',
label: '日期类型',
value: "INT",
label: "Int数据类型",
},
{
value: "DATE",
label: "日期类型",
},
]);
const configCollectionType = ref([{
value: 'Single',
label: '单个值对象',
}, {
value: 'Map',
label: 'Map数据字典',
const configCollectionType = ref([
{
value: "Single",
label: "单个值对象",
},
{
value: 'List',
label: 'list集合',
}
value: "Map",
label: "Map数据字典",
},
{
value: "List",
label: "list集合",
},
]);
const key = "addConfig";
const submit = (e) => {
console.log("提交", e)
console.log("提交", e);
let row = toRaw(formState);
console.log("提交的数据", row)
console.log("提交的数据", row);
formRef.value
.validate()
.then(() => {
addConfig(toRaw(formState)).then((response) => {
if (response.success) {
message.success({
content: '保存成功',
duration: 1
}).then(() => {
message
.success({
content: "保存成功",
duration: 1,
})
.then(() => {
cancel();
});
} else {
message.success({
content: '保存失败',
duration: 1
}).then(() => {
message
.success({
content: "保存失败",
duration: 1,
})
.then(() => {
cancel();
});
}
});
})
.catch(error => {
console.log('error', error);
.catch((error) => {
console.log("error", error);
});
};
@ -544,8 +623,6 @@
context.emit("close", false);
};
return {
submit,
cancel,
@ -560,33 +637,32 @@
formItemLayoutWithOutLabel,
configCollectionTypeChanged,
labelCol: {
span: 8
span: 8,
},
wrapperCol: {
span: 12
span: 12,
},
};
},
});
});
</script>
<style>
.dynamic-delete-button {
.dynamic-delete-button {
cursor: pointer;
position: relative;
top: 4px;
font-size: 24px;
color: #999;
transition: all 0.3s;
}
}
.dynamic-delete-button:hover {
.dynamic-delete-button:hover {
color: #777;
}
}
.dynamic-delete-button[disabled] {
.dynamic-delete-button[disabled] {
cursor: not-allowed;
opacity: 0.5;
}
}
</style>

View File

@ -11,28 +11,40 @@
ref="formRef"
:model="formState"
:rules="formRules"
:label-col="labelCol"
:wrapper-col="wrapperCol">
layout="vertical"
>
<a-row :gutter="[16, 0]">
<a-col :span="24">
<a-form-item ref="name" label="描述" name="name">
<a-textarea v-model:value="formState.name" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item ref="code" label="编号" name="code">
<a-input v-model:value="formState.code" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item ref="value" label="值" name="value">
<a-textarea v-model:value="formState.value" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="状态" name="enable">
<a-switch v-model:checked="formState.enable" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="formState.remark" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
<script>
import { message } from '@hwork/ant-design-vue';
import { message } from "@hwork/ant-design-vue";
import { edit } from "@/api/module/config";
import { defineComponent, reactive, ref, toRaw, watch } from "vue";
@ -44,29 +56,28 @@ export default defineComponent({
},
record: {
type: Object,
}
},
},
emit: ["close"],
setup(props, context) {
const formRef = ref();
let formState = reactive({});
const formRules = {
name: [{ required: true, message: '请输入配置描述', trigger: 'blur'}],
code: [{ required: true, message: '请输入配置编号', trigger: 'blur'}],
value: [{ required: true, message: '请输入配置值', trigger: 'blur'}]
name: [{ required: true, message: "请输入配置描述", trigger: "blur" }],
code: [{ required: true, message: "请输入配置编号", trigger: "blur" }],
value: [{ required: true, message: "请输入配置值", trigger: "blur" }],
};
watch(props,(props) => {
formState.id = props.record.id
formState.name = props.record.name
formState.code = props.record.code
formState.value = props.record.value
formState.remark = props.record.remark
formState.enable = props.record.enable
})
watch(props, (props) => {
formState.id = props.record.id;
formState.name = props.record.name;
formState.code = props.record.code;
formState.value = props.record.value;
formState.remark = props.record.remark;
formState.enable = props.record.enable;
});
const submit = (e) => {
message.loading({
@ -78,19 +89,23 @@ export default defineComponent({
.then(() => {
edit(toRaw(formState)).then((response) => {
if (response.success) {
message.success({
message
.success({
content: "保存成功",
key,
duration: 1,
}).then(()=>{
})
.then(() => {
cancel();
});
} else {
message.error({
message
.error({
content: "保存失败",
key,
duration: 1,
}).then(()=>{
})
.then(() => {
cancel();
});
}

View File

@ -11,23 +11,35 @@
ref="formRef"
:model="formState"
:rules="formRules"
:label-col="labelCol"
:wrapper-col="wrapperCol">
layout="vertical"
>
<a-row :gutter="[16, 0]">
<a-col :span="24">
<a-form-item ref="name" label="描述" name="name">
<a-textarea v-model:value="formState.name" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item ref="code" label="编号" name="code">
<a-input v-model:value="formState.code" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item ref="value" label="值" name="value">
<a-textarea v-model:value="formState.value" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="状态" name="enable">
<a-switch v-model:checked="formState.enable" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="formState.remark" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
@ -42,29 +54,28 @@ export default defineComponent({
},
record: {
type: Object,
}
},
},
emit: ["close"],
setup(props, context) {
const formRef = ref();
let formState = reactive({});
const formRules = {
name: [{ required: true, message: '请输入配置描述', trigger: 'blur'}],
code: [{ required: true, message: '请输入配置编号', trigger: 'blur'}],
value: [{ required: true, message: '请输入配置值', trigger: 'blur'}]
name: [{ required: true, message: "请输入配置描述", trigger: "blur" }],
code: [{ required: true, message: "请输入配置编号", trigger: "blur" }],
value: [{ required: true, message: "请输入配置值", trigger: "blur" }],
};
watch(props,(props) => {
formState.id = props.record.id
formState.name = props.record.name
formState.code = props.record.code
formState.value = props.record.value
formState.remark = props.record.remark
formState.enable = props.record.enable
})
watch(props, (props) => {
formState.id = props.record.id;
formState.name = props.record.name;
formState.code = props.record.code;
formState.value = props.record.value;
formState.remark = props.record.remark;
formState.enable = props.record.enable;
});
const submit = (e) => {
formRef.value.resetFields();

View File

@ -11,24 +11,35 @@
ref="formRef"
:model="formState"
:rules="formRules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
layout="vertical"
>
<a-row :gutter="[16, 0]">
<a-col :span="12">
<a-form-item ref="name" label="名称" name="name">
<a-input v-model:value="formState.name" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="code" label="编号" name="code">
<a-input v-model:value="formState.code" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item ref="value" label="值" name="value">
<a-input v-model:value="formState.value" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="状态" name="enable">
<a-switch v-model:checked="formState.enable" />
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="备注" name="remark">
<a-textarea v-model:value="formState.remark" />
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</template>
@ -53,9 +64,9 @@ export default defineComponent({
});
const formRules = {
name: [{ required: true, message: '请输入配置描述', trigger: 'blur'}],
code: [{ required: true, message: '请输入配置编号', trigger: 'blur'}],
value: [{ required: true, message: '请输入配置值', trigger: 'blur'}]
name: [{ required: true, message: "请输入配置描述", trigger: "blur" }],
code: [{ required: true, message: "请输入配置编号", trigger: "blur" }],
value: [{ required: true, message: "请输入配置值", trigger: "blur" }],
};
const submit = (e) => {
@ -68,19 +79,23 @@ export default defineComponent({
.then(() => {
save(toRaw(formState)).then((response) => {
if (response.success) {
message.success({
message
.success({
content: "保存成功",
key,
duration: 1,
}).then(()=>{
})
.then(() => {
cancel();
});
} else {
message.error({
message
.error({
content: response.msg,
key,
duration: 1,
}).then(()=>{
})
.then(() => {
cancel();
});
}