Commit 42d661dc375de8c2ad7bbfa3810018139240b68b

Authored by xp.Huang
2 parents 7a32d197 87f066b7

Merge branch 'f-dev' into 'main'

fix:修改Teambition上的问题

See merge request huang/yun-teng-iot-front!241
... ... @@ -13,6 +13,7 @@
13 13 import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';
14 14 import { useDesign } from '/@/hooks/web/useDesign';
15 15 import { useUserStore } from '/@/store/modules/user';
  16 +
16 17 const props = defineProps({
17 18 /**
18 19 * The theme of the current parent component
... ...
... ... @@ -31,7 +31,7 @@
31 31 import { CreateContextOptions } from '/@/components/ContextMenu';
32 32
33 33 import { CheckEvent } from './typing';
34   - import { LeftOutlined, RightOutlined } from '@ant-design/icons-vue';
  34 + import { DoubleLeftOutlined, DoubleRightOutlined } from '@ant-design/icons-vue';
35 35
36 36 interface State {
37 37 expandedKeys: Keys;
... ... @@ -398,6 +398,22 @@
398 398 );
399 399 });
400 400 }
  401 + /**
  402 + * 只针对表格分页和组织列表分页的Tree(不是通过弹窗显示,默认是关闭的并且图标显示)
  403 + * 如果是其他弹窗出来的Tree(会造成默认是关闭的并且图标显示),则在对应页面重写css样式即可
  404 + * <style scoped lang="less">
  405 + :deep(.vben-basic-tree) {
  406 + width: 100% !important;
  407 + }
  408 + :deep(.is-unflod) {
  409 + display: none !important;
  410 + }
  411 + :deep(.is-flod) {
  412 + display: none !important;
  413 + }
  414 + </style>
  415 + TODO下次优化通过传配置值来动态显示那些页面需要默认展开或收起
  416 + */
401 417 return () => {
402 418 const { title, helpMessage, toolbar, search, checkable } = props;
403 419 const showTitle = title || toolbar || search || slots.headerTitle;
... ... @@ -435,24 +451,19 @@
435 451 <span
436 452 v-show={unref(isFlod)}
437 453 onClick={() => handleFlodOrUnFoldFunc(false)}
438   - style={
439   - isFlod.value
440   - ? 'z-index:9999;cursor:pointer;position:absolute;top:40vh;left:17.5vw'
441   - : 'z-index:9999;cursor:pointer;position:absolute;top:40vh;left:0.5vw'
442   - }
  454 + class={['is-flod', unref(isFlod) ? 'fold-right' : 'fold-left']}
443 455 >
444   - <RightOutlined />
  456 + <DoubleLeftOutlined />
445 457 </span>
446 458 <span
447 459 v-show={!unref(isFlod) && unref(treeDataRef).length != 0}
448 460 onClick={() => handleFlodOrUnFoldFunc(true)}
449   - style={
450   - isFlod.value
451   - ? 'z-index:9999;cursor:pointer;position:absolute;top:40vh;left:17.5vw'
452   - : 'z-index:9999;cursor:pointer;position:absolute;top:40vh;left:0.5vw'
453   - }
  461 + class={[
  462 + 'is-unflod',
  463 + !unref(isFlod) && unref(treeDataRef).length != 0 ? 'fold-left' : 'fold-right',
  464 + ]}
454 465 >
455   - <LeftOutlined />
  466 + <DoubleRightOutlined />
456 467 </span>
457 468 </div>
458 469 );
... ... @@ -461,6 +472,20 @@
461 472 });
462 473 </script>
463 474 <style lang="less">
  475 + .fold-left {
  476 + z-index: 9999;
  477 + cursor: pointer;
  478 + position: absolute;
  479 + top: 0.85rem;
  480 + left: 0.5vw;
  481 + }
  482 + .fold-right {
  483 + z-index: 9999;
  484 + cursor: pointer;
  485 + position: absolute;
  486 + top: 0.85rem;
  487 + left: 17.5vw;
  488 + }
