|
@@ -73,8 +73,8 @@
|
|
|
/>
|
|
|
</template>
|
|
|
<template v-if="item.type === 'msgRecipient'">
|
|
|
- <el-radio-group v-model="formData.msgRecipient">
|
|
|
- <el-radio v-for="vax in bj_msg_recipient" border :value="vax.value">{{
|
|
|
+ <el-radio-group v-model="formData[item.prop]">
|
|
|
+ <el-radio v-for="vax in bj_msg_recipient" border :label="vax.value">{{
|
|
|
vax.label
|
|
|
}}</el-radio>
|
|
|
</el-radio-group>
|
|
@@ -89,16 +89,47 @@
|
|
|
:placeholder="item.placeholder"
|
|
|
:remote-method="remoteuserNameMethod"
|
|
|
:loading="userLoading"
|
|
|
+ remote-show-suffix
|
|
|
style="width: 100%"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="item in options"
|
|
|
+ v-for="item in userNameOptions"
|
|
|
:key="item.value"
|
|
|
:label="item.label"
|
|
|
:value="item.value"
|
|
|
/>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
+ <template v-if="item.type === 'unitName'">
|
|
|
+ <el-tree-select
|
|
|
+ v-model="formData[item.prop]"
|
|
|
+ :data="unitOptions"
|
|
|
+ node-key="id"
|
|
|
+ filterable
|
|
|
+ check-strictly="true"
|
|
|
+ :placeholder="item.placeholder"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <template v-if="item.type === 'belongsDept'">
|
|
|
+ <el-tree-select
|
|
|
+ v-model="formData[item.prop]"
|
|
|
+ :data="belongsDeptOptions"
|
|
|
+ :render-after-expand="false"
|
|
|
+ node-key="id"
|
|
|
+ filterable
|
|
|
+ :placeholder="item.placeholder"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-if="item.type === 'abStatus'">
|
|
|
+ <el-radio-group v-model="formData[item.prop]">
|
|
|
+ <el-radio v-for="vax in bj_ab_status" border :label="vax.value">{{
|
|
|
+ vax.label
|
|
|
+ }}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</template>
|
|
@@ -125,8 +156,11 @@
|
|
|
import { reactive, ref } from 'vue';
|
|
|
import type { FormInstance } from 'element-plus';
|
|
|
import useSystemStore from '@/store/main';
|
|
|
+import { getDeptTree } from '@/api/address/index';
|
|
|
import { outTypeList } from '@/libs/commonMeth';
|
|
|
const bj_msg_recipient = outTypeList('bj_msg_recipient'); //短信接收人
|
|
|
+const bj_ab_status = outTypeList('bj_ab_status'); //短信接收人
|
|
|
+import dayjs from 'dayjs';
|
|
|
// 定义props
|
|
|
interface IProps {
|
|
|
modalConfig: {
|
|
@@ -165,23 +199,54 @@ allOptions.value = [
|
|
|
{ label: '综合办公室-王五', value: 'Arizona' },
|
|
|
{ label: '科技信息处-赵六', value: 'California' },
|
|
|
];
|
|
|
-const options = ref<userNameListItem[]>([]);
|
|
|
+
|
|
|
const userLoading = ref(false);
|
|
|
+
|
|
|
+const userNameOptions = ref<userNameListItem[]>([]);
|
|
|
const remoteuserNameMethod = (query: string) => {
|
|
|
if (query) {
|
|
|
userLoading.value = true;
|
|
|
setTimeout(() => {
|
|
|
userLoading.value = false;
|
|
|
- options.value = allOptions.value.filter(item => {
|
|
|
+ userNameOptions.value = allOptions.value.filter(item => {
|
|
|
return item.label.toLowerCase().includes(query.toLowerCase());
|
|
|
});
|
|
|
}, 200);
|
|
|
} else {
|
|
|
- options.value = [];
|
|
|
+ userNameOptions.value = allOptions.value;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-onMounted(async () => {});
|
|
|
+// const hideitem = (str: string) => {
|
|
|
+// if (isEdit.value == true) {
|
|
|
+// return true;
|
|
|
+// }
|
|
|
+// if (['addName', 'addDept', 'addDate'].includes(str)) {
|
|
|
+// return false;
|
|
|
+// } else {
|
|
|
+// return true;
|
|
|
+// }
|
|
|
+// };
|
|
|
+onMounted(async () => {
|
|
|
+ getTree();
|
|
|
+});
|
|
|
+interface Tree {
|
|
|
+ id: number;
|
|
|
+ label: string;
|
|
|
+ children?: Tree[];
|
|
|
+}
|
|
|
+const unitOptions: any = ref<Tree[]>();
|
|
|
+const belongsDeptOptions: any = ref<Tree[]>();
|
|
|
+// 过滤节点(搜索功能)
|
|
|
+const getTree = () => {
|
|
|
+ getDeptTree().then((res: any) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ unitOptions.value = res.data;
|
|
|
+ } else {
|
|
|
+ unitOptions.value = [];
|
|
|
+ }
|
|
|
+ });
|
|
|
+};
|
|
|
|
|
|
// 定义数据绑定
|
|
|
const initialForm: any = {};
|
|
@@ -193,6 +258,7 @@ let formData = ref(JSON.parse(JSON.stringify(initialForm)));
|
|
|
|
|
|
const dialogTitle = ref();
|
|
|
const dialogLook = ref(false);
|
|
|
+const nowStr = dayjs().format('YYYY-MM-DD HH:mm:ss');
|
|
|
// 新建或者编辑
|
|
|
async function setDialogVisible(isNew: boolean = true, check: boolean = false) {
|
|
|
dialogVisible.value = true;
|
|
@@ -215,9 +281,22 @@ async function setDialogVisible(isNew: boolean = true, check: boolean = false) {
|
|
|
} else {
|
|
|
props.modalConfig.formItems.map((m: any) => {
|
|
|
if (m.prop === 'msgRecipient') {
|
|
|
- initialForm[m.prop] = '2';
|
|
|
+ initialForm[m.prop] = '1';
|
|
|
+ }
|
|
|
+ if (m.prop === 'abStatus') {
|
|
|
+ initialForm[m.prop] = '1';
|
|
|
+ }
|
|
|
+ if (m.prop === 'addName') {
|
|
|
+ initialForm[m.prop] = '张浩楠';
|
|
|
+ }
|
|
|
+ if (m.prop === 'addDept') {
|
|
|
+ initialForm[m.prop] = '交通运输部海事局';
|
|
|
+ }
|
|
|
+ if (m.prop === 'addDate') {
|
|
|
+ initialForm[m.prop] = nowStr;
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
formData.value = JSON.parse(JSON.stringify(initialForm));
|
|
|
await nextTick();
|
|
|
dialogTitle.value = props.modalConfig.addTitle;
|
|
@@ -226,28 +305,49 @@ async function setDialogVisible(isNew: boolean = true, check: boolean = false) {
|
|
|
}
|
|
|
isEdit.value = !isNew;
|
|
|
}
|
|
|
+
|
|
|
+watch(
|
|
|
+ () => formData.value.unitName,
|
|
|
+ (newVal, oldVal) => {
|
|
|
+ belongsDeptOptions.value = getChildrenById(unitOptions.value, newVal);
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+/** 深度优先搜索,找到第一个 id 匹配的节点并返回它的 children */
|
|
|
+function getChildrenById(treeData: any[], targetId: string): any {
|
|
|
+ for (const node of treeData) {
|
|
|
+ if (node.id === targetId) {
|
|
|
+ return node.children;
|
|
|
+ }
|
|
|
+ if (node.children) {
|
|
|
+ const found = getChildrenById(node.children, targetId);
|
|
|
+ if (found) return found;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return [];
|
|
|
+}
|
|
|
+
|
|
|
// 点击确定
|
|
|
function handleConfirmClick(formEl: FormInstance | undefined) {
|
|
|
- console.log(formData.msgRecipient);
|
|
|
- // if (!formEl) return;
|
|
|
- // formEl.validate((valid, fields) => {
|
|
|
- // if (valid) {
|
|
|
- // dialogVisible.value = false;
|
|
|
- // let data = { ...formData.value };
|
|
|
- // if (props.otherInfo) {
|
|
|
- // data = { ...data, ...props.otherInfo };
|
|
|
- // }
|
|
|
- // if (!isEdit.value) {
|
|
|
- // systemStore.newPageDataAction(props.modalConfig.pageName, data, props.modalConfig.pageListParams);
|
|
|
- // } else {
|
|
|
- // if (pageOperateType.value === 'edit') {
|
|
|
- // systemStore.editPageDataAction(props.modalConfig.pageName, data, props.modalConfig.pageListParams);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // } else {
|
|
|
- // console.log('error submit!', fields);
|
|
|
- // }
|
|
|
- // });
|
|
|
+ if (!formEl) return;
|
|
|
+ formEl.validate((valid, fields) => {
|
|
|
+ if (valid) {
|
|
|
+ dialogVisible.value = false;
|
|
|
+ let data = { ...formData.value };
|
|
|
+ if (props.otherInfo) {
|
|
|
+ data = { ...data, ...props.otherInfo };
|
|
|
+ }
|
|
|
+ if (!isEdit.value) {
|
|
|
+ systemStore.newPageDataAction(props.modalConfig.pageName, data, props.modalConfig.pageListParams);
|
|
|
+ } else {
|
|
|
+ if (pageOperateType.value === 'edit') {
|
|
|
+ systemStore.editPageDataAction(props.modalConfig.pageName, data, props.modalConfig.pageListParams);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log('error submit!', fields);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
// 取消
|
|
|
function handleExcel(formEl: FormInstance | undefined) {
|