Commit f16e723bc75b73dccad544f505d8772552fd9006

Authored by xp.Huang
2 parents c05571a4 7415b393

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);
@@ -140,7 +140,7 @@ @@ -140,7 +140,7 @@
140 } 140 }
141 141
142 function goLogin() { 142 function goLogin() {
143 - userStore.logout(true); 143 + userStore.logout();
144 lockStore.resetLockInfo(); 144 lockStore.resetLockInfo();
145 } 145 }
146 146
@@ -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>