Commit 9160be1976b5fa1e4d548fa18a2d0fafb56583dc

Authored by fengwotao
1 parent b1f9f93e

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

@@ -7,7 +7,8 @@ enum Api { @@ -7,7 +7,8 @@ enum Api {
7 DOWNLOAD = '/oss/download_file/', 7 DOWNLOAD = '/oss/download_file/',
8 AREALIST = '/area/list', 8 AREALIST = '/area/list',
9 PLATFORM = '/platform/get', 9 PLATFORM = '/platform/get',
10 - CONFIGURATION = '/configuration/center' 10 + CONFIGURATION = '/configuration/center',
  11 + CONFIGURATION_SHARE = '/configuration/center/share/'
11 } 12 }
12 13
13 export const getDictItemByCode = (value: string) => { 14 export const getDictItemByCode = (value: string) => {
@@ -45,3 +46,10 @@ export const getPlatformInfo = () => defHttp.get({ url: Api.PLATFORM }) @@ -45,3 +46,10 @@ export const getPlatformInfo = () => defHttp.get({ url: Api.PLATFORM })
45 export const getConfigurationList = (params: object) => { 46 export const getConfigurationList = (params: object) => {
46 return defHttp.get({ url: `${Api.CONFIGURATION}`, params }) 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 import cloneDeep from 'lodash/cloneDeep' 5 import cloneDeep from 'lodash/cloneDeep'
6 6
  7 +export const enum shareEnum {
  8 + PRIVATE_VIEW = "PRIVATE_VIEW",
  9 +}
  10 +
7 export const option = { 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 export default class Config extends PublicConfigClass implements CreateComponentType { 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,16 +2,22 @@
2 <collapse-item name="属性" :expanded="true"> 2 <collapse-item name="属性" :expanded="true">
3 <setting-item-box name="路径" :alone="true"> 3 <setting-item-box name="路径" :alone="true">
4 <setting-item name="请选择要加载的组态"> 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 </setting-item> 12 </setting-item>
7 </setting-item-box> 13 </setting-item-box>
8 <setting-item-box name="样式"> 14 <setting-item-box name="样式">
9 <setting-item name="圆角"> 15 <setting-item name="圆角">
10 <n-input-number 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 ></n-input-number> 21 ></n-input-number>
16 </setting-item> 22 </setting-item>
17 </setting-item-box> 23 </setting-item-box>
@@ -21,11 +27,11 @@ @@ -21,11 +27,11 @@
21 </setting-item> 27 </setting-item>
22 <setting-item name="页数"> 28 <setting-item name="页数">
23 <n-input-number 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 ></n-input-number> 35 ></n-input-number>
30 </setting-item> 36 </setting-item>
31 </setting-item-box> 37 </setting-item-box>
@@ -34,17 +40,18 @@ @@ -34,17 +40,18 @@
34 <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker> 40 <n-color-picker size="small" :modes="['hex']" v-model:value="optionData.color"></n-color-picker>
35 </SettingItem> 41 </SettingItem>
36 <SettingItem> 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 </SettingItem> 44 </SettingItem>
39 </setting-item-box> 45 </setting-item-box>
40 </collapse-item> 46 </collapse-item>
41 </template> 47 </template>
42 48
43 <script setup lang="ts"> 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 const props = defineProps({ 56 const props = defineProps({
50 optionData: { 57 optionData: {
@@ -55,25 +62,51 @@ const props = defineProps({ @@ -55,25 +62,51 @@ const props = defineProps({
55 62
56 const configurationOptions = ref([]) 63 const configurationOptions = ref([])
57 64
  65 +const configurationId = ref('')
  66 +
58 const getConfigurationOptions = async (params: object) => { 67 const getConfigurationOptions = async (params: object) => {
59 - const { items } = await getConfigurationList(params) 68 + const {items} = await getConfigurationList(params)
60 if (items) { 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 watch( 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 onMounted(() => { 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 </script> 112 </script>