Commit 9160be1976b5fa1e4d548fa18a2d0fafb56583dc

Authored by fengwotao
1 parent b1f9f93e

feat(src/packages/): 信息下更多下加载组态新增是否公开开关'

... ... @@ -7,7 +7,8 @@ enum Api {
7 7 DOWNLOAD = '/oss/download_file/',
8 8 AREALIST = '/area/list',
9 9 PLATFORM = '/platform/get',
10   - CONFIGURATION = '/configuration/center'
  10 + CONFIGURATION = '/configuration/center',
  11 + CONFIGURATION_SHARE = '/configuration/center/share/'
11 12 }
12 13
13 14 export const getDictItemByCode = (value: string) => {
... ... @@ -45,3 +46,10 @@ export const getPlatformInfo = () => defHttp.get({ url: Api.PLATFORM })
45 46 export const getConfigurationList = (params: object) => {
46 47 return defHttp.get({ url: `${Api.CONFIGURATION}`, params })
47 48 }
  49 +//组态设置是否公开或私有
  50 +export const setConfigurationIsShare = (params: string,isShare:boolean,data:object) => {
  51 + return defHttp.post({
  52 + url: `${Api.CONFIGURATION_SHARE}${params}?isShare=${isShare}`,
  53 + data
  54 + })
  55 +}
... ...
1   -import { PublicConfigClass } from '@/packages/public'
2   -import { CreateComponentType } from '@/packages/index.d'
3   -import { chartInitConfig } from '@/settings/designSetting'
4   -import { OverrideILoadConfigurationframeConfig } from './index'
  1 +import {PublicConfigClass} from '@/packages/public'
  2 +import {CreateComponentType} from '@/packages/index.d'
  3 +import {chartInitConfig} from '@/settings/designSetting'
  4 +import {OverrideILoadConfigurationframeConfig} from './index'
5 5 import cloneDeep from 'lodash/cloneDeep'
6 6
  7 +export const enum shareEnum {
  8 + PRIVATE_VIEW = "PRIVATE_VIEW",
  9 +}
  10 +
7 11 export const option = {
8   - // 网站路径
9   - dataset: '',
10   - // 圆角
11   - borderRadius: 10,
12   - pages: {
13   - page: 1,
14   - pageSize: 10
15   - },
16   - color: 'black'
  12 + // 网站路径
  13 + dataset: '',
  14 + // 圆角
  15 + borderRadius: 10,
  16 + pages: {
  17 + page: 1,
  18 + pageSize: 10
  19 + },
  20 + color: 'black',
  21 + isShare: false,
17 22 }
18 23
19 24 export default class Config extends PublicConfigClass implements CreateComponentType {
20   - public key = OverrideILoadConfigurationframeConfig.key
21   - public attr = { ...chartInitConfig, w: 1200, h: 800, zIndex: -1 }
22   - public chartConfig = cloneDeep(OverrideILoadConfigurationframeConfig)
23   - public option = cloneDeep(option)
  25 + public key = OverrideILoadConfigurationframeConfig.key
  26 + public attr = {...chartInitConfig, w: 1200, h: 800, zIndex: -1}
  27 + public chartConfig = cloneDeep(OverrideILoadConfigurationframeConfig)
  28 + public option = cloneDeep(option)
24 29 }
... ...
... ... @@ -2,16 +2,22 @@
2 2 <collapse-item name="属性" :expanded="true">
3 3 <setting-item-box name="路径" :alone="true">
4 4 <setting-item name="请选择要加载的组态">
5   - <n-select filterable size="small" v-model:value="optionData.dataset" :options="configurationOptions" />
  5 + <n-select label-in-value @change="handleUpdateValue" filterable size="small" v-model:value="optionData.dataset"
  6 + :options="configurationOptions"/>
  7 + </setting-item>
  8 + </setting-item-box>
  9 + <setting-item-box name="是否公开" :alone="true">
  10 + <setting-item name="">
  11 + <n-switch @change="handleChange" v-model:value="optionData.isShare" size="small"/>
6 12 </setting-item>
7 13 </setting-item-box>
8 14 <setting-item-box name="样式">
9 15 <setting-item name="圆角">
10 16 <n-input-number
11   - v-model:value="optionData.borderRadius"
12   - size="small"
13   - :min="0"
14   - placeholder="圆角"
  17 + v-model:value="optionData.borderRadius"
  18 + size="small"
  19 + :min="0"
  20 + placeholder="圆角"
15 21 ></n-input-number>
16 22 </setting-item>
17 23 </setting-item-box>
... ... @@ -21,11 +27,11 @@
21 27 </setting-item>
22 28 <setting-item name="页数">
23 29 <n-input-number
24   - disabled
25   - v-model:value="optionData.pages.pageSize"
26   - size="small"
27   - :min="10"
28   - placeholder="页数"
  30 + disabled
  31 + v-model:value="optionData.pages.pageSize"
  32 + size="small"
  33 + :min="10"
  34 + placeholder="页数"
29 35 ></n-input-number>
30 36 </setting-item>
31 37 </setting-item-box>
... ... @@ -34,17 +40,18 @@
34 40 <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker>
35 41 </SettingItem>
36 42 <SettingItem>
37   - <n-button size="small" @click="optionData.color = 'black'"> 恢复默认 </n-button>
  43 + <n-button size="small" @click="optionData.color = 'black'"> 恢复默认</n-button>
38 44 </SettingItem>
39 45 </setting-item-box>
40 46 </collapse-item>
41 47 </template>
42 48
43 49 <script setup lang="ts">
44   -import { PropType, onMounted, ref, watch } from 'vue'
45   -import { option } from './config'
46   -import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
47   -import { getConfigurationList } from '@/api/external/common/index'
  50 +import {PropType, onMounted, ref, watch} from 'vue'
  51 +import {option, shareEnum} from './config'
  52 +import {CollapseItem, SettingItemBox, SettingItem} from '@/components/Pages/ChartItemSetting'
  53 +import {getConfigurationList, setConfigurationIsShare} from '@/api/external/common/index'
  54 +import {SelectOption} from 'naive-ui'
48 55
49 56 const props = defineProps({
50 57 optionData: {
... ... @@ -55,25 +62,51 @@ const props = defineProps({
55 62
56 63 const configurationOptions = ref([])
57 64
  65 +const configurationId = ref('')
  66 +
58 67 const getConfigurationOptions = async (params: object) => {
59   - const { items } = await getConfigurationList(params)
  68 + const {items} = await getConfigurationList(params)
60 69 if (items) {
61   - configurationOptions.value = items.map((item: Record<string, string>) => ({ label: item.name, value: item.id }))
  70 + configurationOptions.value = items.map((item: SelectOption) => ({
  71 + label: item.name,
  72 + value: item.id,
  73 + viewType: item.viewType
  74 + }))
62 75 }
63 76 }
64 77
65 78 watch(
66   - () => props.optionData.pages,
67   - (newData: any) => {
68   - getConfigurationOptions({ page: newData.page, pageSize: newData.pageSize })
69   - },
70   - {
71   - deep: true,
72   - immediate: true
73   - }
  79 + () => props.optionData.pages,
  80 + (newData: any) => {
  81 + getConfigurationOptions({page: newData.page, pageSize: newData.pageSize})
  82 + },
  83 + {
  84 + deep: true,
  85 + immediate: true
  86 + }
74 87 )
75 88
76 89 onMounted(() => {
77   - getConfigurationOptions({ page: props.optionData.pages.page, pageSize: props.optionData.pages.pageSize })
  90 + getConfigurationOptions({page: props.optionData.pages.page, pageSize: props.optionData.pages.pageSize})
78 91 })
  92 +
  93 +const handleUpdateValue = (value: string, options: SelectOption) => {
  94 + const {viewType} = options
  95 + configurationId.value = value
  96 + if (viewType === shareEnum.PRIVATE_VIEW) {
  97 + props.optionData.isShare = false
  98 + } else {
  99 + props.optionData.isShare = true
  100 + }
  101 +}
  102 +
  103 +const handleChange = async (value: boolean) => {
  104 + const res = await setConfigurationIsShare(!configurationId.value ? props.optionData.dataset : configurationId.value, value, {
  105 + isShare: value
  106 + })
  107 + if (res) {
  108 + window.$message.success('操作成功!')
  109 + await getConfigurationOptions({page: props.optionData.pages.page, pageSize: props.optionData.pages.pageSize})
  110 + }
  111 +}
79 112 </script>
... ...