Browse Source

Merge branch 'dev-refactor' into new-dev-refactor

jinx 1 year ago
parent
commit
0162c77a07

+ 11 - 22
packages/qjkankan-editor/src/Store/index.js

@@ -115,10 +115,7 @@ const store = new Vuex.Store({
 
     // 1.3.0 新增层级后所有热点类型不同汇总显示的ICON
     hotspotIcon: (state) => {
-      const category =
-        state.hotspot && state.hotspot.hotspotIconType
-          ? state.hotspot.hotspotIconType
-          : "";
+      const category = state.hotspot && state.hotspot.hotspotIconType ? state.hotspot.hotspotIconType : "";
       switch (category) {
         case "system_icon":
           return {
@@ -216,30 +213,22 @@ const store = new Vuex.Store({
       state.uploadStatusListVideo = data;
     },
     clearUploadStatusLists(state) {
-      state.uploadStatusListImage = state.uploadStatusListImage.filter(
-        (item) => {
-          return item.status !== "SUCCESS";
-        }
-      );
+      state.uploadStatusListImage = state.uploadStatusListImage.filter((item) => {
+        return item.status !== "SUCCESS";
+      });
       state.uploadStatusListPano = state.uploadStatusListPano.filter((item) => {
         return item.status !== "SUCCESS";
       });
-      state.uploadStatusListAudio = state.uploadStatusListAudio.filter(
-        (item) => {
-          return item.status !== "SUCCESS";
-        }
-      );
-      state.uploadStatusListVideo = state.uploadStatusListVideo.filter(
-        (item) => {
-          return item.status !== "SUCCESS";
-        }
-      );
+      state.uploadStatusListAudio = state.uploadStatusListAudio.filter((item) => {
+        return item.status !== "SUCCESS";
+      });
+      state.uploadStatusListVideo = state.uploadStatusListVideo.filter((item) => {
+        return item.status !== "SUCCESS";
+      });
     },
 
     setEditorNavDragType(state, data) {
-      if (
-        !["topologyGroupLevel1", "topologyGroupLevel2", "scene"].includes(data)
-      ) {
+      if (!["topologyGroupLevel1", "topologyGroupLevel2", "scene"].includes(data)) {
         throw "拖拽类型必须是'topologyGroupLevel1', 'topologyGroupLevel2', 'scene'之一!";
       }
       state.editorNavDragInfo.type = data;

+ 130 - 0
packages/qjkankan-editor/src/Store/modules/base.js

@@ -0,0 +1,130 @@
+import Vue from "vue";
+import { i18n } from "@/lang";
+import { saveBaseWorkInfo } from "@/api";
+import { $waiting } from "@/components/shared/loading";
+let vue = new Vue();
+export default {
+  namespaced: true,
+  state() {
+    return {
+      baseInfo: null,
+    };
+  },
+  getters: {
+    baseInfo: (state) => state.baseInfo,
+  },
+  mutations: {
+    initbaseInfo(state, payload) {
+      if (!state.baseInfo) {
+        state.baseInfo = {
+          workId: "",
+
+          work: {
+            description: "",
+            icon: "",
+            id: "",
+            isAuto: 0,
+            name: "",
+            password: "",
+          },
+          workBackgroundMusic: {
+            fodderId: "",
+            id: 0,
+            name: "",
+            ossPath: "",
+            workId: "",
+          },
+          workCoverType: {
+            coverImageInWay: 0,
+            coverImageOrder: "",
+            coverImgBac: "",
+            coverMo: "",
+            coverMoLoc: "",
+            coverPc: "",
+            coverPcLoc: "",
+            coverSelect: "img",
+            coverVideoBac: "",
+            coverVideoControl: 0,
+            coverVideoInWay: 0,
+            cover_mo_id: 0,
+            cover_pc_id: 0,
+            id: 0,
+            imgColorSelec: "",
+            isShowCover: 0,
+            videoBacImg: "",
+            videoColorSelec: "",
+            videoMo: "",
+            videoMoIcon: "",
+            videoMoId: 0,
+            videoMoLoc: "",
+            videoPc: "",
+            videoPcIcon: "",
+            videoPcLoc: "",
+            video_pc_id: 0,
+            workId: "",
+          },
+          workLogo: {
+            id: 0,
+            isLogo: 0,
+            logo: "",
+            logoChange: false,
+            workId: "",
+          },
+          workOpeningAnimationd: {
+            id: 0,
+            isShowOpeningAnimation: false,
+            openingAnimationType: 0,
+            workId: "",
+          },
+          workOpeningTip: {
+            appIcon: "",
+            appIconId: "",
+            id: 0,
+            isRemind: 0,
+            pcIcon: "",
+            pcIconId: "",
+            remindTime: 0,
+            workId: "",
+          },
+          workCustomButton: [
+            {
+              id: 0,
+              isShow: 0,
+              name: "",
+              openMethod: "",
+              type: "",
+              value: "",
+              workId: "",
+            },
+          ],
+        };
+      }
+    },
+    setData(state, payload) {
+      this.commit("base/initbaseInfo");
+      // state.baseInfo = payload;
+      for (let key in state.baseInfo) {
+        if (payload[key]) {
+          state.baseInfo[key] = payload[key];
+        }
+      }
+    },
+  },
+  actions: {
+    save({ commit, state, rootState }) {
+      saveBaseWorkInfo(
+        state.baseInfo,
+        () => {
+          vue.$msg.success(i18n.t("gather.save_done"));
+          // document.title = this.info.name;
+          document.title = state.baseInfo.work.name || i18n.t("gather.no_title");
+          $waiting.hide();
+          // this.getInfo();
+          // this.$store.commit("UpdateIsShowState", true);
+          this.commit("TakeInfoSnapShotAtSave");
+        },
+        () => {}
+      );
+    },
+  },
+};

+ 2 - 0
packages/qjkankan-editor/src/Store/modules/index.js

@@ -1,8 +1,10 @@
 import scene from "./scene";
 import tags from "./tags";
 import notice from "./notice";
+import base from "./base";
 export default {
   scene,
   tags,
   notice,
+  base,
 };

+ 45 - 112
packages/qjkankan-editor/src/api/index.js

@@ -33,14 +33,7 @@ export function getUserInfo(ok, no) {
  * @param {*} no
  */
 export function getPanoInfo(data, ok, no) {
-  return http.get(
-    `${ossUrl}/720yun_fd_manage/${
-      data || number()
-    }/someData.json?_=${Math.random()}`,
-    {},
-    ok,
-    no
-  );
+  return http.get(`${ossUrl}/720yun_fd_manage/${data || number()}/someData.json?_=${Math.random()}`, {}, ok, no);
 }
 
 /**
@@ -51,12 +44,7 @@ export function getPanoInfo(data, ok, no) {
  */
 export function getSceneInfomation(data, ok, no) {
   debugger;
-  return http.get(
-    `/api/scene/getInfo?num=${data.id}&_=${Math.random()}`,
-    {},
-    ok,
-    no
-  );
+  return http.get(`/api/scene/getInfo?num=${data.id}&_=${Math.random()}`, {}, ok, no);
 }
 
 /**
@@ -66,12 +54,7 @@ export function getSceneInfomation(data, ok, no) {
  * @param {*} no
  */
 export function getTabList(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/manage/catalog/getCatalog/${number()}`,
-    data,
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/manage/catalog/getCatalog/${number()}`, data, ok, no);
 }
 
 /**
@@ -81,12 +64,7 @@ export function getTabList(data, ok, no) {
  * @param {*} no
  */
 export function getTabSceneList(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/manage/catalog/getScene/${data.catalogId}`,
-    {},
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/manage/catalog/getScene/${data.catalogId}`, {}, ok, no);
 }
 
 /**
@@ -404,17 +382,8 @@ export function searchInAll3DScenes(data, ok) {
     // ),
   ]).then((res) => {
     console.log(res);
-    let total =
-      res[0].data.total +
-      res[1].data.total +
-      res[2].data.total +
-      res[3].data.total;
-    let list = [
-      ...res[0].data.list,
-      ...res[1].data.list,
-      ...res[2].data.list,
-      ...res[3].data.list,
-    ];
+    let total = res[0].data.total + res[1].data.total + res[2].data.total + res[3].data.total;
+    let list = [...res[0].data.list, ...res[1].data.list, ...res[2].data.list, ...res[3].data.list];
     ok({
       code: 0,
       data: {
@@ -432,12 +401,7 @@ export function searchInAll3DScenes(data, ok) {
  * @param {*} no
  */
 export function getIndex(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/manage/scene/getIndex/${number()}`,
-    data,
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/manage/scene/getIndex/${number()}`, data, ok, no);
 }
 
 /**
@@ -447,12 +411,7 @@ export function getIndex(data, ok, no) {
  * @param {*} no
  */
 export function saveIndexInfo(data, ok, no) {
-  return http.post(
-    `${URL_FILL}/manage/scene/setIndex/${data.id}/${number()}`,
-    "",
-    ok,
-    no
-  );
+  return http.post(`${URL_FILL}/manage/scene/setIndex/${data.id}/${number()}`, "", ok, no);
 }
 
 /**
@@ -532,12 +491,7 @@ export function saveUseHots(data, ok, no) {
  * @param {*} no
  */
 export function deleteIndexInfo(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/manage/scene/removeIndex/${number()}`,
-    data,
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/manage/scene/removeIndex/${number()}`, data, ok, no);
 }
 
 /**
@@ -557,12 +511,7 @@ export function getSceneInfo(data, ok, no) {
  * @param {*} no
  */
 export function getWebTabList(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/web/common/getCatalog/${number()}`,
-    data,
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/web/common/getCatalog/${number()}`, data, ok, no);
 }
 
 /**
@@ -573,10 +522,7 @@ export function getWebTabList(data, ok, no) {
  */
 export function checkWork(data, ok, no) {
   let visit = "";
-  if (
-    window.location.pathname.indexOf("showMobile.html") > -1 ||
-    window.location.pathname.indexOf("show.html") > -1
-  ) {
+  if (window.location.pathname.indexOf("showMobile.html") > -1 || window.location.pathname.indexOf("show.html") > -1) {
     visit = 1111;
   }
   console.log("checkWork", data);
@@ -597,12 +543,7 @@ export function checkWork(data, ok, no) {
  * @param {*} no
  */
 export function getWebTabSceneList(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/web/common/getScene/${data.catalogId}`,
-    {},
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/web/common/getScene/${data.catalogId}`, {}, ok, no);
 }
 
 /**
@@ -620,12 +561,7 @@ export function checkLogin() {
  * 检测素材状态
  */
 export function checkMStatus(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/manage/fodder/checkStatus/${data.ids.join(",")}`,
-    { islongpolling: data.islongpolling },
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/manage/fodder/checkStatus/${data.ids.join(",")}`, { islongpolling: data.islongpolling }, ok, no);
 }
 
 /**
@@ -666,12 +602,7 @@ export function getWebIndex(data, ok, no) {
  * @param {*} no
  */
 export function getAllVrList(data, ok, no) {
-  return http.get(
-    `${URL_FILL}/manage/scene/findByWork/${number()}`,
-    data,
-    ok,
-    no
-  );
+  return http.get(`${URL_FILL}/manage/scene/findByWork/${number()}`, data, ok, no);
 }
 
 /**
@@ -794,22 +725,10 @@ export function getMaterialList(data, ok, no) {
  * @param {*} no
  */
 export function uploadMaterialOld(data, subdata, ok, no, onProgress) {
-  return http.uploadFile(
-    `${URL_FILL}/manage/fodder/upload/${subdata.type}/${subdata.uid}`,
-    data,
-    ok,
-    no,
-    onProgress
-  );
+  return http.uploadFile(`${URL_FILL}/manage/fodder/upload/${subdata.type}/${subdata.uid}`, data, ok, no, onProgress);
 }
 export function uploadMaterial(data, ok, no, onProgress) {
-  return http.uploadFile(
-    `${URL_FILL}/manage/fodder/uploadDir`,
-    data,
-    ok,
-    no,
-    onProgress
-  );
+  return http.uploadFile(`${URL_FILL}/manage/fodder/uploadDir`, data, ok, no, onProgress);
 }
 
 /**
@@ -853,20 +772,18 @@ function folderTreeSortRoutine(folderList) {
 
 // 获取目录结构
 export function getFolderTree(data) {
-  return http
-    .getJson(`${URL_FILL}/manage/dir/getTree/${data.type}`)
-    .then((res) => {
-      if (res.code === 0 && Array.isArray(res.data)) {
-        const temp = {
-          name: "根目录",
-          id: 1,
-          children: res.data,
-        };
-        res.data = temp;
-        postOrderTraversal(res.data, folderTreeSortRoutine);
-      }
-      return res;
-    });
+  return http.getJson(`${URL_FILL}/manage/dir/getTree/${data.type}`).then((res) => {
+    if (res.code === 0 && Array.isArray(res.data)) {
+      const temp = {
+        name: "根目录",
+        id: 1,
+        children: res.data,
+      };
+      res.data = temp;
+      postOrderTraversal(res.data, folderTreeSortRoutine);
+    }
+    return res;
+  });
 }
 
 // 素材库中新增文件夹
@@ -1042,4 +959,20 @@ export function exchangeId(data, ok, no) {
     ok,
     no
   );
-}
+}
+/**
+ * 获取作品信息
+ */
+export function getWorkInfo(data, ok, no) {
+  !data.workId && (data.workId = number());
+  return http.getJson(`${URL_FILL}/work/view`, data, ok, no);
+  // return http.getJson(`http://192.168.0.41:8002/qjkankan/work/view`, data, ok, no);
+}
+/**
+ * 保存作品基本设置
+ */
+export function saveBaseWorkInfo(data, ok, no) {
+  !data.workId && (data.workId = number());
+  return http.postJson(`${URL_FILL}/work/edit/base/save`, data, ok, no);
+  // return http.postJson(`http://192.168.0.41:8002/qjkankan/work/edit/base/save`, data, ok, no);
+}

+ 27 - 25
packages/qjkankan-editor/src/pages/edit.js

@@ -1,22 +1,26 @@
-import Vue from 'vue'
-import '../mixins'
-import App from './Edit.vue'
-import router from '../router/editorRouter'
-import store from '../Store'
-import 'viewerjs/dist/viewer.css'
-import Viewer from 'v-viewer'
-import '@/directives/vTitleInEditor.js'
-import '@/directives/vTooltipInEditor.js'
-import { i18n } from "@/lang"
-import { debuggerHelper } from '../mixins/debuggerHelper'
+import Vue from "vue";
+import "../mixins";
+import App from "./Edit.vue";
+import router from "../router/editorRouter";
+import store from "../Store";
+import "viewerjs/dist/viewer.css";
+import Viewer from "v-viewer";
+import "@/directives/vTitleInEditor.js";
+import "@/directives/vTooltipInEditor.js";
+import { i18n } from "@/lang";
+import { debuggerHelper } from "../mixins/debuggerHelper";
 import Toast from "vue-toastification";
+import browser from "../utils/browser";
 import "vue-toastification/dist/index.css";
-
+//调试模式写入token
+if (browser.urlQueryValue("token") && process.env.NODE_ENV == "development" && !localStorage.getItem("token")) {
+  localStorage.setItem("token", browser.urlQueryValue("token"));
+}
 const options = {
-  transition: 'Vue-Toastification__bounce',
+  transition: "Vue-Toastification__bounce",
   maxToasts: 3,
   newestOnTop: true,
-  position: 'top-right',
+  position: "top-right",
   timeout: 2000,
   closeOnClick: true,
   pauseOnFocusLoss: true,
@@ -25,9 +29,9 @@ const options = {
   draggablePercent: 0.7,
   showCloseButtonOnHover: false,
   hideProgressBar: true,
-  closeButton: 'button',
+  closeButton: "button",
   icon: true,
-  rtl: false
+  rtl: false,
 };
 
 Vue.use(Toast, options);
@@ -35,22 +39,20 @@ debuggerHelper(true);
 
 // console.log(`version: ${process.env.VUE_APP_VERSION}`)
 // 热点图标默认大小
-window.g_hotspotCurrentScale = 1
+window.g_hotspotCurrentScale = 1;
 
 Vue.use(Viewer, {
   defaultOptions: {
     toolbar: 0,
     title: 0,
-    navbar: false
-  }
-})
+    navbar: false,
+  },
+});
 
-Vue.config.productionTip = false
+Vue.config.productionTip = false;
 new Vue({
   router,
   store,
   i18n,
-  render: h => h(App)
-}).$mount('#app')
-
-
+  render: (h) => h(App),
+}).$mount("#app");

+ 8 - 15
packages/qjkankan-editor/src/utils/request.js

@@ -70,6 +70,10 @@ const statusCode = {
 let __showNetworkError = false;
 
 export const showLoginTips = () => {
+  //移除登录状态token
+  if (localStorage.getItem("token")) {
+    localStorage.removeItem("token");
+  }
   // 防止多次请求弹出
   if (showLoginTips.__is_show) {
     return;
@@ -94,10 +98,7 @@ export const showLoginTips = () => {
           postQueue = [];
           LoginDetector.valid();
           location.reload();
-        } else if (
-          response.code === statusCode.FAILURE_CODE_5001 ||
-          response.code === statusCode.FAILURE_CODE_5002
-        ) {
+        } else if (response.code === statusCode.FAILURE_CODE_5001 || response.code === statusCode.FAILURE_CODE_5002) {
           showLoginTips();
         }
       });
@@ -179,10 +180,7 @@ export function statusCodesHandler(result, callback) {
     return;
   }
 
-  if (
-    result.code == statusCode.FAILURE_CODE_5001 ||
-    result.code === statusCode.FAILURE_CODE_5002
-  ) {
+  if (result.code == statusCode.FAILURE_CODE_5001 || result.code === statusCode.FAILURE_CODE_5002) {
     callback(result.code);
     showLoginTips();
     return false;
@@ -261,10 +259,7 @@ export const http = {
       if (typeof result.code !== "undefined") {
         const flag = statusCodesHandler(result, function (code) {
           // 需要登录的状态
-          if (
-            code == statusCode.FAILURE_CODE_5001 ||
-            code === statusCode.FAILURE_CODE_5002
-          ) {
+          if (code == statusCode.FAILURE_CODE_5001 || code === statusCode.FAILURE_CODE_5002) {
             postQueue.push(function () {
               http[method](url, data, done, fail);
             });
@@ -496,9 +491,7 @@ export const http = {
     };
 
     img.onerror = function () {
-      retry > 0
-        ? setTimeout(() => load(), 1e3)
-        : def.reject(`[${url}]${i18n.t("tips_code.loading_fail")}`);
+      retry > 0 ? setTimeout(() => load(), 1e3) : def.reject(`[${url}]${i18n.t("tips_code.loading_fail")}`);
     };
 
     img.onload = function () {

+ 12 - 10
packages/qjkankan-editor/src/views/base/Toolbar.vue

@@ -11,11 +11,12 @@
             <div class="preview">
               <img
                 :src="
-                  info.icon ||
+                  info.work.icon ||
                   require('@/assets/images/default/img_cover_default_2.png')
                 "
                 alt=""
               />
+        
               <button
                 class="ui-button submit setting-cover-btn"
                 @click="onClickSettingCover"
@@ -34,7 +35,7 @@
             </div>
             <div class="title-input-wrapper">
               <input
-                v-model.trim="info.name"
+                v-model.trim="info.work.name"
                 @input="emojistr"
                 @keydown.enter="onTitleInputEnter"
                 type="textarea"
@@ -57,7 +58,7 @@
 
               <editor
                 ref="editor"
-                :html="info.description"
+                :html="info.work.description"
                 :placeholder="$i18n.t(`edit_settings.intro_placeholder`)"
                 :maxlength="2000"
                 @change="onEditorChange"
@@ -181,17 +182,18 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info: "info",
+      // info: "info",
+      info: "base/baseInfo",
     }),
     titleLength() {
-      return this.info.name.length || "0";
+      return this.info.work.name.length || "0";
     },
   },
   mounted() {},
   watch: {},
   methods: {
     emojistr() {
-      this.info.name = this.info.name.replace(
+      this.info.work.name = this.info.work.name.replace(
         /(\ud83c[\udf00-\udfff])|(\ud83d[\udc00-\ude4f])|(\ud83d[\ude80-\udeff])/g,
         function (char) {
           if (char.length === 2) {
@@ -203,7 +205,7 @@ export default {
       );
     },
     onEditorChange(content) {
-      this.info.description = content.html;
+      this.info.work.description = content.html;
       this.introLength = content.size;
     },
     onClickSettingCover() {
@@ -211,11 +213,11 @@ export default {
     },
     onCoverSelected(selected) {
       if (selected[0].materialType === "image") {
-        this.info.icon = selected[0].icon;
+        this.info.work.icon = selected[0].icon;
       } else if (selected[0].materialType === "pano") {
-        this.info.icon = selected[0].icon;
+        this.info.work.icon = selected[0].icon;
       } else if (selected[0].materialType === "3D") {
-        this.info.icon = selected[0].thumb;
+        this.info.work.icon = selected[0].thumb;
       }
       this.isShowSettingCoverWindow = false;
     },

+ 2 - 1
packages/qjkankan-editor/src/views/base/autoCruiseSettings.vue

@@ -30,7 +30,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info:'info'
+      // info:'info'
+      info:'base/baseInfo'
     })
   },
   methods: {

+ 2 - 1
packages/qjkankan-editor/src/views/base/backgroundMusicSettings.vue

@@ -52,7 +52,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info:'info'
+      // info:'info'
+      info:'base/baseInfo'
     }),
   },
   methods: {

+ 113 - 320
packages/qjkankan-editor/src/views/base/coverBase.vue

@@ -65,84 +65,46 @@ pc端视频位置 videoPcLoc
 	before:开场图片前
 	later:开场图片后
  -->
-  <div class="coverBase" v-if="info.coverInfo">
+  <div class="coverBase" v-if="info.workCoverType">
     <!-- 顶上标题 -->
     <span class="title">{{ coverBase_button }}</span>
-    <i
-      class="iconfont icon-help_i tool-tip-for-editor"
-      v-tooltip="coverBase_button_tips"
-    >
-    </i>
+    <i class="iconfont icon-help_i tool-tip-for-editor" v-tooltip="coverBase_button_tips"> </i>
     <br />
     <div class="switch-wrapper">
       <span class="label">{{ $i18n.t("edit_settings.cover_show") }}</span>
-      <Switcher
-        :value="info.coverInfo.isShowCover"
-        @change="onSwitcherChange"
-      ></Switcher>
+      <Switcher :value="info.workCoverType.isShowCover" @change="onSwitcherChange"></Switcher>
     </div>
     <div class="cover_pull">
       <!-- 封面类型选择下拉框 -->
       <div class="cover_pull_tit">{{ cover_pull_tit }}</div>
 
-      <Select
-        v-model="info.coverInfo.coverSelect"
-        class="base-select"
-        placement="bottom"
-      >
-        <Option
-          v-for="item in selectList"
-          :key="item.type"
-          :label="item.txt"
-          :value="item.type"
-        >
-        </Option>
+      <Select v-model="info.workCoverType.coverSelect" class="base-select" placement="bottom">
+        <Option v-for="item in selectList" :key="item.type" :label="item.txt" :value="item.type"> </Option>
       </Select>
-      <!-- {{ info.coverInfo.coverSelect }} -->
+      <!-- {{ info.workCoverType.coverSelect }} -->
       <!-- 关于图片 -->
-      <div class="mainImgBox" v-show="info.coverInfo.coverSelect !== 'video'">
+      <div class="mainImgBox" v-show="info.workCoverType.coverSelect !== 'video'">
         <div class="coverImgTit">{{ coverImgTit }}</div>
         <div class="coverImgBox">
           <!-- pc图片 -->
           <div class="coverImgBox_ll">
             <div class="tit">{{ $i18n.t(`edit_settings.pc`) }}</div>
             <div class="coverImgMain">
-              <SelectedImage
-                :imgSrc="info.coverInfo.coverPc"
-                :defaultImgSrc="require('@/assets/img/coverUpTit1.png')"
-                @cancel="onCancelPcTip"
-              ></SelectedImage>
+              <SelectedImage :imgSrc="info.workCoverType.coverPc" :defaultImgSrc="require('@/assets/img/coverUpTit1.png')" @cancel="onCancelPcTip"></SelectedImage>
               <div class="imgRight">
                 <!-- 上传图片按钮 -->
-                <button
-                  class="ui-button submit"
-                  @click="
-                    (isShowSelectionWindow = true),
-                      (selectingFor = 'pc'),
-                      (upType = 'image'),
-                      (upTypeSta = 'imgBac')
-                  "
-                >
+                <button class="ui-button submit" @click="(isShowSelectionWindow = true), (selectingFor = 'pc'), (upType = 'image'), (upTypeSta = 'imgBac')">
                   {{ $i18n.t(`edit_settings.select_image`) }}
                 </button>
                 <!-- 上传提示 -->
-                <div
-                  class="ui-remark"
-                  v-html="$i18n.t(`edit_settings.coverUpTit1`)"
-                ></div>
+                <div class="ui-remark" v-html="$i18n.t(`edit_settings.coverUpTit1`)"></div>
                 <!-- 选择居中和全屏 -->
                 <div class="coverImglocBox">
-                  <div
-                    :class="{ active: info.coverInfo.coverPcLoc === 'center' }"
-                    @click="info.coverInfo.coverPcLoc = 'center'"
-                  >
+                  <div :class="{ active: info.workCoverType.coverPcLoc === 'center' }" @click="info.workCoverType.coverPcLoc = 'center'">
                     <div class="inco"></div>
                     <div class="txt">{{ coverImgLoc1 }}</div>
                   </div>
-                  <div
-                    :class="{ active: info.coverInfo.coverPcLoc === 'full' }"
-                    @click="info.coverInfo.coverPcLoc = 'full'"
-                  >
+                  <div :class="{ active: info.workCoverType.coverPcLoc === 'full' }" @click="info.workCoverType.coverPcLoc = 'full'">
                     <div class="inco inco2"></div>
                     <div class="txt">{{ coverImgLoc2 }}</div>
                   </div>
@@ -154,42 +116,21 @@ pc端视频位置 videoPcLoc
             <div class="tit">{{ $i18n.t(`edit_settings.mobile`) }}</div>
             <!-- 移动端图片 -->
             <div class="coverImgMain">
-              <SelectedImage
-                :imgSrc="info.coverInfo.coverMo"
-                :defaultImgSrc="require('@/assets/img/coverUpTit1.png')"
-                @cancel="onCancelAppTip"
-              ></SelectedImage>
+              <SelectedImage :imgSrc="info.workCoverType.coverMo" :defaultImgSrc="require('@/assets/img/coverUpTit1.png')" @cancel="onCancelAppTip"></SelectedImage>
               <div class="imgRight">
                 <!-- 上传图片按钮 -->
-                <button
-                  class="ui-button submit"
-                  @click="
-                    (isShowSelectionWindow = true),
-                      (selectingFor = 'mobile'),
-                      (upType = 'image'),
-                      (upTypeSta = 'imgBac')
-                  "
-                >
+                <button class="ui-button submit" @click="(isShowSelectionWindow = true), (selectingFor = 'mobile'), (upType = 'image'), (upTypeSta = 'imgBac')">
                   {{ $i18n.t(`edit_settings.select_image`) }}
                 </button>
                 <!-- 上传提示 -->
-                <div
-                  class="ui-remark"
-                  v-html="$i18n.t(`edit_settings.coverUpTit2`)"
-                ></div>
+                <div class="ui-remark" v-html="$i18n.t(`edit_settings.coverUpTit2`)"></div>
                 <!-- 选择居中和全屏 -->
                 <div class="coverImglocBox">
-                  <div
-                    :class="{ active: info.coverInfo.coverMoLoc === 'center' }"
-                    @click="info.coverInfo.coverMoLoc = 'center'"
-                  >
+                  <div :class="{ active: info.workCoverType.coverMoLoc === 'center' }" @click="info.workCoverType.coverMoLoc = 'center'">
                     <div class="inco"></div>
                     <div class="txt">{{ coverImgLoc1 }}</div>
                   </div>
-                  <div
-                    :class="{ active: info.coverInfo.coverMoLoc === 'full' }"
-                    @click="info.coverInfo.coverMoLoc = 'full'"
-                  >
+                  <div :class="{ active: info.workCoverType.coverMoLoc === 'full' }" @click="info.workCoverType.coverMoLoc = 'full'">
                     <div class="inco inco2"></div>
                     <div class="txt">{{ coverImgLoc2 }}</div>
                   </div>
@@ -202,63 +143,24 @@ pc端视频位置 videoPcLoc
         <!-- 图片背景设置 -->
         <div class="coverImgBacBox">
           <div class="tit">{{ $i18n.t(`edit_settings.coverImgBacTit`) }}</div>
-          <Select
-            v-model="info.coverInfo.coverImgBac"
-            class="base-select"
-            placement="bottom"
-          >
-            <Option
-              v-for="item in coverImgBacList"
-              :key="item.type"
-              :label="item.txt"
-              :value="item.type"
-            >
-            </Option>
+          <Select v-model="info.workCoverType.coverImgBac" class="base-select" placement="bottom">
+            <Option v-for="item in coverImgBacList" :key="item.type" :label="item.txt" :value="item.type"> </Option>
           </Select>
           <!-- 选择颜色 -->
-          <div
-            class="imgColorSelec"
-            v-show="info.coverInfo.coverImgBac === 'colorFill'"
-          >
-            <div class="ll">{{ info.coverInfo.imgColorSelec }}</div>
-            <div
-              class="rr"
-              :style="`background-color: ${info.coverInfo.imgColorSelec};`"
-            ></div>
-            <ColorPicker
-              @change="imgColorSelecChange"
-              v-model="info.coverInfo.imgColorSelec"
-              :predefine="predefineColors"
-            >
-            </ColorPicker>
+          <div class="imgColorSelec" v-show="info.workCoverType.coverImgBac === 'colorFill'">
+            <div class="ll">{{ info.workCoverType.imgColorSelec }}</div>
+            <div class="rr" :style="`background-color: ${info.workCoverType.imgColorSelec};`"></div>
+            <ColorPicker @change="imgColorSelecChange" v-model="info.workCoverType.imgColorSelec" :predefine="predefineColors"> </ColorPicker>
           </div>
           <!-- 选择背景图片 -->
-          <div
-            class="imgClolrBacImg"
-            v-show="info.coverInfo.coverImgBac === 'imgTile'"
-          >
-            <SelectedImage
-              :imgSrc="info.coverInfo.coverBac"
-              :defaultImgSrc="require('@/assets/img/coverUpTit1.png')"
-              @cancel="onCancelBac"
-            ></SelectedImage>
+          <div class="imgClolrBacImg" v-show="info.workCoverType.coverImgBac === 'imgTile'">
+            <SelectedImage :imgSrc="info.workCoverType.coverBac" :defaultImgSrc="require('@/assets/img/coverUpTit1.png')" @cancel="onCancelBac"></SelectedImage>
             <!-- 上传图片按钮 -->
             <div class="imgRight">
-              <button
-                class="ui-button submit"
-                @click="
-                  (isShowSelectionWindow = true),
-                    (selectingFor = 'bac'),
-                    (upType = 'image'),
-                    (upTypeSta = 'imgBac')
-                "
-              >
+              <button class="ui-button submit" @click="(isShowSelectionWindow = true), (selectingFor = 'bac'), (upType = 'image'), (upTypeSta = 'imgBac')">
                 {{ $i18n.t(`edit_settings.select_image`) }}
               </button>
-              <div
-                class="ui-remark"
-                v-html="$i18n.t(`edit_settings.coverUpTit3`)"
-              ></div>
+              <div class="ui-remark" v-html="$i18n.t(`edit_settings.coverUpTit3`)"></div>
             </div>
           </div>
         </div>
@@ -272,16 +174,13 @@ pc端视频位置 videoPcLoc
             {{ $i18n.t(`edit_settings.coverImageInWayTit`) }}
           </div>
           <div class="VideoTitR">
-            <Switcher
-              :value="info.coverInfo.coverImageInWay"
-              @change="coverImageInWayChange"
-            ></Switcher>
+            <Switcher :value="info.workCoverType.coverImageInWay" @change="coverImageInWayChange"></Switcher>
           </div>
         </div>
       </div>
 
       <!-- 关于视频 -->
-      <div class="mainVideoBox" v-show="info.coverInfo.coverSelect !== 'img'">
+      <div class="mainVideoBox" v-show="info.workCoverType.coverSelect !== 'img'">
         <div class="coverImgTit">
           {{ $i18n.t(`edit_settings.coverVideoTit`) }}
         </div>
@@ -290,42 +189,21 @@ pc端视频位置 videoPcLoc
           <div class="coverImgBox_ll">
             <div class="tit">{{ $i18n.t(`edit_settings.pc`) }}</div>
             <div class="coverImgMain">
-              <SelectedImage
-                :imgSrc="info.coverInfo.videoPcIcon"
-                :defaultImgSrc="require('@/assets/img/coverUpTit2.png')"
-                @cancel="clearVideoPc"
-              ></SelectedImage>
+              <SelectedImage :imgSrc="info.workCoverType.videoPcIcon" :defaultImgSrc="require('@/assets/img/coverUpTit2.png')" @cancel="clearVideoPc"></SelectedImage>
               <div class="imgRight">
                 <!-- 上传视频按钮 -->
-                <button
-                  class="ui-button submit"
-                  @click="
-                    (isShowSelectionWindow = true),
-                      (selectingFor = 'pc'),
-                      (upType = 'video'),
-                      (upTypeSta = 'videoBac')
-                  "
-                >
+                <button class="ui-button submit" @click="(isShowSelectionWindow = true), (selectingFor = 'pc'), (upType = 'video'), (upTypeSta = 'videoBac')">
                   {{ $i18n.t(`edit_settings.select_video`) }}
                 </button>
                 <!-- 上传提示 -->
-                <div
-                  class="ui-remark"
-                  v-html="$i18n.t(`edit_settings.coverUpTit4`)"
-                ></div>
+                <div class="ui-remark" v-html="$i18n.t(`edit_settings.coverUpTit4`)"></div>
                 <!-- 选择居中和全屏 -->
                 <div class="coverImglocBox">
-                  <div
-                    :class="{ active: info.coverInfo.videoPcLoc === 'center' }"
-                    @click="info.coverInfo.videoPcLoc = 'center'"
-                  >
+                  <div :class="{ active: info.workCoverType.videoPcLoc === 'center' }" @click="info.workCoverType.videoPcLoc = 'center'">
                     <div class="inco"></div>
                     <div class="txt">{{ coverImgLoc1 }}</div>
                   </div>
-                  <div
-                    :class="{ active: info.coverInfo.videoPcLoc === 'full' }"
-                    @click="info.coverInfo.videoPcLoc = 'full'"
-                  >
+                  <div :class="{ active: info.workCoverType.videoPcLoc === 'full' }" @click="info.workCoverType.videoPcLoc = 'full'">
                     <div class="inco inco2"></div>
                     <div class="txt">{{ coverImgLoc2 }}</div>
                   </div>
@@ -337,42 +215,21 @@ pc端视频位置 videoPcLoc
             <div class="tit">{{ $i18n.t(`edit_settings.mobile`) }}</div>
             <!-- 移动端视频 -->
             <div class="coverImgMain">
-              <SelectedImage
-                :imgSrc="info.coverInfo.videoMoIcon"
-                :defaultImgSrc="require('@/assets/img/coverUpTit2.png')"
-                @cancel="clearVideoMo"
-              ></SelectedImage>
+              <SelectedImage :imgSrc="info.workCoverType.videoMoIcon" :defaultImgSrc="require('@/assets/img/coverUpTit2.png')" @cancel="clearVideoMo"></SelectedImage>
               <div class="imgRight">
                 <!-- 上传视频按钮 -->
-                <button
-                  class="ui-button submit"
-                  @click="
-                    (isShowSelectionWindow = true),
-                      (selectingFor = 'mobile'),
-                      (upType = 'video'),
-                      (upTypeSta = 'videoBac')
-                  "
-                >
+                <button class="ui-button submit" @click="(isShowSelectionWindow = true), (selectingFor = 'mobile'), (upType = 'video'), (upTypeSta = 'videoBac')">
                   {{ $i18n.t(`edit_settings.select_video`) }}
                 </button>
                 <!-- 上传提示 -->
-                <div
-                  class="ui-remark"
-                  v-html="$i18n.t(`edit_settings.coverUpTit5`)"
-                ></div>
+                <div class="ui-remark" v-html="$i18n.t(`edit_settings.coverUpTit5`)"></div>
                 <!-- 选择居中和全屏 -->
                 <div class="coverImglocBox">
-                  <div
-                    :class="{ active: info.coverInfo.videoMoLoc === 'center' }"
-                    @click="info.coverInfo.videoMoLoc = 'center'"
-                  >
+                  <div :class="{ active: info.workCoverType.videoMoLoc === 'center' }" @click="info.workCoverType.videoMoLoc = 'center'">
                     <div class="inco"></div>
                     <div class="txt">{{ coverImgLoc1 }}</div>
                   </div>
-                  <div
-                    :class="{ active: info.coverInfo.videoMoLoc === 'full' }"
-                    @click="info.coverInfo.videoMoLoc = 'full'"
-                  >
+                  <div :class="{ active: info.workCoverType.videoMoLoc === 'full' }" @click="info.workCoverType.videoMoLoc = 'full'">
                     <div class="inco inco2"></div>
                     <div class="txt">{{ coverImgLoc2 }}</div>
                   </div>
@@ -385,59 +242,24 @@ pc端视频位置 videoPcLoc
         <!-- 视频背景设置 -->
         <div class="coverImgBacBox">
           <div class="tit">{{ $i18n.t(`edit_settings.coverImgBacTit`) }}</div>
-          <Select v-model="info.coverInfo.coverVideoBac" class="base-select">
-            <Option
-              v-for="item in coverImgBacList"
-              :key="item.type"
-              :label="item.txt"
-              :value="item.type"
-            >
-            </Option>
+          <Select v-model="info.workCoverType.coverVideoBac" class="base-select">
+            <Option v-for="item in coverImgBacList" :key="item.type" :label="item.txt" :value="item.type"> </Option>
           </Select>
           <!-- 选择颜色 -->
-          <div
-            class="imgColorSelec"
-            v-show="info.coverInfo.coverVideoBac === 'colorFill'"
-          >
-            <div class="ll">{{ info.coverInfo.videoColorSelec }}</div>
-            <div
-              class="rr"
-              :style="`background-color: ${info.coverInfo.videoColorSelec};`"
-            ></div>
-            <ColorPicker
-              @change="videoColorSelecChange"
-              v-model="info.coverInfo.videoColorSelec"
-              :predefine="predefineColors"
-            >
-            </ColorPicker>
+          <div class="imgColorSelec" v-show="info.workCoverType.coverVideoBac === 'colorFill'">
+            <div class="ll">{{ info.workCoverType.videoColorSelec }}</div>
+            <div class="rr" :style="`background-color: ${info.workCoverType.videoColorSelec};`"></div>
+            <ColorPicker @change="videoColorSelecChange" v-model="info.workCoverType.videoColorSelec" :predefine="predefineColors"> </ColorPicker>
           </div>
           <!-- 选择背景图片 -->
-          <div
-            class="imgClolrBacImg"
-            v-show="info.coverInfo.coverVideoBac === 'imgTile'"
-          >
-            <SelectedImage
-              :imgSrc="info.coverInfo.videoBacImg"
-              :defaultImgSrc="require('@/assets/img/coverUpTit1.png')"
-              @cancel="onCancelBac2"
-            ></SelectedImage>
+          <div class="imgClolrBacImg" v-show="info.workCoverType.coverVideoBac === 'imgTile'">
+            <SelectedImage :imgSrc="info.workCoverType.videoBacImg" :defaultImgSrc="require('@/assets/img/coverUpTit1.png')" @cancel="onCancelBac2"></SelectedImage>
             <!-- 上传图片按钮 -->
             <div class="imgRight">
-              <button
-                class="ui-button submit"
-                @click="
-                  (isShowSelectionWindow = true),
-                    (selectingFor = 'bac'),
-                    (upType = 'image'),
-                    (upTypeSta = 'videoBac')
-                "
-              >
+              <button class="ui-button submit" @click="(isShowSelectionWindow = true), (selectingFor = 'bac'), (upType = 'image'), (upTypeSta = 'videoBac')">
                 {{ $i18n.t(`edit_settings.select_image`) }}
               </button>
-              <div
-                class="ui-remark"
-                v-html="$i18n.t(`edit_settings.coverUpTit3`)"
-              ></div>
+              <div class="ui-remark" v-html="$i18n.t(`edit_settings.coverUpTit3`)"></div>
             </div>
           </div>
         </div>
@@ -451,10 +273,7 @@ pc端视频位置 videoPcLoc
             {{ $i18n.t(`edit_settings.coverVideoInWayTit`) }}
           </div>
           <div class="VideoTitR">
-            <Switcher
-              :value="info.coverInfo.coverVideoInWay"
-              @change="coverVideoInWayChange"
-            ></Switcher>
+            <Switcher :value="info.workCoverType.coverVideoInWay" @change="coverVideoInWayChange"></Switcher>
           </div>
         </div>
         <!-- 视频控件 -->
@@ -466,33 +285,16 @@ pc端视频位置 videoPcLoc
             {{ $i18n.t(`edit_settings.coverVideoControlTit`) }}
           </div>
           <div class="VideoTitR">
-            <Switcher
-              :value="info.coverInfo.coverVideoControl"
-              @change="coverVideoControlChange"
-            ></Switcher>
+            <Switcher :value="info.workCoverType.coverVideoControl" @change="coverVideoControlChange"></Switcher>
           </div>
         </div>
         <!-- 出现顺序 -->
 
-        <div
-          class="coverImgTit"
-          v-show="info.coverInfo.coverSelect === 'videoAndImg'"
-        >
+        <div class="coverImgTit" v-show="info.workCoverType.coverSelect === 'videoAndImg'">
           {{ $i18n.t(`edit_settings.coverImageOrder`) }}
         </div>
-        <Select
-          placement="bottom"
-          class="base-select"
-          v-model="info.coverInfo.coverImageOrder"
-          v-show="info.coverInfo.coverSelect === 'videoAndImg'"
-        >
-          <Option
-            v-for="item in coverImageOrderList"
-            :key="item.type"
-            :label="item.txt"
-            :value="item.type"
-          >
-          </Option>
+        <Select placement="bottom" class="base-select" v-model="info.workCoverType.coverImageOrder" v-show="info.workCoverType.coverSelect === 'videoAndImg'">
+          <Option v-for="item in coverImageOrderList" :key="item.type" :label="item.txt" :value="item.type"> </Option>
         </Select>
       </div>
       <br />
@@ -552,7 +354,7 @@ export default {
         },
       ],
 
-      coverInfo: {
+      workCoverType: {
         // 封面类型下拉框数据
         coverSelect: "img",
         // 图片pc端位置
@@ -599,16 +401,7 @@ export default {
         { txt: i18n.t("edit_settings.coverImgBacSelec2"), type: "imgTile" },
       ],
 
-      predefineColors: [
-        "#000000",
-        "#ff4500",
-        "#ff8c00",
-        "#ffd700",
-        "#90ee90",
-        "#00ced1",
-        "#1e90ff",
-        "#c71585",
-      ],
+      predefineColors: ["#000000", "#ff4500", "#ff8c00", "#ffd700", "#90ee90", "#00ced1", "#1e90ff", "#c71585"],
 
       isShowSelectionWindow: false,
       selectingFor: "", // 'pc', 'mobile'
@@ -621,24 +414,19 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info: "info",
+      // info: "info",
+      oldInfo: "info",
+      info: "base/baseInfo",
     }),
   },
   watch: {
-    "info.coverInfo": {
+    "info.workCoverType": {
       handler(val) {
         if (val) {
-          const folderIds = [
-            val.coverPcId,
-            val.coverMoId,
-            val.videoPcId,
-            val.videoMoId,
-            val.coverImgBacId,
-            val.videoBacImgId,
-          ].filter((i) => i);
+          const folderIds = [val.coverPcId, val.coverMoId, val.videoPcId, val.videoMoId, val.coverImgBacId, val.videoBacImgId].filter((i) => i);
           // console.log("folderIds", folderIds);
           this.folderIds = folderIds;
-          // this.info.coverInfo.fodderId = folderIds;
+          // this.info.workCoverType.fodderId = folderIds;
         }
       },
       immediate: true,
@@ -648,55 +436,55 @@ export default {
   methods: {
     //是否显示
     onSwitcherChange(data) {
-      this.info.coverInfo.isShowCover = data;
+      this.info.workCoverType.isShowCover = data;
     },
 
     // 视频的进入方式
     coverVideoInWayChange(val) {
-      this.info.coverInfo.coverVideoInWay = val;
+      this.info.workCoverType.coverVideoInWay = val;
     },
     // 图片的进入方式
     coverImageInWayChange(val) {
       console.log(val, "coverImageInWayChange");
-      this.info.coverInfo.coverImageInWay = val;
+      this.info.workCoverType.coverImageInWay = val;
     },
     coverVideoControlChange(val) {
-      this.info.coverInfo.coverVideoControl = val;
+      this.info.workCoverType.coverVideoControl = val;
     },
     // 图片的颜色选择器改变事件
     imgColorSelecChange(val) {
-      this.info.coverInfo.imgColorSelec = val;
+      this.info.workCoverType.imgColorSelec = val;
     },
     videoColorSelecChange(val) {
-      this.info.coverInfo.videoColorSelec = val;
+      this.info.workCoverType.videoColorSelec = val;
     },
     handleSubmitFromMaterialSelector(selected) {
       // 点击确定的时候是选择的图片上传
       if (this.upTypeSta === "imgBac") {
         if (this.selectingFor === "pc") {
-          this.info.coverInfo.coverPc = selected[0].icon;
-          this.info.coverInfo.coverPcId = selected[0].id;
+          this.info.workCoverType.coverPc = selected[0].icon;
+          this.info.workCoverType.coverPcId = selected[0].id;
         } else if (this.selectingFor === "mobile") {
-          this.info.coverInfo.coverMo = selected[0].icon;
-          this.info.coverInfo.coverMoId = selected[0].id;
+          this.info.workCoverType.coverMo = selected[0].icon;
+          this.info.workCoverType.coverMoId = selected[0].id;
         } else {
-          this.info.coverInfo.coverBac = selected[0].icon;
-          this.info.coverInfo.coverBacId = selected[0].id;
+          this.info.workCoverType.coverBac = selected[0].icon;
+          this.info.workCoverType.coverBacId = selected[0].id;
         }
       } else {
         // 视频上传
         if (this.selectingFor === "pc") {
           console.log(selected[0], "selected[0]");
-          this.info.coverInfo.videoPc = selected[0].ossPath;
-          this.info.coverInfo.videoPcIcon = selected[0].icon;
-          this.info.coverInfo.videoPcId = selected[0].id;
+          this.info.workCoverType.videoPc = selected[0].ossPath;
+          this.info.workCoverType.videoPcIcon = selected[0].icon;
+          this.info.workCoverType.videoPcId = selected[0].id;
         } else if (this.selectingFor === "mobile") {
-          this.info.coverInfo.videoMo = selected[0].ossPath;
-          this.info.coverInfo.videoMoId = selected[0].id;
-          this.info.coverInfo.videoMoIcon = selected[0].icon;
+          this.info.workCoverType.videoMo = selected[0].ossPath;
+          this.info.workCoverType.videoMoId = selected[0].id;
+          this.info.workCoverType.videoMoIcon = selected[0].icon;
         } else {
-          this.info.coverInfo.videoBacImg = selected[0].icon;
-          this.info.coverInfo.videoBacImgId = selected[0].id;
+          this.info.workCoverType.videoBacImg = selected[0].icon;
+          this.info.workCoverType.videoBacImgId = selected[0].id;
         }
       }
       this.isShowSelectionWindow = false;
@@ -705,72 +493,77 @@ export default {
     },
     onCancelPcTip() {
       this.$nextTick(() => {
-        this.info.coverInfo.coverPc = "";
-        this.info.coverInfo.coverPcId = null;
+        this.info.workCoverType.coverPc = "";
+        this.info.workCoverType.coverPcId = null;
         this.updateFolderIds();
-        console.log("onCancelPcTip-1", this.info.coverInfo);
+        console.log("onCancelPcTip-1", this.info.workCoverType);
       });
     },
     onCancelAppTip() {
       this.$nextTick(() => {
-        this.info.coverInfo.coverMo = "";
-        this.info.coverInfo.coverMoId = null;
+        this.info.workCoverType.coverMo = "";
+        this.info.workCoverType.coverMoId = null;
         this.updateFolderIds();
       });
     },
     onCancelBac() {
       this.$nextTick(() => {
-        this.info.coverInfo.coverBac = "";
-        this.info.coverInfo.coverBacId = null;
+        this.info.workCoverType.coverBac = "";
+        this.info.workCoverType.coverBacId = null;
         this.updateFolderIds();
       });
     },
     // 关于视频
     clearVideoPc() {
-      this.info.coverInfo.videoPc = "";
-      this.info.coverInfo.videoPcId = null;
-      this.info.coverInfo.videoPcIcon = "";
+      this.info.workCoverType.videoPc = "";
+      this.info.workCoverType.videoPcId = null;
+      this.info.workCoverType.videoPcIcon = "";
       this.updateFolderIds();
     },
     clearVideoMo() {
-      this.info.coverInfo.videoMo = "";
-      this.info.coverInfo.videoMoId = null;
-      this.info.coverInfo.videoMoIcon = "";
+      this.info.workCoverType.videoMo = "";
+      this.info.workCoverType.videoMoId = null;
+      this.info.workCoverType.videoMoIcon = "";
       this.updateFolderIds();
     },
     onCancelBac2() {
-      this.info.coverInfo.videoBacImg = "";
-      this.info.coverInfo.videoBacImgId = null;
+      this.info.workCoverType.videoBacImg = "";
+      this.info.workCoverType.videoBacImgId = null;
       this.updateFolderIds();
     },
     updateFolderIds() {
       //fodderId 以前的字段有误在先
       setTimeout(() => {
         console.log("updateFolderIds:", this.folderIds);
-        this.info.coverInfo.fodderId = this.folderIds;
+        this.info.workCoverType.fodderId = this.folderIds;
       }, 300);
     },
   },
   created() {
-    if (!this.info.coverInfo) {
-      this.$store.commit("SetInfo", {
-        coverInfo: { ...this.coverInfo },
-        ...this.info,
+    if (!this.info.workCoverType) {
+     
+
+      // this.$store.commit("SetInfo", {
+      //   workCoverType: { ...this.workCoverType },
+      //   ...this.info,
+      // });
+      this.$store.commit("base/setData", {
+        workCoverType: this.workCoverType,
       });
     } else {
-      Object.keys(this.coverInfo).forEach((i) => {
-        if (!(i in this.info.coverInfo)) {
-          this.info.coverInfo[i] = this.coverInfo[i];
+      Object.keys(this.workCoverType).forEach((i) => {
+        if (!(i in this.info.workCoverType)) {
+          this.info.workCoverType[i] = this.workCoverType[i];
         }
       });
-
       this.$store.commit("SetInfo", {
-        ...this.info,
+        // ...this.info,
+        ...this.oldInfo,
       });
     }
   },
   mounted() {
-    // console.log("this.info.coverInfo", this.info.coverInfo);
+    // console.log("this.info.workCoverType", this.info.workCoverType);
   },
   beforeCreate() {}, //生命周期 - 创建之前
   beforeMount() {}, //生命周期 - 挂载之前

+ 2 - 1
packages/qjkankan-editor/src/views/base/customButtonSettings.vue

@@ -223,7 +223,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info: "info",
+      // info: "info",
+      info: "base/baseInfo",
     }),
     translateName() {
       return (name) => {

+ 2 - 1
packages/qjkankan-editor/src/views/base/customLogoSettings.vue

@@ -64,7 +64,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info: "info",
+      // info: "info",
+      info:'base/baseInfo'
     }),
   },
   methods: {

+ 43 - 10
packages/qjkankan-editor/src/views/base/index.vue

@@ -8,24 +8,57 @@
 <script>
 import Toolbar from "./Toolbar";
 import { mapGetters } from "vuex";
-
+import { getWorkInfo } from "@/api";
 export default {
   name: "EditorBase",
   components: {
-    Toolbar
+    Toolbar,
+  },
+  data() {
+    return {
+      isInit: false,
+    };
   },
   computed: {
     ...mapGetters({
-      info: 'info'
+      // info: "info",
+      info: "base/baseInfo",
     }),
-  }
+  },
+  watch: {
+    // info: {
+    //   handler(newVal, oldVal) {
+    //     if (newVal && !this.isInit) {
+    //       this.isInit = true;
+    //       this.getSettingsInfo();
+    //     }
+    //   },
+    // },
+  },
+
+  methods: {
+    getSettingsInfo() {
+      // this.$store.commit("base/setData", this.info);
+      getWorkInfo(
+        {},
+        (res) => {
+          let data = res.data;
+          this.$store.commit("base/setData", data);
+        },
+        () => {}
+      );
+    },
+  },
+  mounted() {
+    this.getSettingsInfo();
+  },
 };
 </script>
 
 <style lang="less">
-    input::placeholder,
-    textarea::placeholder {
-      font-size: 14px;
-      color: #505050 !important;
-    }
-</style>
+input::placeholder,
+textarea::placeholder {
+  font-size: 14px;
+  color: #505050 !important;
+}
+</style>

+ 12 - 30
packages/qjkankan-editor/src/views/base/openingAnimationSettings.vue

@@ -3,13 +3,8 @@
     <span class="title">{{ $i18n.t(`edit_settings.opening_setting`) }}</span>
     <br />
     <div class="switch-wrapper">
-      <span class="label">{{
-        $i18n.t("edit_settings.opening_animation_show")
-      }}</span>
-      <Switcher
-        :value="info.isShowOpeningAnimation"
-        @change="onSwitcherChange"
-      ></Switcher>
+      <span class="label">{{ $i18n.t("edit_settings.opening_animation_show") }}</span>
+      <Switcher :value="info.workOpeningAnimationd.isShowOpeningAnimation" @change="onSwitcherChange"></Switcher>
     </div>
     <div class="btns-and-video">
       <div class="btn-wrapper">
@@ -17,28 +12,15 @@
           v-for="item of openingTypeList"
           :key="item"
           class="opening-selection-btn"
-          :class="{ 'active-opening-type': info.openingAnimationType === item }"
-          @click="info.openingAnimationType = item"
+          :class="{ 'active-opening-type': info.workOpeningAnimationd.openingAnimationType === item }"
+          @click="info.workOpeningAnimationd.openingAnimationType = item"
         >
           {{ $i18n.t(`baseSetting.opa${item}`) }}
         </button>
       </div>
       <div class="video-wrapper">
-        <video
-          ref="opvideo"
-          :src="
-            require(`@/assets/videos/opa${fallbackOpeningAnimationType(
-              info.openingAnimationType
-            )}_x264.mp4`)
-          "
-          autoplay
-          loop
-        ></video>
-        <i
-          v-if="playing"
-          @click="bofang"
-          class="iconfont iconshow_playback"
-        ></i>
+        <video ref="opvideo" :src="require(`@/assets/videos/opa${fallbackOpeningAnimationType(info.workOpeningAnimationd.openingAnimationType)}_x264.mp4`)" autoplay loop></video>
+        <i v-if="playing" @click="bofang" class="iconfont iconshow_playback"></i>
       </div>
     </div>
   </div>
@@ -68,7 +50,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info: "info",
+      // info: "info",
+      info: "base/baseInfo",
     }),
     fallbackOpeningAnimationType() {
       return (val) => {
@@ -93,17 +76,16 @@ export default {
       this.$refs.opvideo.play();
     },
     onSwitcherChange(data) {
-      this.info.isShowOpeningAnimation = data;
+      this.info.workOpeningAnimationd.isShowOpeningAnimation = data;
     },
   },
   mounted() {
-    if (this.info.isShowOpeningAnimation === undefined) {
+    if (this.info.workOpeningAnimationd.isShowOpeningAnimation === undefined) {
       this.$set(this.info, "isShowOpeningAnimation", false);
     }
     if (
-      !this.info.openingAnimationType ||
-      (typeof this.info.openingAnimationType === "string" &&
-        this.info.openingAnimationType.match(/[\u3400-\u9FBF]/))
+      !this.info.workOpeningAnimationd.openingAnimationType ||
+      (typeof this.info.workOpeningAnimationd.openingAnimationType === "string" && this.info.workOpeningAnimationd.openingAnimationType.match(/[\u3400-\u9FBF]/))
     ) {
       this.$set(this.info, "openingAnimationType", this.openingTypeList[0]);
     }

+ 16 - 15
packages/qjkankan-editor/src/views/base/openingTipSettings.vue

@@ -8,7 +8,7 @@
       <div class="title">{{$i18n.t(`edit_settings.pc`)}}</div>
       <div class="bottom">
         <SelectedImage
-          :imgSrc="info.pcIcon"
+          :imgSrc="info.workOpeningTip.pcIcon"
           :defaultImgSrc="require('@/assets/images/default/img_tipspc_default.png')"
           @cancel="onCancelPcTip"
         ></SelectedImage>
@@ -22,7 +22,7 @@
       <div class="title">{{$i18n.t(`edit_settings.mobile`)}}</div>
       <div class="bottom">
         <SelectedImage
-          :imgSrc="info.appIcon"
+          :imgSrc="info.workOpeningTip.appIcon"
           :defaultImgSrc="require('@/assets/images/default/img_tipsmb_default.png')"
           @cancel="onCancelAppTip"
         ></SelectedImage>
@@ -36,7 +36,7 @@
     <div class="title">{{$i18n.t(`edit_settings.show_setting`)}}</div>
     <div class="switch-wrapper">
         <span class="label">{{$i18n.t(`edit_settings.first_notice`)}}</span>
-        <switcher :value="info.isRemind" @change="onSwitcherChange"></switcher>
+        <switcher :value="info.workOpeningTip.isRemind" @change="onSwitcherChange"></switcher>
     </div>
     <div class="range-wrapper">
       <RangeItem :value="rang" @input="onRangeChange" />
@@ -85,40 +85,41 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info:'info'
+      // info:'info'
+      info:'base/baseInfo'
     })
   },
 
   mounted() {
     this.$nextTick(()=>{
-      this.rang.value = this.info.remindTime
+      this.rang.value = this.info.workOpeningTip.remindTime
     })
   },
   methods: {
     handleSubmitFromMaterialSelector(selected) {
       if (this.selectingFor === 'pc') {
-        this.info.pcIcon = selected[0].icon
-        this.info.pcIconId = selected[0].id
+        this.info.workOpeningTip.pcIcon = selected[0].icon
+        this.info.workOpeningTip.pcIconId = selected[0].id
       } else if (this.selectingFor === 'mobile') {
-        this.info.appIcon = selected[0].icon
-        this.info.appIconId = selected[0].id
+        this.info.workOpeningTip.appIcon = selected[0].icon
+        this.info.workOpeningTip.appIconId = selected[0].id
       }
       this.isShowSelectionWindow = false
     },
     onCancelPcTip() {
-      this.info.pcIcon = ''
-      this.info.pcIconId = null
+      this.info.workOpeningTip.pcIcon = ''
+      this.info.workOpeningTip.pcIconId = null
     },
     onCancelAppTip() {
-      this.info.appIcon = ''
-      this.info.appIconId = null
+      this.info.workOpeningTip.appIcon = ''
+      this.info.workOpeningTip.appIconId = null
     },
     onSwitcherChange(data){
-      this.info.isRemind = data
+      this.info.workOpeningTip.isRemind = data
     },
     onRangeChange(data) {
       console.log(data.value);
-      this.info.remindTime = parseInt(data.value)
+      this.info.workOpeningTip.remindTime = parseInt(data.value)
     },
   }
 }

+ 2 - 1
packages/qjkankan-editor/src/views/base/passwordSettings.vue

@@ -30,7 +30,8 @@ export default {
   },
   computed: {
     ...mapGetters({
-      info:'info'
+      // info:'info'
+      info:'base/baseInfo'
     })
   },
   watch: {

+ 1 - 0
packages/qjkankan-editor/src/views/explanation/explanationSettings.vue

@@ -75,6 +75,7 @@ export default {
     ...mapGetters({
         info: "info",
         currentScene: "scene/currentScene",
+        
     }),
   },
   data() {

+ 4 - 0
packages/qjkankan-editor/vue.config.js

@@ -36,6 +36,10 @@ module.exports = {
         target: proxy_url,
         changeOrigin: true,
       },
+      "/work": {
+        target: 'http://192.168.0.41:8002/qjkankan',
+        changeOrigin: true,
+      },
       "/ucenter": {
         target: process.env.VUE_APP_PROXY_URL_ROOT,
         changeOrigin: true,