Commit 47b08c25c7c27b1c44fb8e5bafbb2f79bb24556c

Authored by fengwotao
1 parent 996f4b87

perf(views/chart): 拆分主页面左上角保存内容和缩略图

@@ -43,7 +43,22 @@ @@ -43,7 +43,22 @@
43 </n-button> 43 </n-button>
44 </div> 44 </div>
45 </template> 45 </template>
46 - <span>保存</span> 46 + <span>保存内容</span>
  47 + </n-tooltip>
  48 + <!-- 保存缩略图 -->
  49 + <n-tooltip v-if="!isCustomerUser" placement="bottom" trigger="hover">
  50 + <template #trigger>
  51 + <div class="save-btn">
  52 + <n-button size="small" type="primary" ghost @click="thumbnailSyncUpdate()">
  53 + <template #icon>
  54 + <n-icon>
  55 + <Awake />
  56 + </n-icon>
  57 + </template>
  58 + </n-button>
  59 + </div>
  60 + </template>
  61 + <span>保存缩略图</span>
47 </n-tooltip> 62 </n-tooltip>
48 </n-space> 63 </n-space>
49 </n-space> 64 </n-space>
@@ -53,7 +68,7 @@ @@ -53,7 +68,7 @@
53 import { toRefs, Ref, reactive, computed } from 'vue' 68 import { toRefs, Ref, reactive, computed } from 'vue'
54 import { renderIcon, goDialog, goHome } from '@/utils' 69 import { renderIcon, goDialog, goHome } from '@/utils'
55 import { icon } from '@/plugins' 70 import { icon } from '@/plugins'
56 -import { Save } from '@vicons/carbon' 71 +import { Save, Awake } from '@vicons/carbon'
57 import { useRemoveKeyboard } from '../../../hooks/useKeyboard.hook' 72 import { useRemoveKeyboard } from '../../../hooks/useKeyboard.hook'
58 73
59 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore' 74 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
@@ -71,7 +86,7 @@ const { setItem } = useChartLayoutStore() @@ -71,7 +86,7 @@ const { setItem } = useChartLayoutStore()
71 const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore()) 86 const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore())
72 const chartEditStore = useChartEditStore() 87 const chartEditStore = useChartEditStore()
73 const chartHistoryStore = useChartHistoryStore() 88 const chartHistoryStore = useChartHistoryStore()
74 -const { dataSyncUpdate } = useSyncRemote() 89 +const { dataSyncUpdate ,thumbnailSyncUpdate } = useSyncRemote()
75 const { isCustomerUser } = useRole() 90 const { isCustomerUser } = useRole()
76 91
77 interface ItemType<T> { 92 interface ItemType<T> {
@@ -70,22 +70,47 @@ export const useSyncRemote = () => { @@ -70,22 +70,47 @@ export const useSyncRemote = () => {
70 } 70 }
71 } 71 }
72 72
73 - // 数据保存  
74 - const dataSyncUpdate = throttle(async (updateImg = true) => { 73 + /**
  74 + * 数据保存和缩略图保存逻辑拆分
  75 + */
  76 +
  77 + //dataSyncUpdate 数据保存
  78 + const dataSyncUpdate = throttle(async () => {
75 if (!fetchRouteParamsLocation()) return 79 if (!fetchRouteParamsLocation()) return
76 80
77 // 客户角色只有查看权限 81 // 客户角色只有查看权限
78 if (unref(isCustomerUser)) return 82 if (unref(isCustomerUser)) return
79 83
80 - const { dataViewId, state, organizationId, dataViewName, dataViewContent } = projectInfoStore.getProjectInfo 84 + const { dataViewId, dataViewName, dataViewContent } = projectInfoStore.getProjectInfo
81 85
82 if (dataViewId === null || dataViewId === '') { 86 if (dataViewId === null || dataViewId === '') {
83 window['$message'].error('数据初未始化成功,请刷新页面!') 87 window['$message'].error('数据初未始化成功,请刷新页面!')
84 return 88 return
85 } 89 }
86 projectInfoStore.setSaveStatus(SyncEnum.START) 90 projectInfoStore.setSaveStatus(SyncEnum.START)
87 - // 异常处理:缩略图上传失败不影响JSON的保存  
88 - try { 91 + // 保存数据
  92 + const saveContent = {
  93 + dataViewContent: {
  94 + id: dataViewContent.id,
  95 + content: JSONStringify(chartEditStore.getStorageInfo || {})
  96 + },
  97 + dataViewName,
  98 + dataViewId
  99 + }
  100 + await contentUpdateApi(saveContent as unknown as BaseUpdateContentParams)
  101 + window['$message'].success('保存成功!')
  102 + // 成功状态
  103 + setTimeout(() => {
  104 + projectInfoStore.setSaveStatus(SyncEnum.SUCCESS)
  105 + }, 1000)
  106 + return
  107 + // 失败状态
  108 + // chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.FAILURE)
  109 + }, 3000)
  110 +
  111 + //thumbnailSyncUpdate 缩略图保存
  112 + const thumbnailSyncUpdate = throttle(async(updateImg = true)=>{
  113 + const { state, organizationId, dataViewName } = projectInfoStore.getProjectInfo
89 if (updateImg) { 114 if (updateImg) {
90 // 获取缩略图片 115 // 获取缩略图片
91 const range = document.querySelector('.go-edit-range') as HTMLElement 116 const range = document.querySelector('.go-edit-range') as HTMLElement
@@ -96,7 +121,6 @@ export const useSyncRemote = () => { @@ -96,7 +121,6 @@ export const useSyncRemote = () => {
96 useCORS: true, 121 useCORS: true,
97 logging: false 122 logging: false
98 }) 123 })
99 -  
100 // 上传预览图 124 // 上传预览图
101 const uploadParams = new FormData() 125 const uploadParams = new FormData()
102 uploadParams.append( 126 uploadParams.append(
@@ -104,7 +128,6 @@ export const useSyncRemote = () => { @@ -104,7 +128,6 @@ export const useSyncRemote = () => {
104 base64toFile(canvasImage.toDataURL(), `${fetchRouteParamsLocation()}_index_preview.png`) 128 base64toFile(canvasImage.toDataURL(), `${fetchRouteParamsLocation()}_index_preview.png`)
105 ) 129 )
106 const uploadRes = await uploadFile(uploadParams) 130 const uploadRes = await uploadFile(uploadParams)
107 -  
108 // 保存预览图 131 // 保存预览图
109 if (uploadRes) { 132 if (uploadRes) {
110 await saveDataViewList({ 133 await saveDataViewList({
@@ -116,28 +139,7 @@ export const useSyncRemote = () => { @@ -116,28 +139,7 @@ export const useSyncRemote = () => {
116 }) 139 })
117 } 140 }
118 } 141 }
119 - } catch (e) {  
120 - console.log(e)  
121 - }  
122 - // 保存数据  
123 - const saveContent = {  
124 - dataViewContent: {  
125 - id: dataViewContent.id,  
126 - content: JSONStringify(chartEditStore.getStorageInfo || {})  
127 - },  
128 - dataViewName,  
129 - dataViewId  
130 - }  
131 - await contentUpdateApi(saveContent as unknown as BaseUpdateContentParams)  
132 - window['$message'].success('保存成功!')  
133 - // 成功状态  
134 - setTimeout(() => {  
135 - projectInfoStore.setSaveStatus(SyncEnum.SUCCESS)  
136 - }, 1000)  
137 - return  
138 - // 失败状态  
139 - // chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.FAILURE)  
140 - }, 3000) 142 + })
141 143
142 // * 定时处理 144 // * 定时处理
143 const intervalDataSyncUpdate = () => { 145 const intervalDataSyncUpdate = () => {
@@ -145,7 +147,6 @@ export const useSyncRemote = () => { @@ -145,7 +147,6 @@ export const useSyncRemote = () => {
145 // const syncTiming = setInterval(() => { 147 // const syncTiming = setInterval(() => {
146 // dataSyncUpdate() 148 // dataSyncUpdate()
147 // }, saveInterval * 1000) 149 // }, saveInterval * 1000)
148 -  
149 // // 销毁 150 // // 销毁
150 // onUnmounted(() => { 151 // onUnmounted(() => {
151 // clearInterval(syncTiming) 152 // clearInterval(syncTiming)
@@ -154,6 +155,7 @@ export const useSyncRemote = () => { @@ -154,6 +155,7 @@ export const useSyncRemote = () => {
154 return { 155 return {
155 dataSyncFetch, 156 dataSyncFetch,
156 dataSyncUpdate, 157 dataSyncUpdate,
  158 + thumbnailSyncUpdate,
157 intervalDataSyncUpdate 159 intervalDataSyncUpdate
158 } 160 }
159 } 161 }