Commit e2255bd04bf1f025dfae57074c5d7b46083c7c67
Merge branch 'fix/configuration-center' into 'main_dev'
fix: 修复组态权限区分 See merge request yunteng/thingskit-front!982
Showing
6 changed files
with
68 additions
and
46 deletions
... | ... | @@ -13,13 +13,14 @@ |
13 | 13 | <script lang="ts"> |
14 | 14 | import { defineComponent, ref, computed, unref } from 'vue'; |
15 | 15 | import { BasicForm, useForm } from '/@/components/Form'; |
16 | - import { formSchema, PC_DEFAULT_CONTENT, PHONE_DEFAULT_CONTENT, Platform } from './center.data'; | |
16 | + import { formSchema } from './center.data'; | |
17 | 17 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
18 | 18 | import { useMessage } from '/@/hooks/web/useMessage'; |
19 | 19 | import { saveOrUpdateConfigurationCenter } from '/@/api/configuration/center/configurationCenter'; |
20 | 20 | import { FileItem } from '/@/components/Form/src/components/ApiUpload.vue'; |
21 | 21 | import { buildUUID } from '/@/utils/uuid'; |
22 | 22 | import { getDeviceProfile } from '/@/api/alarm/position'; |
23 | + import { PC_DEFAULT_CONTENT, PHONE_DEFAULT_CONTENT, Platform } from '../center/center.data'; | |
23 | 24 | |
24 | 25 | export default defineComponent({ |
25 | 26 | name: 'ConfigurationDrawer', | ... | ... |
... | ... | @@ -5,28 +5,17 @@ import { uploadThumbnail } from '/@/api/configuration/center/configurationCenter |
5 | 5 | import { useComponentRegister } from '/@/components/Form'; |
6 | 6 | import { OrgTreeSelect } from '../../common/OrgTreeSelect'; |
7 | 7 | import { getDeviceProfile } from '/@/api/alarm/position'; |
8 | +import { Platform } from '../center/center.data'; | |
8 | 9 | |
9 | 10 | useComponentRegister('OrgTreeSelect', OrgTreeSelect); |
10 | -export enum Platform { | |
11 | - PHONE = 'phone', | |
12 | - PC = 'pc', | |
13 | -} | |
14 | 11 | |
15 | -export enum ConfigurationPermission { | |
16 | - CREATE = 'api:yt:configuration:center:post', | |
17 | - UPDATE = 'api:yt:configuration:center:update', | |
18 | - DELETE = 'api:yt:configuration:center:delete', | |
19 | - DESIGN = 'api:yt:configuration:center:get_configuration_info:design', | |
20 | - PREVIEW = 'api:yt:configuration:center:get_configuration_info:preview', | |
21 | - SHARE = 'api:yt:configuration:center:share', | |
22 | - UN_SHARE = 'api:yt:configuration:center:monopoly', | |
12 | +export enum ConfigurationTemplatePermission { | |
13 | + CREATE = 'api:yt:configuration:template:center:post', | |
14 | + UPDATE = 'api:yt:configuration:template:center:update', | |
15 | + DELETE = 'api:yt:configuration:template:center:delete', | |
16 | + DESIGN = 'api:yt:configuration:template:center:get_configuration_info:design', | |
17 | + PREVIEW = 'api:yt:configuration:template:center:get_configuration_info:preview', | |
23 | 18 | } |
24 | - | |
25 | -export const PC_DEFAULT_CONTENT = | |
26 | - '<mxfile><diagram>dZHBDsIgDIafhvuEzOh5Tr142sEzGXWQsHVhmKFP7xbAidMT5fv/UtoSVrTuZHgvLyhAE5oJR9iBUMrybT4dM3l4stnTzJPGKBHYAir1hACj7a4EDInRImqr+hTW2HVQ24RxY3BMbTfUadWeN7ACVc31ml6VsPK7jVk4g2pkLJ3tgtLy6A5gkFzg+IFYSVhhEK2PWleAnscXB+Pzjn/U988MdPZHwhQsb0+XZEesfAE=</diagram></mxfile>'; | |
27 | - | |
28 | -export const PHONE_DEFAULT_CONTENT = | |
29 | - '<mxfile><diagram>dZHBEoIgEEC/hru6lXU2q0snD50Z2YQZdB2k0fr6dMCMsU4sb9+ysDDI6uFseCuvJFCzJBIDgyNLkjjdw7hM5OnIYRc5UBklvLSAQr3Qw1l7KIFdIFoibVUbwpKaBksbMG4M9aF2Jx12bXmFK1CUXK/pTQkrHd3E24VfUFXSd04hdYmaz65/SCe5oP4LQc4gM0TWRfWQoZ5mN4/F1Z3+ZD/3MtjYHwVjsJw9boIPgvwN</diagram></mxfile>'; | |
30 | 19 | // 表格列数据 |
31 | 20 | export const columns: BasicColumn[] = [ |
32 | 21 | { | ... | ... |
... | ... | @@ -6,12 +6,11 @@ |
6 | 6 | import { |
7 | 7 | deleteConfigurationCenter, |
8 | 8 | getPage, |
9 | - shareConfiguration, | |
10 | 9 | } from '/@/api/configuration/center/configurationCenter'; |
11 | 10 | import { ConfigurationCenterItemsModal } from '/@/api/configuration/center/model/configurationCenterModal'; |
12 | 11 | import { PageWrapper } from '/@/components/Page'; |
13 | 12 | import { BasicForm, useForm } from '/@/components/Form'; |
14 | - import { ConfigurationPermission, Platform, searchFormSchema } from './center.data'; | |
13 | + import { searchFormSchema, ConfigurationTemplatePermission } from './center.data'; | |
15 | 14 | import { useMessage } from '/@/hooks/web/useMessage'; |
16 | 15 | import { Authority } from '/@/components/Authority'; |
17 | 16 | import ConfigurationCenterDrawer from './ConfigurationCenterDrawer.vue'; |
... | ... | @@ -22,10 +21,10 @@ |
22 | 21 | import { usePermission } from '/@/hooks/web/usePermission'; |
23 | 22 | import { AuthIcon, CardLayoutButton } from '/@/components/Widget'; |
24 | 23 | import AuthDropDown from '/@/components/Widget/AuthDropDown.vue'; |
25 | - import { ShareModal } from '/@/views/common/ShareModal'; | |
26 | 24 | import { useRole } from '/@/hooks/business/useRole'; |
27 | 25 | import { Icon } from '/@/components/Icon'; |
28 | 26 | import { createScadaPageLink, ScadaModeEnum } from './help'; |
27 | + import { Platform } from '../center/center.data'; | |
29 | 28 | |
30 | 29 | const listColumn = ref(5); |
31 | 30 | |
... | ... | @@ -102,11 +101,11 @@ |
102 | 101 | const { hasPermission } = usePermission(); |
103 | 102 | |
104 | 103 | const getPreviewFlag = computed(() => { |
105 | - return hasPermission(ConfigurationPermission.PREVIEW); | |
104 | + return hasPermission(ConfigurationTemplatePermission.PREVIEW); | |
106 | 105 | }); |
107 | 106 | |
108 | 107 | const getDesignFlag = computed(() => { |
109 | - return hasPermission(ConfigurationPermission.DESIGN); | |
108 | + return hasPermission(ConfigurationTemplatePermission.DESIGN); | |
110 | 109 | }); |
111 | 110 | |
112 | 111 | const handleCreateOrUpdate = (record?: ConfigurationCenterItemsModal) => { |
... | ... | @@ -185,7 +184,7 @@ |
185 | 184 | > |
186 | 185 | <template #header> |
187 | 186 | <div class="flex gap-3 justify-end"> |
188 | - <Authority v-if="!isCustomerUser" :value="ConfigurationPermission.CREATE"> | |
187 | + <Authority v-if="!isCustomerUser" :value="ConfigurationTemplatePermission.CREATE"> | |
189 | 188 | <Button type="primary" @click="handleCreateOrUpdate()">新增模板</Button> |
190 | 189 | </Authority> |
191 | 190 | <CardLayoutButton v-model:value="listColumn" @change="handleCardLayoutChange" /> |
... | ... | @@ -225,7 +224,7 @@ |
225 | 224 | <template class="ant-card-actions" #actions> |
226 | 225 | <Tooltip v-if="!isCustomerUser" title="设计"> |
227 | 226 | <AuthIcon |
228 | - :auth="ConfigurationPermission.DESIGN" | |
227 | + :auth="ConfigurationTemplatePermission.DESIGN" | |
229 | 228 | class="!text-lg" |
230 | 229 | icon="ant-design:edit-outlined" |
231 | 230 | @click="handleDesign(item)" |
... | ... | @@ -236,14 +235,14 @@ |
236 | 235 | :dropMenuList="[ |
237 | 236 | { |
238 | 237 | text: '编辑', |
239 | - auth: ConfigurationPermission.UPDATE, | |
238 | + auth: ConfigurationTemplatePermission.UPDATE, | |
240 | 239 | icon: 'clarity:note-edit-line', |
241 | 240 | event: '', |
242 | 241 | onClick: handleCreateOrUpdate.bind(null, item), |
243 | 242 | }, |
244 | 243 | { |
245 | 244 | text: '删除', |
246 | - auth: ConfigurationPermission.DELETE, | |
245 | + auth: ConfigurationTemplatePermission.DELETE, | |
247 | 246 | icon: 'ant-design:delete-outlined', |
248 | 247 | event: '', |
249 | 248 | popconfirm: { |
... | ... | @@ -281,11 +280,6 @@ |
281 | 280 | </List> |
282 | 281 | </section> |
283 | 282 | <ConfigurationCenterDrawer @register="registerDrawer" @success="getListData" /> |
284 | - <ShareModal | |
285 | - @register="registerShareModal" | |
286 | - :shareApi="shareConfiguration" | |
287 | - @success="getListData" | |
288 | - /> | |
289 | 283 | </PageWrapper> |
290 | 284 | </template> |
291 | 285 | ... | ... |
... | ... | @@ -15,6 +15,7 @@ export const option: PublicPresetOptions = { |
15 | 15 | [ComponentConfigFieldEnum.SHOW_TIME]: false, |
16 | 16 | [ComponentConfigFieldEnum.FONT_SIZE]: 14, |
17 | 17 | [ComponentConfigFieldEnum.VALUE_SIZE]: 20, |
18 | + [ComponentConfigFieldEnum.MAX_NUMBER]: 120, | |
18 | 19 | }; |
19 | 20 | |
20 | 21 | export default class Config extends PublicConfigClass implements CreateComponentType { | ... | ... |
... | ... | @@ -18,16 +18,38 @@ |
18 | 18 | |
19 | 19 | const time = ref<Nullable<number>>(null); |
20 | 20 | |
21 | + const POSITIVE_NUMBER = 6; | |
22 | + | |
23 | + const ALL_PART = 7; | |
24 | + | |
25 | + const DEFAULT_PART_VALUE = 20; | |
26 | + | |
27 | + const partValue = computed(() => { | |
28 | + const { config } = props; | |
29 | + const { option } = config; | |
30 | + const { componentInfo } = option; | |
31 | + const { maxNumber = 120 } = componentInfo || {}; | |
32 | + let value = maxNumber / POSITIVE_NUMBER; | |
33 | + return value % 10 > 0 ? Math.floor(value / 10) * 10 + 10 : value + 10; | |
34 | + }); | |
35 | + | |
36 | + const maxValueScale = computed(() => unref(partValue) / DEFAULT_PART_VALUE); | |
37 | + | |
21 | 38 | const getValue = computed(() => { |
22 | 39 | const maxHeight = 190; |
23 | 40 | const minHeight = 15; |
41 | + | |
24 | 42 | const height = maxHeight - minHeight; |
25 | - const rangeNumber = 7; | |
26 | - const itemRange = 20; | |
27 | - const itemHeight = height / (rangeNumber * itemRange); | |
43 | + | |
44 | + const itemHeight = height / (ALL_PART * (DEFAULT_PART_VALUE * unref(maxValueScale))); | |
45 | + | |
28 | 46 | const value = unref(currentValue); |
29 | - const transformValue = | |
30 | - maxHeight - (value >= 0 ? value + 20 : itemRange - Math.abs(value)) * itemHeight; | |
47 | + let transformValue = | |
48 | + maxHeight - | |
49 | + (value >= 0 | |
50 | + ? value + unref(DEFAULT_PART_VALUE * unref(maxValueScale)) | |
51 | + : DEFAULT_PART_VALUE * unref(maxValueScale) - Math.abs(value)) * | |
52 | + itemHeight; | |
31 | 53 | |
32 | 54 | return transformValue >= maxHeight |
33 | 55 | ? maxHeight |
... | ... | @@ -184,7 +206,9 @@ |
184 | 206 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
185 | 207 | /> |
186 | 208 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
187 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">-20</div> | |
209 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
210 | + {{ partValue * -1 }} | |
211 | + </div> | |
188 | 212 | </foreignObject> |
189 | 213 | </g> |
190 | 214 | <g class="tick" opacity="1" transform="translate(0,165)"> |
... | ... | @@ -204,7 +228,9 @@ |
204 | 228 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
205 | 229 | /> |
206 | 230 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
207 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">20</div> | |
231 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
232 | + {{ partValue }} | |
233 | + </div> | |
208 | 234 | </foreignObject> |
209 | 235 | </g> |
210 | 236 | <g class="tick" opacity="1" transform="translate(0,115)"> |
... | ... | @@ -214,7 +240,9 @@ |
214 | 240 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
215 | 241 | /> |
216 | 242 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
217 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">40</div> | |
243 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
244 | + {{ partValue * 2 }} | |
245 | + </div> | |
218 | 246 | </foreignObject> |
219 | 247 | </g> |
220 | 248 | <g class="tick" opacity="1" transform="translate(0,90)"> |
... | ... | @@ -224,7 +252,9 @@ |
224 | 252 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
225 | 253 | /> |
226 | 254 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
227 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">60</div> | |
255 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
256 | + {{ partValue * 3 }} | |
257 | + </div> | |
228 | 258 | </foreignObject> |
229 | 259 | </g> |
230 | 260 | <g class="tick" opacity="1" transform="translate(0,65)"> |
... | ... | @@ -234,7 +264,9 @@ |
234 | 264 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
235 | 265 | /> |
236 | 266 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
237 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">80</div> | |
267 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
268 | + {{ partValue * 4 }} | |
269 | + </div> | |
238 | 270 | </foreignObject> |
239 | 271 | </g> |
240 | 272 | <g class="tick" opacity="1" transform="translate(0,40)"> |
... | ... | @@ -244,7 +276,9 @@ |
244 | 276 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
245 | 277 | /> |
246 | 278 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
247 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">100</div> | |
279 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
280 | + {{ partValue * 5 }} | |
281 | + </div> | |
248 | 282 | </foreignObject> |
249 | 283 | </g> |
250 | 284 | <g class="tick" opacity="1" transform="translate(0,15)"> |
... | ... | @@ -254,7 +288,9 @@ |
254 | 288 | style="stroke: rgb(136, 136, 136); shape-rendering: crispEdges; stroke-width: 1px" |
255 | 289 | /> |
256 | 290 | <foreignObject xmlns="http://www.w3.org/2000/svg" x="-55" y="-10" width="45" height="20"> |
257 | - <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml">120</div> | |
291 | + <div class="tick-label" xmlns="http://www.w3.org/1999/xhtml"> | |
292 | + {{ partValue * 6 }} | |
293 | + </div> | |
258 | 294 | </foreignObject> |
259 | 295 | </g> |
260 | 296 | </g> | ... | ... |
... | ... | @@ -10,7 +10,7 @@ export function useSendCommand() { |
10 | 10 | const loading = ref(false); |
11 | 11 | |
12 | 12 | const error = () => { |
13 | - createMessage.error('下发指令失败'); | |
13 | + // createMessage.error('下发指令失败'); | |
14 | 14 | return false; |
15 | 15 | }; |
16 | 16 | |
... | ... | @@ -52,6 +52,7 @@ export function useSendCommand() { |
52 | 52 | createMessage.success('命令下发成功'); |
53 | 53 | return true; |
54 | 54 | } catch (msg) { |
55 | + console.error(msg); | |
55 | 56 | return error(); |
56 | 57 | } finally { |
57 | 58 | loading.value = false; | ... | ... |