|
|
@@ -3,7 +3,12 @@ import { ref, computed } from "vue"
|
|
|
import type { Header } from "@/components/Table/table-partials/models"
|
|
|
import { maper } from "@/core/utils/utils"
|
|
|
import Rs from "@/core/services/RequestService"
|
|
|
-
|
|
|
+import type { VbFormItem } from "@/components/Forms/models"
|
|
|
+import OrgSelectTree from "@/components/Tree/OrgSelectTree.vue"
|
|
|
+import AreaCascadeSelect from "@/components/select/AreaCascadeSelect.vue"
|
|
|
+import { ElInput } from "element-plus"
|
|
|
+import { RULE_KEYS } from "@/core/config/rules"
|
|
|
+import { ElSelect, ElRadioGroup, ElCheckboxGroup } from "element-plus"
|
|
|
const table = ref<any>()
|
|
|
const cols = ref<Array<Header>>([
|
|
|
{ name: "名称", field: "name", align: "left", width: "200px" },
|
|
|
@@ -34,11 +39,17 @@ const saveUrl = computed(() => {
|
|
|
? "sys/organizational/delById"
|
|
|
: ""
|
|
|
})
|
|
|
-
|
|
|
+const areaData = ref([])
|
|
|
+function load() {
|
|
|
+ Rs.get("sys/dict/getArea").then((res) => {
|
|
|
+ areaData.value = res.data
|
|
|
+ })
|
|
|
+}
|
|
|
+load()
|
|
|
//只放增改传到后台的共用参数,其余需要modal显示的参数另外定义
|
|
|
const emptyData = {
|
|
|
org_id: "",
|
|
|
- parent_id: "",
|
|
|
+ parent_id: "0",
|
|
|
name: "",
|
|
|
simple_name: "",
|
|
|
code: "",
|
|
|
@@ -47,26 +58,113 @@ const emptyData = {
|
|
|
city: "",
|
|
|
district: "",
|
|
|
}
|
|
|
-const formData = ref(emptyData)
|
|
|
-
|
|
|
-const province_city_district = ref(["", "", ""])
|
|
|
-
|
|
|
+const formData = ref<any>(
|
|
|
+ Object.assign({}, emptyData, { province_city_district: ["", "", ""], simple_name2: [], simple_name3: false })
|
|
|
+)
|
|
|
+const items: Array<VbFormItem> = [
|
|
|
+ {
|
|
|
+ field: "parent_id",
|
|
|
+ label: "父组织",
|
|
|
+ required: false,
|
|
|
+ component: OrgSelectTree,
|
|
|
+ span: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "code",
|
|
|
+ label: "CODE",
|
|
|
+ required: true,
|
|
|
+ component: ElInput,
|
|
|
+ rules: [RULE_KEYS.REQUIRED, RULE_KEYS.MIN, RULE_KEYS.MAX],
|
|
|
+ ruleFormat: [["CODE"], [2], [4]],
|
|
|
+ span: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "name",
|
|
|
+ label: "名称",
|
|
|
+ required: true,
|
|
|
+ component: ElInput,
|
|
|
+ span: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "simple_name",
|
|
|
+ label: "简称",
|
|
|
+ component: ElInput,
|
|
|
+ span: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "province_city_district",
|
|
|
+ label: "省/市/区",
|
|
|
+ component: AreaCascadeSelect,
|
|
|
+ listeners: { change: pcdChange },
|
|
|
+ //component: ElCascader,
|
|
|
+ // props: {
|
|
|
+ // expandTrigger: "hover" as const,
|
|
|
+ // clearable: true,
|
|
|
+ // checkStrictly: true,
|
|
|
+ // options: areaData.value,
|
|
|
+ // },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "description",
|
|
|
+ label: "描述",
|
|
|
+ component: ElInput,
|
|
|
+ type: "textarea",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "simple_name",
|
|
|
+ label: "简称",
|
|
|
+ component: ElSelect,
|
|
|
+ span: 12,
|
|
|
+ data: [
|
|
|
+ { label: "Q", value: "Q" },
|
|
|
+ { label: "W", value: "W" },
|
|
|
+ { label: "E", value: "E", disabled: true },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "simple_name",
|
|
|
+ label: "简称",
|
|
|
+ component: ElRadioGroup,
|
|
|
+ span: 12,
|
|
|
+ data: [
|
|
|
+ { label: "Q", value: "Q" },
|
|
|
+ { label: "W", value: "W" },
|
|
|
+ { label: "E", value: "E", disabled: true },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "simple_name2", //多选时 对象属性应该是 []
|
|
|
+ label: "简称2",
|
|
|
+ component: ElCheckboxGroup,
|
|
|
+ span: 12,
|
|
|
+ data: [
|
|
|
+ { label: "Q1", value: "Q" },
|
|
|
+ { label: "W1", value: "W" },
|
|
|
+ { label: "E1", value: "E", disabled: true },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "simple_name3", //单选时 对象属性应该是 bool
|
|
|
+ label: "简称3",
|
|
|
+ component: ElCheckboxGroup,
|
|
|
+ span: 12,
|
|
|
+ data: [{ label: "Q1", value: "1" }],
|
|
|
+ },
|
|
|
+]
|
|
|
function pcdChange(v: Array<string>) {
|
|
|
+ console.log("PCD", v)
|
|
|
formData.value.province = v[0]
|
|
|
formData.value.city = v[1]
|
|
|
formData.value.district = v[2]
|
|
|
}
|
|
|
function add() {
|
|
|
opreationType.value = "A"
|
|
|
- formData.value = Object.assign({}, emptyData)
|
|
|
+ formData.value = Object.assign({ province_city_district: ["", "", ""] }, emptyData)
|
|
|
modal.value.show()
|
|
|
}
|
|
|
function edit(row: any) {
|
|
|
- //console.log("ROW", row)
|
|
|
opreationType.value = "U"
|
|
|
- province_city_district.value = row.province_city_district
|
|
|
- formData.value = Object.assign({}, emptyData)
|
|
|
- maper(formData.value, row)
|
|
|
+ formData.value = Object.assign({}, row)
|
|
|
modal.value.show()
|
|
|
}
|
|
|
|
|
|
@@ -77,75 +175,21 @@ function deleteRow(row: any) {
|
|
|
table.value.search()
|
|
|
})
|
|
|
}
|
|
|
-function onCancel(form: any) {
|
|
|
- console.log("CANCEL", form)
|
|
|
+function onCancel() {
|
|
|
+ //console.log("CANCEL", form)
|
|
|
}
|
|
|
-function onSave(form: any) {
|
|
|
- console.log("SAVE", form)
|
|
|
+function onSave() {
|
|
|
if (saveUrl.value) {
|
|
|
- Rs.post(saveUrl.value, { data: formData.value }).then(() => {
|
|
|
- console.log("TABLE", table.value.search, "==", table.value)
|
|
|
+ const data = Object.assign({}, emptyData)
|
|
|
+ maper(data, formData.value)
|
|
|
+ Rs.post(saveUrl.value, { data: data }).then(() => {
|
|
|
table.value.search()
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
-function test(e: Event) {
|
|
|
- console.log(e)
|
|
|
-}
|
|
|
/**
|
|
|
*
|
|
|
-
|
|
|
-
|
|
|
- */
|
|
|
-</script>
|
|
|
-
|
|
|
-<template>
|
|
|
- <VbTreeTable
|
|
|
- ref="table"
|
|
|
- url="sys/organizational/selectForPage"
|
|
|
- method="post"
|
|
|
- :header="cols"
|
|
|
- key-field="org_id"
|
|
|
- children-field="children"
|
|
|
- :expand-depth="1"
|
|
|
- :interval-left="10"
|
|
|
- :fixed-column="true"
|
|
|
- :fixed-number="1"
|
|
|
- :fixed-right-number="1"
|
|
|
- >
|
|
|
- <template #table-tool="">
|
|
|
- <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="add">新增</el-button>
|
|
|
- </template>
|
|
|
- <template #province_city_district="{ row }">
|
|
|
- {{
|
|
|
- `${row.province_name ?? ""}${row.city_name ? `/${row.city_name}` : ``}${
|
|
|
- row.district_name ? `/${row.district_name}` : ``
|
|
|
- }`
|
|
|
- }}
|
|
|
- </template>
|
|
|
- <template #action="{ row }">
|
|
|
- <span class="text-primary table-action" @click="edit(row)">编辑</span>
|
|
|
- <span class="text-danger table-action" @click="deleteRow(row)">删除</span>
|
|
|
- </template>
|
|
|
- </VbTreeTable>
|
|
|
- <VbModal
|
|
|
- v-model:modal="modal"
|
|
|
- :modal-form-data="formData"
|
|
|
- backdrop="static"
|
|
|
- :keyboard="false"
|
|
|
- :title-prefix="modalTitlePrefix"
|
|
|
- title="组织机构"
|
|
|
- form-label-width="70"
|
|
|
- modal-body-class="px-10"
|
|
|
- @cancel="onCancel"
|
|
|
- @confirm="onSave"
|
|
|
- :show-event="test"
|
|
|
- :shown-event="test"
|
|
|
- :hidden-event="test"
|
|
|
- :hide-event="test"
|
|
|
- :hide-prevented-event="test"
|
|
|
- >
|
|
|
- <template #form>
|
|
|
+ <template #form>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item
|
|
|
@@ -163,8 +207,8 @@ function test(e: Event) {
|
|
|
prop="code"
|
|
|
required
|
|
|
:rules="[
|
|
|
- { required: true, message: '必填', trigger: 'blur' },
|
|
|
- { min: 2, max: 4, message: '2至4个字符', trigger: 'blur' },
|
|
|
+ { required: true, message: '必填', trigger: ['blur'] },
|
|
|
+ { min: 2, max: 4, message: '2至4个字符', trigger: ['blur'] },
|
|
|
]"
|
|
|
>
|
|
|
<el-input v-model="formData.code"></el-input>
|
|
|
@@ -175,7 +219,7 @@ function test(e: Event) {
|
|
|
label="名称"
|
|
|
prop="name"
|
|
|
required
|
|
|
- :rules="[{ required: true, message: '必填', trigger: 'blur' }]"
|
|
|
+ :rules="[{ required: true, message: '必填', trigger: ['blur'] }]"
|
|
|
>
|
|
|
<el-input v-model="formData.name"></el-input>
|
|
|
</el-form-item>
|
|
|
@@ -197,5 +241,52 @@ function test(e: Event) {
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</template>
|
|
|
- </VbModal>
|
|
|
+ <template #body>
|
|
|
+ <VbForm :items="items" v-model:data="formData"></VbForm>
|
|
|
+ </template>
|
|
|
+ */
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <VbTreeTable
|
|
|
+ ref="table"
|
|
|
+ url="sys/organizational/selectForPage"
|
|
|
+ method="post"
|
|
|
+ :header="cols"
|
|
|
+ key-field="org_id"
|
|
|
+ children-field="children"
|
|
|
+ :expand-depth="1"
|
|
|
+ :interval-left="10"
|
|
|
+ :fixed-column="true"
|
|
|
+ :fixed-number="1"
|
|
|
+ :fixed-right-number="1"
|
|
|
+ >
|
|
|
+ <template #table-tool="">
|
|
|
+ <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="add">新增</el-button>
|
|
|
+ </template>
|
|
|
+ <template #province_city_district="{ row }">
|
|
|
+ {{
|
|
|
+ `${row.province_name ?? ""}${row.city_name ? `/${row.city_name}` : ``}${
|
|
|
+ row.district_name ? `/${row.district_name}` : ``
|
|
|
+ }`
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ <template #action="{ row }">
|
|
|
+ <span class="text-primary table-action" @click="edit(row)">编辑</span>
|
|
|
+ <span class="text-danger table-action" @click="deleteRow(row)">删除</span>
|
|
|
+ </template>
|
|
|
+ </VbTreeTable>
|
|
|
+ <VbModal
|
|
|
+ v-model:modal="modal"
|
|
|
+ v-model:form-data="formData"
|
|
|
+ :form-items="items"
|
|
|
+ backdrop="static"
|
|
|
+ :keyboard="false"
|
|
|
+ :title-prefix="modalTitlePrefix"
|
|
|
+ title="组织机构"
|
|
|
+ form-label-width="70"
|
|
|
+ modal-body-class="px-10"
|
|
|
+ @cancel="onCancel"
|
|
|
+ @confirm="onSave"
|
|
|
+ ></VbModal>
|
|
|
</template>
|