Commit a43a7018 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents d9f2efc4 b62f98c9
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
"nanoid": "^4.0.0", "nanoid": "^4.0.0",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"quill-image-resize-module": "^3.0.0", "quill-image-resize-module": "^3.0.0",
"secure-ls": "^1.2.6",
"v-viewer": "^1.6.4", "v-viewer": "^1.6.4",
"viser-vue": "^2.4.8", "viser-vue": "^2.4.8",
"vue": "^2.6.11", "vue": "^2.6.11",
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!-- <title><%= process.env.VUE_APP_NAME %></title> --> <!-- <title><%= process.env.VUE_APP_NAME %></title> -->
<title>智慧政务一体化综合管理平台</title> <title>基础设置系统</title>
<!-- require cdn assets css --> <!-- require cdn assets css -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %> <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" /> <link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
......
...@@ -77,7 +77,7 @@ export default { ...@@ -77,7 +77,7 @@ export default {
methods: { methods: {
// 返回管理页面 // 返回管理页面
handleManage() { handleManage() {
this.$router.push("/business"); this.$router.push("/business/mattermanage");
}, },
// 返回上一级 // 返回上一级
handleBack() { handleBack() {
......
<template> <template>
<!-- 应用集市 --> <!-- 应用集市 -->
<div class="app-details"> <div class="app-details flex flexc">
<a-tabs default-active-key="1"> <a-tabs :activeKey="activeKey" @change="changeRouter">
<a-button slot="tabBarExtraContent" @click="handleBack" <a-button slot="tabBarExtraContent" @click="handleBack"
>返回上一级</a-button >返回上一级</a-button
> >
<a-tab-pane key="1" tab="详情"> <a-tab-pane key="/appmarket/appdetails/appdetailspage" tab="详情">
<AppDetailsPage></AppDetailsPage> <!-- <AppDetailsPage></AppDetailsPage> -->
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="数据更新" force-render> <a-tab-pane key="/appmarket/appdetails/dataupdate" tab="数据更新">
<DataUpdata></DataUpdata> <!-- <DataUpdata></DataUpdata> -->
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="3" tab="数据配置" force-render> <a-tab-pane key="/appmarket/appdetails/fieldconfig" tab="数据配置">
<FieldConfig></FieldConfig> <!-- <FieldConfig></FieldConfig> -->
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
<div class="details-out-box flex1">
<router-view></router-view>
</div>
</div> </div>
</template> </template>
<script> <script>
import AppDetailsPage from "./components/AppDetailsPage.vue"; // import AppDetailsPage from "./components/AppDetailsPage.vue";
import DataUpdata from "./components/DataUpdate.vue"; // import DataUpdata from "./components/DataUpdate.vue";
import FieldConfig from "./components/FieldConfig.vue"; // import FieldConfig from "./components/FieldConfig.vue";
export default { export default {
components: { components: {
AppDetailsPage, // AppDetailsPage,
DataUpdata, // DataUpdata,
FieldConfig, // FieldConfig,
}, },
data() { data() {
return { return {
appId: this.$route.query.id, appId: this.$route.query.id,
from: this.$route.query.from,
appInfo: {}, appInfo: {},
}; };
}, },
computed: {
activeKey() {
return this.$route.path;
},
},
created() {}, created() {},
methods: { methods: {
handleBack() { handleBack() {
this.$router.back(); if (this.from == "terminalapp") {
this.$router.push("/appmarket/terminalapp");
} else {
this.$router.push("/appmarket/moveapp");
}
},
changeRouter(path) {
this.$router.push(`${path}?id=${this.appId}&from=${this.from}`);
}, },
}, },
}; };
...@@ -46,6 +62,8 @@ export default { ...@@ -46,6 +62,8 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.app-details { .app-details {
width: 100%; width: 100%;
height: 100%;
padding: 0px 20px;
} }
/deep/.ant-tabs { /deep/.ant-tabs {
height: 100%; height: 100%;
......
<template> <template>
<!-- 应用集市 --> <!-- 应用集市 -->
<div class="app-market"> <div class="app-market flex flexc">
<a-tabs default-active-key="1"> <a-tabs :activeKey="activeKey" @change="changeRouter">
<a-button <a-button
type="primary" type="primary"
v-permission="[1]" v-permission="[1]"
...@@ -9,13 +9,16 @@ ...@@ -9,13 +9,16 @@
@click="handleUpload" @click="handleUpload"
>上传配置文件</a-button >上传配置文件</a-button
> >
<a-tab-pane key="1" tab="终端应用"> <a-tab-pane key="/appmarket/terminalapp" tab="终端应用">
<TerminalApp></TerminalApp> <!-- <TerminalApp></TerminalApp> -->
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2" tab="移动端应用" force-render> <a-tab-pane key="/appmarket/moveapp" tab="移动端应用" force-render>
<MoveApp></MoveApp> <!-- <MoveApp></MoveApp> -->
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
<div class="app-out-box flex1">
<router-view></router-view>
</div>
<!-- 上传配置文件弹窗 --> <!-- 上传配置文件弹窗 -->
<a-modal <a-modal
v-model="visible" v-model="visible"
...@@ -50,13 +53,13 @@ ...@@ -50,13 +53,13 @@
</template> </template>
<script> <script>
import TerminalApp from "./components/TerminalApp.vue"; // import TerminalApp from "./components/TerminalApp.vue";
import MoveApp from "./components/MoveApp.vue"; // import MoveApp from "./components/MoveApp.vue";
import { commonConfig } from "@/services/market"; import { commonConfig } from "@/services/market";
export default { export default {
components: { components: {
TerminalApp, // TerminalApp,
MoveApp, // MoveApp,
}, },
data() { data() {
return { return {
...@@ -73,16 +76,16 @@ export default { ...@@ -73,16 +76,16 @@ export default {
}, },
}; };
}, },
// 进入路有前 computed: {
beforeRouteEnter(to, from, text) { activeKey() {
if (from.path === "/appmarket/appdetails") { return this.$route.path;
to.meta.isBack = true; },
} else {
to.meta.isBack = false;
}
text();
}, },
methods: { methods: {
changeRouter(path) {
this.$router.push(path);
},
handleUpload() { handleUpload() {
this.visible = true; this.visible = true;
}, },
...@@ -125,7 +128,11 @@ export default { ...@@ -125,7 +128,11 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.app-market { .app-market {
width: 100%; width: 100%;
height: 100%;
padding: 15px; padding: 15px;
.app-out-box {
overflow-y: auto;
}
} }
/deep/.ant-form-item { /deep/.ant-form-item {
align-items: flex-start; align-items: flex-start;
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
:wrapper-col="{ span: 22 }" :wrapper-col="{ span: 22 }"
> >
<a-form-model-item label="应用主题"> <a-form-model-item label="应用主题">
{{ appInfo.appThemeName }} {{ filterItems(appInfo.appThemeName, appDict.appThemeName) }}
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="应用简介"> <a-form-model-item label="应用简介">
{{ appInfo.summary }} {{ appInfo.summary }}
...@@ -117,7 +117,8 @@ import { ...@@ -117,7 +117,8 @@ import {
previewVersion, previewVersion,
} from "@/services/market"; } from "@/services/market";
import CheckSite from "../modal/CheckSite.vue"; import CheckSite from "../modal/CheckSite.vue";
import { filterItems } from "@/utils";
import { mapGetters } from "vuex";
export default { export default {
props: { props: {
// 应用信息 // 应用信息
...@@ -168,6 +169,7 @@ export default { ...@@ -168,6 +169,7 @@ export default {
}, },
]; ];
return { return {
filterItems,
api: process.env.VUE_APP_API_BASE_URL + "/", api: process.env.VUE_APP_API_BASE_URL + "/",
columns, columns,
appId: this.$route.query.id, appId: this.$route.query.id,
...@@ -182,6 +184,9 @@ export default { ...@@ -182,6 +184,9 @@ export default {
siteVisible: false, siteVisible: false,
}; };
}, },
computed: {
...mapGetters("site", ["appDict"]),
},
created() { created() {
this.getAppInfo(); this.getAppInfo();
this.getVersions(); this.getVersions();
......
...@@ -118,6 +118,8 @@ import YSwitch from "../../../../components/yswitch/YSwitch.vue"; ...@@ -118,6 +118,8 @@ import YSwitch from "../../../../components/yswitch/YSwitch.vue";
import AddApp from "../modal/AddApp.vue"; import AddApp from "../modal/AddApp.vue";
import CheckSite from "../modal/CheckSite.vue"; import CheckSite from "../modal/CheckSite.vue";
import { getAppList, deleteApp, saveApp } from "@/services/market"; import { getAppList, deleteApp, saveApp } from "@/services/market";
import { mapMutations } from "vuex";
import { filterItems } from "@/utils";
import local from "@/utils/local"; import local from "@/utils/local";
const columns = [ const columns = [
{ {
...@@ -176,6 +178,7 @@ export default { ...@@ -176,6 +178,7 @@ export default {
}, },
data() { data() {
return { return {
filterItems,
api: process.env.VUE_APP_API_BASE_URL + "/", api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL, api2: process.env.VUE_APP_API_IMG_URL,
columns, columns,
...@@ -194,17 +197,29 @@ export default { ...@@ -194,17 +197,29 @@ export default {
dict: {}, // 字典 dict: {}, // 字典
}; };
}, },
// 详情页返回不刷新数据 // 进入路由前
activated() { // beforeRouteEnter(to, from, text) {
if (!this.$route.meta.isBack) { // if (from.path === "/appmarket/appdetails") {
Object.assign(this.$data, this.$options.data()); // to.meta.isBack = true;
// } else {
// to.meta.isBack = false;
// }
// text();
// },
// // 详情页返回不刷新数据
// activated() {
// if (!this.$route.meta.isBack) {
// Object.assign(this.$data, this.$options.data());
// this.getAppList();
// } else {
// this.$route.meta.isBack = false;
// }
// },
created() {
this.getAppList(); this.getAppList();
} else {
this.$route.meta.isBack = false;
}
}, },
created() {},
methods: { methods: {
...mapMutations("site", ["SET_appDict"]),
// 获取应用列表 // 获取应用列表
async getAppList() { async getAppList() {
this.loading = true; this.loading = true;
...@@ -218,6 +233,7 @@ export default { ...@@ -218,6 +233,7 @@ export default {
this.loading = false; this.loading = false;
let { data, total, dict } = res.data.data; let { data, total, dict } = res.data.data;
this.dict = dict; this.dict = dict;
this.SET_appDict(dict);
if (res.data.code === 1) { if (res.data.code === 1) {
if (!data.length && this.current > 1) { if (!data.length && this.current > 1) {
this.current -= 1; this.current -= 1;
...@@ -335,16 +351,6 @@ export default { ...@@ -335,16 +351,6 @@ export default {
this.getAppList(); this.getAppList();
} }
}, },
// 过滤表格数据
filterItems(key, dict = {}) {
let val = "";
Object.keys(dict).forEach((keys) => {
if (key == keys) {
val = dict[keys];
}
});
return val;
},
}, },
}; };
</script> </script>
......
...@@ -119,6 +119,8 @@ import AddApp from "../modal/AddApp.vue"; ...@@ -119,6 +119,8 @@ import AddApp from "../modal/AddApp.vue";
import CheckSite from "../modal/CheckSite.vue"; import CheckSite from "../modal/CheckSite.vue";
import { getAppList, deleteApp, saveApp } from "@/services/market"; import { getAppList, deleteApp, saveApp } from "@/services/market";
import local from "@/utils/local"; import local from "@/utils/local";
import { mapMutations } from "vuex";
import { filterItems } from "@/utils";
const columns = [ const columns = [
{ {
title: "序号", title: "序号",
...@@ -176,6 +178,7 @@ export default { ...@@ -176,6 +178,7 @@ export default {
}, },
data() { data() {
return { return {
filterItems,
api: process.env.VUE_APP_API_BASE_URL + "/", api: process.env.VUE_APP_API_BASE_URL + "/",
api2: process.env.VUE_APP_API_IMG_URL, api2: process.env.VUE_APP_API_IMG_URL,
columns, columns,
...@@ -194,17 +197,12 @@ export default { ...@@ -194,17 +197,12 @@ export default {
dict: {}, // 字典 dict: {}, // 字典
}; };
}, },
// 详情页返回不刷新数据
activated() { created() {
if (!this.$route.meta.isBack) {
Object.assign(this.$data, this.$options.data());
this.getAppList(); this.getAppList();
} else {
this.$route.meta.isBack = false;
}
}, },
created() {},
methods: { methods: {
...mapMutations("site", ["SET_appDict"]),
// 获取应用列表 // 获取应用列表
async getAppList() { async getAppList() {
this.loading = true; this.loading = true;
...@@ -218,6 +216,7 @@ export default { ...@@ -218,6 +216,7 @@ export default {
this.loading = false; this.loading = false;
let { data, total, dict } = res.data.data; let { data, total, dict } = res.data.data;
this.dict = dict; this.dict = dict;
this.SET_appDict(dict);
if (res.data.code === 1) { if (res.data.code === 1) {
if (!data.length && this.current > 1) { if (!data.length && this.current > 1) {
this.current -= 1; this.current -= 1;
...@@ -273,6 +272,7 @@ export default { ...@@ -273,6 +272,7 @@ export default {
path: "/appmarket/appdetails", path: "/appmarket/appdetails",
query: { query: {
id, id,
from: "terminalapp",
}, },
}); });
}, },
...@@ -335,16 +335,6 @@ export default { ...@@ -335,16 +335,6 @@ export default {
this.getAppList(); this.getAppList();
} }
}, },
// 过滤表格数据
filterItems(key, dict = {}) {
let val = "";
Object.keys(dict).forEach((keys) => {
if (key == keys) {
val = dict[keys];
}
});
return val;
},
}, },
}; };
</script> </script>
......
<template> <template>
<div class="business"> <div class="business flex flexc">
<a-tabs v-model="active"> <a-tabs :activeKey="active" @change="changeRouter">
<a-tab-pane :key="1" tab="事项管理"> <a-tab-pane key="/business/businessmanage" tab="业务管理">
<BusinessTabs2 v-if="active === 1" ref="BusinessTabs2" /> <!-- <BusinessTabs2 v-if="active === 1" ref="BusinessTabs2" /> -->
</a-tab-pane> </a-tab-pane>
<a-tab-pane :key="2" tab="业务管理"> <a-tab-pane key="/business/mattermanage" tab="事项管理">
<BusinessTabs1 v-if="active === 2" ref="BusinessTabs1" /> <!-- <BusinessTabs1 v-if="active === 2" ref="BusinessTabs1" /> -->
</a-tab-pane> </a-tab-pane>
<a-tab-pane :key="3" tab="业务事项关联"> <a-tab-pane key="/business/businessinmanage" tab="业务事项关联">
<BusinessTabs3 v-if="active === 3" ref="BusinessTabs3" /> <!-- <BusinessTabs3 v-if="active === 3" ref="BusinessTabs3" /> -->
</a-tab-pane> </a-tab-pane>
</a-tabs> </a-tabs>
<div class="business-out-box flex1">
<router-view></router-view>
</div>
</div> </div>
</template> </template>
<script> <script>
import BusinessTabs1 from "./components/businessTabs1.vue"; // import BusinessTabs1 from "./components/businessTabs1.vue";
import BusinessTabs2 from "./components/businessTabs2.vue"; // import BusinessTabs2 from "./components/businessTabs2.vue";
import BusinessTabs3 from "./components/businessTabs3.vue"; // import BusinessTabs3 from "./components/businessTabs3.vue";
export default { export default {
components: { components: {
BusinessTabs1, // BusinessTabs1,
BusinessTabs2, // BusinessTabs2,
BusinessTabs3, // BusinessTabs3,
}, },
data() { data() {
return { return {
siteId: "", // 站点id siteId: "", // 站点id
active: 1, // active: 1,
}; };
}, },
computed: {
methods: {}, active() {
return this.$route.path;
},
},
methods: {
changeRouter(path) {
this.$router.push(path);
},
},
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.business { .business {
width: 100%; width: 100%;
height: 100%;
display: flex; display: flex;
position: relative; position: relative;
background-color: #fff; background-color: #fff;
...@@ -57,5 +69,8 @@ export default { ...@@ -57,5 +69,8 @@ export default {
top: 44px; top: 44px;
left: 50%; left: 50%;
} }
.business-out-box {
overflow-y: auto;
}
} }
</style> </style>
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<script> <script>
import { getProductList } from "@/services/surface"; import { getProductList } from "@/services/surface";
import { mapMutations } from "vuex";
export default { export default {
data() { data() {
return { return {
...@@ -35,6 +36,7 @@ export default { ...@@ -35,6 +36,7 @@ export default {
this.getProductList(); this.getProductList();
}, },
methods: { methods: {
...mapMutations("site", ["SET_curProduct"]),
// 获取产品列表 // 获取产品列表
async getProductList(search = {}) { async getProductList(search = {}) {
let res = await getProductList({ page: 1, size: -1, ...search }); let res = await getProductList({ page: 1, size: -1, ...search });
...@@ -54,9 +56,12 @@ export default { ...@@ -54,9 +56,12 @@ export default {
productId: row.id, productId: row.id,
productName: row.productName, productName: row.productName,
}; };
this.$emit("clickFacility", obj); this.SET_curProduct(obj);
}, },
}, },
beforeDestroy() {
this.SET_curProduct({});
},
}; };
</script> </script>
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<div <div
class="preview-item" class="preview-item"
@click="changePreview(i, v)" @click="changePreview(i, v)"
:class="{ active: i === isActive }" :class="{ active: i === curSkinIndex }"
v-for="(v, i) in previewList" v-for="(v, i) in previewList"
:key="v.id" :key="v.id"
> >
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<script> <script>
import { getSkinList } from "@/services/surface"; import { getSkinList } from "@/services/surface";
import { Empty } from "ant-design-vue"; import { Empty } from "ant-design-vue";
// import { mapMutations } from "vuex"; import { mapMutations, mapState } from "vuex";
export default { export default {
props: { props: {
classifyList: { classifyList: {
...@@ -51,44 +51,43 @@ export default { ...@@ -51,44 +51,43 @@ export default {
}, },
data() { data() {
return { return {
isActive: 0,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
categoryId: "", // 分类ID categoryId: "", // 分类ID
facilityInfo: {}, // 设备信息
previewList: [], // 皮肤列表 previewList: [], // 皮肤列表
}; };
}, },
computed: {
...mapState("site", ["curSkinIndex", "curProduct"]),
},
watch: {
curProduct(newVal) {
if (Object.keys(newVal).length) {
this.getSkinList({ productId: newVal.productId });
}
},
},
created() { created() {
// this.getSkinList(); // this.getSkinList();
this.$bus.$off(["delSkin"]); this.$bus.$off(["delSkin"]);
this.$bus.$on("delSkin", (index) => { this.$bus.$on("delSkin", (index) => {
this.previewList.splice(index, 1); this.previewList.splice(index, 1);
if (index > 0) { if (index > 0) {
this.isActive = index - 1; this.SET_curSkin(this.previewList[index - 1]);
this.$bus.$emit( this.SET_curSkinIndex(index - 1);
"selectPreview",
this.previewList[index - 1],
index - 1
);
} else { } else {
this.$bus.$emit("selectPreview", this.previewList[0], 0); this.SET_curSkin(this.previewList[0]);
} }
}); });
}, },
methods: { methods: {
// ...mapMutations(["SET_imageResolution"]), ...mapMutations("site", [
// 对象转对象数组 "SET_imageResolution",
transverter(obj) { "SET_curSkin",
return Object.keys(obj).map((v) => { "SET_curSkinIndex",
return { ]),
id: v,
name: obj[v],
};
});
},
// 获取设备信息 // 获取设备信息
getFacilityInfo(info) { getcurProduct(info) {
this.facilityInfo = info; this.curProduct = info;
this.getSkinList({ productId: info.id }); this.getSkinList({ productId: info.id });
}, },
// 获取皮肤列表 // 获取皮肤列表
...@@ -97,28 +96,31 @@ export default { ...@@ -97,28 +96,31 @@ export default {
let res = await getSkinList({ let res = await getSkinList({
page: 1, page: 1,
size: -1, size: -1,
productName: this.facilityInfo.productName, productName: this.curProduct.productName,
categoryId: this.categoryId, categoryId: this.categoryId,
...search, ...search,
}); });
let { imageResolution } = res.data.dict; let { imageResolution } = res.data.dict;
let { data } = res.data.data; let { data } = res.data.data;
this.$store.commit( this.SET_imageResolution(imageResolution);
"site/SET_imageResolution",
this.transverter(imageResolution)
);
// this.SET_imageResolution(this.transverter(imageResolution));
this.previewList = data; this.previewList = data;
this.$bus.$emit("selectPreview", this.previewList[0], 0); if (data.length) {
this.SET_curSkin(this.previewList[0]);
this.SET_curSkinIndex(0);
} else {
this.SET_curSkin({});
this.SET_curSkinIndex(0);
}
}, },
// 选取预览图 // 选取预览图
changePreview(index, row) { changePreview(index, row) {
this.isActive = index; this.SET_curSkin(row);
this.SET_curSkinIndex(index);
this.$bus.$emit("selectPreview", row, index); this.$bus.$emit("selectPreview", row, index);
}, },
// 新增 // 新增
AddSurface() { AddSurface() {
if (this.facilityInfo.productId) { if (this.curProduct.productId) {
this.$emit("addSkin"); this.$emit("addSkin");
} else { } else {
this.$message.warning("请先选择设备"); this.$message.warning("请先选择设备");
...@@ -137,6 +139,10 @@ export default { ...@@ -137,6 +139,10 @@ export default {
} }
}, },
}, },
beforeDestroy() {
this.SET_curSkin({});
this.SET_curSkinIndex(0);
},
}; };
</script> </script>
......
<template> <template>
<div class="show"> <div class="show">
<div class="show-content" v-if="skinInfo.id"> <div class="show-content" v-if="curSkin.id">
<div class="show-header"> <div class="show-header">
<h2 class="show-titlw">{{ skinInfo.name }}</h2> <h2 class="show-titlw">{{ curSkin.name }}</h2>
<p> <p>
更新时间:<span style="margin-right: 20px">{{ 更新时间:<span style="margin-right: 20px">{{
skinInfo.updateTime | dateFormat curSkin.updateTime | dateFormat
}}</span> }}</span>
支持分辨率:<span 支持分辨率:<span
>{{ filterImageResolution(skinInfo.imageResolution) }} >{{ filterItems(curSkin.imageResolution, imageResolution) }}
</span> </span>
</p> </p>
</div> </div>
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
<component <component
conponentsId="skinInfo" conponentsId="skinInfo"
:is="component" :is="component"
:imageResolution="skinInfo.imageResolution" :imageResolution="curSkin.imageResolution"
:skinFieldList="skinInfo.skinFieldList" :skinFieldList="curSkin.skinFieldList"
></component> ></component>
</div> </div>
<div class="show-btn flex aic jcc"> <div class="show-btn flex aic jcc">
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<a-button class="edit-btn" @click="editSurface" <a-button class="edit-btn" @click="editSurface"
>修改皮肤参数</a-button >修改皮肤参数</a-button
> >
<a-button type="danger" @click="handleClose(skinInfo.id)" <a-button type="danger" @click="handleClose(curSkin.id)"
>删除皮肤</a-button >删除皮肤</a-button
> >
</a-space> </a-space>
...@@ -54,6 +54,10 @@ import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue"; ...@@ -54,6 +54,10 @@ import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue";
import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue"; import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue";
import InformationSkin from "../informationskin/InformationSkin.vue"; import InformationSkin from "../informationskin/InformationSkin.vue";
import SelfService from "../selfservice/SelfService.vue"; import SelfService from "../selfservice/SelfService.vue";
import DesSelfService from "../desSelfservice/DesSelfService.vue";
import SignDevicekin from "../signdeviceskin/SignDeviceSkin.vue";
import { mapState, mapMutations } from "vuex";
import { filterItems } from "@/utils";
export default { export default {
components: { components: {
LandscapeMode, LandscapeMode,
...@@ -65,26 +69,22 @@ export default { ...@@ -65,26 +69,22 @@ export default {
WriteFormSkin, WriteFormSkin,
InformationSkin, InformationSkin,
SelfService, SelfService,
DesSelfService,
SignDevicekin,
}, },
props: {}, props: {},
data() { data() {
return { return {
filterItems,
skinInfo: {}, skinInfo: {},
index: "",
}; };
}, },
created() { created() {},
this.$bus.$off(["selectPreview"]);
this.$bus.$on("selectPreview", (row, index) => {
this.skinInfo = { ...row };
this.index = index;
console.log(this.skinInfo);
});
},
computed: { computed: {
...mapState("site", ["imageResolution", "curSkin", "curSkinIndex"]),
component() { component() {
let str = ""; let str = "";
switch (this.skinInfo.productName) { switch (this.curSkin.productName) {
case "排号机": case "排号机":
str = "LandscapeMode"; str = "LandscapeMode";
break; break;
...@@ -98,7 +98,7 @@ export default { ...@@ -98,7 +98,7 @@ export default {
str = "CentralizeSkin"; str = "CentralizeSkin";
break; break;
case "导视机": case "导视机":
// str = "CentralizeSkin"; str = "SignDevicekin";
break; break;
case "评价器": case "评价器":
str = "AppraiseSkin"; str = "AppraiseSkin";
...@@ -115,39 +115,20 @@ export default { ...@@ -115,39 +115,20 @@ export default {
case "信息发布终端": case "信息发布终端":
str = "InformationSkin"; str = "InformationSkin";
break; break;
case "桌面式自助终端":
str = "DesSelfService";
break;
} }
return str; return str;
}, },
displayer() {
return this.$store.state.site.imageResolution;
},
},
filters: {
filterScreen(val) {
if (val === "1") {
return "1920*1080";
} else if (val === "2") {
return "1080*1920";
} else {
return "1280*1280";
}
},
}, },
methods: { methods: {
// 过滤分辨率显示 ...mapMutations("site", ["SET_curSkinIndex"]),
filterImageResolution(val) {
let str = "";
this.displayer.forEach((v) => {
if (val == v.id) {
str = v.name;
}
});
return str;
},
// 编辑皮肤 // 编辑皮肤
editSurface() { editSurface() {
if (this.skinInfo.id) { if (this.curSkin.id) {
this.$emit("editSkin", this.skinInfo); this.$emit("editSkin", this.curSkin);
} else { } else {
this.$message.warning("请先选择皮肤"); this.$message.warning("请先选择皮肤");
} }
...@@ -169,7 +150,7 @@ export default { ...@@ -169,7 +150,7 @@ export default {
let { code, msg } = res.data; let { code, msg } = res.data;
if (code === 1) { if (code === 1) {
_this.$message.success(msg); _this.$message.success(msg);
_this.$bus.$emit("delSkin", _this.index); _this.$bus.$emit("delSkin", _this.curSkinIndex);
} else { } else {
_this.$message.error(msg); _this.$message.error(msg);
} }
......
<template>
<div class="skin-box">
<!-- 桌面自助服务终端 横板 -->
<div
:id="conponentsId"
v-if="imageResolution === '1'"
class="across-skin flex flexc aic"
:style="{
background: filterItem('1', 0),
}"
>
<!-- 头部 -->
<div class="header flex aic jcb">
<div class="left flex aic">
<div
class="title"
:style="{
color: filterItem('2', 0),
}"
>
自助服务终端
</div>
</div>
<div
class="right flex aic"
:style="{
color: filterItem('3', 0),
}"
>
<div class="time">10:32</div>
<div class="flex flexc">
<span>2023/02/16</span>
<span>星期四</span>
</div>
</div>
</div>
<div class="main flex aic jcb flex1">
<div class="left">
<div class="top">
<div class="search-box">
<div class="search">请输入你想查询的内容关键字</div>
<div
class="search_btn"
:style="{
color: filterItem('7', 0),
background: filterItem('8', 0),
}"
>
搜索
</div>
</div>
<div class="banner flex aic jcc">banner</div>
</div>
<div class="bottom">新闻区</div>
</div>
<div class="right flex aic jcc">应用展示区</div>
</div>
<!-- 底部 -->
<div class="footer mt20">
<div
class="footer-item footer-item1"
:style="{
background: filterItem('7', 0),
}"
>
首页
</div>
<div class="footer-item">服务</div>
<div class="footer-item">互动</div>
<div class="footer-item">我的</div>
<div
class="footer-item footer-item5"
:style="{
color: filterItem('7', 0),
background: filterItem('8', 0),
}"
>
登录/注册
</div>
</div>
</div>
<!-- 空数据显示 -->
<div class="empty flex aic jcc" v-else>
<a-empty
:image="require('../../../../assets/img/original.png')"
:image-style="{
height: '80px',
}"
>
<span slot="description"> <a href="#API">暂无皮肤模板</a> </span>
</a-empty>
</div>
</div>
</template>
<script>
export default {
props: {
skinFieldList: {
type: Array,
required: true,
default: () => {
return [];
},
},
imageResolution: {
required: true,
default: "1",
},
conponentsId: {
required: true,
type: String,
},
},
data() {
return {
api: process.env.VUE_APP_API_IMG_URL,
};
},
methods: {
// 过滤属性类型
filterItem(type, index) {
let arr = this.skinFieldList.filter((v) => {
return v.remark == type;
});
if (arr.length) {
return this.filterValueType(arr[index]);
} else {
return "";
}
},
// 过滤属性值类型
filterValueType(info = {}) {
let value = "";
if (info.fieldType !== "" && info.fieldType === "1" && info.fieldValue) {
value = info.fieldValue;
} else if (
info.fieldType !== "" &&
info.fieldType === "2" &&
info.fieldValue
) {
value = `url(${this.api + info.fieldValue})`;
}
return value;
},
},
};
</script>
<style lang="less" scoped>
.across-skin {
width: 1000px;
height: 562.5px;
background: linear-gradient(#26c5ff, #2c66ff);
background-repeat: no-repeat !important ;
background-position: center !important ;
background-size: cover !important ;
.header {
width: 100%;
color: #fff;
padding: 20px;
.title {
font-size: 30px;
font-weight: 600;
}
.right {
.time {
font-size: 26px;
font-weight: 600;
margin-right: 10px;
}
}
}
.main {
width: 100%;
padding: 20px;
margin-top: 10px;
color: #fff;
.left {
width: 39%;
height: 100%;
padding: 10px;
border-radius: 4px;
border: 1px dashed #ececec;
.top {
height: 59%;
display: flex;
flex-direction: column;
.search-box {
height: 40px;
padding: 0px 4px;
margin-bottom: 10px;
border-radius: 4px;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
.search {
color: #ccc;
}
.search_btn {
width: 60px;
height: 36px;
border-radius: 4px;
background-color: #dee9ff;
display: flex;
justify-content: center;
align-items: center;
color: #206eff;
}
}
.banner {
flex: 0.9;
border: 1px dashed #ececec;
border-radius: 4px;
}
}
.bottom {
height: 39%;
display: flex;
align-items: center;
justify-content: center;
border: 1px dashed #ececec;
}
}
.right {
width: 59%;
height: 100%;
border-radius: 4px;
border: 1px dashed #ececec;
}
}
.footer {
width: 100%;
height: 60px;
display: flex;
justify-content: flex-end;
background-color: #fff;
.footer-item1 {
color: #fff;
background-color: #206eff;
}
.footer-item {
display: flex;
align-items: center;
justify-content: center;
width: 160px;
height: 100%;
border-left: 1px solid #ececec;
border-right: 1px solid #ececec;
font-size: 20px;
}
.footer-item5 {
color: #206eff;
background-color: #dee9ff;
}
}
}
</style>
\ No newline at end of file
<template> <template>
<div class="add-surface" v-if="show"> <div class="add-surface" v-if="show">
<a-card :bordered="false"> <a-card :bordered="false">
<span slot="title">{{ facilityInfo.productName + "皮肤" }}</span> <span slot="title">{{ curProduct.productName + "皮肤" }}</span>
<a-button slot="extra" @click="backOne">返回上一级</a-button> <a-button slot="extra" @click="backOne">返回上一级</a-button>
<div class="add-surface-preview"> <div class="add-surface-preview">
<div ref="content" class="add-surface-preview-content"> <div ref="content" class="add-surface-preview-content">
...@@ -71,11 +71,11 @@ ...@@ -71,11 +71,11 @@
v-model="formData.imageResolution" v-model="formData.imageResolution"
> >
<a-select-option <a-select-option
v-for="v in displayer" v-for="(v, key) in imageResolution"
:key="v.id" :key="key"
:value="v.id" :value="key"
> >
{{ v.name }} {{ v }}
</a-select-option> </a-select-option>
</a-select> </a-select>
</a-form-model-item> </a-form-model-item>
...@@ -187,10 +187,13 @@ import AppraiseSkin from "../appraiseskin/AppraiseSkin.vue"; ...@@ -187,10 +187,13 @@ import AppraiseSkin from "../appraiseskin/AppraiseSkin.vue";
import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue"; import SampleFormSkin from "../sampleFormSkin/SampleFormSkin.vue";
import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue"; import WriteFormSkin from "../writeFormSkin/WriteFormSkin.vue";
import InformationSkin from "../informationskin/InformationSkin.vue"; import InformationSkin from "../informationskin/InformationSkin.vue";
import SelfService from "../selfservice/SelfService.vue" import SelfService from "../selfservice/SelfService.vue";
import DesSelfService from "../desSelfservice/DesSelfService.vue";
import SignDevicekin from "../signdeviceskin/SignDeviceSkin.vue";
import { uploadFile, skinSave, getTemplateList } from "@/services/surface"; import { uploadFile, skinSave, getTemplateList } from "@/services/surface";
import html2canvas from "html2canvas"; import html2canvas from "html2canvas";
import { Empty } from "ant-design-vue"; import { Empty } from "ant-design-vue";
import { mapState } from "vuex";
export default { export default {
components: { components: {
...@@ -202,7 +205,9 @@ export default { ...@@ -202,7 +205,9 @@ export default {
SampleFormSkin, SampleFormSkin,
WriteFormSkin, WriteFormSkin,
InformationSkin, InformationSkin,
SelfService SelfService,
DesSelfService,
SignDevicekin,
}, },
props: { props: {
isShow: { isShow: {
...@@ -224,7 +229,6 @@ export default { ...@@ -224,7 +229,6 @@ export default {
formLoading: false, formLoading: false,
simpleImage: Empty.PRESENTED_IMAGE_SIMPLE, simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
accept: "image/jpeg,image/png,image/gif", // 上传类型 accept: "image/jpeg,image/png,image/gif", // 上传类型
facilityInfo: {}, // 设备信息
skinTemplate: [], // 皮肤模板列表 skinTemplate: [], // 皮肤模板列表
curSkinTemplate: undefined, //当前选择皮肤模板 curSkinTemplate: undefined, //当前选择皮肤模板
isEdit: false, // 是否编辑状态 isEdit: false, // 是否编辑状态
...@@ -264,7 +268,7 @@ export default { ...@@ -264,7 +268,7 @@ export default {
}, },
component() { component() {
let str = ""; let str = "";
switch (this.facilityInfo.productName) { switch (this.curProduct.productName) {
case "排号机": case "排号机":
str = "LandscapeMode"; str = "LandscapeMode";
break; break;
...@@ -278,7 +282,7 @@ export default { ...@@ -278,7 +282,7 @@ export default {
str = "CentralizeSkin"; str = "CentralizeSkin";
break; break;
case "导视机": case "导视机":
// str = "CentralizeSkin"; str = "SignDevicekin";
break; break;
case "评价器": case "评价器":
str = "AppraiseSkin"; str = "AppraiseSkin";
...@@ -295,12 +299,13 @@ export default { ...@@ -295,12 +299,13 @@ export default {
case "信息发布终端": case "信息发布终端":
str = "InformationSkin"; str = "InformationSkin";
break; break;
case "桌面式自助终端":
str = "DesSelfService";
break;
} }
return str; return str;
}, },
displayer() { ...mapState("site", ["imageResolution", "curProduct"]),
return this.$store.state.site.imageResolution;
},
}, },
created() {}, created() {},
watch: { watch: {
...@@ -321,11 +326,6 @@ export default { ...@@ -321,11 +326,6 @@ export default {
this.loading = false; this.loading = false;
this.skinTemplate = []; this.skinTemplate = [];
this.curSkinTemplate = undefined; this.curSkinTemplate = undefined;
this.facilityInfo = {};
},
// 获取设备信息
getFacilityInfo(info) {
this.facilityInfo = info;
}, },
// 获取皮肤模板 // 获取皮肤模板
async getTemplateList(search = {}) { async getTemplateList(search = {}) {
...@@ -333,7 +333,7 @@ export default { ...@@ -333,7 +333,7 @@ export default {
let res = await getTemplateList({ let res = await getTemplateList({
page: 1, page: 1,
size: -1, size: -1,
productId: this.facilityInfo.productId, productId: this.curProduct.productId,
...search, ...search,
}); });
let { data } = res.data.data; let { data } = res.data.data;
...@@ -403,7 +403,6 @@ export default { ...@@ -403,7 +403,6 @@ export default {
html2canvas(conponentsId, { html2canvas(conponentsId, {
backgroundColor: null, backgroundColor: null,
useCORS: true, useCORS: true,
dpi: window.devicePixelRatio * 4, //设备像素比
width: width, width: width,
height: height, height: height,
scale: 0.9, scale: 0.9,
...@@ -425,7 +424,7 @@ export default { ...@@ -425,7 +424,7 @@ export default {
if (code === 1) { if (code === 1) {
this.formData.previewImagePath = res.data.url; this.formData.previewImagePath = res.data.url;
let result = await skinSave({ let result = await skinSave({
...this.facilityInfo, ...this.curProduct,
...this.formData, ...this.formData,
}); });
let { code, msg } = result.data; let { code, msg } = result.data;
......
<template>
<div class="skin-box">
<!-- 导视机 横板 -->
<div
:id="conponentsId"
v-if="imageResolution === '1'"
class="across-skin flex flexc aic"
>
<!-- 头部 -->
<div class="header flex aic jcb">
<div class="left flex aic">
<div
class="title"
:style="{
color: filterItem('2', 0),
}"
>
导视查询系统
</div>
</div>
<div
class="right flex aic"
:style="{
color: filterItem('3', 0),
}"
>
<div class="time">10:32</div>
<div class="flex flexc">
<span>2023/02/16</span>
<span>星期四</span>
</div>
</div>
</div>
<div class="main flex aic jcb flex1">
<div
class="info flex aic jcc"
:style="{
background: filterItem('10', 0),
}"
:class="{ border: !filterItem('10', 0) }"
>
信息窗口
</div>
</div>
<!-- 底部 -->
<div class="footer mt20 flex jcb">
<div
v-for="v in 5"
:key="v"
class="footer-item flex aic jcc"
:style="{
background: filterItem('4', 0),
color: filterItem('7', 0),
}"
:class="{ border: !filterItem('4', 0) }"
>
应用
</div>
</div>
</div>
<!-- 空数据显示 -->
<div class="empty flex aic jcc" v-else>
<a-empty
:image="require('../../../../assets/img/original.png')"
:image-style="{
height: '80px',
}"
>
<span slot="description"> <a href="#API">暂无皮肤模板</a> </span>
</a-empty>
</div>
</div>
</template>
<script>
export default {
props: {
skinFieldList: {
type: Array,
required: true,
default: () => {
return [];
},
},
imageResolution: {
required: true,
default: "1",
},
conponentsId: {
required: true,
type: String,
},
},
data() {
return {
api: process.env.VUE_APP_API_IMG_URL,
};
},
methods: {
// 过滤属性类型
filterItem(type, index) {
let arr = this.skinFieldList.filter((v) => {
return v.remark == type;
});
if (arr.length) {
return this.filterValueType(arr[index]);
} else {
return "";
}
},
// 过滤属性值类型
filterValueType(info = {}) {
let value = "";
if (info.fieldType !== "" && info.fieldType === "1" && info.fieldValue) {
value = info.fieldValue;
} else if (
info.fieldType !== "" &&
info.fieldType === "2" &&
info.fieldValue
) {
value = `url(${this.api + info.fieldValue})`;
}
return value;
},
},
};
</script>
<style lang="less" scoped>
.across-skin {
width: 1000px;
height: 562.5px;
background: linear-gradient(#26c5ff, #2c66ff);
background-repeat: no-repeat !important ;
background-position: center !important ;
background-size: cover !important ;
.border {
border: 1px dashed #ececec;
}
.header {
width: 100%;
color: #fff;
padding: 20px;
.title {
font-size: 30px;
font-weight: 600;
}
.right {
.time {
font-size: 26px;
font-weight: 600;
margin-right: 10px;
}
}
}
.main {
width: 100%;
padding: 20px;
margin-top: 10px;
color: #fff;
.info {
width: 39%;
height: 100%;
padding: 10px;
border-radius: 4px;
background-repeat: no-repeat !important;
background-size: 100% 100% !important;
}
}
.footer {
width: 100%;
height: 150px;
padding: 20px;
padding-top: 0px;
color: #fff;
.footer-item {
width: 19%;
height: 90px;
border-radius: 4px;
font-size: 18px;
font-weight: 600;
background-repeat: no-repeat !important;
background-size: 100% 100% !important;
}
}
}
</style>
\ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
<div class="left flex flexc jcc aic"> <div class="left flex flexc jcc aic">
<p class="title">异地社保</p> <p class="title">异地社保</p>
<p class="code" :style="{ color: filterItem('7', 0) }">A08</p> <p class="code" :style="{ color: filterItem('7', 0) }">A08</p>
<p><img width="100" src="../../../../assets/img/lvma.png" /></p> <!-- <p><img width="100" src="../../../../assets/img/lvma.png" /></p> -->
</div> </div>
<div class="right flex1 flex flexc aic"> <div class="right flex1 flex flexc aic">
<div class="header flex aic jcc"> <div class="header flex aic jcc">
......
...@@ -63,6 +63,40 @@ const options = { ...@@ -63,6 +63,40 @@ const options = {
invisible: true, invisible: true,
}, },
component: () => import("@/pages/basicset/business/business"), component: () => import("@/pages/basicset/business/business"),
redirect: "/business/businessmanage",
children: [
// 业务管理
{
path: "businessmanage",
meta: {
invisible: true,
},
component: () =>
import(
"@/pages/basicset/business/components/businessTabs1"
),
},
{
path: "mattermanage",
meta: {
invisible: true,
},
component: () =>
import(
"@/pages/basicset/business/components/businessTabs2"
),
},
{
path: "businessinmanage",
meta: {
invisible: true,
},
component: () =>
import(
"@/pages/basicset/business/components/businessTabs3"
),
},
],
}, },
{ {
path: "addmatter", path: "addmatter",
...@@ -159,13 +193,63 @@ const options = { ...@@ -159,13 +193,63 @@ const options = {
path: "", path: "",
name: "应用集市", name: "应用集市",
component: () => import("@/pages/basicset/appmarket/AppMarket"), component: () => import("@/pages/basicset/appmarket/AppMarket"),
meta: { invisible: true, keepAlive: true }, meta: { invisible: true },
redirect: "/appmarket/terminalapp",
children: [
{
path: "terminalapp",
component: () =>
import("@/pages/basicset/appmarket/components/TerminalApp"),
meta: {
invisible: true,
// keepAlive: true,
},
},
{
path: "moveapp",
component: () =>
import("@/pages/basicset/appmarket/components/MoveApp"),
meta: {
invisible: true,
// keepAlive: true,
},
},
],
}, },
{ {
path: "appdetails", path: "appdetails",
name: "应用详情", name: "应用详情",
component: () => import("@/pages/basicset/appmarket/AppDetails"), component: () => import("@/pages/basicset/appmarket/AppDetails"),
meta: { invisible: true }, meta: { invisible: true },
redirect: "/appmarket/appdetails/appdetailspage",
children: [
{
path: "appdetailspage",
component: () =>
import(
"@/pages/basicset/appmarket/components/AppDetailsPage"
),
meta: {
invisible: true,
},
},
{
path: "dataupdate",
component: () =>
import("@/pages/basicset/appmarket/components/DataUpdate"),
meta: {
invisible: true,
},
},
{
path: "fieldconfig",
component: () =>
import("@/pages/basicset/appmarket/components/FieldConfig"),
meta: {
invisible: true,
},
},
],
}, },
], ],
}, },
......
...@@ -2,14 +2,23 @@ import Vue from "vue"; ...@@ -2,14 +2,23 @@ import Vue from "vue";
import Vuex from "vuex"; import Vuex from "vuex";
import modules from "./modules"; import modules from "./modules";
import createPersistedState from "vuex-persistedstate"; import createPersistedState from "vuex-persistedstate";
import SecureLS from "secure-ls";
var ls = new SecureLS({ isCompression: false });
Vue.use(Vuex); Vue.use(Vuex);
const store = new Vuex.Store({ const store = new Vuex.Store({
modules, modules,
// 持久化插件 // 持久化插件
plugins: [ plugins: [
// createPersistedState({
// storage: window.sessionStorage,
// }),
createPersistedState({ createPersistedState({
storage: window.sessionStorage, key: "info",
storage: {
getItem: (key) => ls.get(key),
setItem: (key, value) => ls.set(key, value),
removeItem: (key) => ls.remove(key),
},
}), }),
], ],
}); });
......
...@@ -6,6 +6,12 @@ export default { ...@@ -6,6 +6,12 @@ export default {
SiteTree: [], // 站点树 SiteTree: [], // 站点树
appTemplate: [], // 应用模板属性 appTemplate: [], // 应用模板属性
matterDict: {}, // 事项字典 matterDict: {}, // 事项字典
token: "",
userInfo: {}, // 用户信息
appDict: {}, // 应用字典
curSkin: {}, // 当前选中预览皮肤
curSkinIndex: 0, // 当前选中皮肤索引
curProduct: {}, // 皮肤设置当前选中产品
}, },
getters: { getters: {
SiteTree(state) { SiteTree(state) {
...@@ -17,8 +23,29 @@ export default { ...@@ -17,8 +23,29 @@ export default {
matterDict(state) { matterDict(state) {
return state.matterDict; return state.matterDict;
}, },
token(state) {
return state.token;
},
userInfo(state) {
return state.userInfo;
},
appDict(state) {
return state.appDict;
},
}, },
mutations: { mutations: {
SET_curProduct(state, curProduct) {
state.curProduct = curProduct;
},
SET_curSkinIndex(state, curSkinIndex) {
state.curSkinIndex = curSkinIndex;
},
SET_appDict(state, appDict) {
state.appDict = appDict;
},
SET_curSkin(state, curSkin) {
state.curSkin = curSkin;
},
SET_appTemplate(state, appTemplate) { SET_appTemplate(state, appTemplate) {
state.appTemplate = appTemplate; state.appTemplate = appTemplate;
}, },
......
// 根据字典过滤数据
export const filterItems = (key, dict = {}) => {
let val = "";
Object.keys(dict).forEach((keys) => {
if (key == keys) {
val = dict[keys];
}
});
return val;
};
// 对象转对象数组
export const transverter = (obj) => {
return Object.keys(obj).map((v) => {
return {
id: v,
name: obj[v],
};
});
};
...@@ -3833,6 +3833,11 @@ crypto-browserify@^3.11.0: ...@@ -3833,6 +3833,11 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0" randombytes "^2.0.0"
randomfill "^1.0.3" randomfill "^1.0.3"
crypto-js@^3.1.6:
version "3.3.0"
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
crypto-random-string@^2.0.0: crypto-random-string@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-2.0.0.tgz?cache=0&sync_timestamp=1583560482221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcrypto-random-string%2Fdownload%2Fcrypto-random-string-2.0.0.tgz" resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-2.0.0.tgz?cache=0&sync_timestamp=1583560482221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcrypto-random-string%2Fdownload%2Fcrypto-random-string-2.0.0.tgz"
...@@ -7571,6 +7576,11 @@ lru-cache@^5.1.1: ...@@ -7571,6 +7576,11 @@ lru-cache@^5.1.1:
dependencies: dependencies:
yallist "^3.0.2" yallist "^3.0.2"
lz-string@^1.4.4:
version "1.5.0"
resolved "https://registry.npmmirror.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
make-dir@^2.0.0, make-dir@^2.1.0: make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567572251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz" resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567572251&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz"
...@@ -9964,6 +9974,14 @@ section-matter@^1.0.0: ...@@ -9964,6 +9974,14 @@ section-matter@^1.0.0:
extend-shallow "^2.0.1" extend-shallow "^2.0.1"
kind-of "^6.0.0" kind-of "^6.0.0"
secure-ls@^1.2.6:
version "1.2.6"
resolved "https://registry.npmmirror.com/secure-ls/-/secure-ls-1.2.6.tgz#0c54a4c7fa8317c3c101accbf6bb38d8d2072e46"
integrity sha512-g8vUSKl6elSfyAUHodybnNkuZW+mUYEOWj4SZIDg+xoQ1dq5ddktBoOFrtxQBUl88ZyAJOtGWQ1PRaOxkTAuZQ==
dependencies:
crypto-js "^3.1.6"
lz-string "^1.4.4"
select-hose@^2.0.0: select-hose@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz" resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment