Commit 47b08c25c7c27b1c44fb8e5bafbb2f79bb24556c

Authored by fengwotao
1 parent 996f4b87

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

... ... @@ -43,7 +43,22 @@
43 43 </n-button>
44 44 </div>
45 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 62 </n-tooltip>
48 63 </n-space>
49 64 </n-space>
... ... @@ -53,7 +68,7 @@
53 68 import { toRefs, Ref, reactive, computed } from 'vue'
54 69 import { renderIcon, goDialog, goHome } from '@/utils'
55 70 import { icon } from '@/plugins'
56   -import { Save } from '@vicons/carbon'
  71 +import { Save, Awake } from '@vicons/carbon'
57 72 import { useRemoveKeyboard } from '../../../hooks/useKeyboard.hook'
58 73
59 74 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
... ... @@ -71,7 +86,7 @@ const { setItem } = useChartLayoutStore()
71 86 const { getLayers, getCharts, getDetails } = toRefs(useChartLayoutStore())
72 87 const chartEditStore = useChartEditStore()
73 88 const chartHistoryStore = useChartHistoryStore()
74   -const { dataSyncUpdate } = useSyncRemote()
  89 +const { dataSyncUpdate ,thumbnailSyncUpdate } = useSyncRemote()
75 90 const { isCustomerUser } = useRole()
76 91
77 92 interface ItemType<T> {
... ...
... ... @@ -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 79 if (!fetchRouteParamsLocation()) return
76 80
77 81 // 客户角色只有查看权限
78 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 86 if (dataViewId === null || dataViewId === '') {
83 87 window['$message'].error('数据初未始化成功,请刷新页面!')
84 88 return
85 89 }
86 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 114 if (updateImg) {
90 115 // 获取缩略图片
91 116 const range = document.querySelector('.go-edit-range') as HTMLElement
... ... @@ -96,7 +121,6 @@ export const useSyncRemote = () => {
96 121 useCORS: true,
97 122 logging: false
98 123 })
99   -
100 124 // 上传预览图
101 125 const uploadParams = new FormData()
102 126 uploadParams.append(
... ... @@ -104,7 +128,6 @@ export const useSyncRemote = () => {
104 128 base64toFile(canvasImage.toDataURL(), `${fetchRouteParamsLocation()}_index_preview.png`)
105 129 )
106 130 const uploadRes = await uploadFile(uploadParams)
107   -
108 131 // 保存预览图
109 132 if (uploadRes) {
110 133 await saveDataViewList({
... ... @@ -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 145 const intervalDataSyncUpdate = () => {
... ... @@ -145,7 +147,6 @@ export const useSyncRemote = () => {
145 147 // const syncTiming = setInterval(() => {
146 148 // dataSyncUpdate()
147 149 // }, saveInterval * 1000)
148   -
149 150 // // 销毁
150 151 // onUnmounted(() => {
151 152 // clearInterval(syncTiming)
... ... @@ -154,6 +155,7 @@ export const useSyncRemote = () => {
154 155 return {
155 156 dataSyncFetch,
156 157 dataSyncUpdate,
  158 + thumbnailSyncUpdate,
157 159 intervalDataSyncUpdate
158 160 }
159 161 }
... ...