123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- <template>
- <header class="app-head" app-border dir-bottom>
- <span class="app-head-title">{{ info.name }}</span>
- <div class="app-head-save ui-button deepcancel app-head-view" @click="onView" :class="{ disable: !canLoad }">
- <i class="iconfont iconeditor_preview"></i>
- 预览
- </div>
- <div
- class="ui-button submit app-head-save"
- @click="onSave"
- :class="{ disable: !canLoad }"
- >
- <i class="iconfont iconeditor_save"></i>
- 保存
- </div>
- <preview
- v-if="info"
- :name="info.name"
- :show="showPreview"
- :ifr="`./show.html?id=${info.id}`"
- @close="showPreview = false"
- />
- </header>
- </template>
- <script>
- import { saveWorks, getPanoInfo, checkLogin } from "@/api";
- import { mapGetters } from "vuex";
- // import config from '@/config'
- import preview from "@/components/preview";
- let hhhreg = /\\\\\\\\/g
- export default {
- name: "app-head",
- data() {
- return {
- showPreview: false,
- canLoad: false,
- };
- },
- components: { preview },
- mounted() {
- this.$bus.on('canLoad',(data)=>{
- this.canLoad = data
- if (data) {
- this.getInfo()
- }
- })
- },
- computed: {
- ...mapGetters({
- info: "info",
- isShow: "isShow",
- }),
- },
- methods: {
- checkParams() {
- if (!this.info.name && !this.info.icon && !this.info.description && this.info.scenes.length<=0) {
- this.$alert({
- content: "您还未创建任何内容哦",
- ok: () => {
- this.$router.push({ path: "/base" });
- },
- });
- return false;
- }
- // if (this.info.scenes.length <= 0 && this.isShow) {
- // this.$alert({
- // content: "至少添加一个场景才保存/预览,请前往“场景导航”添加",
- // forceOK: true,
- // ok: () => {
- // this.$router.push({ path: "/information" });
- // },
- // });
- // return false;
- // }
- return true;
- },
- onView() {
- if (!this.checkParams()) {
- return;
- }
- this.fixData()
- this.info.scenes = this.info.scenes.map(item=>{
- if (typeof item.someData == 'string') {
- item.someData = item.someData.replace(hhhreg,'')
- }
- return item
- })
- saveWorks(
- {
- password: this.info.password,
- someData: { ...this.info, status: 1 },
- },
- () => {
- this.$msg.success("保存成功");
- this.getInfo();
- this.$store.commit("UpdateIsShowState", true);
- setTimeout(() => {
- if (this.info.scenes.length <= 0 && this.isShow) {
- return this.$alert({
- content: "至少添加一个场景才可预览,请前往“场景导航”添加",
- });
- }
- this.showPreview = true;
- }, 500);
- }
- );
- },
- fixData() {
- // let tmp = [];
- // this.info.scenes.forEach((item) => {
- // this.info.catalogs.forEach((sub) => {
- // if (item.category == sub.id) {
- // tmp.push(sub);
- // }
- // });
- // });
- // tmp = this.$unique(tmp)
- // this.info.catalogs = tmp;
- // let rootmp = [];
- // tmp.forEach((item) => {
- // this.info.catalogRoot.forEach((sub) => {
- // sub.children = this.$unique(sub.children)
- // if (sub.children.indexOf(item.id) > -1) {
- // rootmp.push(sub);
- // }
- // });
- // });
- // rootmp = this.$unique(rootmp)
- // this.info.catalogRoot = rootmp.map((item) => {
- // let temp = [];
- // item.children = this.$unique(item.children)
- // item.children.forEach((sub) => {
- // tmp.forEach((jj) => {
- // if (jj.id == sub) {
- // temp.push(sub);
- // }
- // });
- // });
- // return {
- // ...item,
- // children: temp,
- // };
- // });
- // this.info.catalogs = tmp
- // let cid = 'c_'+this.$randomWord(true,8,8)
- // if (this.info.catalogRoot.length <= 0) {
- // this.info.catalogRoot.push({
- // id: 'r_'+this.$randomWord(true,8,8),
- // name: "全部场景",
- // children:[cid]
- // });
- // }
- // if (this.info.catalogs.length <= 0) {
- // this.info.catalogs.push({
- // id: cid,
- // name: "默认二级分组",
- // });
- // }
- if (this.info.firstScene) {
- this.info.firstScene = this.info.scenes.find(item=>item.sceneCode==this.info.firstScene.sceneCode)
- }
- this.$store.commit("SetInfo", this.info);
- },
- onSave() {
- if (!this.checkParams()) {
- return;
- }
- this.fixData();
- this.info.scenes = this.info.scenes.map(item=>{
- if (typeof item.someData == 'string') {
- item.someData = item.someData.replace(hhhreg,'')
- }
- return item
- })
- saveWorks(
- {
- password: this.info.password,
- someData: { ...this.info, status: 1 },
- },
- () => {
- this.$msg.success("保存成功")
- this.getInfo();
- this.$store.commit("UpdateIsShowState", true);
- },
- () => {}
- );
- },
- getInfo() {
- checkLogin().then((res) => {
- if (res.code == 0) {
- getPanoInfo("", (data) => {
- this.$store.commit("SetInfo", data);
- });
- }
- });
- },
- },
- };
- </script>
- <style lang="less">
- .app-head {
- display: flex;
- width: 100%;
- min-width: 50px;
- align-items: center;
- justify-content: center;
- }
- .app-head-title {
- display: inline-block;
- font-size: 16px;
- height: 50px;
- line-height: 50px;
- text-align: center;
- }
- .app-head-save {
- cursor: pointer;
- display: flex;
- justify-content: center;
- align-items: center;
- position: absolute;
- top: 50%;
- right: 10px;
- margin-top: -16px;
- i {
- font-size: 14px;
- margin-right: 4px;
- }
- }
- .ui-preview{
- background: #313131;
- }
- .app-head-view {
- right: 120px;
- }
- </style>
|