From 127c6dd281c62acfa5c654f54d113532c6be0928 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 23 三月 2022 22:26:30 +0800
Subject: [PATCH] 修复编辑场景,取消后数据仍然联动的bug
---
src/pages/index/components/formInfo.vue | 534 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 276 insertions(+), 258 deletions(-)
diff --git a/src/pages/index/components/formInfo.vue b/src/pages/index/components/formInfo.vue
index 4599768..1c47414 100644
--- a/src/pages/index/components/formInfo.vue
+++ b/src/pages/index/components/formInfo.vue
@@ -1,259 +1,277 @@
-<template>
- <div class="formInfo">
- <el-form ref="form" :model="form" label-width="90px" :rules="rules">
- <el-form-item label="绫诲瀷" prop="type">
- <el-radio v-model="form.userType" label="personal">涓汉</el-radio>
- <el-radio v-model="form.userType" label="company">鍏徃</el-radio>
- </el-form-item>
-
- <el-form-item
- label="鍏徃鍚嶇О"
- prop="name1"
- v-if="form.userType == 'company'"
- >
- <el-input v-model="form.name1" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"></el-input>
- </el-form-item>
-
- <el-form-item
- label="鑱旂郴浜哄鍚�"
- prop="name2"
- v-if="form.userType == 'company'"
- >
- <el-input
- v-model="form.name2"
- placeholder="璇疯緭鍏ヨ仈绯讳汉濮撳悕"
- ></el-input>
- </el-form-item>
-
- <el-form-item label="濮撳悕" prop="name" v-else>
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鍚�"></el-input>
- </el-form-item>
-
- <el-form-item label="鎵�鍦ㄥ湴" prop="addr">
- <el-cascader
- :props="props"
- popper-class="location"
- separator=" "
- @change="handleChange"
- v-model="form.addr"
- ></el-cascader>
- </el-form-item>
-
- <el-form-item label="閭" prop="email">
- <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�"></el-input>
- </el-form-item>
- </el-form>
- </div>
-</template>
-
-<script>
-import { getList } from "../api";
-export default {
- created() {},
- data() {
- return {
- form: {
- userType: "personal",
- name: "",
- name1: "",
- name2: "",
- email: "",
- addr: "",
- provinceId: "",
- cityId: "",
- labelList: "",
- },
- rules: {
- name1: [{ required: true, message: "璇疯緭鍏ュ叕鍙稿悕绉�", trigger: "blur" }],
- name2: [
- { required: true, message: "璇疯緭鍏ヨ仈绯讳汉濮撳悕", trigger: "blur" },
- ],
- name: [{ required: true, message: "璇疯緭鍏ュ鍚�", trigger: "blur" }],
- addr: [{ required: true, message: "璇烽�夋嫨鎵�鍦ㄥ湴", trigger: "blur" }],
- email: [{ required: true, message: "璇疯緭鍏ラ偖绠�", trigger: "blur" }],
- },
- provinceOptions: [],
- props: {
- lazy: true, // 寮�鍚姩鎬佸姞杞�
- lazyLoad: async (node, resolve) => {
- // 璁剧疆鍔犺浇鏁版嵁婧愭柟娉� 榛樿鎵ц涓�娆�
- // node 涓哄綋鍓嶇偣鍑荤殑鑺傜偣
- // resolve 涓烘暟鎹姞杞藉畬鎴愮殑鍥炶皟(蹇呴』璋冪敤)
- /* node姝ゆ椂灞炴�т负:
- 褰撳墠鍙跺瓙 level锛�0
- loaded锛歵rue
- loading锛歠alse
- 鏄惁鏄牴 root锛歵ure
- */
- console.log(node);
-
- if (node.level == 0) {
- const res = await getList();
- this.provinceOptions = res.data.map((item) => {
- return {
- value: item.id,
- label: item.name, // 閫夐」鍚�
- leaf: false, // 鏄惁涓烘湯灏�
- };
- });
- resolve(this.provinceOptions);
- console.log(node.level);
- }
-
- if (node.level == 1) {
- console.log("-------------");
- this.provinceId = node.value;
- const res2 = await getList({
- parentId: node.value,
- });
-
- const arr = res2.data.map((item) => {
- return {
- value: item.id,
- label: item.name, // 閫夐」鍚�
- leaf: true, // 鏄惁涓烘湯灏�
- };
- });
- resolve(arr);
- } else {
- console.log(node);
- }
- },
- },
- value: [],
- };
- },
-
- methods: {
- getFormData() {
- const _this = this;
- let data = null;
- this.$refs["form"].validate((valid) => {
- if (valid) {
- console.log(_this.form.userType);
- if (_this.form.userType == "personal") {
- data = {
- userType: _this.form.userType,
- name: _this.form.name,
- email: _this.form.email,
- addr: _this.form.labelList,
- provinceId: _this.form.provinceId,
- cityId: _this.form.cityId,
- };
- } else {
- data = {
- userType: _this.form.userType,
- name: _this.form.name1 + " " + _this.form.name2,
- email: _this.form.email,
- addr: _this.form.labelList,
- provinceId: _this.form.provinceId,
- cityId: _this.form.cityId,
- };
- }
- } else {
- return false;
- }
- });
-
- return data;
- },
- handleChange(val) {
- this.form.provinceId = val[0] + "";
- this.form.cityId = val[1] + "";
-
- setTimeout(() => {
- this.form.labelList =
- document.querySelectorAll(".el-cascader input")[0].value;
- }, 200);
- },
- },
-};
-</script>
-
-<style lang="scss" scoped>
-.formInfo {
- .el-form-item ::v-deep {
- label {
- font-size: 14px;
- color: #fff;
- text-align: left;
- }
-
- .el-radio {
- .el-radio__inner {
- background: none;
- border-color: rgba(255, 255, 255, 0.3) !important;
-
- &::after {
- width: 6px;
- height: 6px;
- }
- }
-
- .el-radio__label {
- color: #fff !important;
- }
- }
-
- .el-form-item__content {
- margin-left: 110px !important;
- text-align: left;
- }
-
- input {
- background-color: rgba(0, 0, 0, 0.1);
- color: #fff;
- border: none;
- caret-color: #fff !important;
- }
-
- input:-webkit-autofill,
- textarea:-webkit-autofill,
- select:-webkit-autofill {
- -webkit-text-fill-color: #fff !important;
- -webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
- background-color: transparent;
- background-image: none;
- transition: background-color 50000s ease-in-out 0s; //鑳屾櫙鑹查�忔槑 鐢熸晥鏃堕暱 杩囨浮鏁堟灉 鍚敤鏃跺欢杩熺殑鏃堕棿
- }
-
- .el-cascader {
- width: 100%;
- }
- }
-}
-</style>
-
-<style lang="scss">
-.el-popper.el-cascader__dropdown.location {
- background-color: rgb(77, 72, 111);
- border: none;
- margin: 0 0;
-
- * {
- color: #fff;
- border-color: rgba(255, 255, 2555, 0.1);
- }
-
- .el-cascader-node:hover,
- .in-active-path,
- .is-active,
- .el-cascader-node {
- background-color: rgb(101, 93, 126) !important;
- }
-
- .popper__arrow::after,
- .popper__arrow {
- display: none;
- }
-
- .el-cascader-node__label {
- text-align: left;
- }
-
- .el-cascader-menu__wrap {
- width: 226px;
- height: 175px;
- }
-}
+<template>
+ <div class="formInfo">
+ <el-form ref="form" :model="form" label-width="90px" :rules="rules">
+ <el-form-item label="绫诲瀷" prop="type">
+ <el-radio v-model="form.userType" label="personal">涓汉</el-radio>
+ <el-radio v-model="form.userType" label="company">鍏徃</el-radio>
+ </el-form-item>
+
+ <el-form-item
+ label="鍏徃鍚嶇О"
+ prop="name1"
+ v-if="form.userType == 'company'"
+ >
+ <el-input v-model="form.name1" placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"></el-input>
+ </el-form-item>
+
+ <el-form-item
+ label="鑱旂郴浜哄鍚�"
+ prop="name2"
+ v-if="form.userType == 'company'"
+ >
+ <el-input
+ v-model="form.name2"
+ placeholder="璇疯緭鍏ヨ仈绯讳汉濮撳悕"
+ ></el-input>
+ </el-form-item>
+
+ <el-form-item label="濮撳悕" prop="name" v-else>
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鍚�"></el-input>
+ </el-form-item>
+
+ <el-form-item label="鎵�鍦ㄥ湴" prop="addr">
+ <el-cascader
+ :props="props"
+ popper-class="location"
+ separator=" "
+ @change="handleChange"
+ v-model="form.addr"
+ ></el-cascader>
+ </el-form-item>
+
+ <el-form-item label="閭" prop="email">
+ <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�"></el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+</template>
+
+<script>
+import { getList } from "../api";
+export default {
+ created() {},
+ data() {
+ return {
+ form: {
+ userType: "personal",
+ name: "",
+ name1: "",
+ name2: "",
+ email: "",
+ addr: "",
+ provinceId: "",
+ cityId: "",
+ labelList: "",
+ },
+ rules: {
+ name1: [{ required: true, message: "璇疯緭鍏ュ叕鍙稿悕绉�", trigger: "blur" }],
+ name2: [
+ { required: true, message: "璇疯緭鍏ヨ仈绯讳汉濮撳悕", trigger: "blur" },
+ ],
+ name: [{ required: true, message: "璇疯緭鍏ュ鍚�", trigger: "blur" }],
+ addr: [{ required: true, message: "璇烽�夋嫨鎵�鍦ㄥ湴", trigger: "blur" }],
+ email: [
+ { required: true, message: "璇疯緭鍏ラ偖绠�", trigger: "blur" },
+ {
+ type: "email",
+ message: "閭鏍煎紡鏈夎",
+ trigger: "blur",
+ },
+ ],
+ },
+ provinceOptions: [],
+ props: {
+ lazy: true, // 寮�鍚姩鎬佸姞杞�
+ expandTrigger: "hover",
+ lazyLoad: async (node, resolve) => {
+ // 璁剧疆鍔犺浇鏁版嵁婧愭柟娉� 榛樿鎵ц涓�娆�
+ // node 涓哄綋鍓嶇偣鍑荤殑鑺傜偣
+ // resolve 涓烘暟鎹姞杞藉畬鎴愮殑鍥炶皟(蹇呴』璋冪敤)
+ /* node姝ゆ椂灞炴�т负:
+ 褰撳墠鍙跺瓙 level锛�0
+ loaded锛歵rue
+ loading锛歠alse
+ 鏄惁鏄牴 root锛歵ure
+ */
+ console.log(node);
+
+ if (node.level == 0) {
+ const res = await getList();
+ this.provinceOptions = res.data.map((item) => {
+ return {
+ value: item.id,
+ label: item.name, // 閫夐」鍚�
+ leaf: false, // 鏄惁涓烘湯灏�
+ };
+ });
+ resolve(this.provinceOptions);
+ }
+
+ if (node.level == 1) {
+ console.log("-------------");
+ this.provinceId = node.value;
+ const res2 = await getList({
+ parentId: node.value,
+ });
+
+ const arr = res2.data.map((item) => {
+ return {
+ value: item.id,
+ label: item.name, // 閫夐」鍚�
+ leaf: true, // 鏄惁涓烘湯灏�
+ };
+ });
+ console.log(arr);
+ resolve(arr);
+ } else {
+ resolve();
+ return false;
+ }
+ },
+ },
+ value: [],
+ };
+ },
+
+ methods: {
+ getFormData() {
+ const _this = this;
+ let data = null;
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ console.log(_this.form.userType);
+ if (_this.form.userType == "personal") {
+ data = {
+ userType: _this.form.userType,
+ name: _this.form.name,
+ email: _this.form.email,
+ addr: _this.form.labelList,
+ provinceId: _this.form.provinceId,
+ cityId: _this.form.cityId,
+ };
+ } else {
+ data = {
+ userType: _this.form.userType,
+ name: _this.form.name1 + " " + _this.form.name2,
+ email: _this.form.email,
+ addr: _this.form.labelList,
+ provinceId: _this.form.provinceId,
+ cityId: _this.form.cityId,
+ };
+ }
+ } else {
+ return false;
+ }
+ });
+
+ return data;
+ },
+ handleChange(val) {
+ this.form.provinceId = val[0] + "";
+ this.form.cityId = val[1] + "";
+
+ setTimeout(() => {
+ this.form.labelList =
+ document.querySelectorAll(".el-cascader input")[0].value;
+ }, 200);
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.formInfo {
+ .el-form-item ::v-deep {
+ label {
+ font-size: 14px;
+ color: #fff;
+ text-align: left;
+ }
+
+ .el-radio {
+ .el-radio__inner {
+ background: none;
+ border-color: rgba(255, 255, 255, 0.3) !important;
+
+ &::after {
+ width: 6px;
+ height: 6px;
+ }
+ }
+
+ .el-radio__label {
+ color: #fff !important;
+ }
+ }
+
+ .el-form-item__content {
+ margin-left: 110px !important;
+ text-align: left;
+ }
+
+ input {
+ background-color: rgba(0, 0, 0, 0.1);
+ color: #fff;
+ border: none;
+ caret-color: #fff !important;
+ }
+
+ input:-webkit-autofill,
+ textarea:-webkit-autofill,
+ select:-webkit-autofill {
+ -webkit-text-fill-color: #fff !important;
+ -webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
+ background-color: transparent;
+ background-image: none;
+ transition: background-color 50000s ease-in-out 0s; //鑳屾櫙鑹查�忔槑 鐢熸晥鏃堕暱 杩囨浮鏁堟灉 鍚敤鏃跺欢杩熺殑鏃堕棿
+ }
+
+ .el-cascader {
+ width: 100%;
+ }
+ }
+}
+</style>
+
+<style lang="scss">
+.el-popper.el-cascader__dropdown.location {
+ background-color: rgb(77, 72, 111);
+ border: none;
+ margin: 0 0;
+
+ * {
+ color: #fff;
+ border-color: rgba(255, 255, 2555, 0.1);
+ }
+
+ .el-cascader-node {
+ background-color: rgb(77, 72, 111);
+ }
+
+ .in-active-path {
+ background-color: rgb(98, 87, 125) !important;
+ }
+
+ .el-cascader-node:hover {
+ background-color: rgb(98, 87, 125) !important;
+ }
+
+ .el-scrollbar__view {
+ padding: 0;
+ }
+
+ .popper__arrow::after,
+ .popper__arrow {
+ display: none;
+ }
+
+ .el-cascader-node__label {
+ text-align: left;
+ }
+
+ .el-cascader-menu__wrap {
+ width: 226px;
+ height: 175px;
+ }
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0