Commit f16e723bc75b73dccad544f505d8772552fd9006
Merge branch 'sqy_dev' into 'main'
'fix:将分析页代码与工作台互换' See merge request huang/yun-teng-iot-front!16
Showing
20 changed files
with
211 additions
and
91 deletions
src/views/dashboard/analysis/components/DynamicInfo.vue
renamed from
src/views/dashboard/workbench/components/DynamicInfo.vue
src/views/dashboard/analysis/components/ProjectCard.vue
renamed from
src/views/dashboard/workbench/components/ProjectCard.vue
src/views/dashboard/analysis/components/QuickNav.vue
renamed from
src/views/dashboard/workbench/components/QuickNav.vue
src/views/dashboard/analysis/components/SaleRadar.vue
renamed from
src/views/dashboard/workbench/components/SaleRadar.vue
src/views/dashboard/analysis/components/WorkbenchHeader.vue
renamed from
src/views/dashboard/workbench/components/WorkbenchHeader.vue
src/views/dashboard/analysis/components/data.ts
renamed from
src/views/dashboard/workbench/components/data.ts
1 | <template> | 1 | <template> |
2 | - <div class="p-4 md:flex"> | ||
3 | - <div class="md:w-7/10 w-full !mr-4 enter-y"> | ||
4 | - <GrowCard :loading="loading" class="enter-y" /> | ||
5 | - <SiteAnalysis class="!my-4 enter-y" :loading="loading" /> | ||
6 | - <div class="md:flex enter-y"> | ||
7 | - <Card title="核心流程指南" style="width: 100%"> | ||
8 | - <img alt="核心流程指南" src="../../../assets/images/flow.png" /> | 2 | + <PageWrapper> |
3 | + <template #headerContent> <WorkbenchHeader /> </template> | ||
4 | + <div class="lg:flex"> | ||
5 | + <div class="lg:w-7/10 w-full !mr-4 enter-y"> | ||
6 | + <ProjectCard :loading="loading" class="enter-y" /> | ||
7 | + <DynamicInfo :loading="loading" class="!my-4 enter-y" /> | ||
8 | + </div> | ||
9 | + <div class="lg:w-3/10 w-full enter-y"> | ||
10 | + <QuickNav :loading="loading" class="enter-y" /> | ||
11 | + | ||
12 | + <Card class="!my-4 enter-y" :loading="loading"> | ||
13 | + <img class="xl:h-50 h-30 mx-auto" src="../../../assets/svg/illustration.svg" /> | ||
9 | </Card> | 14 | </Card> |
15 | + | ||
16 | + <SaleRadar :loading="loading" class="enter-y" /> | ||
10 | </div> | 17 | </div> |
11 | </div> | 18 | </div> |
12 | - <div class="md:w-3/10 w-full enter-y"> | ||
13 | - <HelpDoc /> | ||
14 | - </div> | ||
15 | - </div> | 19 | + <BasicModal |
20 | + @register="register" | ||
21 | + v-bind="$attrs" | ||
22 | + :mask="true" | ||
23 | + :showCancelBtn="false" | ||
24 | + :showOkBtn="false" | ||
25 | + :canFullscreen="false" | ||
26 | + :closable="false" | ||
27 | + :maskStyle="maskColor" | ||
28 | + :height="600" | ||
29 | + :width="1500" | ||
30 | + :maskClosable="false" | ||
31 | + title="请修改密码" | ||
32 | + :helpMessage="['请您修改密码']" | ||
33 | + > | ||
34 | + <PasswordDialog /> | ||
35 | + </BasicModal> | ||
36 | + </PageWrapper> | ||
16 | </template> | 37 | </template> |
17 | <script lang="ts" setup> | 38 | <script lang="ts" setup> |
18 | - import { ref } from 'vue'; | ||
19 | - import GrowCard from './components/GrowCard.vue'; | ||
20 | - import SiteAnalysis from './components/SiteAnalysis.vue'; | 39 | + import PasswordDialog from '/@/views/system/password/index.vue'; |
40 | + import { BasicModal, useModal } from '/@/components/Modal'; | ||
41 | + import { getAuthCache } from '/@/utils/auth'; | ||
42 | + import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | ||
43 | + import { ref, onMounted } from 'vue'; | ||
21 | import { Card } from 'ant-design-vue'; | 44 | import { Card } from 'ant-design-vue'; |
22 | - import HelpDoc from './components/HelpDoc.vue'; | ||
23 | - const loading = ref(true); | 45 | + import { PageWrapper } from '/@/components/Page'; |
46 | + import WorkbenchHeader from './components/WorkbenchHeader.vue'; | ||
47 | + import ProjectCard from './components/ProjectCard.vue'; | ||
48 | + import QuickNav from './components/QuickNav.vue'; | ||
49 | + import DynamicInfo from './components/DynamicInfo.vue'; | ||
50 | + import SaleRadar from './components/SaleRadar.vue'; | ||
51 | + | ||
52 | + const maskColor = ref({ backgroundColor: 'grey' }); | ||
53 | + const statusModel = ref(false); | ||
54 | + const [register, { openModal }] = useModal(); | ||
55 | + onMounted(() => { | ||
56 | + const userInfo: object = getAuthCache(USER_INFO_KEY); | ||
57 | + if (userInfo.needSetPwd == true) { | ||
58 | + statusModel.value = true; | ||
59 | + openModal(statusModel.value); | ||
60 | + } else if (userInfo.needSetPwd == false) { | ||
61 | + openModal(statusModel.value); | ||
62 | + } | ||
63 | + }); | ||
64 | + //Yunteng123456!!! | ||
65 | + //Password123456! | ||
66 | + //System123456! | ||
67 | + //Testrole123456! | ||
68 | + const loading = ref(false); | ||
24 | setTimeout(() => { | 69 | setTimeout(() => { |
25 | loading.value = false; | 70 | loading.value = false; |
26 | }, 1500); | 71 | }, 1500); |
src/views/dashboard/workbench/components/GrowCard.vue
renamed from
src/views/dashboard/analysis/components/GrowCard.vue
src/views/dashboard/workbench/components/HelpDoc.vue
renamed from
src/views/dashboard/analysis/components/HelpDoc.vue
src/views/dashboard/workbench/components/SiteAnalysis.vue
renamed from
src/views/dashboard/analysis/components/SiteAnalysis.vue
src/views/dashboard/workbench/components/VisitAnalysis.vue
renamed from
src/views/dashboard/analysis/components/VisitAnalysis.vue
src/views/dashboard/workbench/components/VisitAnalysisBar.vue
renamed from
src/views/dashboard/analysis/components/VisitAnalysisBar.vue
src/views/dashboard/workbench/components/props.ts
renamed from
src/views/dashboard/analysis/components/props.ts
src/views/dashboard/workbench/data.ts
renamed from
src/views/dashboard/analysis/data.ts
1 | <template> | 1 | <template> |
2 | - <PageWrapper> | ||
3 | - <template #headerContent> <WorkbenchHeader /> </template> | ||
4 | - <div class="lg:flex"> | ||
5 | - <div class="lg:w-7/10 w-full !mr-4 enter-y"> | ||
6 | - <ProjectCard :loading="loading" class="enter-y" /> | ||
7 | - <DynamicInfo :loading="loading" class="!my-4 enter-y" /> | ||
8 | - </div> | ||
9 | - <div class="lg:w-3/10 w-full enter-y"> | ||
10 | - <QuickNav :loading="loading" class="enter-y" /> | ||
11 | - | ||
12 | - <Card class="!my-4 enter-y" :loading="loading"> | ||
13 | - <img class="xl:h-50 h-30 mx-auto" src="../../../assets/svg/illustration.svg" /> | 2 | + <div class="p-4 md:flex"> |
3 | + <div class="md:w-7/10 w-full !mr-4 enter-y"> | ||
4 | + <GrowCard :loading="loading" class="enter-y" /> | ||
5 | + <SiteAnalysis class="!my-4 enter-y" :loading="loading" /> | ||
6 | + <div class="md:flex enter-y"> | ||
7 | + <Card title="核心流程指南" style="width: 100%"> | ||
8 | + <img alt="核心流程指南" src="../../../assets/images/flow.png" /> | ||
14 | </Card> | 9 | </Card> |
15 | - | ||
16 | - <SaleRadar :loading="loading" class="enter-y" /> | ||
17 | </div> | 10 | </div> |
18 | </div> | 11 | </div> |
19 | - <BasicModal | ||
20 | - @register="register" | ||
21 | - v-bind="$attrs" | ||
22 | - :mask="true" | ||
23 | - :showCancelBtn="false" | ||
24 | - :showOkBtn="false" | ||
25 | - :canFullscreen="false" | ||
26 | - :closable="false" | ||
27 | - :maskStyle="maskColor" | ||
28 | - :height="600" | ||
29 | - :width="1500" | ||
30 | - :maskClosable="false" | ||
31 | - title="请修改密码" | ||
32 | - :helpMessage="['请您修改密码']" | ||
33 | - > | ||
34 | - <PasswordDialog /> | ||
35 | - </BasicModal> | ||
36 | - </PageWrapper> | 12 | + <div class="md:w-3/10 w-full enter-y"> |
13 | + <HelpDoc /> | ||
14 | + </div> | ||
15 | + </div> | ||
37 | </template> | 16 | </template> |
38 | <script lang="ts" setup> | 17 | <script lang="ts" setup> |
39 | - import PasswordDialog from '/@/views/system/password/index.vue'; | ||
40 | - import { BasicModal, useModal } from '/@/components/Modal'; | ||
41 | - import { getAuthCache } from '/@/utils/auth'; | ||
42 | - import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | ||
43 | - import { ref, onMounted } from 'vue'; | 18 | + import { ref } from 'vue'; |
19 | + import GrowCard from './components/GrowCard.vue'; | ||
20 | + import SiteAnalysis from './components/SiteAnalysis.vue'; | ||
44 | import { Card } from 'ant-design-vue'; | 21 | import { Card } from 'ant-design-vue'; |
45 | - import { PageWrapper } from '/@/components/Page'; | ||
46 | - import WorkbenchHeader from './components/WorkbenchHeader.vue'; | ||
47 | - import ProjectCard from './components/ProjectCard.vue'; | ||
48 | - import QuickNav from './components/QuickNav.vue'; | ||
49 | - import DynamicInfo from './components/DynamicInfo.vue'; | ||
50 | - import SaleRadar from './components/SaleRadar.vue'; | ||
51 | - | ||
52 | - const maskColor = ref({ backgroundColor: 'grey' }); | ||
53 | - const statusModel = ref(false); | ||
54 | - const [register, { openModal }] = useModal(); | ||
55 | - onMounted(() => { | ||
56 | - const userInfo: object = getAuthCache(USER_INFO_KEY); | ||
57 | - if (userInfo.needSetPwd == true) { | ||
58 | - statusModel.value = true; | ||
59 | - openModal(statusModel.value); | ||
60 | - } else if (userInfo.needSetPwd == false) { | ||
61 | - openModal(statusModel.value); | ||
62 | - } | ||
63 | - }); | ||
64 | - //Yunteng123456!!! | ||
65 | - //Password123456! | ||
66 | - //System123456! | ||
67 | - //Testrole123456! | ||
68 | - const loading = ref(false); | 22 | + import HelpDoc from './components/HelpDoc.vue'; |
23 | + const loading = ref(true); | ||
69 | setTimeout(() => { | 24 | setTimeout(() => { |
70 | loading.value = false; | 25 | loading.value = false; |
71 | }, 1500); | 26 | }, 1500); |
@@ -44,7 +44,7 @@ | @@ -44,7 +44,7 @@ | ||
44 | </ARow> | 44 | </ARow> |
45 | <ARow class="enter-x"> | 45 | <ARow class="enter-x"> |
46 | <ACol :span="12"> | 46 | <ACol :span="12"> |
47 | - <FormItem> </FormItem> | 47 | + <FormItem /> |
48 | </ACol> | 48 | </ACol> |
49 | <ACol :span="12"> | 49 | <ACol :span="12"> |
50 | <FormItem :style="{ 'text-align': 'right' }"> | 50 | <FormItem :style="{ 'text-align': 'right' }"> |
@@ -20,6 +20,7 @@ | @@ -20,6 +20,7 @@ | ||
20 | import { getEnterPriseDetail, updateEnterPriseDetail } from '/@/api/oem/index'; | 20 | import { getEnterPriseDetail, updateEnterPriseDetail } from '/@/api/oem/index'; |
21 | import { Loading } from '/@/components/Loading'; | 21 | import { Loading } from '/@/components/Loading'; |
22 | import { useMessage } from '/@/hooks/web/useMessage'; | 22 | import { useMessage } from '/@/hooks/web/useMessage'; |
23 | + import { getTownChild } from '/@/api/oem/index'; | ||
23 | export default defineComponent({ | 24 | export default defineComponent({ |
24 | components: { | 25 | components: { |
25 | Card, | 26 | Card, |
@@ -32,7 +33,7 @@ | @@ -32,7 +33,7 @@ | ||
32 | loading: false, | 33 | loading: false, |
33 | tip: '拼命加载中...', | 34 | tip: '拼命加载中...', |
34 | }); | 35 | }); |
35 | - const [registerForm, { getFieldsValue, setFieldsValue }] = useForm({ | 36 | + const [registerForm, { getFieldsValue, setFieldsValue, updateSchema }] = useForm({ |
36 | labelWidth: 80, | 37 | labelWidth: 80, |
37 | schemas, | 38 | schemas, |
38 | showResetButton: false, | 39 | showResetButton: false, |
@@ -59,11 +60,128 @@ | @@ -59,11 +60,128 @@ | ||
59 | createMessage.error('更新信息失败'); | 60 | createMessage.error('更新信息失败'); |
60 | } | 61 | } |
61 | }; | 62 | }; |
63 | + | ||
62 | onMounted(async () => { | 64 | onMounted(async () => { |
63 | const res = await getEnterPriseDetail(); | 65 | const res = await getEnterPriseDetail(); |
66 | + console.log(res); | ||
67 | + updateCityData(res.codeProv, res.codeCity, res.codeCoun); | ||
64 | setFieldsValue(res); | 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 | return { | 185 | return { |
68 | registerForm, | 186 | registerForm, |
69 | compState, | 187 | compState, |
@@ -51,6 +51,7 @@ export const schemas: FormSchema[] = [ | @@ -51,6 +51,7 @@ export const schemas: FormSchema[] = [ | ||
51 | field: 'synopsis', | 51 | field: 'synopsis', |
52 | component: 'InputTextArea', | 52 | component: 'InputTextArea', |
53 | label: '公司简介', | 53 | label: '公司简介', |
54 | + | ||
54 | colProps: { | 55 | colProps: { |
55 | span: 24, | 56 | span: 24, |
56 | }, | 57 | }, |
@@ -116,6 +117,9 @@ export const schemas: FormSchema[] = [ | @@ -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 | updateSchema({ | 123 | updateSchema({ |
120 | field: 'nameCity', | 124 | field: 'nameCity', |
121 | componentProps: () => { | 125 | componentProps: () => { |
@@ -146,14 +150,20 @@ export const schemas: FormSchema[] = [ | @@ -146,14 +150,20 @@ export const schemas: FormSchema[] = [ | ||
146 | // 请选择区 | 150 | // 请选择区 |
147 | options: nameCoun, | 151 | options: nameCoun, |
148 | async onChange(value) { | 152 | async onChange(value) { |
149 | - let nameTown = await getTownChild('codeCoun', value); | 153 | + const nameTown = await getTownChild('codeCoun', value); |
150 | nameTown.forEach((item) => { | 154 | nameTown.forEach((item) => { |
151 | item.label = item.nameTown; | 155 | item.label = item.nameTown; |
152 | item.value = item.codeTown; | 156 | item.value = item.codeTown; |
153 | }); | 157 | }); |
154 | if (value === undefined) { | 158 | if (value === undefined) { |
155 | formModel.nameTown = undefined; | 159 | formModel.nameTown = undefined; |
156 | - nameTown = []; | 160 | + updateSchema({ |
161 | + field: 'nameTown', | ||
162 | + componentProps: { | ||
163 | + placeholder: '请选择街道/城镇', | ||
164 | + options: [], | ||
165 | + }, | ||
166 | + }); | ||
157 | } | 167 | } |
158 | updateSchema({ | 168 | updateSchema({ |
159 | field: 'nameTown', | 169 | field: 'nameTown', |
@@ -177,7 +187,6 @@ export const schemas: FormSchema[] = [ | @@ -177,7 +187,6 @@ export const schemas: FormSchema[] = [ | ||
177 | field: 'nameCity', | 187 | field: 'nameCity', |
178 | component: 'Select', | 188 | component: 'Select', |
179 | label: '', | 189 | label: '', |
180 | - | ||
181 | colProps: { | 190 | colProps: { |
182 | span: 5, | 191 | span: 5, |
183 | style: { | 192 | style: { |
@@ -213,13 +222,6 @@ export const schemas: FormSchema[] = [ | @@ -213,13 +222,6 @@ export const schemas: FormSchema[] = [ | ||
213 | placeholder: '请选择街道/城镇', | 222 | placeholder: '请选择街道/城镇', |
214 | }, | 223 | }, |
215 | }, | 224 | }, |
216 | - | ||
217 | - // { | ||
218 | - // field: 'nameProv', | ||
219 | - // label: '所在城市', | ||
220 | - // component: 'Cascader', | ||
221 | - // }, | ||
222 | - | ||
223 | { | 225 | { |
224 | field: 'address', | 226 | field: 'address', |
225 | component: 'Input', | 227 | component: 'Input', |
@@ -23,7 +23,7 @@ | @@ -23,7 +23,7 @@ | ||
23 | import EnterpriseInfo from './components/EnterpriseInfo.vue'; | 23 | import EnterpriseInfo from './components/EnterpriseInfo.vue'; |
24 | import CVIDraw from './components/CVIDraw.vue'; | 24 | import CVIDraw from './components/CVIDraw.vue'; |
25 | import AppDraw from './components/AppDraw.vue'; | 25 | import AppDraw from './components/AppDraw.vue'; |
26 | - const activeKey = ref('APP定制'); | 26 | + const activeKey = ref('企业信息'); |
27 | </script> | 27 | </script> |
28 | 28 | ||
29 | <style lang="less" scoped> | 29 | <style lang="less" scoped> |