|
@@ -1,231 +1,212 @@
|
|
|
<template>
|
|
|
- <div class="form">
|
|
|
- <van-nav-bar
|
|
|
- title="添加机构"
|
|
|
- left-text="返回"
|
|
|
- left-arrow
|
|
|
- @click-left="onClickLeft"
|
|
|
- >
|
|
|
- </van-nav-bar>
|
|
|
+ <div class="form">
|
|
|
+ <van-nav-bar
|
|
|
+ title="添加机构"
|
|
|
+ left-text="返回"
|
|
|
+ left-arrow
|
|
|
+ @click-left="onClickLeft"
|
|
|
+ >
|
|
|
+ </van-nav-bar>
|
|
|
|
|
|
- <testForm
|
|
|
- v-model="formData.data"
|
|
|
- :formOption="formOption"
|
|
|
- :formConfig="formConfig"
|
|
|
- :rules="rules"
|
|
|
- @onSubmit="onSubmit"
|
|
|
- ref="formDom"
|
|
|
- ></testForm>
|
|
|
- </div>
|
|
|
+ <testForm
|
|
|
+ v-model="formData.data"
|
|
|
+ :formOption="formOption"
|
|
|
+ :formConfig="formConfig"
|
|
|
+ :rules="rules"
|
|
|
+ @onSubmit="onSubmit"
|
|
|
+ ref="formDom"
|
|
|
+ ></testForm>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, getCurrentInstance, onMounted, reactive } from 'vue'
|
|
|
-import { showSuccessToast, showToast } from 'vant'
|
|
|
-import { useRoute } from 'vue-router'
|
|
|
-import { getUserInfo } from '@/utils/auth'
|
|
|
-import testForm from '@/components/testForm/index.vue'
|
|
|
-import { handleTree } from '@/utils/ruoyi'
|
|
|
-const proxy = getCurrentInstance().proxy
|
|
|
-const route = useRoute()
|
|
|
-const show = ref(false)
|
|
|
-const typeModal = ref(false)
|
|
|
-const unitModal = ref(false)
|
|
|
-const classification = ref([])
|
|
|
+import { ref, getCurrentInstance, onMounted, reactive } from "vue";
|
|
|
+import { showSuccessToast, showToast } from "vant";
|
|
|
+import { useRoute } from "vue-router";
|
|
|
+import { getUserInfo } from "@/utils/auth";
|
|
|
+import testForm from "@/components/testForm/index.vue";
|
|
|
+import { handleTree } from "@/utils/ruoyi";
|
|
|
+const proxy = getCurrentInstance().proxy;
|
|
|
+const route = useRoute();
|
|
|
+const show = ref(false);
|
|
|
+const typeModal = ref(false);
|
|
|
+const unitModal = ref(false);
|
|
|
+const classification = ref([]);
|
|
|
const formData = reactive({
|
|
|
- data: {},
|
|
|
-})
|
|
|
-const formDom = ref(null)
|
|
|
+ data: {},
|
|
|
+});
|
|
|
+const formDom = ref(null);
|
|
|
const formOption = reactive({
|
|
|
- readonly: false, //用于控制整个表单是否只读
|
|
|
- disabled: false,
|
|
|
- labelAlign: 'top',
|
|
|
- scroll: true,
|
|
|
- labelWidth: '62pk',
|
|
|
- // hiddenSubmitBtn: true,
|
|
|
-})
|
|
|
-const formConfig = reactive([
|
|
|
- {
|
|
|
- type: 'cascader',
|
|
|
- label: '上级机构',
|
|
|
- prop: 'parentId',
|
|
|
- itemType: 'common',
|
|
|
- showPicker: false,
|
|
|
- data: [],
|
|
|
- fieldNames: {
|
|
|
- text: 'deptName',
|
|
|
- value: 'deptId',
|
|
|
- children: 'children',
|
|
|
- },
|
|
|
- },
|
|
|
- // {
|
|
|
- // type: 'input',
|
|
|
- // label: '上级机构',
|
|
|
- // prop: 'tenantName',
|
|
|
- // itemType: 'text',
|
|
|
- // showPicker: false,
|
|
|
- // readonly: true,
|
|
|
- // },
|
|
|
- {
|
|
|
- type: 'input',
|
|
|
- itemType: 'text',
|
|
|
- label: '机构名称',
|
|
|
- prop: 'deptName',
|
|
|
- clearable: true,
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'picker',
|
|
|
- label: '机构类型',
|
|
|
- prop: 'type',
|
|
|
- itemType: 'onePicker',
|
|
|
- showPicker: false,
|
|
|
- fieldNames: {
|
|
|
- text: 'label',
|
|
|
- value: 'value',
|
|
|
- },
|
|
|
- data: [
|
|
|
- {
|
|
|
- label: '公司',
|
|
|
- value: '0',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '业务中心',
|
|
|
- value: '1',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '部门',
|
|
|
- value: '2',
|
|
|
- },
|
|
|
- {
|
|
|
- label: '组',
|
|
|
- value: '3',
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
+ readonly: false, //用于控制整个表单是否只读
|
|
|
+ disabled: false,
|
|
|
+ labelAlign: "top",
|
|
|
+ scroll: true,
|
|
|
+ labelWidth: "62pk",
|
|
|
+ // hiddenSubmitBtn: true,
|
|
|
+});
|
|
|
+const formConfig = ref([
|
|
|
+ {
|
|
|
+ type: "cascader",
|
|
|
+ label: "上级机构",
|
|
|
+ prop: "parentId",
|
|
|
+ itemType: "common",
|
|
|
+ showPicker: false,
|
|
|
+ data: [],
|
|
|
+ fieldNames: {
|
|
|
+ text: "deptName",
|
|
|
+ value: "deptId",
|
|
|
+ children: "children",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // type: 'input',
|
|
|
+ // label: '上级机构',
|
|
|
+ // prop: 'tenantName',
|
|
|
+ // itemType: 'text',
|
|
|
+ // showPicker: false,
|
|
|
+ // readonly: true,
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ itemType: "text",
|
|
|
+ label: "机构名称",
|
|
|
+ prop: "deptName",
|
|
|
+ clearable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "picker",
|
|
|
+ label: "机构类型",
|
|
|
+ prop: "type",
|
|
|
+ itemType: "onePicker",
|
|
|
+ showPicker: false,
|
|
|
+ fieldNames: {
|
|
|
+ text: "label",
|
|
|
+ value: "value",
|
|
|
+ },
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ label: "公司",
|
|
|
+ value: "0",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "业务中心",
|
|
|
+ value: "1",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "部门",
|
|
|
+ value: "2",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "组",
|
|
|
+ value: "3",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- type: 'picker',
|
|
|
- label: '负责人',
|
|
|
- prop: 'leaderId',
|
|
|
- itemType: 'onePicker',
|
|
|
- showPicker: false,
|
|
|
- fieldNames: {
|
|
|
- text: 'nickName',
|
|
|
- value: 'userId',
|
|
|
- },
|
|
|
- data: [],
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'picker',
|
|
|
- label: '总监',
|
|
|
- prop: 'directorId',
|
|
|
- itemType: 'onePicker',
|
|
|
- showPicker: false,
|
|
|
- fieldNames: {
|
|
|
- text: 'nickName',
|
|
|
- value: 'userId',
|
|
|
- },
|
|
|
- data: [],
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'input',
|
|
|
- itemType: 'digit',
|
|
|
- label: '部门排序',
|
|
|
- prop: 'orderNum',
|
|
|
- },
|
|
|
-])
|
|
|
+ {
|
|
|
+ type: "picker",
|
|
|
+ label: "负责人",
|
|
|
+ prop: "leaderId",
|
|
|
+ itemType: "onePicker",
|
|
|
+ showPicker: false,
|
|
|
+ fieldNames: {
|
|
|
+ text: "nickName",
|
|
|
+ value: "userId",
|
|
|
+ },
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "picker",
|
|
|
+ label: "总监",
|
|
|
+ prop: "directorId",
|
|
|
+ itemType: "onePicker",
|
|
|
+ showPicker: false,
|
|
|
+ fieldNames: {
|
|
|
+ text: "nickName",
|
|
|
+ value: "userId",
|
|
|
+ },
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ itemType: "digit",
|
|
|
+ label: "部门排序",
|
|
|
+ prop: "orderNum",
|
|
|
+ },
|
|
|
+]);
|
|
|
const rules = {
|
|
|
- deptName: [{ required: true, message: '机构名称不能为空' }],
|
|
|
- type: [{ required: true, message: '机构类型不能为空' }],
|
|
|
- orderNum: [{ required: true, message: '部门排序不能为空' }],
|
|
|
- parentId: [{ required: true, message: '上级机构不能为空' }],
|
|
|
-}
|
|
|
-const unitList = ref([])
|
|
|
+ deptName: [{ required: true, message: "机构名称不能为空" }],
|
|
|
+ type: [{ required: true, message: "机构类型不能为空" }],
|
|
|
+ orderNum: [{ required: true, message: "部门排序不能为空" }],
|
|
|
+ parentId: [{ required: true, message: "上级机构不能为空" }],
|
|
|
+};
|
|
|
+const unitList = ref([]);
|
|
|
|
|
|
const getUserList = () => {
|
|
|
- proxy
|
|
|
- .get('/tenantUser/list', {
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 10000,
|
|
|
- tenantId: getUserInfo().tenantId,
|
|
|
- })
|
|
|
- .then((message) => {
|
|
|
- message.rows.map((item) => {
|
|
|
- item.label = item.nickName
|
|
|
- item.id = item.userId
|
|
|
- })
|
|
|
- formConfig[3].data = message.rows
|
|
|
- formConfig[4].data = message.rows
|
|
|
- })
|
|
|
-}
|
|
|
-const getWorkshopList = () => {
|
|
|
- proxy
|
|
|
- .post('/workshop/page', {
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 10000,
|
|
|
- })
|
|
|
- .then((res) => {
|
|
|
- formConfig[0].data = res.data.rows
|
|
|
- })
|
|
|
-}
|
|
|
-getUserList()
|
|
|
-getWorkshopList()
|
|
|
-const fileList = ref([])
|
|
|
+ proxy
|
|
|
+ .get("/tenantUser/list", {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10000,
|
|
|
+ tenantId: getUserInfo().tenantId,
|
|
|
+ })
|
|
|
+ .then((message) => {
|
|
|
+ message.rows.map((item) => {
|
|
|
+ item.label = item.nickName;
|
|
|
+ item.id = item.userId;
|
|
|
+ });
|
|
|
+ formConfig.value[3].data = message.rows;
|
|
|
+ formConfig.value[4].data = message.rows;
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+getUserList();
|
|
|
+const fileList = ref([]);
|
|
|
const onOversize = () => {
|
|
|
- showToast('文件大小不能超过 5MB')
|
|
|
-}
|
|
|
-const onClickLeft = () => history.back()
|
|
|
+ showToast("文件大小不能超过 5MB");
|
|
|
+};
|
|
|
+const onClickLeft = () => history.back();
|
|
|
const onSubmit = () => {
|
|
|
- console.log(formData)
|
|
|
- formData.data.children = []
|
|
|
- formData.data.orderNum = Number(formData.data.orderNum)
|
|
|
- proxy.post('/tenantDept', formData.data,route.query.id ? 'PUT' : 'post').then(() => {
|
|
|
- showSuccessToast(route.query.id ? '修改成功' : '添加成功')
|
|
|
- setTimeout(() => {
|
|
|
- history.back()
|
|
|
- }, 500)
|
|
|
- })
|
|
|
-}
|
|
|
+ console.log(formData);
|
|
|
+ formData.data.children = [];
|
|
|
+ formData.data.orderNum = Number(formData.data.orderNum);
|
|
|
+ proxy
|
|
|
+ .post("/tenantDept", formData.data, route.query.id ? "PUT" : "post")
|
|
|
+ .then(() => {
|
|
|
+ showSuccessToast(route.query.id ? "修改成功" : "添加成功");
|
|
|
+ setTimeout(() => {
|
|
|
+ history.back();
|
|
|
+ }, 500);
|
|
|
+ });
|
|
|
+};
|
|
|
const treeToList = (arr) => {
|
|
|
- let res = [] // 用于存储递归结果(扁平数据)
|
|
|
- // 递归函数
|
|
|
- let fn = (source) => {
|
|
|
- source.forEach((el) => {
|
|
|
- res.push(el)
|
|
|
- el.children && el.children.length > 0 ? fn(el.children) : '' // 子级递归
|
|
|
- })
|
|
|
- }
|
|
|
- fn(arr)
|
|
|
- return res
|
|
|
-}
|
|
|
+ let res = []; // 用于存储递归结果(扁平数据)
|
|
|
+ // 递归函数
|
|
|
+ let fn = (source) => {
|
|
|
+ source.forEach((el) => {
|
|
|
+ res.push(el);
|
|
|
+ el.children && el.children.length > 0 ? fn(el.children) : ""; // 子级递归
|
|
|
+ });
|
|
|
+ };
|
|
|
+ fn(arr);
|
|
|
+ return res;
|
|
|
+};
|
|
|
|
|
|
const getTree = () => {
|
|
|
- proxy
|
|
|
- .get('/tenantDept/list', { tenantId: getUserInfo().tenantId })
|
|
|
- .then((res) => {
|
|
|
- res.data = res.data.map(item=>{
|
|
|
- return {
|
|
|
- label:item.deptName,
|
|
|
- id:item.deptId,
|
|
|
- ...item
|
|
|
- }
|
|
|
- })
|
|
|
- formConfig[0].data = handleTree(res.data, 'deptId')
|
|
|
- console.log(formConfig[0].data,123891723981273)
|
|
|
-
|
|
|
-
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
-
|
|
|
- })
|
|
|
-}
|
|
|
-getTree()
|
|
|
+ proxy
|
|
|
+ .get("/tenantDept/list", { tenantId: getUserInfo().tenantId })
|
|
|
+ .then((res) => {
|
|
|
+ formConfig.value[0].data = handleTree(res.data, "deptId");
|
|
|
+ })
|
|
|
+ .catch((err) => {});
|
|
|
+};
|
|
|
+getTree();
|
|
|
onMounted(() => {
|
|
|
- if (route.query.id) {
|
|
|
- console.log(route.query)
|
|
|
- formData.data = route.query
|
|
|
- } else {
|
|
|
- formData.data.tenantId = route.query.tenantId
|
|
|
- }
|
|
|
-})
|
|
|
+ if (route.query.id) {
|
|
|
+ console.log(route.query);
|
|
|
+ formData.data = route.query;
|
|
|
+ } else {
|
|
|
+ formData.data.tenantId = route.query.tenantId;
|
|
|
+ formData.data.parentId = route.query.deptId;
|
|
|
+ }
|
|
|
+});
|
|
|
</script>
|