464 489 @prefix-cls: ~'@{namespace}-basic-tree';
465 490
466 491 .@{prefix-cls} {
... ...
... ... @@ -19,7 +19,7 @@
19 19 >
20 20 <img v-if="tenantLogo" :src="tenantLogo" alt="avatar" />
21 21 <div v-else>
22   - <loading-outlined v-if="loading"></loading-outlined>
  22 + <LoadingOutlined v-if="loading" />
23 23 <plus-outlined v-else />
24 24 <div class="ant-upload-text">上传</div>
25 25 </div>
... ... @@ -73,8 +73,8 @@
73 73
74 74 async function customUpload({ file }) {
75 75 if (beforeUpload(file)) {
  76 + tenantLogo.value = '';
76 77 loading.value = true;
77   -
78 78 const formData = new FormData();
79 79 formData.append('file', file);
80 80 const response = await upload(formData);
... ...
... ... @@ -14,7 +14,13 @@
14 14 />
15 15 <CountTo v-else :endVal="0" />
16 16 </div>
17   - <img src="/src/assets/images/tip.png" style="width: 1.125rem; height: 1.125rem" />
  17 + <Tooltip>
  18 + <template #title>
  19 + 设备数 :{{ growCardList?.deviceInfo.sumCount }} 今日新增
  20 + {{ toThousands(growCardList?.deviceInfo?.todayAdd) }}
  21 + </template>
  22 + <img src="/src/assets/images/tip.png" style="width: 1.125rem; height: 1.125rem" />
  23 + </Tooltip>
18 24 </div>
19 25 <div> 设备数 </div>
20 26 </div>
... ... @@ -49,7 +55,16 @@
49 55 />
50 56 <CountTo v-else :end-val="0" />
51 57 </div>
52   - <img src="/src/assets/images/tip.png" style="width: 1.125rem; height: 1.125rem" />
  58 + <Tooltip>
  59 + <template #title>
  60 + {{
  61 + !isAdmin(role)
  62 + ? `告警数:今日新增${toThousands(growCardList?.alarmInfo?.todayAdd)}`
  63 + : `租户总量:今日新增${toThousands(growCardList?.alarmInfo?.todayAdd)}`
  64 + }}
  65 + </template>
  66 + <img src="/src/assets/images/tip.png" style="width: 1.125rem; height: 1.125rem" />
  67 + </Tooltip>
53 68 </div>
54 69 <div> {{ !isAdmin(role) ? `告警数` : '租户总量' }}</div>
55 70 </div>
... ... @@ -87,7 +102,16 @@
87 102 />
88 103 <CountTo v-else :end-val="0" />
89 104 </div>
90   - <img src="/src/assets/images/tip.png" style="width: 1.125rem; height: 1.125rem" />
  105 + <Tooltip>
  106 + <template #title>
  107 + {{
  108 + !isAdmin(role)
  109 + ? `消息数:今日新增${toThousands(growCardList?.messageInfo?.todayMessageAdd)}`
  110 + : `客户总量:今日新增${toThousands(growCardList?.messageInfo?.todayMessageAdd)}`
  111 + }}
  112 + </template>
  113 + <img src="/src/assets/images/tip.png" style="width: 1.125rem; height: 1.125rem" />
  114 + </Tooltip>
91 115 </div>
92 116 <div> {{ !isAdmin(role) ? `消息数` : '客户总量' }}</div>
93 117 </div>
... ... @@ -108,6 +132,8 @@
108 132 import { isAdmin } from '/@/enums/roleEnum';
109 133 import { toThousands } from '/@/utils/fnUtils';
110 134 import { CountTo } from '/@/components/CountTo/index';
  135 + import { Tooltip } from 'ant-design-vue';
  136 +
111 137 defineProps<{
112 138 role: string;
113 139 }>();
... ...
... ... @@ -39,11 +39,7 @@
39 39 </Card>
40 40 <Card title="联系我们" :bordered="false" v-bind="$attrs" :headStyle="{ padding: 0 }">
41 41 <template #cover>
42   - <img
43   - :src="getQrCode"
44   - v-if="getQrCode"
45   - style="width: 150px; height: 150px; margin: 50px auto"
46   - />
  42 + <img :src="getQrCode" v-if="getQrCode" />
47 43 <Empty v-else :image="Empty.PRESENTED_IMAGE_SIMPLE" />
48 44 </template>
49 45 <CardMeta>
... ...
... ... @@ -13,7 +13,7 @@
13 13 >
14 14 <img v-if="devicePic" :src="devicePic" alt="avatar" />
15 15 <div v-else>
16   - <loading-outlined v-if="loading"></loading-outlined>
  16 + <LoadingOutlined v-if="loading" />
17 17 <PlusOutlined v-else />
18 18 <div class="ant-upload-text">图片上传</div>
19 19 </div>
... ... @@ -143,6 +143,7 @@
143 143 // 图片上传
144 144 async function customUpload({ file }) {
145 145 if (beforeUpload(file)) {
  146 + devicePic.value = '';
146 147 loading.value = true;
147 148 const formData = new FormData();
148 149 formData.append('file', file);
... ...
... ... @@ -273,6 +273,11 @@
273 273 map.removeOverlay(preMarker);
274 274 }
275 275 map.addOverlay(marker);
  276 + //标注监听事件
  277 + marker.addEventListener('click', function () {
  278 + map.openInfoWindow(infoWindow, map.getCenter());
  279 + });
  280 + //标注监听事件
276 281 } else {
277 282 const point = new BMap.Point(106.63028229687498, 36.06735821600903);
278 283 let options = {
... ...
... ... @@ -20,7 +20,7 @@
20 20 style="width: 6.25rem; height: 6.25rem"
21 21 />
22 22 <div v-else>
23   - <loading-outlined v-if="loading"></loading-outlined>
  23 + <LoadingOutlined v-if="loading" />
24 24 <PlusOutlined v-else />
25 25 <div class="ant-upload-text">图片上传</div>
26 26 </div>
... ... @@ -79,8 +79,8 @@
79 79 };
80 80 const customUploadqrcodePic = async ({ file }) => {
81 81 if (beforeUploadqrcodePic(file)) {
  82 + peresonalPic.value = '';
82 83 loading.value = true;
83   -
84 84 const formData = new FormData();
85 85 formData.append('file', file);
86 86 const response = await uploadApi(formData);
... ...
... ... @@ -30,7 +30,7 @@
30 30 import { ref, computed } from 'vue';
31 31 import { useDrawerInner, BasicDrawer } from '/@/components/Drawer/index';
32 32 import { useForm, BasicForm } from '/@/components/Form/index';
33   - import { formSchema } from '../config/config.data.ts';
  33 + import { formSchema } from '../config/config.data';
34 34 import { Card, Tag } from 'ant-design-vue';
35 35 import { createOrEditTransformScriptApi } from '/@/api/device/TransformScriptApi';
36 36 import { useMessage } from '/@/hooks/web/useMessage';
... ... @@ -53,7 +53,7 @@
53 53 setFieldsValue(data.record);
54 54 }
55 55 });
56   - const [registerForm, { getFieldsValue, setFieldsValue, resetFields }] = useForm({
  56 + const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({
57 57 showActionButtonGroup: false,
58 58 colProps: { span: 24 },
59 59 schemas: formSchema,
... ... @@ -84,9 +84,10 @@
84 84 emit('isStatus', { status: 1, jsCode });
85 85 };
86 86 const handleSubmit = async () => {
87   - setDrawerProps({ confirmLoading: true });
88   - const fieldsValue = getFieldsValue();
89 87 try {
  88 + setDrawerProps({ confirmLoading: true });
  89 + const fieldsValue = await validate();
  90 + if (!fieldsValue) return;
90 91 await createOrEditTransformScriptApi({
91 92 configuration: {
92 93 jsScript: aceEditor.value.getValue(),
... ... @@ -99,8 +100,6 @@
99 100 const { createMessage } = useMessage();
100 101 createMessage.success('保存成功');
101 102 } catch (e) {
102   - const { createMessage } = useMessage();
103   - createMessage.success('保存失败');
104 103 } finally {
105 104 setTimeout(() => {
106 105 setDrawerProps({ confirmLoading: false });
... ...
... ... @@ -167,3 +167,14 @@
167 167 },
168 168 });
169 169 </script>
  170 +<style scoped lang="less">
  171 + :deep(.vben-basic-tree) {
  172 + width: 100% !important;
  173 + }
  174 + :deep(.is-unflod) {
  175 + display: none !important;
  176 + }
  177 + :deep(.is-flod) {
  178 + display: none !important;
  179 + }
  180 +</style>
... ...
... ... @@ -180,3 +180,15 @@
180 180 },
181 181 });
182 182 </script>
  183 +
  184 +<style scoped lang="less">
  185 + :deep(.vben-basic-tree) {
  186 + width: 100% !important;
  187 + }
  188 + :deep(.is-unflod) {
  189 + display: none !important;
  190 + }
  191 + :deep(.is-flod) {
  192 + display: none !important;
  193 + }
  194 +</style>
... ...
... ... @@ -19,7 +19,7 @@
19 19 >
20 20 <img v-if="tenantLogo" :src="tenantLogo" alt="avatar" />
21 21 <div v-else>
22   - <loading-outlined v-if="loading"></loading-outlined>
  22 + <LoadingOutlined v-if="loading" />
23 23 <plus-outlined v-else />
24 24 <div class="ant-upload-text">上传</div>
25 25 </div>
... ... @@ -59,8 +59,8 @@
59 59
60 60 async function customUpload({ file }) {
61 61 if (beforeUpload(file)) {
  62 + tenantLogo.value = '';
62 63 loading.value = true;
63   -
64 64 const formData = new FormData();
65 65 formData.append('file', file);
66 66 const response = await upload(formData);
... ...
... ... @@ -183,3 +183,15 @@
183 183 },
184 184 });
185 185 </script>
  186 +
  187 +<style scoped lang="less">
  188 + :deep(.vben-basic-tree) {
  189 + width: 100% !important;
  190 + }
  191 + :deep(.is-unflod) {
  192 + display: none !important;
  193 + }
  194 + :deep(.is-flod) {
  195 + display: none !important;
  196 + }
  197 +</style>
... ...