From 32107ca1dd2c3930dcedf768e3dff163ff3bca35 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期四, 09 二月 2023 11:56:29 +0800
Subject: [PATCH] 封装选择部门组件
---
src/views/operate/car/myIndex/create/law/index.vue | 73 +++++++-----------
src/components/departTree/index.vue | 69 +++++++++++++++++
src/views/operate/car/myIndex/edit/law/index.vue | 72 ++++-------------
3 files changed, 116 insertions(+), 98 deletions(-)
diff --git a/src/components/departTree/index.vue b/src/components/departTree/index.vue
new file mode 100644
index 0000000..945b376
--- /dev/null
+++ b/src/components/departTree/index.vue
@@ -0,0 +1,69 @@
+<template>
+ <el-select v-model="model.departName" placeholder="璇烽�夋嫨鎵�灞為儴闂�">
+ <el-option value="1">
+ <el-tree
+ ref="tree"
+ :check-strictly="true"
+ :data="departList"
+ :props="defaultProps"
+ :default-checked-keys="selectIds"
+ show-checkbox
+ @check-change="handleCheck"
+ @node-click="nodeClick"
+ default-expand-all
+ node-key="id"
+ >
+ </el-tree>
+ </el-option>
+ </el-select>
+</template>
+<script>
+export default {
+ data() {
+ return {
+ model: {
+ departId: 0,
+ departName: "",
+ },
+ selectIds: [],
+ departList: [],
+ defaultProps: {
+ children: "children",
+ label: "departName",
+ },
+ };
+ },
+ created() {
+ // 鑾峰彇鍏ㄩ儴閮ㄩ棬鍒楄〃
+ this.$axios.get("/sccg/depart/tree").then((res) => {
+ this.departList = res.data;
+ if (this.depart) {
+ this.model.departId = this.depart.departId;
+ this.model.departName = this.depart.departName;
+ this.selectIds = [this.depart.departId];
+ }
+ });
+ },
+ methods: {
+ nodeClick(data, checked) {
+ this.checkedId = data.comcode;
+ this.$refs.tree.setCheckedNodes([data]);
+ this.model.departId = data.id;
+ this.model.departName = data.departName;
+ },
+ handleCheck(data, checked) {
+ if (checked == true) {
+ this.checkedId = data.comcode;
+ this.$refs.tree.setCheckedNodes([data]);
+ this.model.departId = data.id;
+ this.model.departName = data.departName;
+ this.$emit("selectDepart", this.model);
+ }
+ },
+ },
+
+ props: ["depart"],
+};
+</script>
+<style lang="scss" scoped>
+</style>
diff --git a/src/views/operate/car/myIndex/create/law/index.vue b/src/views/operate/car/myIndex/create/law/index.vue
index ce78597..37cd9e4 100644
--- a/src/views/operate/car/myIndex/create/law/index.vue
+++ b/src/views/operate/car/myIndex/create/law/index.vue
@@ -20,21 +20,7 @@
<!-- 鎵�灞為儴闂� -->
<el-form-item class="optionItems" label="鎵�灞為儴闂�:" prop="departId">
<!-- <el-input v-model="car.depart" placeholder="璇峰~鍐欐墍灞為儴闂�"></el-input> -->
- <el-select v-model="car.departName" placeholder="璇烽�夋嫨鎵�灞為儴闂�">
- <el-option value="1">
- <el-tree
- ref="tree"
- :check-strictly="true"
- :data="departList"
- :props="defaultProps"
- show-checkbox
- @check-change="handleCheck"
- default-expand-all
- node-key="id"
- >
- </el-tree>
- </el-option>
- </el-select>
+ <departTree @selectDepart="selectDepart"></departTree>
</el-form-item>
<!-- 杞︿富濮撳悕 -->
<el-form-item class="optionItem" label="杞︿富濮撳悕:" prop="ownerName">
@@ -74,7 +60,11 @@
</template>
<script>
import { validateCarNum, validatePhone, validateName } from "@/utils/validate";
+import departTree from "@/components/departTree/index.vue";
export default {
+ components: {
+ departTree,
+ },
data() {
const checkCarNum = (rule, value, callback) => {
if (value) {
@@ -98,9 +88,9 @@
callback(new Error("杞︿富濮撳悕涓嶈兘涓虹┖"));
}
};
- const checkDepartId = (rule, value, callback) => {
+ const checkDepartId = (rule, value, callback) => {
if (value) {
- callback();
+ callback();
} else {
callback(new Error("杞﹁締浣跨敤鐨勯儴闂ㄤ笉鑳戒负绌�"));
}
@@ -183,12 +173,7 @@
},
};
},
- created() {
- // 鑾峰彇鍏ㄩ儴閮ㄩ棬鍒楄〃
- this.$axios.get("/sccg/depart/tree").then((res) => {
- this.departList = res.data;
- });
- },
+ created() {},
methods: {
// 娣诲姞杞﹁締
handleCar() {
@@ -221,34 +206,32 @@
handleStop() {
this.$emit("closeDialog", { flag: false, index: 0 });
},
- // 閮ㄩ棬淇敼
- handleCheck(data, checked) {
+ selectDepart(depart) {
+ if (depart) {
+ this.car.departId = depart.departId;
+ this.car.departName = depart.departName;
+ }
+ },
+ nodeClick(data, checked) {
+ this.checkedId = data.comcode;
+ this.$refs.tree.setCheckedNodes([data]);
this.car.departId = data.id;
this.car.departName = data.departName;
- // 鑾峰彇褰撳墠閫夋嫨鐨刬d鍦ㄦ暟缁勪腑鐨勭储寮�
- const indexs = this.selectOrg.orgsid.indexOf(data.id);
- // 濡傛灉涓嶅瓨鍦ㄦ暟缁勪腑锛屽苟涓旀暟缁勪腑宸茬粡鏈変竴涓猧d骞朵笖checked涓簍rue鐨勬椂鍊欙紝浠h〃涓嶈兘鍐嶆閫夋嫨銆�
- if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) {
- this.$message({
- message: "鍙兘閫夋嫨涓�涓儴闂紒",
- type: "warning",
- showClose: true,
- });
- // 璁剧疆宸查�夋嫨鐨勮妭鐐逛负false 寰堥噸瑕�
- this.$refs.tree.setChecked(data, false);
- } else if (this.selectOrg.orgsid.length === 0 && checked) {
- // 鍙戠幇鏁扮粍涓虹┖ 骞朵笖鏄凡閫夋嫨
- // 闃叉鏁扮粍鏈夊�硷紝棣栧厛娓呯┖锛屽啀push
+ this.selectOrg.orgsid = [];
+ this.selectOrg.orgsid.push(data.id);
+ },
+ handleCheck(data, checked) {
+ if (checked == true) {
+ this.checkedId = data.comcode;
+ this.$refs.tree.setCheckedNodes([data]);
+ this.car.departId = data.id;
+ this.car.departName = data.departName;
this.selectOrg.orgsid = [];
this.selectOrg.orgsid.push(data.id);
- } else if (
- indexs >= 0 &&
- this.selectOrg.orgsid.length === 1 &&
- !checked
- ) {
+ } else {
// 鍐嶆鐩存帴杩涜璧嬪�间负绌烘搷浣�
this.selectOrg.orgsid = [];
- this.car.departName = "";
+ this.user.departmentId = "";
}
},
},
diff --git a/src/views/operate/car/myIndex/edit/law/index.vue b/src/views/operate/car/myIndex/edit/law/index.vue
index 2d89a18..2f42531 100644
--- a/src/views/operate/car/myIndex/edit/law/index.vue
+++ b/src/views/operate/car/myIndex/edit/law/index.vue
@@ -19,22 +19,10 @@
</el-form-item>
<!-- 鎵�灞為儴闂� -->
<el-form-item class="optionItems" label="鎵�灞為儴闂�:" prop="departId">
- <!-- <el-input v-model="car.depart" placeholder="璇峰~鍐欐墍灞為儴闂�"></el-input> -->
- <el-select v-model="car.departName" placeholder="璇烽�夋嫨鎵�灞為儴闂�">
- <el-option value="1">
- <el-tree
- ref="tree"
- :check-strictly="true"
- :data="departList"
- :props="defaultProps"
- show-checkbox
- @check-change="handleCheck"
- default-expand-all
- node-key="id"
- >
- </el-tree>
- </el-option>
- </el-select>
+ <departTree
+ :depart="carDepart"
+ @selectDepart="selectDepart"
+ ></departTree>
</el-form-item>
<!-- 杞︿富濮撳悕 -->
<el-form-item class="optionItem" label="杞︿富濮撳悕:" prop="ownerName">
@@ -71,7 +59,12 @@
</template>
<script>
import { validateCarNum, validatePhone, validateName } from "@/utils/validate";
+import departTree from "@/components/departTree/index.vue";
+
export default {
+ components: {
+ departTree,
+ },
data() {
const checkCarNum = (rule, value, callback) => {
if (value) {
@@ -134,6 +127,7 @@
departName: "",
departId: 0,
},
+ carDepart: {},
createCarRules: {
departId: [
{
@@ -182,14 +176,15 @@
};
},
created() {
- const { getDepartTree } = this;
- // 鍒濆鍖栭儴闂ㄦ爲
- getDepartTree();
// 鍒濆鍖栨暟鎹�
this.car = JSON.parse(JSON.stringify(this.info));
if (!this.car.departName) {
this.car.departName = this.car.pdepartName;
}
+ this.carDepart = {
+ departId: this.car.departId,
+ departName: this.car.departName,
+ };
},
methods: {
// 淇敼鎵ф硶杞�
@@ -222,41 +217,12 @@
}
});
},
- // 閮ㄩ棬淇敼
- handleCheck(data, checked) {
- this.car.departId = data.id;
- this.car.departName = data.departName;
- // 鑾峰彇褰撳墠閫夋嫨鐨刬d鍦ㄦ暟缁勪腑鐨勭储寮�
- const indexs = this.selectOrg.orgsid.indexOf(data.id);
- // 濡傛灉涓嶅瓨鍦ㄦ暟缁勪腑锛屽苟涓旀暟缁勪腑宸茬粡鏈変竴涓猧d骞朵笖checked涓簍rue鐨勬椂鍊欙紝浠h〃涓嶈兘鍐嶆閫夋嫨銆�
- if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) {
- this.$message({
- message: "鍙兘閫夋嫨涓�涓儴闂紒",
- type: "warning",
- showClose: true,
- });
- // 璁剧疆宸查�夋嫨鐨勮妭鐐逛负false 寰堥噸瑕�
- this.$refs.tree.setChecked(data, false);
- } else if (this.selectOrg.orgsid.length === 0 && checked) {
- // 鍙戠幇鏁扮粍涓虹┖ 骞朵笖鏄凡閫夋嫨
- // 闃叉鏁扮粍鏈夊�硷紝棣栧厛娓呯┖锛屽啀push
- this.selectOrg.orgsid = [];
- this.selectOrg.orgsid.push(data.id);
- } else if (
- indexs >= 0 &&
- this.selectOrg.orgsid.length === 1 &&
- !checked
- ) {
- // 鍐嶆鐩存帴杩涜璧嬪�间负绌烘搷浣�
- this.selectOrg.orgsid = [];
- this.car.departName = "";
+
+ selectDepart(depart) {
+ if (depart) {
+ this.car.departId = depart.departId;
+ this.car.departName = depart.departName;
}
- },
- // 鑾峰彇閮ㄩ棬鏍�
- getDepartTree() {
- this.$axios.get("/sccg/depart/tree").then((res) => {
- this.departList = res.data;
- });
},
},
props: ["info", "closeDialog"],
--
Gitblit v1.8.0