Commit 7415b3931f34b75b76fdcac6780c5eac663bcf7d

Authored by sqy
1 parent 737a6932

'fix:修复OEM页面的位置选择回显问题'

... ... @@ -20,6 +20,7 @@
20 20 import { getEnterPriseDetail, updateEnterPriseDetail } from '/@/api/oem/index';
21 21 import { Loading } from '/@/components/Loading';
22 22 import { useMessage } from '/@/hooks/web/useMessage';
  23 + import { getTownChild } from '/@/api/oem/index';
23 24 export default defineComponent({
24 25 components: {
25 26 Card,
... ... @@ -32,7 +33,7 @@
32 33 loading: false,
33 34 tip: '拼命加载中...',
34 35 });
35   - const [registerForm, { getFieldsValue, setFieldsValue }] = useForm({
  36 + const [registerForm, { getFieldsValue, setFieldsValue, updateSchema }] = useForm({
36 37 labelWidth: 80,
37 38 schemas,
38 39 showResetButton: false,
... ... @@ -59,11 +60,128 @@
59 60 createMessage.error('更新信息失败');
60 61 }
61 62 };
  63 +
62 64 onMounted(async () => {
63 65 const res = await getEnterPriseDetail();
  66 + console.log(res);
  67 + updateCityData(res.codeProv, res.codeCity, res.codeCoun);
64 68 setFieldsValue(res);
65 69 });
66 70
  71 + async function updateCityData(codeProv: string, codeCity: string, codeCoun: string) {
  72 + const nameCity = await getTownChild('codeProv', codeProv);
  73 + const nameCoun = await getTownChild('codeCity', codeCity);
  74 + const nameTown = await getTownChild('codeCoun', codeCoun);
  75 + nameCity.forEach((item) => {
  76 + item.label = item.nameCity;
  77 + item.value = item.codeCity;
  78 + });
  79 + nameCoun.forEach((item) => {
  80 + item.label = item.nameCoun;
  81 + item.value = item.codeCoun;
  82 + });
  83 + nameTown.forEach((item) => {
  84 + item.label = item.nameTown;
  85 + item.value = item.codeTown;
  86 + });
  87 + updateSchema({
  88 + field: 'nameTown',
  89 + componentProps: {
  90 + options: nameTown,
  91 + },
  92 + });
  93 + updateSchema({
  94 + field: 'nameCoun',
  95 + componentProps: {
  96 + options: nameCoun,
  97 + async onChange(value) {
  98 + if (value === undefined) {
  99 + setFieldsValue({
  100 + nameTown: undefined,
  101 + });
  102 + updateSchema({
  103 + field: 'nameTown',
  104 + componentProps: {
  105 + options: [],
  106 + },
  107 + });
  108 + }
  109 + let nameTown = await getTownChild('codeCoun', value);
  110 + console.log(111);
  111 + nameTown.forEach((item) => {
  112 + item.label = item.nameTown;
  113 + item.value = item.codeTown;
  114 + });
  115 + setFieldsValue({
  116 + nameTown: undefined,
  117 + });
  118 + updateSchema({
  119 + field: 'nameTown',
  120 + componentProps: {
  121 + placeholder: '请选择街道/城镇',
  122 + options: nameTown,
  123 + },
  124 + });
  125 + },
  126 + },
  127 + });
  128 + updateSchema({
  129 + field: 'nameCity',
  130 + componentProps: ({ formModel }) => {
  131 + return {
  132 + options: nameCity,
  133 + onChange: async (value) => {
  134 + let nameCoun = await getTownChild('codeCity', value);
  135 + if (value === undefined) {
  136 + formModel.nameCoun = undefined; // reset city value
  137 + formModel.nameTown = undefined;
  138 + nameCoun = [];
  139 + updateSchema({
  140 + field: 'nameTown',
  141 + componentProps: {
  142 + options: [],
  143 + },
  144 + });
  145 + }
  146 + nameCoun.forEach((item) => {
  147 + item.label = item.nameCoun;
  148 + item.value = item.codeCoun;
  149 + });
  150 + formModel.nameCoun = undefined; // reset city value
  151 + formModel.nameTown = undefined;
  152 + updateSchema({
  153 + field: 'nameCoun',
  154 + componentProps: {
  155 + // 请选择区
  156 + options: nameCoun,
  157 + async onChange(value) {
  158 + let nameTown = await getTownChild('codeCoun', value);
  159 + if (value === undefined) {
  160 + formModel.nameTown = undefined;
  161 + nameTown = [];
  162 + }
  163 + nameTown.forEach((item) => {
  164 + item.label = item.nameTown;
  165 + item.value = item.codeTown;
  166 + });
  167 +
  168 + formModel.nameTown = undefined;
  169 + updateSchema({
  170 + field: 'nameTown',
  171 + componentProps: {
  172 + placeholder: '请选择街道/城镇',
  173 + options: nameTown,
  174 + },
  175 + });
  176 + },
  177 + },
  178 + });
  179 + },
  180 + };
  181 + },
  182 + });
  183 + }
  184 +
67 185 return {
68 186 registerForm,
69 187 compState,
... ...
... ... @@ -51,6 +51,7 @@ export const schemas: FormSchema[] = [
51 51 field: 'synopsis',
52 52 component: 'InputTextArea',
53 53 label: '公司简介',
  54 +
54 55 colProps: {
55 56 span: 24,
56 57 },
... ... @@ -116,6 +117,9 @@ export const schemas: FormSchema[] = [
116 117 },
117 118 });
118 119 }
  120 + formModel.nameCity = undefined; // reset city value
  121 + formModel.nameCoun = undefined;
  122 + formModel.nameTown = undefined;
119 123 updateSchema({
120 124 field: 'nameCity',
121 125 componentProps: () => {
... ... @@ -146,14 +150,20 @@ export const schemas: FormSchema[] = [
146 150 // 请选择区
147 151 options: nameCoun,
148 152 async onChange(value) {
149   - let nameTown = await getTownChild('codeCoun', value);
  153 + const nameTown = await getTownChild('codeCoun', value);
150 154 nameTown.forEach((item) => {
151 155 item.label = item.nameTown;
152 156 item.value = item.codeTown;
153 157 });
154 158 if (value === undefined) {
155 159 formModel.nameTown = undefined;
156   - nameTown = [];
  160 + updateSchema({
  161 + field: 'nameTown',
  162 + componentProps: {
  163 + placeholder: '请选择街道/城镇',
  164 + options: [],
  165 + },
  166 + });
157 167 }
158 168 updateSchema({
159 169 field: 'nameTown',
... ... @@ -177,7 +187,6 @@ export const schemas: FormSchema[] = [
177 187 field: 'nameCity',
178 188 component: 'Select',
179 189 label: '',
180   -
181 190 colProps: {
182 191 span: 5,
183 192 style: {
... ... @@ -213,13 +222,6 @@ export const schemas: FormSchema[] = [
213 222 placeholder: '请选择街道/城镇',
214 223 },
215 224 },
216   -
217   - // {
218   - // field: 'nameProv',
219   - // label: '所在城市',
220   - // component: 'Cascader',
221   - // },
222   -
223 225 {
224 226 field: 'address',
225 227 component: 'Input',
... ...
... ... @@ -23,7 +23,7 @@
23 23 import EnterpriseInfo from './components/EnterpriseInfo.vue';
24 24 import CVIDraw from './components/CVIDraw.vue';
25 25 import AppDraw from './components/AppDraw.vue';
26   - const activeKey = ref('APP定制');
  26 + const activeKey = ref('企业信息');
27 27 </script>
28 28
29 29 <style lang="less" scoped>
... ...