Commit 6a14a35d authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents f7c78315 f9b967a9
......@@ -25,6 +25,7 @@
"china-division": "^2.5.0",
"clipboard": "^2.0.6",
"core-js": "^3.6.5",
"crypto-js": "^4.1.1",
"date-fns": "^2.14.0",
"echarts": "^5.2.2",
"element-china-area-data": "^5.0.2",
......
......@@ -31,16 +31,17 @@
border-bottom: 1px solid rgb(224, 224, 224) !important;
}
.ant-tabs-tab{
.ant-tabs-tab {
font-weight: bold;
color: rgba(0, 0, 0, 0.65);
i{
color:#1890ff
i {
color: #1890ff;
}
}
.ant-spin-nested-loading,.ant-spin-container{
width:100%;
height:100%;
.ant-spin-nested-loading,
.ant-spin-container {
width: 100%;
height: 100%;
}
/* 溢出表格滚动条 */
/* 表格 */
......@@ -56,10 +57,9 @@
tr:only-child > th:last-child {
border-right-color: #f0f0f0 !important;
}
}
.ant-table-placeholder{
width:calc(100% - 6px)
.ant-table-placeholder {
width: calc(100% - 6px);
}
.ant-table-header {
background: #fff;
......@@ -118,4 +118,11 @@
// align-items: center;
// justify-content:space-between;
// margin-bottom: 20px;
// }
\ No newline at end of file
// }
// 统一设置表格为空时的展示
.ant-table-tbody {
td:empty::after {
content: "--";
}
}
......@@ -2,13 +2,16 @@
<div style="margin-bottom: 25px" class="y-quill" :style="{ height: height }">
<!-- 图片上传组件辅助-->
<a-upload
name="uploadFile"
name="file"
:multiple="true"
:headers="headers"
:headers="{
Authorization: token,
}"
:show-upload-list="false"
:action="serverUrl"
@change="handleChange"
:before-upload="beforeUpload"
:accept="accept"
>
</a-upload>
<!-- 富文本 -->
......@@ -24,7 +27,7 @@
</div>
</template>
<script>
import local from "@/utils/local";
import { mapGetters } from "vuex";
// 工具栏配置
const toolbarOptions = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
......@@ -104,6 +107,7 @@ export default {
data() {
return {
accept: "image/png,image/gif,image/jpeg,video/mp4",
quillUpdateImg: false, // 根据图片上传状态来确定是否显示loading动画,刚开始是false,不显示
api: process.env.VUE_APP_API_BASE_URL + "/",
editorOption: {
......@@ -142,10 +146,7 @@ export default {
},
},
},
serverUrl: process.env.VUE_APP_API_BASE_URL + "/file/commonupload", // 这里写你要上传的图片服务器地址
headers: {
Authorization: local.getLocal("token"),
},
serverUrl: process.env.VUE_APP_API_BASE_URL + "/base/file/commonupload", // 这里写你要上传的图片服务器地址
};
},
computed: {
......@@ -157,6 +158,7 @@ export default {
this.$emit("input", val);
},
},
...mapGetters("site", ["token"]),
},
methods: {
onEditorBlur() {
......
......@@ -5,8 +5,7 @@
<div class="flex aic">
<router-link to="/" class="flex aic">
<img
class="mr10"
width="32"
class="mr10 logo"
:src="sysLogo ? api + sysLogo : require('@/assets/img/logo.png')"
/>
<h1 class="title">
......@@ -102,6 +101,10 @@ export default {
line-height: normal;
}
}
.logo {
height: 32px;
object-fit: contain;
}
.main {
height: calc(100vh - 64px);
padding: 0px 24px 24px;
......
......@@ -20,7 +20,7 @@
:wrapper-col="{ span: 22 }"
>
<a-form-model-item label="应用主题">
{{ filterItems(appInfo.appThemeName, appDict.appThemeName) }}
{{ filterItems(appInfo.appThemeName) }}
</a-form-model-item>
<a-form-model-item label="应用简介">
{{ appInfo.summary }}
......@@ -117,10 +117,10 @@ import {
getVersionList,
usedVersion,
previewVersion,
getCategoryList,
} from "@/services/market";
import CheckSite from "../modal/CheckSite.vue";
import { pageSizeOptions } from "@/config/pageConfig.js";
import { filterItems } from "@/utils";
import { mapGetters } from "vuex";
export default {
props: {
......@@ -153,9 +153,7 @@ export default {
{
title: "更新说明",
width: "40%",
customRender: (text) => {
return <span>{text.notes ? text.notes : "--"}</span>;
},
dataIndex: "notes",
},
{
title: "应用包",
......@@ -172,7 +170,6 @@ export default {
},
];
return {
filterItems,
api: process.env.VUE_APP_API_BASE_URL + "/",
columns,
appId: this.$route.query.id,
......@@ -185,16 +182,30 @@ export default {
form: {},
tableData: [],
siteVisible: false,
categoryList: [],
};
},
computed: {
...mapGetters("site", ["appDict"]),
},
created() {
this.getCategoryList();
this.getAppInfo();
this.getVersions();
},
methods: {
// 获取分类列表
async getCategoryList() {
let res = await getCategoryList({
page: 1,
size: -1,
siteId: this.siteId,
});
let { data } = res.data.data;
if (res.data.code === 1) {
this.categoryList = data;
}
},
// 获取应用详情
async getAppInfo() {
let res = await getAppInfo({ id: this.appId });
......@@ -275,6 +286,12 @@ export default {
this.$refs.CheckSite.getSiteList(siteList);
this.siteVisible = true;
},
filterItems(appThemeName) {
return (
this.categoryList.find((v) => v.id == appThemeName)?.categoryName ||
"--"
);
},
},
};
</script>
......
......@@ -213,7 +213,6 @@ export default {
...mapMutations("site", ["SET_appDict"]),
// 获取分类列表
async getCategoryList() {
this.loading = true;
let res = await getCategoryList({
page: 1,
size: -1,
......
......@@ -83,6 +83,32 @@
:placeholder="`请选择${v.fieldName}`"
valueFormat="YYYY-MM-DD"
/>
<!-- 年选择器 -->
<a-date-picker
mode="year"
v-else-if="v.fieldType == 'year'"
v-model="v.fieldValue"
:placeholder="`请选择${v.fieldName}`"
valueFormat="YYYY"
format="YYYY"
:open="isopen"
@openChange="handYearChange"
@panelChange="(value) => panelYearChange(value, v)"
/>
<!-- 月选择器 -->
<a-month-picker
v-else-if="v.fieldType == 'month'"
v-model="v.fieldValue"
:placeholder="`请选择${v.fieldName}`"
valueFormat="M"
/>
<!-- 周选择器 -->
<a-week-picker
v-else-if="v.fieldType == 'week'"
v-model="v.fieldValue"
:placeholder="`请选择${v.fieldName}`"
valueFormat="YYYY-WW"
/>
<!-- 多行文本输入框 -->
<a-textarea
v-else-if="v.fieldType == 'textarea'"
......@@ -170,6 +196,8 @@ export default {
appId: "",
appInfoFieldList: [],
},
isopen: false,
year: null,
};
},
computed: {
......@@ -269,6 +297,17 @@ export default {
changeCheckBox(vals, row) {
row.fieldValue = vals.join(",");
},
handYearChange(open) {
if (open) {
this.isopen = true;
} else {
this.isopen = false;
}
},
panelYearChange(value, row) {
row.fieldValue = this.$moment(value).format("YYYY");
this.isopen = false;
},
},
};
</script>
......@@ -289,20 +328,6 @@ export default {
padding: 24px;
flex: 1;
overflow-y: auto;
&::-webkit-scrollbar {
width: 12px;
overflow-y: auto;
}
&::-webkit-scrollbar-thumb {
border-radius: 6px;
background-color: rgba(144, 147, 153, 0.5);
}
&::-webkit-scrollbar-track {
border-radius: 6px;
background: #fff;
}
}
.content {
align-items: flex-start !important;
......
......@@ -98,6 +98,19 @@ const fieldTypeItem = [
value: "date",
label: "日期选择框",
},
{
value: "year",
label: "年选择框",
},
{
value: "month",
label: "月选择框",
},
{
value: "week",
label: "周选择框",
},
{
value: "radio",
label: "单选框",
......
......@@ -13,23 +13,42 @@
:class="{ active: i === isActive }"
v-for="(v, i) in productList"
:key="v.id"
@click="changeMenu(i, v)"
@click.self="changeMenu(i, v)"
style="width: 50%; text-align: center"
>
<div class="control" v-permission="[1]">
<a-space>
<a-icon type="edit" @click="handleEdit(v)" />
<a-icon type="delete" @click="handleDel(v.id)" />
</a-space>
</div>
{{ v.productName }}
</a-card-grid>
</div>
<!-- 编辑产品 -->
<AddDev
ref="AddDev"
:visible.sync="visible"
:title="title"
@addDev="getProductList"
></AddDev>
</div>
</template>
<script>
import { getProductList } from "@/services/surface";
import { getProductList, deleteProduct } from "@/services/surface";
import { mapMutations } from "vuex";
import AddDev from "../modal/AddDev.vue";
export default {
components: {
AddDev,
},
data() {
return {
productList: [], //产品列表
isActive: "",
visible: false,
title: "编辑产品",
};
},
created() {
......@@ -62,6 +81,38 @@ export default {
};
this.SET_curProduct(obj);
},
// 编辑产品
handleEdit(row) {
this.title = "编辑产品";
this.$refs.AddDev.onEdit(row);
this.visible = true;
},
// 删除产品
handleDel(id) {
let _this = this;
_this.$confirm({
title: "系统提示",
content: "删除不可恢复,确定要删除吗?",
okText: "确定",
okType: "danger",
cancelText: "取消",
centered: true,
icon: "exclamation-circle",
maskClosable: true,
async onOk() {
let res = await deleteProduct({ id });
let { code, msg } = res.data;
if (code === 1) {
_this.$message.success(msg);
_this.getProductList();
}
},
onCancel() {
console.log("Cancel");
},
});
console.log(id);
},
},
beforeDestroy() {
this.SET_curProduct({});
......@@ -74,6 +125,7 @@ export default {
height: 100%;
background-color: #fff;
}
.search-box {
padding: 15px 15px 0px;
}
......@@ -85,6 +137,9 @@ export default {
.active {
background-color: #1890ff;
color: #fff;
.anticon {
color: inherit;
}
}
}
/deep/.ant-card-grid {
......@@ -93,5 +148,23 @@ export default {
align-items: center;
justify-content: center;
cursor: pointer;
position: relative;
&:hover {
.control {
display: block;
}
}
}
.control {
position: absolute;
right: 10px;
top: 0px;
display: none;
.anticon-edit {
color: #03d76f;
}
.anticon-delete {
color: #fa4d4c;
}
}
</style>
\ No newline at end of file
......@@ -2,7 +2,7 @@
<div>
<a-modal
v-model="Visible"
title="新增设备"
:title="title"
@ok="handleOk"
@cancel="handleClose"
>
......@@ -17,11 +17,7 @@
<a-input placeholder="请输入设备名称" v-model="form.productName" />
</a-form-model-item>
<a-form-model-item label="设备编号" prop="productCode">
<a-input
type="password"
placeholder="请输入设备编号"
v-model="form.productCode"
/>
<a-input placeholder="请输入设备编号" v-model="form.productCode" />
</a-form-model-item>
<a-form-model-item label="备注" prop="productRemark">
<a-textarea
......@@ -44,6 +40,11 @@ export default {
type: Boolean,
default: false,
},
title: {
required: true,
type: String,
default: "新增设备",
},
},
data() {
return {
......@@ -88,9 +89,18 @@ export default {
},
// 关闭对话框
handleClose() {
this.$refs.form.resetFields();
this.$refs.form.clearValidate();
this.Visible = false;
},
// 新增
onAdd() {
Object.assign(this.form, this.$options.data().form);
this.form.id && this.$delete(this.form, "id");
},
// 编辑
onEdit(row) {
this.form = { ...row };
},
},
};
</script>
......
......@@ -3,7 +3,7 @@
<TabHeader label="皮肤管理">
<a-space>
<a-button v-permission="[1]" icon="plus" @click="addDev"
>新增设备</a-button
>新增产品</a-button
>
<a-button
type="primary"
......@@ -48,7 +48,12 @@
@addSkinSuccess="addSkinSuccess"
></AddSurface>
<!-- 新增设备 -->
<AddDev :visible.sync="addDevVisible" @addDev="addDevSuccess"></AddDev>
<AddDev
ref="AddDev"
:visible.sync="addDevVisible"
@addDev="addDevSuccess"
:title="title"
></AddDev>
</div>
</template>
......@@ -77,6 +82,7 @@ export default {
visible: false,
addDevVisible: false,
classifyList: [], //皮肤分类数据
title: "新增产品",
};
},
created() {
......@@ -113,8 +119,8 @@ export default {
},
// 编辑皮肤
editSkin(row) {
this.isShow = true;
this.$refs.AddSurface.onEdit(row);
this.isShow = true;
},
// 新增分类成功刷新数据
addCategorySuccess() {
......@@ -126,6 +132,8 @@ export default {
},
// 新增设备
addDev() {
this.title = "新增产品";
this.$refs.AddDev.onAdd();
this.addDevVisible = true;
},
// 新增设备成功
......
......@@ -2,8 +2,9 @@ import Vue from "vue";
import Vuex from "vuex";
import modules from "./modules";
import createPersistedState from "vuex-persistedstate";
import SecureLS from "secure-ls";
var ls = new SecureLS({ isCompression: false });
// import SecureLS from "secure-ls";
// var ls = new SecureLS({ isCompression: false });
import { SessionCrypto } from "@/utils/util";
Vue.use(Vuex);
const store = new Vuex.Store({
modules,
......@@ -15,9 +16,9 @@ const store = new Vuex.Store({
createPersistedState({
key: "info",
storage: {
getItem: (key) => ls.get(key),
setItem: (key, value) => ls.set(key, value),
removeItem: (key) => ls.remove(key),
getItem: (key) => SessionCrypto.getItem(key),
setItem: (key, value) => SessionCrypto.setItem(key, value),
removeItem: (key) => SessionCrypto.remove(key),
},
}),
],
......
import enquireJs from "enquire.js";
import CryptoJS from "crypto-js";
export function isDef(v) {
return v !== undefined && v !== null;
}
......@@ -62,3 +62,52 @@ export const extractTree = (arrs, childs, attrArr) => {
};
return getObj(arrs);
};
/**
* 加密存储临时数据并解析对象
*/
const aseKey = "**_FXxx_1234_KEY";
const KEY = "KEY_EXTRA";
export class SessionCrypto {
// 加密
static setItem(key = KEY, value = "") {
if (typeof key === "string") {
const stringify = JSON.stringify(value);
const encrypt = CryptoJS.AES.encrypt(
stringify,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString();
window.sessionStorage.setItem(key, encrypt);
return encrypt;
}
}
// 解密
static getItem(key = KEY) {
const ssStr = window.sessionStorage.getItem(key) || "";
try {
if (ssStr) {
const decrypt = CryptoJS.AES.decrypt(
ssStr,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString(CryptoJS.enc.Utf8);
const parseStr = JSON.parse(decrypt);
return parseStr;
}
return "";
} catch (e) {
return "";
}
}
// 删除
static remove(key) {
window.sessionStorage.removeItem(key);
}
}
......@@ -3676,6 +3676,11 @@ crypto-js@^3.1.6:
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
crypto-js@^4.1.1:
version "4.1.1"
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
crypto-random-string@^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"
......
......@@ -69,4 +69,7 @@ export default {
.ant-calendar-next-year-btn::after {
border-color: rgba(0, 0, 0, 1) !important;
}
.ant-progress-text {
color: #fff !important;
}
</style>
\ No newline at end of file
......@@ -776,4 +776,11 @@ img {
// }
// }
// }
// }
\ No newline at end of file
// }
// 统一设置表格为空时的展示
.ant-table-tbody {
td:empty::after {
content: "--";
}
}
\ No newline at end of file
<template>
<div id="indexLizi" class="particle-wavy"></div>
</template>
<script>
import * as THREE from "three";
export default {
name: "Pointwave",
props: {
amountX: {
type: Number,
default: 50,
},
amountY: {
type: Number,
default: 50,
},
color: {
type: String,
default: "#10cbff",
},
top: {
type: Number,
default: 350,
},
},
data() {
return {
count: 0,
// 用来跟踪鼠标水平位置
mouseX: 0,
windowHalfX: null,
// 相机
camera: null,
// 场景
scene: null,
// 批量管理粒子
particles: null,
// 渲染器
renderer: null,
};
},
mounted() {
this.init();
this.animate();
},
methods: {
init() {
const SEPARATION = 100;
const SCREEN_WIDTH = window.innerWidth;
const SCREEN_HEIGHT = window.innerHeight;
const container = document.createElement("div");
this.windowHalfX = window.innerWidth / 2;
container.style.position = "relative";
container.style.top = `${this.top}px`;
container.style.height = `${SCREEN_HEIGHT - this.top}px`;
document.getElementById("indexLizi").appendChild(container);
this.camera = new THREE.PerspectiveCamera(
75,
SCREEN_WIDTH / SCREEN_HEIGHT,
1,
10000
);
this.camera.position.z = 1000;
this.scene = new THREE.Scene();
const numParticles = this.amountX * this.amountY;
const positions = new Float32Array(numParticles * 3);
const scales = new Float32Array(numParticles);
// 初始化粒子位置和大小
let i = 0;
let j = 0;
for (let ix = 0; ix < this.amountX; ix++) {
for (let iy = 0; iy < this.amountY; iy++) {
positions[i] = ix * SEPARATION - (this.amountX * SEPARATION) / 2;
positions[i + 1] = 0;
positions[i + 2] = iy * SEPARATION - (this.amountY * SEPARATION) / 2;
scales[j] = 1;
i += 3;
j++;
}
}
const geometry = new THREE.BufferGeometry();
geometry.setAttribute(
"position",
new THREE.BufferAttribute(positions, 3)
);
geometry.setAttribute("scale", new THREE.BufferAttribute(scales, 1));
// 初始化粒子材质
const material = new THREE.ShaderMaterial({
uniforms: {
color: { value: new THREE.Color(this.color) },
},
vertexShader: `
attribute float scale;
void main() {
vec4 mvPosition = modelViewMatrix * vec4( position, 2.0 );
gl_PointSize = scale * ( 300.0 / - mvPosition.z );
gl_Position = projectionMatrix * mvPosition;
}
`,
fragmentShader: `
uniform vec3 color;
void main() {
if ( length( gl_PointCoord - vec2( 0.5, 0.5 ) ) > 0.475 ) discard;
gl_FragColor = vec4( color, 1.0 );
}
`,
});
this.particles = new THREE.Points(geometry, material);
this.scene.add(this.particles);
this.renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
this.renderer.setSize(container.clientWidth, container.clientHeight);
this.renderer.setPixelRatio(window.devicePixelRatio);
this.renderer.setClearAlpha(0);
container.appendChild(this.renderer.domElement);
window.addEventListener("resize", this.onWindowResize, {
passive: false,
});
document.addEventListener("mousemove", this.onDocumentMouseMove, {
passive: false,
});
document.addEventListener("touchstart", this.onDocumentTouchStart, {
passive: false,
});
document.addEventListener("touchmove", this.onDocumentTouchMove, {
passive: false,
});
},
render() {
this.camera.position.x += (this.mouseX - this.camera.position.x) * 0.05;
this.camera.position.y = 400;
this.camera.lookAt(this.scene.position);
const positions = this.particles.geometry.attributes.position.array;
const scales = this.particles.geometry.attributes.scale.array;
// 计算粒子位置及大小
let i = 0;
let j = 0;
for (let ix = 0; ix < this.amountX; ix++) {
for (let iy = 0; iy < this.amountY; iy++) {
positions[i + 1] =
Math.sin((ix + this.count) * 0.3) * 100 +
Math.sin((iy + this.count) * 0.5) * 100;
scales[j] =
(Math.sin((ix + this.count) * 0.3) + 1) * 8 +
(Math.sin((iy + this.count) * 0.5) + 1) * 8;
i += 3;
j++;
}
}
// 重新渲染粒子
this.particles.geometry.attributes.position.needsUpdate = true;
this.particles.geometry.attributes.scale.needsUpdate = true;
this.renderer.render(this.scene, this.camera);
this.count += 0.02;
},
animate() {
requestAnimationFrame(this.animate);
this.render();
// setInterval(() => {
// }, 50);
},
onDocumentMouseMove(event) {
this.mouseX = event.clientX - this.windowHalfX;
},
onDocumentTouchStart(event) {
if (event.touches.length === 1) {
this.mouseX = event.touches[0].pageX - this.windowHalfX;
}
},
onDocumentTouchMove(event) {
if (event.touches.length === 1) {
event.preventDefault();
this.mouseX = event.touches[0].pageX - this.windowHalfX;
}
},
onWindowResize() {
this.windowHalfX = window.innerWidth / 2;
this.camera.aspect = window.innerWidth / window.innerHeight;
this.camera.updateProjectionMatrix();
this.renderer.setSize(window.innerWidth, window.innerHeight);
},
},
};
</script>
<style lang="less" scoped>
.particle-wavy {
width: 100%;
height: 100%;
opacity: 0.3;
}
</style>
\ No newline at end of file
......@@ -2,9 +2,10 @@ import Vue from "vue";
import Vuex from "vuex";
import modules from "./modules";
import createPersistedState from "vuex-persistedstate";
import SecureLS from "secure-ls";
var ls = new SecureLS({ isCompression: false });
// import SecureLS from "secure-ls";
// var ls = new SecureLS({ isCompression: false });
import VuexReset from "@ianwalter/vuex-reset";
import { SessionCrypto } from "@/utils";
// import persistedState from 'vuex-persistedstate'
Vue.use(Vuex);
const store = new Vuex.Store({
......@@ -16,9 +17,9 @@ const store = new Vuex.Store({
createPersistedState({
key: "info",
storage: {
getItem: (key) => ls.get(key),
setItem: (key, value) => ls.set(key, value),
removeItem: (key) => ls.remove(key),
getItem: (key) => SessionCrypto.getItem(key),
setItem: (key, value) => SessionCrypto.setItem(key, value),
removeItem: (key) => SessionCrypto.remove(key),
},
}),
],
......
......@@ -16,3 +16,66 @@ export let encrypt = (str, keyStr, ivStr) => {
return encrypted.toString();
};
// 解密
export const decrypt = (word, keyStr, ivStr) => {
keyStr = keyStr ? keyStr : "0000000671595991";
ivStr = ivStr ? ivStr : "tdrdadq59tbss5n7";
let key = CryptoJS.enc.Utf8.parse(keyStr);
let iv = CryptoJS.enc.Utf8.parse(ivStr);
let decrypt = CryptoJS.AES.decrypt(word, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return decrypt.toString(CryptoJS.enc.Utf8);
};
/**
* 加密存储临时数据并解析对象
*/
const aseKey = "**_FXxx_1234_KEY";
const KEY = "KEY_EXTRA";
export class SessionCrypto {
// 加密
static setItem(key = KEY, value = "") {
if (typeof key === "string") {
const stringify = JSON.stringify(value);
const encrypt = CryptoJS.AES.encrypt(
stringify,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString();
window.sessionStorage.setItem(key, encrypt);
return encrypt;
}
}
// 解密
static getItem(key = KEY) {
const ssStr = window.sessionStorage.getItem(key) || "";
try {
if (ssStr) {
const decrypt = CryptoJS.AES.decrypt(
ssStr,
CryptoJS.enc.Utf8.parse(aseKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString(CryptoJS.enc.Utf8);
const parseStr = JSON.parse(decrypt);
return parseStr;
}
return "";
} catch (e) {
return "";
}
}
// 删除
static remove(key) {
window.sessionStorage.removeItem(key);
}
}
......@@ -158,7 +158,7 @@ export default {
this.particles.geometry.attributes.position.needsUpdate = true;
this.particles.geometry.attributes.scale.needsUpdate = true;
this.renderer.render(this.scene, this.camera);
this.count += 0.1;
this.count += 0.02;
},
animate() {
requestAnimationFrame(this.animate);
......
<template>
<!-- 页面分析 -->
<div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item>
<a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
{{item.title}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
</a-form-model>
<div class="box">
<div class="left-dv">
<div>页面访问指标趋势</div>
<div class="txt-dv">
<div>
<div class="num">{{data ? data.accessSum : 0}}</div>
<div>页面累计访问次数</div>
</div>
<div>
<div class="num">{{data ? data.dayAccessAvg : 0}}</div>
<div>日均访问次数</div>
</div>
</div>
<div id="number"></div>
</div>
<div class="right-dv">
<div class="page-box">
<div class="page-dv">
<div>人均访问深度</div>
<div class="page-num">{{data ? data.depthAvg : 0}}</div>
</div>
<div class="page-dv">
<div>次均访问深度</div>
<div class="page-num">{{data ? data.singleDepth : 0}}</div>
</div>
</div>
<div class="chatrs-dv">
<div>页面访问次数TOP10</div>
<div id="pages"></div>
</div>
</div>
</div>
</div>
<!-- 页面分析 -->
<div class="page">
<a-form-model
:model="queryform"
:label-col="labelCol"
:wrapper-col="wrapperCol"
layout="inline"
>
<a-form-model-item>
<a-select
v-model="queryform.productId"
style="width: 200px"
placeholder="选择产品"
>
<a-select-option
:value="item.id"
v-for="(item, index) in product"
:key="index"
>
{{ item.title }}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker
valueFormat="yyyy-MM-DD"
v-model="time"
style="width: 300px"
:allowClear="false"
/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
</a-form-model>
<div class="box">
<div class="left-dv">
<div>页面访问指标趋势</div>
<div class="txt-dv">
<div>
<div class="num">{{ data ? data.accessSum : 0 }}</div>
<div>页面累计访问次数</div>
</div>
<div>
<div class="num">{{ data ? data.dayAccessAvg : 0 }}</div>
<div>日均访问次数</div>
</div>
</div>
<div id="number"></div>
</div>
<div class="right-dv">
<div class="page-box">
<div class="page-dv">
<div>人均访问深度</div>
<div class="page-num">{{ data ? data.depthAvg : 0 }}</div>
</div>
<div class="page-dv">
<div>次均访问深度</div>
<div class="page-num">{{ data ? data.singleDepth : 0 }}</div>
</div>
</div>
<div class="chatrs-dv">
<div>页面访问次数TOP10</div>
<div id="pages"></div>
</div>
</div>
</div>
</div>
</template>
<script>
import product from "../mixins/product"
import * as echarts from 'echarts'
import {getAccessAnalyse} from '@/api/dataActuary.js'
import moment from 'moment';
export default {
mixins:[product],
data() {
return {
queryform: {
productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD')
},
time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
product:[{
title:'排队机',
id:1
}],
labelCol: {
span: 1
},
wrapperCol: {
span: 14
},
data:null
}
},
mounted() {
this.getData()
},
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
getAccessAnalyse(this.queryform).then(res=>{
this.data = res.data
let lineX = res.data.accessTrend.map(item=>item.accessDay)
let lineY = res.data.accessTrend.map(item=>item.accessCount)
let barX = res.data.pageAccessTop.map(item=>item.accessCount)
let barY = res.data.pageAccessTop.map(item=>item.pageName)
this.initLine(lineX,lineY)
this.initBar(barX,barY)
})
},
initBar(barX,barY) {
let chartDom = document.getElementById('pages')
let myChart = echarts.init(chartDom);
myChart.setOption({
legend: {
bottom: 0,
itemWidth:10,
itemHeight:10
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
color:['#29D090'],
grid: {
top:'3%',
left: '3%',
right: '3%',
bottom: '10%',
containLabel: true
},
xAxis: {
type: 'value',
boundaryGap: [0, 0.01]
},
yAxis: {
type: 'category',
data: barY,
axisTick: {
show: false
}
},
series: [{
name: '访问次数',
type: 'bar',
data: barX,
barWidth:10
}
]
})
},
initLine(lineX,lineY) {
let chartDom = document.getElementById('number')
let myChart = echarts.init(chartDom);
myChart.setOption({
legend: {
bottom: 0
},
grid: {
left: '10%',
rigth: 0,
top: '5%',
bottom: '15%'
},
xAxis: {
type: 'category',
data: lineX,
axisTick: {
show: false
}
},
yAxis: {
type: 'value'
},
series: [{
name: '页面访问次数',
data: lineY,
type: 'line',
markLine: {
data: [{
type: 'average',
name: '均值'
}],
label: {
position: 'insideStartTop',
formatter: '{b}:{c}'
}
}
}]
})
}
}
};
import product from "../mixins/product";
import * as echarts from "echarts";
import { getAccessAnalyse } from "@/api/dataActuary.js";
import moment from "moment";
export default {
mixins: [product],
data() {
return {
queryform: {
productId: 1,
dateTimeStart: moment().format("yyyy-MM-DD"),
dateTimeEnd: moment().format("yyyy-MM-DD"),
},
time: [moment().format("yyyy-MM-DD"), moment().format("yyyy-MM-DD")],
product: [
{
title: "排队机",
id: 1,
},
],
labelCol: {
span: 1,
},
wrapperCol: {
span: 14,
},
data: null,
};
},
mounted() {
this.getData();
},
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null;
this.queryform.dateTimeEnd = this.time ? this.time[1] : null;
getAccessAnalyse(this.queryform).then((res) => {
this.data = res.data;
let lineX = res.data.accessTrend.map((item) => item.accessDay);
let lineY = res.data.accessTrend.map((item) => item.accessCount);
let barX = res.data.pageAccessTop.map((item) => item.accessCount);
let barY = res.data.pageAccessTop.map((item) => item.pageName);
this.initLine(lineX, lineY);
this.initBar(barX, barY);
});
},
initBar(barX, barY) {
let chartDom = document.getElementById("pages");
let myChart = echarts.init(chartDom);
myChart.setOption({
legend: {
bottom: 0,
itemWidth: 10,
itemHeight: 10,
},
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
color: ["#29D090"],
grid: {
top: "3%",
left: "3%",
right: "3%",
bottom: "10%",
containLabel: true,
},
xAxis: {
type: "value",
boundaryGap: [0, 0.01],
},
yAxis: {
type: "category",
data: barY,
axisTick: {
show: false,
},
},
series: [
{
name: "访问次数",
type: "bar",
data: barX,
barWidth: 10,
},
],
});
},
initLine(lineX, lineY) {
let chartDom = document.getElementById("number");
let myChart = echarts.init(chartDom);
myChart.setOption({
legend: {
bottom: 0,
},
grid: {
left: "10%",
rigth: 0,
top: "5%",
bottom: "15%",
},
xAxis: {
type: "category",
data: lineX,
axisTick: {
show: false,
},
},
yAxis: {
type: "value",
},
series: [
{
name: "页面访问次数",
data: lineY,
type: "line",
markLine: {
data: [
{
type: "average",
name: "均值",
},
],
label: {
position: "insideStartTop",
formatter: "{b}:{c}",
},
},
},
],
});
},
},
};
</script>
<style lang="less" scoped>
.page {
height: calc(100% - 50px);
.page {
height: calc(100% - 50px);
/deep/.ant-form {
padding: 15px;
border-bottom: solid 1px #efefef;
}
/deep/.ant-form {
padding: 15px;
border-bottom: solid 1px #efefef;
}
.box {
height: calc(100% - 70px);
display: flex;
.box {
height: calc(100% - 70px);
display: flex;
.left-dv {
width: 55%;
min-height: 100%;
border-right: solid 1px #efefef;
padding: 15px;
.left-dv {
width: 55%;
min-height: 100%;
border-right: solid 1px #efefef;
padding: 15px;
.txt-dv {
display: flex;
justify-content: space-around;
margin: 50px;
text-align: center;
.txt-dv {
display: flex;
justify-content: space-around;
margin: 50px;
text-align: center;
.num {
font-size: 24px;
margin-bottom: 10px;
}
}
.num {
font-size: 24px;
margin-bottom: 10px;
}
}
#number {
height: 350px;
}
}
#number {
height: 350px;
}
}
.right-dv {
flex: 1;
padding: 15px;
.right-dv {
flex: 1;
padding: 15px;
.page-box {
display: flex;
justify-content: space-between;
margin: 20px 0;
.page-box {
display: flex;
justify-content: space-between;
margin: 20px 0;
.page-dv {
width: calc(50% - 15px);
height: 140px;
background-color: #F5FAFF;
padding: 30px;
box-sizing: border-box;
.page-dv {
width: calc(50% - 15px);
height: 140px;
background-color: #f5faff;
padding: 30px;
box-sizing: border-box;
.page-num {
font-size: 24px;
margin-top: 20px;
}
}
}
.page-num {
font-size: 24px;
margin-top: 20px;
}
}
}
.chatrs-dv {
padding: 20px;
background-color: #F6FBF7;
}
.chatrs-dv {
padding: 20px;
background-color: #f6fbf7;
}
#pages {
height: 290px;
}
}
}
}
</style>
\ No newline at end of file
#pages {
height: 290px;
}
}
}
}
</style>
<template>
<!-- 路径分析 -->
<div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item>
<a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
{{item.title}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
</a-form-model>
<div id="path"></div>
</div>
<!-- 路径分析 -->
<div class="page">
<a-form-model
:model="queryform"
:label-col="labelCol"
:wrapper-col="wrapperCol"
layout="inline"
>
<a-form-model-item>
<a-select
v-model="queryform.productId"
style="width: 200px"
placeholder="选择产品"
>
<a-select-option
:value="item.id"
v-for="(item, index) in product"
:key="index"
>
{{ item.title }}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker
valueFormat="yyyy-MM-DD"
v-model="time"
style="width: 300px"
:allowClear="false"
/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
</a-form-model>
<div id="path"></div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import product from "../mixins/product"
import {getWayAccessAnalyse} from '@/api/dataActuary.js'
import moment from 'moment';
export default {
mixins:[product],
data() {
return {
queryform: {
productId: 1,
dateTimeStart:moment().format('yyyy-MM-DD'),
dateTimeEnd:moment().format('yyyy-MM-DD')
},
time:[moment().format('yyyy-MM-DD'),moment().format('yyyy-MM-DD')],
product:[{
title:'排队机',
id:1
}],
labelCol: {
span: 1
},
wrapperCol: {
span: 14
},
}
},
mounted() {
this.getData()
},
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeStart = this.time ? this.time[1] : null
getWayAccessAnalyse(this.queryform).then(res=>{
let data = res.data.data.map(item=>({name:item.name}))
let links = res.data.links.map(item=>({
source:item.sourceName,
target:item.targetName,
value:item.value,
lineStyle:{
color:'source'
}
}))
this.init(data,links)
})
},
uniqueFunc(arr, uniId){
const res = new Map();
return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));
},
init(data,links) {
let chartDom = document.getElementById('path')
let myChart = echarts.init(chartDom);
myChart.setOption({
series: {
type: 'sankey',
layout: 'none',
emphasis: {
focus: 'adjacency'
},
color:['#FFCAC4','#6D86DE','#409AFE','#4DB3EA','#07CF8C'],
nodeWidth:10,
data: data,
links: links
}
})
}
}
};
import * as echarts from "echarts";
import product from "../mixins/product";
import { getWayAccessAnalyse } from "@/api/dataActuary.js";
import moment from "moment";
export default {
mixins: [product],
data() {
return {
queryform: {
productId: 1,
dateTimeStart: moment().format("yyyy-MM-DD"),
dateTimeEnd: moment().format("yyyy-MM-DD"),
},
time: [moment().format("yyyy-MM-DD"), moment().format("yyyy-MM-DD")],
product: [
{
title: "排队机",
id: 1,
},
],
labelCol: {
span: 1,
},
wrapperCol: {
span: 14,
},
myChart: null,
};
},
created() {
this.$nextTick(() => {
this.getData();
});
},
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null;
this.queryform.dateTimeStart = this.time ? this.time[1] : null;
getWayAccessAnalyse(this.queryform).then((res) => {
let newobj = {};
let data = res.data.data.reduce((preVal, curVal) => {
newobj[curVal.name]
? ""
: (newobj[curVal.name] = preVal.push(curVal));
return preVal;
}, []);
// let data = res.data.data.map((item, i) =>
// item.code != "/sceneSignIn"
// ? {
// name: item.name,
// }
// : ""
// );
let links = res.data.links.map((item) => ({
source: item.sourceName,
target: item.targetName,
value: item.value,
lineStyle: {
color: "source",
},
}));
data = data.filter((v) => v);
links = links.filter((v) => v.target != "首页" && v.target != v.source);
this.init(data, links);
});
},
uniqueFunc(arr, uniId) {
const res = new Map();
return arr.filter(
(item) => !res.has(item[uniId]) && res.set(item[uniId], 1)
);
},
init(data, links) {
if (
this.myChart != null &&
this.myChart != "" &&
this.myChart != undefined
) {
this.myChart.dispose(); //销毁
}
this.myChart = echarts.init(document.getElementById("path"));
this.myChart.setOption({
series: {
type: "sankey",
layout: "none",
emphasis: {
focus: "adjacency",
},
color: ["#FFCAC4", "#6D86DE", "#409AFE", "#4DB3EA", "#07CF8C"],
nodeWidth: 10,
data: data,
links: links,
},
});
window.addEventListener("resize", () => {
if (this.myChart) {
this.myChart.resize();
}
});
},
},
};
</script>
<style lang="less" scoped>
.page{
height: calc(100% - 50px);
display: flex;
flex-direction: column;
/deep/.ant-form {
padding: 15px;
}
#path{
flex: 1;
width: 70%;
margin: 0 auto;
}
}
</style>
\ No newline at end of file
.page {
height: calc(100% - 50px);
display: flex;
flex-direction: column;
/deep/.ant-form {
padding: 15px;
}
#path {
flex: 1;
width: 70%;
margin: 0 auto;
}
}
</style>
......@@ -217,12 +217,14 @@ export default {
display: flex;
.img-dv {
width: 60%;
flex: 1;
margin: 100px;
height: 600px;
position: relative;
img {
width: 100%;
height: 100%;
}
#queuing {
......@@ -236,7 +238,7 @@ export default {
}
.list-dv {
width: 40%;
width: 55%;
min-height: 100%;
border-left: solid 1px #efefef;
box-sizing: border-box;
......
<template>
<!-- 使用习惯分析 -->
<div class="page">
<a-form-model :model="queryform" :label-col="labelCol" :wrapper-col="wrapperCol" layout="inline">
<a-form-model-item>
<a-select v-model="queryform.productId" style="width: 200px" placeholder="选择产品">
<a-select-option :value="item.id" v-for="(item,index) in product" :key="index">
{{item.title}}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker valueFormat="yyyy-MM-DD" v-model="time" style="width: 300px" :allowClear="false"/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
</a-form-model>
<div class="charts-box">
<!-- <div id="canal"></div> -->
<div id="type"></div>
<!-- <div id="way"></div> -->
</div>
</div>
<!-- 使用习惯分析 -->
<div class="page">
<a-form-model
:model="queryform"
:label-col="labelCol"
:wrapper-col="wrapperCol"
layout="inline"
>
<a-form-model-item>
<a-select
v-model="queryform.productId"
style="width: 200px"
placeholder="选择产品"
>
<a-select-option
:value="item.id"
v-for="(item, index) in product"
:key="index"
>
{{ item.title }}
</a-select-option>
</a-select>
</a-form-model-item>
<a-form-model-item>
<a-range-picker
valueFormat="yyyy-MM-DD"
v-model="time"
style="width: 300px"
:allowClear="false"
/>
</a-form-model-item>
<a-form-model-item>
<a-button type="primary" class="addclass" @click="getData">
开始分析
</a-button>
</a-form-model-item>
</a-form-model>
<div class="charts-box">
<!-- <div id="canal"></div> -->
<div id="type"></div>
<!-- <div id="way"></div> -->
</div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import moment from 'moment';
import {getUsageCensus} from '@/api/dataActuary.js'
import product from "../mixins/product"
export default {
mixins:[product],
data() {
return {
queryform: {
productId: 1,
dateTimeStart: moment().format('yyyy-MM-DD'),
dateTimeEnd: moment().format('yyyy-MM-DD'),
pageCode: '/'
},
time: [moment().format('yyyy-MM-DD'), moment().format('yyyy-MM-DD')],
product: [{
title: '排队机',
id: 1
}],
labelCol: {
span: 1
},
wrapperCol: {
span: 14
},
}
},
mounted() {
this.getData()
},
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null
this.queryform.dateTimeEnd = this.time ? this.time[1] : null
getUsageCensus(this.queryform).then(res=>{
let data = res.data.map(({businessName,propValue})=>({name:businessName,value:propValue * 100}))
this.initType(data)
})
},
initWay(){
let chartDom = document.getElementById('way')
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: '取号方式分析',
left: 'center'
},
tooltip: {
trigger: 'item',
},
legend: {
bottom: 0,
left: 'center',
itemWidth: 10,
itemHeight: 10
},
color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'],
series: [{
name: 'Access From',
type: 'pie',
radius: '65%',
label: {
normal: {
formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比)
}
},
labelLine: {
normal: {
length: 1
}
},
data: [{
value: 1048,
name: 'Search Engine'
},
{
value: 735,
name: 'Direct'
},
{
value: 580,
name: 'Email'
},
{
value: 484,
name: 'Union Ads'
},
{
value: 300,
name: 'Video Ads'
}
],
}]
})
},
initType(data) {
console.log(data)
let chartDom = document.getElementById('type')
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: this.queryform.productId==1?'取号类型分析':'功能使用分布',
left: 'center'
},
tooltip: {
trigger: 'item',
},
legend: {
bottom: 0,
left: 'center',
itemWidth: 10,
itemHeight: 10
},
color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'],
series: [{
type: 'pie',
radius: '65%',
label: {
normal: {
formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比)
}
},
labelLine: {
normal: {
length: 1
}
},
data: data
}]
})
},
initCanal() {
let chartDom = document.getElementById('canal')
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: '取号渠道分析',
left: 'center'
},
tooltip: {
trigger: 'item',
},
legend: {
bottom: 0,
left: 'center',
itemWidth: 10,
itemHeight: 10
},
color: ['#6395F9', '#64DAAB', '#647798', '#F6C02D', '#7567FA', '#75CBED'],
series: [{
name: 'Access From',
type: 'pie',
radius: '65%',
label: {
normal: {
formatter: '{d}%' //自定义显示格式(b:name, c:value, d:百分比)
}
},
labelLine: {
normal: {
length: 1
}
},
data: [{
value: 1048,
name: '终端取号'
},
{
value: 735,
name: '在线取号'
}
]
}]
})
}
}
};
import * as echarts from "echarts";
import moment from "moment";
import { getUsageCensus } from "@/api/dataActuary.js";
import product from "../mixins/product";
export default {
mixins: [product],
data() {
return {
queryform: {
productId: 1,
dateTimeStart: moment().format("yyyy-MM-DD"),
dateTimeEnd: moment().format("yyyy-MM-DD"),
pageCode: "/",
},
time: [moment().format("yyyy-MM-DD"), moment().format("yyyy-MM-DD")],
product: [
{
title: "排队机",
id: 1,
},
],
labelCol: {
span: 1,
},
wrapperCol: {
span: 14,
},
};
},
mounted() {
this.getData();
},
methods: {
getData() {
this.queryform.dateTimeStart = this.time ? this.time[0] : null;
this.queryform.dateTimeEnd = this.time ? this.time[1] : null;
this.queryform.productId == 1
? (this.queryform.businessCodeList = [
"iDCardSignIn",
"mobCheck_in",
"qrCode",
])
: "";
console.log(this.queryform);
getUsageCensus(this.queryform).then((res) => {
let data = res.data.map(({ businessName, propValue }) => ({
name: businessName,
value: propValue * 100,
}));
this.initType(data);
});
},
initWay() {
let chartDom = document.getElementById("way");
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: "取号方式分析",
left: "center",
},
tooltip: {
trigger: "item",
},
legend: {
bottom: 0,
left: "center",
itemWidth: 10,
itemHeight: 10,
},
color: [
"#6395F9",
"#64DAAB",
"#647798",
"#F6C02D",
"#7567FA",
"#75CBED",
],
series: [
{
name: "Access From",
type: "pie",
radius: "65%",
label: {
normal: {
formatter: "{d}%", //自定义显示格式(b:name, c:value, d:百分比)
},
},
labelLine: {
normal: {
length: 1,
},
},
data: [
{
value: 1048,
name: "Search Engine",
},
{
value: 735,
name: "Direct",
},
{
value: 580,
name: "Email",
},
{
value: 484,
name: "Union Ads",
},
{
value: 300,
name: "Video Ads",
},
],
},
],
});
},
initType(data) {
console.log(data);
let chartDom = document.getElementById("type");
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: this.queryform.productId == 1 ? "取号类型分析" : "功能使用分布",
left: "center",
},
tooltip: {
trigger: "item",
},
legend: {
bottom: 0,
left: "center",
itemWidth: 10,
itemHeight: 10,
},
color: [
"#6395F9",
"#64DAAB",
"#647798",
"#F6C02D",
"#7567FA",
"#75CBED",
],
series: [
{
type: "pie",
radius: "65%",
label: {
normal: {
formatter: "{d}%", //自定义显示格式(b:name, c:value, d:百分比)
},
},
labelLine: {
normal: {
length: 1,
},
},
data: data,
},
],
});
},
initCanal() {
let chartDom = document.getElementById("canal");
let myChart = echarts.init(chartDom);
myChart.setOption({
title: {
text: "取号渠道分析",
left: "center",
},
tooltip: {
trigger: "item",
},
legend: {
bottom: 0,
left: "center",
itemWidth: 10,
itemHeight: 10,
},
color: [
"#6395F9",
"#64DAAB",
"#647798",
"#F6C02D",
"#7567FA",
"#75CBED",
],
series: [
{
name: "Access From",
type: "pie",
radius: "65%",
label: {
normal: {
formatter: "{d}%", //自定义显示格式(b:name, c:value, d:百分比)
},
},
labelLine: {
normal: {
length: 1,
},
},
data: [
{
value: 1048,
name: "终端取号",
},
{
value: 735,
name: "在线取号",
},
],
},
],
});
},
},
};
</script>
<style lang="less" scoped>
.page {
height: calc(100% - 50px);
display: flex;
flex-direction: column;
.page {
height: calc(100% - 50px);
display: flex;
flex-direction: column;
/deep/.ant-form {
padding: 15px;
}
/deep/.ant-form {
padding: 15px;
}
.charts-box {
flex: 1;
display: flex;
justify-content: center;
padding: 50px 0;
.charts-box {
flex: 1;
display: flex;
justify-content: center;
padding: 50px 0;
#canal,#type,#way {
width: 30%;
height: 100%;
}
}
}
</style>
\ No newline at end of file
#canal,
#type,
#way {
width: 30%;
height: 100%;
}
}
}
</style>
<template>
<div class="actuary w-full h-auto">
<Start class="start" />
<ParticleWavy class="start" />
<div class="act_cont">
<div class="act_tit">
<h1>智慧政务数据精算</h1>
......@@ -42,7 +42,7 @@
<script>
import menu from "@/mixins/menu";
import Start from "./ParticleWavy.vue";
import ParticleWavy from "@/components/ParticleWavy.vue";
import { mapState } from "vuex";
import Storage from "@/utils/js/Storage";
export default {
......@@ -54,7 +54,7 @@ export default {
};
},
components: {
Start,
ParticleWavy,
},
computed: {
......
<template>
<div>
<a-card :bordered="false" class="mb_15">
<template slot="title">
<div class="head">
<div class="head_title">整体情况</div>
<div class="head_desc">更新时间:{{ nowDate }}</div>
</div>
</template>
<a-row type="flex" align="middle">
<a-col :span="4">
<div class="f_40 f_center warning">{{ massCount }}</div>
<div class="f_center">群众注册总量</div>
<!-- <div class="f_center primary" @click="toTable">点击查看报表</div> -->
</a-col>
<a-col :span="20">
<lineChart :id="`one_line`" :title="`近30日注册情况分析`" :datas="oneLineData" :height="200" :width="1420" />
</a-col>
</a-row>
</a-card>
<a-card :bordered="false" class="mb_15">
<template slot="title">
<div class="head">
<div class="head_title">注册用户理解</div>
<div class="head_desc"></div>
</div>
</template>
<a-row>
<a-col :span="8">
<map-chart :id="`one_map`" :datas="oneMapData" :height="400" :width="550" />
</a-col>
<a-col :span="8">
<a-table :rowKey="(record, index) => { return index }" :dataSource="provinces"
:columns="provincesColumns" :scroll="{ y: 300 }" :pagination="false">
</a-table>
</a-col>
<a-col :span="8">
<pieChart :id="`one_pie`" :height="400" :width="550" :datas="onePieData" />
</a-col>
<a-col :span="12">
<doublePieChart :id="`two_pie`" :height="300" :width="800" :datas="twoPieData" />
</a-col>
<a-col :span="12">
<barChart :id="`one_bar`" :height="300" :width="800" :datas="oneBarData" />
</a-col>
<a-col :span="12">
<barChart :id="`two_bar`" :height="300" :width="800" :datas="twoBarData" />
</a-col>
<a-col :span="12">
<pieChart :id="`three_pie`" :height="300" :width="800" :datas="threePieData" />
</a-col>
<a-col :span="12">
</a-col>
<a-col :span="12">
</a-col>
</a-row>
</a-card>
<a-card :bordered="false" class="mb_15">
<template slot="title">
<div class="head">
<div class="head_title">办件用户理解</div>
<div class="head_desc"></div>
</div>
</template>
<a-row type="flex" align="middle">
<a-row>
<a-col :span="8">
<map-chart :id="`two_map`" :datas="oneMapData2" :height="400" :width="550" />
</a-col>
<a-col :span="8">
<a-table :rowKey="(record, index) => { return index }" :dataSource="provinces2"
:columns="provincesColumns2" :pagination="false" :scroll="{ y: 300 }">
</a-table>
</a-col>
<a-col :span="8">
<pieChart :id="`four_pie`" :height="400" :width="550" :datas="onePieData2" />
</a-col>
<a-col :span="12">
<doublePieChart :id="`five_pie`" :height="300" :width="800" :datas="twoPieData2" />
</a-col>
<a-col :span="12">
<barChart :id="`six_bar`" :height="300" :width="800" :datas="oneBarData2" />
</a-col>
<a-col :span="12">
<barChart :id="`three_bar`" :height="300" :width="800" :datas="twoBarData2" />
</a-col>
<a-col :span="12">
<pieChart :id="`six_pie`" :height="300" :width="800" :datas="threePieData2" />
</a-col>
<a-col :span="12">
</a-col>
<a-col :span="12">
</a-col>
</a-row>
</a-row>
</a-card>
</div>
<div>
<a-card :bordered="false" class="mb_15">
<template slot="title">
<div class="head">
<div class="head_title">整体情况</div>
<div class="head_desc">更新时间:{{ nowDate }}</div>
</div>
</template>
<a-row type="flex" align="middle">
<a-col :span="4">
<div class="f_40 f_center warning">{{ massCount }}</div>
<div class="f_center">群众注册总量</div>
<!-- <div class="f_center primary" @click="toTable">点击查看报表</div> -->
</a-col>
<a-col :span="20">
<lineChart
:id="`one_line`"
:title="`近30日注册情况分析`"
:datas="oneLineData"
:height="200"
:width="1420"
/>
</a-col>
</a-row>
</a-card>
<a-card :bordered="false" class="mb_15">
<template slot="title">
<div class="head">
<div class="head_title">注册用户理解</div>
<div class="head_desc"></div>
</div>
</template>
<a-row>
<a-col :span="8">
<map-chart
:id="`one_map`"
:datas="oneMapData"
:height="400"
:width="550"
/>
</a-col>
<a-col :span="8">
<a-table
:rowKey="
(record, index) => {
return index;
}
"
:dataSource="provinces"
:columns="provincesColumns"
:scroll="{ y: 300 }"
:pagination="false"
>
</a-table>
</a-col>
<a-col :span="8">
<pieChart
:id="`one_pie`"
:height="400"
:width="550"
:datas="onePieData"
/>
</a-col>
<a-col :span="12">
<doublePieChart
:id="`two_pie`"
:height="300"
:width="800"
:datas="twoPieData"
/>
</a-col>
<a-col :span="12">
<barChart
:id="`one_bar`"
:height="300"
:width="800"
:datas="oneBarData"
/>
</a-col>
<a-col :span="12">
<barChart
:id="`two_bar`"
:height="300"
:width="800"
:datas="twoBarData"
/>
</a-col>
<a-col :span="12">
<pieChart
:id="`three_pie`"
:height="300"
:width="800"
:datas="threePieData"
/>
</a-col>
<a-col :span="12"> </a-col>
<a-col :span="12"> </a-col>
</a-row>
</a-card>
<a-card :bordered="false" class="mb_15">
<template slot="title">
<div class="head">
<div class="head_title">办件用户理解</div>
<div class="head_desc"></div>
</div>
</template>
<a-row type="flex" align="middle">
<a-row>
<a-col :span="8">
<map-chart
:id="`two_map`"
:datas="oneMapData2"
:height="400"
:width="550"
/>
</a-col>
<a-col :span="8">
<a-table
:rowKey="
(record, index) => {
return index;
}
"
:dataSource="provinces2"
:columns="provincesColumns2"
:pagination="false"
:scroll="{ y: 300 }"
>
</a-table>
</a-col>
<a-col :span="8">
<pieChart
:id="`four_pie`"
:height="400"
:width="550"
:datas="onePieData2"
/>
</a-col>
<a-col :span="12">
<doublePieChart
:id="`five_pie`"
:height="300"
:width="800"
:datas="twoPieData2"
/>
</a-col>
<a-col :span="12">
<barChart
:id="`six_bar`"
:height="300"
:width="800"
:datas="oneBarData2"
/>
</a-col>
<a-col :span="12">
<barChart
:id="`three_bar`"
:height="300"
:width="800"
:datas="twoBarData2"
/>
</a-col>
<a-col :span="12">
<pieChart
:id="`six_pie`"
:height="300"
:width="800"
:datas="threePieData2"
/>
</a-col>
<a-col :span="12"> </a-col>
<a-col :span="12"> </a-col>
</a-row>
</a-row>
</a-card>
</div>
</template>
<script >
import barChart from '../../business/Component/bar/index.vue'
import doublePieChart from "../../business/Component/doublePie/index.vue"
import pieChart from "../../business/Component/pie/index.vue"
import lineChart from "../../business/Component/line/index.vue"
import mapChart from "../../business/Component/map/index.vue"
import moment from "moment"
<script>
import barChart from "../../business/Component/bar/index.vue";
import doublePieChart from "../../business/Component/doublePie/index.vue";
import pieChart from "../../business/Component/pie/index.vue";
import lineChart from "../../business/Component/line/index.vue";
import mapChart from "../../business/Component/map/index.vue";
import moment from "moment";
import {
peopleQs, registerProvince, registerBwd, registerSex, registerAge, registerNation, provinceCase, bwdStatistic,
provinceStatistic, genderRateType, ageRate, TopNationStatistic,
} from "@/api/userPortrait.js"
peopleQs,
registerProvince,
registerBwd,
registerSex,
registerAge,
registerNation,
provinceCase,
bwdStatistic,
provinceStatistic,
genderRateType,
ageRate,
TopNationStatistic,
} from "@/api/userPortrait.js";
export default {
components: {
mapChart, pieChart, lineChart, doublePieChart, barChart
},
data() {
return {
options: [
{
value: '0',
label: '今天',
},
{
value: '1',
label: '近7日',
},
{
value: '2',
label: '近30日',
},
{
value: '3',
label: '近3个月',
},
{
value: '4',
label: '本年度',
},
],
oneLineData: {},
oneMapData: {},
oneMapData2: {},
onePieData: {},
onePieData2: {},
twoPieData: {},
twoPieData2: {},
oneBarData: {},
oneBarData2: {},
twoBarData: {},
twoBarData2: {},
threePieData: {},
threePieData2: {},
provinces: [
{
ranking: 1,
province: '四川省',
people: '999',
percent: '2'
},
{
ranking: 2,
province: '四川省',
people: '999',
percent: '2'
},
],
provinces2: [
{
ranking: 1,
province: '四川省',
people: '999',
percent: '2'
},
{
ranking: 2,
province: '四川省',
people: '999',
percent: '2'
},
],
provincesColumns: [
{
key: 'ranking',
title: '序号',
dataIndex: 'id',
components: {
mapChart,
pieChart,
lineChart,
doublePieChart,
barChart,
},
data() {
return {
options: [
{
value: "0",
label: "今天",
},
{
value: "1",
label: "近7日",
},
{
value: "2",
label: "近30日",
},
{
value: "3",
label: "近3个月",
},
{
value: "4",
label: "本年度",
},
],
oneLineData: {},
oneMapData: {},
oneMapData2: {},
onePieData: {},
onePieData2: {},
twoPieData: {},
twoPieData2: {},
oneBarData: {},
oneBarData2: {},
twoBarData: {},
twoBarData2: {},
threePieData: {},
threePieData2: {},
provinces: [
{
ranking: 1,
province: "四川省",
people: "999",
percent: "2",
},
{
ranking: 2,
province: "四川省",
people: "999",
percent: "2",
},
],
provinces2: [
{
ranking: 1,
province: "四川省",
people: "999",
percent: "2",
},
{
ranking: 2,
province: "四川省",
people: "999",
percent: "2",
},
],
provincesColumns: [
{
key: "ranking",
title: "序号",
dataIndex: "id",
},
{
key: "province",
title: "省份",
dataIndex: "province",
},
{
key: "value",
title: "注册人数",
dataIndex: "value",
},
{
key: "zb_lv",
title: "注册占比",
dataIndex: "zb_lv",
customRender(text, record, index) {
return parseFloat((text * 100).toFixed(2)) + "%";
},
},
],
provincesColumns2: [
{
key: "ranking",
title: "序号",
dataIndex: "id",
},
{
key: "province",
title: "省份",
dataIndex: "province",
},
{
key: "value",
title: "办件人数",
dataIndex: "value",
},
{
key: "nums_val",
title: "办件占比",
dataIndex: "nums_val",
customRender(text, record, index) {
return parseFloat((text * 100).toFixed(2)) + "%";
},
},
],
takeNumber: "0",
nowDate: "",
},
{
key: 'province',
title: '省份',
dataIndex: 'province',
},
{
key: 'value',
title: '注册人数',
dataIndex: 'value',
},
{
key: 'zb_lv',
title: '注册占比',
dataIndex: 'zb_lv',
customRender(text, record, index) {
return parseFloat((text * 100).toFixed(2)) + "%"
}
},
],
provincesColumns2: [
{
key: 'ranking',
title: '序号',
dataIndex: 'id',
massCount: "0", //群众总量
timeArr: [], //群众注册时间
},
{
key: 'province',
title: '省份',
dataIndex: 'province',
},
{
key: 'value',
title: '办件人数',
dataIndex: 'value',
},
{
key: 'nums_val',
title: '办件占比',
dataIndex: 'nums_val',
customRender(text, record, index) {
return parseFloat((text * 100).toFixed(2)) + "%"
}
},
],
takeNumber: '0',
nowDate: '',
doTotal: 0,
};
},
created() {},
mounted() {
this.getPeopleQs();
this.getRegisterProvince();
this.getRegisterBwd();
this.getRegisterSex();
this.getRegisterAge();
this.getRegisterNation();
massCount: '0',//群众总量
timeArr: [],//群众注册时间
this.getProvinceCase();
this.getProvinceStatistic();
this.getBwdStatistic();
this.getGenderRateType();
this.getAgeRate();
this.getTopNationStatistic();
this.nowDate = moment(new Date()).format("YYYY-MM-DD h:mm:ss");
},
methods: {
toTable() {
this.$router.push({ path: "register" });
},
//整体情况
async getPeopleQs() {
let res = await peopleQs({ siteid: localStorage.getItem("siteId") });
if (res.code == 1) {
this.massCount = res.data.count;
let time = res.data.list?.map((i) => {
//循环获取时间
return moment(i.datetime).format("MM-DD");
});
let take = [];
let app = [];
let Applets = [];
res.data.list?.forEach((i) => {
i.row.forEach((j) => {
if (j.register_type == "take") {
//循环获取排号机注册情况
return take.push(j.count);
}
if (j.register_type == "app") {
//循环获取自助终端注册情况
return app.push(j.count);
}
if (j.register_type == "Applets") {
//循环获取微官网注册情况
return Applets.push(j.count);
}
});
});
this.oneLineData = {
title: "近30日注册情况分析:",
legend: [
"自助服务系统注册人数",
"微官网注册人数",
"排队系统注册人数",
],
xData: time,
dataList: [
{ name: "自助服务系统注册人数", data: app },
{ name: "微官网注册人数", data: Applets },
{ name: "排队系统注册人数", data: take },
],
};
doTotal: 0,
}
},
created() {
},
mounted() {
this.getPeopleQs()
this.getRegisterProvince()
this.getRegisterBwd()
this.getRegisterSex()
this.getRegisterAge()
this.getRegisterNation()
this.getProvinceCase()
this.getProvinceStatistic()
this.getBwdStatistic()
this.getGenderRateType()
this.getAgeRate()
this.getTopNationStatistic()
this.nowDate = moment(new Date()).format('YYYY-MM-DD h:mm:ss')
},
methods: {
toTable() {
this.$router.push({ path: 'register' })
},
//整体情况
async getPeopleQs() {
let res = await peopleQs({ siteid: localStorage.getItem('siteId') })
if (res.code == 1) {
this.massCount = res.data.count
let time = res.data.list?.map(i => { //循环获取时间
return moment(i.datetime).format('MM-DD')
})
let take = []
let app = []
let Applets = []
res.data.list?.forEach(i => {
i.row.forEach(j => {
if (j.register_type == 'take') {//循环获取排号机注册情况
return take.push(j.count)
}
if (j.register_type == 'app') {//循环获取自助终端注册情况
return app.push(j.count)
}
if (j.register_type == 'Applets') {//循环获取微官网注册情况
return Applets.push(j.count)
}
})
})
this.oneLineData = {
title: '近30日注册情况分析:',
legend: ['自助服务系统注册人数', '微官网注册人数', '排队系统注册人数'],
xData: time,
dataList: [
{ name: '自助服务系统注册人数', data: app },
{ name: '微官网注册人数', data: Applets },
{ name: '排队系统注册人数', data: take },
]
}
}
},
//区域注册情况
async getRegisterProvince() {
let res = await registerProvince({ siteid: localStorage.getItem('siteId') })
let arr2 = res.data.sort(function (a, b) {
return b.count - a.count;
})
let arr = arr2.map((i, j) => {
i.id = j + 1
i.name = i.province
i.value = i.count
return i
})
// console.log(arr)
this.oneMapData = {
title: "注册用户地域分析",
data: arr
}
this.provinces = arr
this.onePieData = {
title: '',
type: 'scroll',
legend: arr.forEach(i => { return i.province }),
data: arr
}
},
//注册分布情况
async getRegisterBwd() {
let res = await registerBwd({ siteid: localStorage.getItem('siteId') })
this.twoPieData = {
title: '本地人与外地人注册分布',
pieName: '分布详情',
firstName: '宜宾市本地人注册占比',
firstVal: res.data.bd_lv,
firstTotal: 1,
secondName: '外地人注册占比',
secondVal: res.data.wd_lv,
secondTotal: 1,
}
},
//注册性别分布情况
async getRegisterSex() {
let res = await registerSex({ siteid: localStorage.getItem('siteId') })
// console.log(res)
if (res.data ? res.data.length > 0 : '') {
let man = res.data[0].row
let woman = res.data[1].row
this.oneBarData = {
title: '性别分布',
xData: ['', ''],
data: [
{ name: '自助服务系统注册人数', type: 'bar', data: [man[1].count || 0, woman[1].count || 0] },
{ name: '微官网注册人数', type: 'bar', data: [man[2].count || 0, woman[2].count || 0] },
{ name: '排队系统注册人数', type: 'bar', data: [man[0].count || 0, woman[0].count || 0] },
]
}
}
},
//注册年龄分布情况
async getRegisterAge() {
let res = await registerAge({ siteid: localStorage.getItem('siteId') })
// console.log(res)
let age_area = res.data.map(i => {
return i.age_area
})
let total = 0
let count = res.data.map(i => {
total += i.nums
return i.nums
})
// console.log(total)
let zb = count.map(i => {
return parseFloat((i / total * 10000).toFixed(2))
})
// console.log(zb)
this.twoBarData = {
title: '年龄分布',
xData: age_area,
data: [
{ name: '办理次数', type: 'bar', data: count },
{ name: '占比', type: 'line', data: zb },
]
}
},
//注册民族分布情况
async getRegisterNation() {
let res = await registerNation({ siteid: localStorage.getItem('siteId') })
// console.log(res)
res.data.forEach(i => {
i.name = i.idcard_Nation
i.value = i.count
})
// console.log(res.data)
this.threePieData = {
title: '民族分布',
type: '',
legend: res.data,
data: res.data
}
},
//办件用户地域分析
async getProvinceCase() {
let res = await provinceCase({ siteid: localStorage.getItem('siteId'), selected: 2 })
// console.log(res)
let arr2 = res.data.sort(function (a, b) {
return b.nums - a.nums;
})
let arr = arr2.map((i, j) => {
i.id = j + 1
i.province = i.name
i.value = i.nums
this.doTotal += i.nums
return i
})
arr.forEach(i => {
i.nums_val = i.nums / this.doTotal
})
// console.log(arr)
this.oneMapData2 = {
title: "办件用户地域分析",
data: arr
}
this.provinces2 = arr
},
//办件用户地域分析
async getProvinceStatistic() {
let res = await provinceStatistic({ siteid: localStorage.getItem('siteId'), selected: 2, province: '四川省' })
// console.log(res)
res.data.forEach(i => {
i.value = i.count
})
this.onePieData2 = {
title: '',
type: 'scroll',
legend: res.data,
data: res.data
}
},
//本外地分析
async getBwdStatistic() {
let res = await bwdStatistic({ siteid: localStorage.getItem('siteId'), selected: 2 })
// console.log(res)
this.twoPieData2 = {
title: '本地人与外地人办件分布',
pieName: '分布详情',
firstName: '宜宾市本地人办件占比',
firstVal: res.data.bd_lv,
firstTotal: 1,
secondName: '外地人办件占比',
secondVal: res.data.wd_lv,
secondTotal: 1,
}
},
//性别办件分析
async getGenderRateType() {
let res = await genderRateType({ siteid: localStorage.getItem('siteId'), selected: 2 })
if (res.data ? res.data.length > 0 : '') {
let man = res.data[0].row
let woman = res.data[1].row
this.oneBarData2 = {
title: '性别分布',
xData: ['', ''],
data: [
{ name: '自助服务系统注册人数', type: 'bar', data: [man[1].nums || 0, woman[1].nums || 0] },
{ name: '微官网注册人数', type: 'bar', data: [man[2].nums || 0, woman[2].nums || 0] },
{ name: '排队系统注册人数', type: 'bar', data: [man[0].nums || 0, woman[0].nums || 0] },
]
}
}
},
//办件年龄分析
async getAgeRate() {
let res = await ageRate({ siteid: localStorage.getItem('siteId'), selected: 2 })
let age_area = res.data.list.map(i => {
return i.age_area
})
let total = 0
let count = res.data.list.map(i => {
total += i.nums
return i.nums
})
// console.log(total)
let zb = count.map(i => {
return parseFloat((i / total * 10000).toFixed(2))
})
// console.log(zb)
this.twoBarData2 = {
title: '年龄分布',
xData: age_area,
data: [
{ name: '办理次数', type: 'bar', data: count },
{ name: '占比', type: 'line', data: zb },
]
}
},
async getTopNationStatistic() {
let res = await TopNationStatistic({ siteid: localStorage.getItem('siteId'), selected: 2 })
// console.log(res)
res.data.forEach(i => {
i.name = i.idcard_Nation
i.value = i.count
})
// console.log(res.data)
this.threePieData2 = {
title: '民族分布',
type: '',
legend: res.data,
data: res.data
}
},
}
}
this.$forceUpdate(this.oneLineData);
}
},
//区域注册情况
async getRegisterProvince() {
let res = await registerProvince({
siteid: localStorage.getItem("siteId"),
});
let arr2 = res.data.sort(function (a, b) {
return b.count - a.count;
});
let arr = arr2.map((i, j) => {
i.id = j + 1;
i.name = i.province;
i.value = i.count;
return i;
});
// console.log(arr)
this.oneMapData = {
title: "注册用户地域分析",
data: arr,
};
this.provinces = arr;
this.onePieData = {
title: "",
type: "scroll",
legend: arr.forEach((i) => {
return i.province;
}),
data: arr,
};
},
//注册分布情况
async getRegisterBwd() {
let res = await registerBwd({ siteid: localStorage.getItem("siteId") });
this.twoPieData = {
title: "本地人与外地人注册分布",
pieName: "分布详情",
firstName: "宜宾市本地人注册占比",
firstVal: res.data.bd_lv,
firstTotal: 1,
secondName: "外地人注册占比",
secondVal: res.data.wd_lv,
secondTotal: 1,
};
},
//注册性别分布情况
async getRegisterSex() {
let res = await registerSex({ siteid: localStorage.getItem("siteId") });
// console.log(res)
if (res.data ? res.data.length > 0 : "") {
let man = res.data[0].row;
let woman = res.data[1].row;
this.oneBarData = {
title: "性别分布",
xData: ["", ""],
data: [
{
name: "自助服务系统注册人数",
type: "bar",
data: [man[1].count || 0, woman[1].count || 0],
},
{
name: "微官网注册人数",
type: "bar",
data: [man[2].count || 0, woman[2].count || 0],
},
{
name: "排队系统注册人数",
type: "bar",
data: [man[0].count || 0, woman[0].count || 0],
},
],
};
}
},
//注册年龄分布情况
async getRegisterAge() {
let res = await registerAge({ siteid: localStorage.getItem("siteId") });
// console.log(res)
let age_area = res.data.map((i) => {
return i.age_area;
});
let total = 0;
let count = res.data.map((i) => {
total += i.nums;
return i.nums;
});
// console.log(total)
let zb = count.map((i) => {
return parseFloat(((i / total) * 10000).toFixed(2));
});
// console.log(zb)
this.twoBarData = {
title: "年龄分布",
xData: age_area,
data: [
{ name: "办理次数", type: "bar", data: count },
{ name: "占比", type: "line", data: zb },
],
};
},
//注册民族分布情况
async getRegisterNation() {
let res = await registerNation({
siteid: localStorage.getItem("siteId"),
});
// console.log(res)
res.data.forEach((i) => {
i.name = i.idcard_Nation;
i.value = i.count;
});
// console.log(res.data)
this.threePieData = {
title: "民族分布",
type: "",
legend: res.data,
data: res.data,
};
},
//办件用户地域分析
async getProvinceCase() {
let res = await provinceCase({
siteid: localStorage.getItem("siteId"),
selected: 2,
});
// console.log(res)
let arr2 = res.data.sort(function (a, b) {
return b.nums - a.nums;
});
let arr = arr2.map((i, j) => {
i.id = j + 1;
i.province = i.name;
i.value = i.nums;
this.doTotal += i.nums;
return i;
});
arr.forEach((i) => {
i.nums_val = i.nums / this.doTotal;
});
// console.log(arr)
this.oneMapData2 = {
title: "办件用户地域分析",
data: arr,
};
this.provinces2 = arr;
},
//办件用户地域分析
async getProvinceStatistic() {
let res = await provinceStatistic({
siteid: localStorage.getItem("siteId"),
selected: 2,
province: "四川省",
});
// console.log(res)
res.data.forEach((i) => {
i.value = i.count;
});
this.onePieData2 = {
title: "",
type: "scroll",
legend: res.data,
data: res.data,
};
},
//本外地分析
async getBwdStatistic() {
let res = await bwdStatistic({
siteid: localStorage.getItem("siteId"),
selected: 2,
});
// console.log(res)
this.twoPieData2 = {
title: "本地人与外地人办件分布",
pieName: "分布详情",
firstName: "宜宾市本地人办件占比",
firstVal: res.data.bd_lv,
firstTotal: 1,
secondName: "外地人办件占比",
secondVal: res.data.wd_lv,
secondTotal: 1,
};
},
//性别办件分析
async getGenderRateType() {
let res = await genderRateType({
siteid: localStorage.getItem("siteId"),
selected: 2,
});
if (res.data ? res.data.length > 0 : "") {
let man = res.data[0].row;
let woman = res.data[1].row;
this.oneBarData2 = {
title: "性别分布",
xData: ["", ""],
data: [
{
name: "自助服务系统注册人数",
type: "bar",
data: [man[1].nums || 0, woman[1].nums || 0],
},
{
name: "微官网注册人数",
type: "bar",
data: [man[2].nums || 0, woman[2].nums || 0],
},
{
name: "排队系统注册人数",
type: "bar",
data: [man[0].nums || 0, woman[0].nums || 0],
},
],
};
}
},
//办件年龄分析
async getAgeRate() {
let res = await ageRate({
siteid: localStorage.getItem("siteId"),
selected: 2,
});
let age_area = res.data.list.map((i) => {
return i.age_area;
});
let total = 0;
let count = res.data.list.map((i) => {
total += i.nums;
return i.nums;
});
// console.log(total)
let zb = count.map((i) => {
return parseFloat(((i / total) * 10000).toFixed(2));
});
// console.log(zb)
this.twoBarData2 = {
title: "年龄分布",
xData: age_area,
data: [
{ name: "办理次数", type: "bar", data: count },
{ name: "占比", type: "line", data: zb },
],
};
},
async getTopNationStatistic() {
let res = await TopNationStatistic({
siteid: localStorage.getItem("siteId"),
selected: 2,
});
// console.log(res)
res.data.forEach((i) => {
i.name = i.idcard_Nation;
i.value = i.count;
});
// console.log(res.data)
this.threePieData2 = {
title: "民族分布",
type: "",
legend: res.data,
data: res.data,
};
},
},
};
</script>
<style scoped lang="less">
/deep/.ant-col {
margin-bottom: 20px;
margin-bottom: 20px;
}
.head {
display: flex;
justify-content: flex-start;
align-items: center;
display: flex;
justify-content: flex-start;
align-items: center;
.head_title {
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #333;
margin-right: 1.25rem;
}
.head_title {
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #333;
margin-right: 1.25rem;
}
.head_desc {
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #888888;
}
.head_desc {
font-weight: 400;
font-style: normal;
font-size: 14px;
color: #888888;
}
}
/deep/ .ant-table {
width: 100% !important;
width: 100% !important;
}
.f_20 {
font-size: 1.25rem;
font-size: 1.25rem;
}
.f_40 {
font-size: 2.5rem;
font-size: 2.5rem;
}
.f_center {
text-align: center;
text-align: center;
}
.warning {
color: #FD6805
color: #fd6805;
}
.primary {
color: #0595FD
color: #0595fd;
}
.success {
color: #04CA8F
color: #04ca8f;
}
.h_200 {
height: 12.5rem;
height: 12.5rem;
}
.mb_15 {
margin-bottom: .9375rem;
margin-bottom: 0.9375rem;
}
</style>
\ No newline at end of file
</style>
......@@ -308,6 +308,7 @@ export default {
// 查看信息
checkInfo(id) {
this.loading = true;
getImpossibleInfo({
id: id,
}).then((res) => {
......@@ -316,6 +317,7 @@ export default {
this.$refs.FormDetails.fromData = data;
this.visible = true;
}
this.loading = false;
});
},
},
......
......@@ -96,7 +96,7 @@ const filterVal = [
"organization",
"customerDesignPictures",
"customerDesignVideos",
"memberLevel",
"levelName",
"lastLoginTime",
"status",
]; // 导出的表头字段名,需要导出表格字段名
......
......@@ -383,6 +383,7 @@ export default {
},
// 详情
async checkInfo(id) {
this.loading = true;
let res = await getEvaData({ id });
if (res.code == 1) {
let { data } = res;
......@@ -390,6 +391,7 @@ export default {
this.detailsInfo = data;
this.detailsVisible = true;
}
this.loading = false;
},
// 删除
handleDel(id) {
......
......@@ -380,12 +380,14 @@ export default {
},
// 详情
async checkInfo(id) {
this.loading = true;
let res = await getQueEvaData({ id });
if (res.code == 1) {
let { data } = res;
this.detailsInfo = data;
this.detailsVisible = true;
}
this.loading = false;
},
// 删除
handleDel(id) {
......
......@@ -381,6 +381,7 @@ export default {
},
// 详情
async checkInfo(id) {
this.loading = true;
let res = await getEvaData({ id });
if (res.code == 1) {
let { data } = res;
......@@ -388,6 +389,7 @@ export default {
this.detailsInfo = data;
this.detailsVisible = true;
}
this.loading = false;
},
// 删除
handleDel(id) {
......
......@@ -209,31 +209,15 @@ export default {
// 获取报表
async getPrintList() {
this.loading = true;
let pramse = {
page: this.current,
size: this.size,
siteId: this.siteId,
type: this.searchForm.status,
createTimeStart: this.searchForm.time[0],
createTimeEnd: this.searchForm.time[1],
};
if (this.searchForm.type == 1) {
pramse.matterName = `%${this.searchForm.searchName}%`;
} else {
pramse.materialName = `%${this.searchForm.searchName}%`;
}
let res = await getPrintList(pramse);
if (res.code == 1) {
let { data, total } = res.data;
this.total = total;
this.tableData = data;
this.$emit("update", { total, time: this.searchForm.time });
}
let { total, data } = await this.getDataList();
this.total = total;
this.tableData = data;
this.$emit("update", { total, time: this.searchForm.time });
this.loading = false;
},
// 获取导出数据
async getExportPrintList() {
// 获取数据函数
async getDataList(searchForm) {
let list = [];
let listTotal = 0;
let pramse = {
......@@ -243,6 +227,7 @@ export default {
type: this.searchForm.status,
createTimeStart: this.searchForm.time[0],
createTimeEnd: this.searchForm.time[1],
...searchForm,
};
if (this.searchForm.type == 1) {
pramse.matterName = `%${this.searchForm.searchName}%`;
......@@ -250,10 +235,10 @@ export default {
pramse.materialName = `%${this.searchForm.searchName}%`;
}
let res = await getPrintList(pramse);
if (res.data.code == 1) {
let { data, total } = res.data.data;
list = data;
if (res.code == 1) {
let { data, total } = res.data;
listTotal = total;
list = data;
}
return {
data: list,
......@@ -304,7 +289,7 @@ export default {
"填单记录报表" + this.$moment().format("YYYYMMDDHHmmss")
);
} else {
this.dataSection(this.getExportPrintList, {}, (data) => {
this.dataSection(this.getDataList, {}, (data) => {
if (!data.length) {
this.$message.warning("暂无数据");
return;
......
......@@ -383,11 +383,13 @@ export default {
},
// 详情
async checkInfo({ id }) {
this.loading = true;
let res = await getOrderinfo({ id });
if (res.code == 1) {
this.detailsInfo = res.data;
this.visible = true;
}
this.loading = false;
},
},
};
......
......@@ -32,8 +32,8 @@ import { mapState } from "vuex";
import storage from "@/utils/js/Storage";
import { export2Excel } from "@/utils/js/exportExcel";
import { getSys12345 } from "@/api/dataAdmin";
const tHeader = ["序号", "微信号", "电话号码", "拨打位置", "拨打时间"]; // 导出的表头名信息
const filterVal = ["index", "nickname", "phone", "address", "create_time"]; // 导出的表头字段名,需要导出表格字段名
const tHeader = ["微信号", "电话号码", "拨打位置", "拨打时间"]; // 导出的表头名信息
const filterVal = ["nickname", "phone", "address", "create_time"]; // 导出的表头字段名,需要导出表格字段名
export default {
components: {},
data() {
......
......@@ -50,7 +50,6 @@ import FormDetails from "./components/FormDetails.vue";
import { export2Excel } from "@/utils/js/exportExcel";
import { adminList, letterInfo } from "@/api/dataAdmin";
const tHeader = [
"序号",
"工单编号",
"信件标题",
"信件类别",
......@@ -64,7 +63,6 @@ const tHeader = [
"办理部门",
]; // 导出的表头名信息
const filterVal = [
"index",
"LetterCode",
"strTitle",
"strType",
......@@ -294,6 +292,18 @@ export default {
if (this.selectedRowKeys.length && this.excelData.length) {
// 深度克隆避免影响页面表格展示
let data = this.$_.cloneDeep(this.excelData);
for (let item of data) {
item.strGender =
item.strGender == 0 ? "" : item.strGender == 1 ? "" : "";
item.source =
item.source == 1
? "微官网"
: item.source == 2
? "自助服务系统"
: item.source == 3
? "数字填单系统"
: "";
}
export2Excel(
this.tHeader,
this.filterVal,
......@@ -306,6 +316,18 @@ export default {
this.$message.warning("暂无数据");
return;
}
for (let item of data) {
item.strGender =
item.strGender == 0 ? "" : item.strGender == 1 ? "" : "";
item.source =
item.source == 1
? "微官网"
: item.source == 2
? "自助服务系统"
: item.source == 3
? "数字填单系统"
: "";
}
export2Excel(
this.tHeader,
this.filterVal,
......@@ -343,12 +365,14 @@ export default {
},
// 查看信息
checkInfo(id) {
this.loading = true;
letterInfo({ id }).then((res) => {
if (res.code == 1) {
let { data } = res;
this.$refs.FormDetails.fromData = data;
this.visible = true;
}
this.loading = false;
});
},
},
......
......@@ -377,6 +377,7 @@ export default {
// 查看信息
checkInfo(id) {
this.loading = true;
getWLLZInfo({
id: id,
}).then((res) => {
......@@ -385,6 +386,7 @@ export default {
this.$refs.FormDetails.fromData = data;
this.visible = true;
}
this.loading = false;
});
},
},
......
......@@ -71,7 +71,7 @@
<a-tag
class="cursor-pointer"
color="blue"
@click="checkInfo(record.id)"
@click="checkInfo(record.id, record)"
>
详细信息
</a-tag>
......@@ -361,6 +361,7 @@ export default {
this.$emit("update", { total, time: this.searchForm.time });
}
this.loading = false;
this.$forceUpdate();
},
// 翻页
......@@ -372,6 +373,7 @@ export default {
// 查看用户信息
async checkUser(row) {
this.loading = true;
let res = await getPeopleanalyse({
idcard: row.people_idcard,
peopleid: row.peopleid,
......@@ -381,11 +383,13 @@ export default {
let { data } = res;
this.userInfo = { ...row, ...data };
}
this.loading = false;
this.userInfoVisible = true;
},
// 查看业务信息
async checkBusiness(row) {
this.loading = true;
let res = await getBusinessEvent({
businessid: row.businessid,
time: this.searchForm.time,
......@@ -397,10 +401,12 @@ export default {
this.businessInfo = data;
this.analysisVisible = true;
}
this.loading = false;
},
// 查看工作人员
async checkWorkman(id) {
this.loading = true;
let res = await getWorkmananalyse({
workmanid: id,
time: this.searchForm.time,
......@@ -410,19 +416,25 @@ export default {
});
let { data } = res;
this.workerInfo = { ...data, ...result.data };
this.loading = false;
this.workerInfoVisible = true;
},
// 查看详细信息
async checkInfo(id) {
async checkInfo(id, row) {
this.loading = true;
let res = await getQueueInfo({
id,
});
if (res.code == 1) {
let { data } = res;
this.detailsInfo = data;
this.detailsInfo = {
...data,
business: row.business,
};
this.detailsVisible = true;
}
this.loading = false;
},
// 勾选表格
......
......@@ -98,14 +98,27 @@
</a-col>
</a-row>
<a-row :gutter="[0, 8]">
<a-col :span="12"> <span>注册方式:</span>身份证注册 </a-col>
<a-col :span="12">
<span>注册方式:</span
>{{
detailsInfo.register_type == "Applets"
? "小程序"
: detailsInfo.register_type == "wechat"
? "公众号"
: detailsInfo.register_type == "app"
? "自助服务终端"
: "--"
}}
</a-col>
<a-col :span="12">
<span>取号设备:</span>{{ detailsInfo.take_name }}
</a-col>
</a-row>
<!-- <a-row :gutter="[0, 8]">
<a-col :span="12"> <span>健康状态:</span>绿码 </a-col>
</a-row> -->
<a-row :gutter="[0, 8]">
<a-col :span="24">
<span>办理业务:</span>{{ detailsInfo.business || "--" }}
</a-col>
</a-row>
<!-- 当前办理步骤标识 -->
<div class="transact-tips2" v-if="detailsInfo.style === 0">
<span class="tips-text"> 排队中 </span>
......@@ -140,7 +153,7 @@
</a-row>
<a-row :gutter="[0, 8]">
<a-col :span="12">
<span>叫号设备:</span>{{ detailsInfo.call_name }}
<span>叫号设备:</span>{{ detailsInfo.call_name || "--" }}
</a-col>
</a-row>
</div>
......
......@@ -71,7 +71,7 @@
<a-tag
class="cursor-pointer"
color="blue"
@click="checkInfo(record.id)"
@click="checkInfo(record.id, record)"
>
详细信息
</a-tag>
......@@ -354,6 +354,7 @@ export default {
this.$emit("update", { total, time: this.searchForm.time });
}
this.loading = false;
this.$forceUpdate();
},
// 翻页
......@@ -365,6 +366,7 @@ export default {
// 查看用户信息
async checkUser(row) {
this.loading = true;
let res = await getPeopleanalyse({
idcard: row.people_idcard,
peopleid: row.peopleid,
......@@ -374,11 +376,13 @@ export default {
let { data } = res;
this.userInfo = { ...row, ...data };
}
this.loading = false;
this.userInfoVisible = true;
},
// 查看业务信息
async checkBusiness(row) {
this.loading = true;
let res = await getBusinessEvent({
businessid: row.businessid,
time: this.searchForm.time,
......@@ -390,10 +394,12 @@ export default {
this.businessInfo = data;
this.analysisVisible = true;
}
this.loading = false;
},
// 查看工作人员
async checkWorkman(id) {
this.loading = true;
let res = await getWorkmananalyse({
workmanid: id,
time: this.searchForm.time,
......@@ -403,19 +409,25 @@ export default {
});
let { data } = res;
this.workerInfo = { ...data, ...result.data };
this.loading = false;
this.workerInfoVisible = true;
},
// 查看详细信息
async checkInfo(id) {
async checkInfo(id, row) {
this.loading = true;
let res = await getQueueInfo({
id,
});
if (res.code == 1) {
let { data } = res;
this.detailsInfo = data;
this.detailsInfo = {
...data,
business: row.business,
};
this.detailsVisible = true;
}
this.loading = false;
},
// 勾选表格
......
......@@ -37,8 +37,10 @@
<div class="ellipsis" :title="text">
{{ text ? text : "--" }}
</div>
<div class="ellipsis" :title="record.materiaFullName">
样表全称:{{ record.materiaFullName ? record.materiaFullName : "--" }}
<div class="ellipsis" :title="record.materialFullName">
样表全称:{{
record.materialFullName ? record.materialFullName : "--"
}}
</div>
</template>
<!-- 类型 -->
......@@ -76,8 +78,8 @@ const filterVal = [
"materialName",
"materialFullName",
"deviceName",
"createTime",
"operTime",
"createTime",
]; // 导出的表头字段名,需要导出表格字段名
export default {
data() {
......@@ -115,11 +117,11 @@ export default {
},
{
title: "操作时间",
dataIndex: "createTime",
dataIndex: "operTime",
},
{
title: "查看时间",
dataIndex: "operTime",
dataIndex: "createTime",
customRender: (text) => {
return text ? text : "--";
},
......@@ -173,31 +175,15 @@ export default {
// 获取报表
async getBillList() {
this.loading = true;
let pramse = {
page: this.current,
size: this.size,
siteId: this.siteId,
type: this.searchForm.status,
operTimeStart: this.searchForm.time[0],
operTimeEnd: this.searchForm.time[1],
};
if (this.searchForm.type == 1) {
pramse.matterName = `%${this.searchForm.searchName}%`;
} else {
pramse.materialName = `%${this.searchForm.searchName}%`;
}
let res = await getBillList(pramse);
if (res.code == 1) {
let { data, total } = res.data;
this.total = total;
this.tableData = data;
this.$emit("update", { total, time: this.searchForm.time });
}
let { total, data } = await this.getDataList();
this.total = total;
this.tableData = data;
this.$emit("update", { total, time: this.searchForm.time });
this.loading = false;
},
// 获取导出数据
async getExportPrintList() {
// 获取数据函数
async getDataList(searchForm) {
let list = [];
let listTotal = 0;
let pramse = {
......@@ -207,6 +193,7 @@ export default {
type: this.searchForm.status,
operTimeStart: this.searchForm.time[0],
operTimeEnd: this.searchForm.time[1],
...searchForm,
};
if (this.searchForm.type == 1) {
pramse.matterName = `%${this.searchForm.searchName}%`;
......@@ -216,8 +203,8 @@ export default {
let res = await getBillList(pramse);
if (res.code == 1) {
let { data, total } = res.data;
list = data;
listTotal = total;
list = data;
}
return {
data: list,
......@@ -257,7 +244,7 @@ export default {
"样表记录报表" + this.$moment().format("YYYYMMDDHHmmss")
);
} else {
this.dataSection(this.getExportPrintList, {}, (data) => {
this.dataSection(this.getDataList, {}, (data) => {
if (!data.length) {
this.$message.warning("暂无数据");
return;
......
......@@ -11,22 +11,12 @@
class="flex items-center justify-between flex-shrink-0 pl-[10px] pr-[10px]"
>
<div
:class="['tab-item', { active: active == 'CensusType_1' }]"
@click="changeCensusType('CensusType_1')"
v-for="v in CensusTypeList"
:key="v.type"
:class="['tab-item', { active: active == v.type }]"
@click="changeCensusType(v.type)"
>
聚焦服务
</div>
<div
:class="['tab-item', { active: active == 'CensusType_2' }]"
@click="changeCensusType('CensusType_2')"
>
聚焦协同
</div>
<div
:class="['tab-item', { active: active == 'CensusType_3' }]"
@click="changeCensusType('CensusType_3')"
>
聚焦监管
{{ v.name }}
</div>
</div>
<div
......@@ -91,6 +81,20 @@ export default {
data() {
return {
siteId: Storage.get(2, "siteId"),
CensusTypeList: [
{
type: "CensusType_1",
name: "聚焦服务",
},
{
type: "CensusType_2",
name: "聚焦协同",
},
{
type: "CensusType_3",
name: "聚焦监管",
},
],
CensusType_1: [], // 服务
CensusType_2: [], // 协同
CensusType_3: [], // 监管
......
const anim_data = {
domArr: [],
// [
// // 杂乱的正方形
// {
// widthStr: "160rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(-33deg,#8f35ff,rgba(143,53,255,0)),radial-gradient(circle at 62% -28%,rgba(0,45,156,.75) 0,#002d9c 68%,rgba(0,45,156,0) 111%),linear-gradient(116deg,rgba(0,137,255,.2) 1%,rgba(0,186,255,.04) 38%,rgba(68,149,255,.08) 68%,rgba(3,79,255,.16) 88%)",
// topStr: "calc(50% - 421rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 756rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.4,
// opacityAnimMap: new Map([
// [0.2, 0.4], // [帧,值]
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "80rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(133deg,rgba(255,186,0,0),rgba(255,207,0,.6) 68%),linear-gradient(170deg,#ffc400,#ff9200),linear-gradient(170deg,#ffc400,#ff9200)",
// topStr: "calc(50% - 192rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 487rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 1,
// opacityAnimMap: new Map([]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "96rem",
// backgroundColorStr: "#cc7201",
// backgroundImageStr: "",
// topStr: "calc(50% - 141rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 624rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.8,
// opacityAnimMap: new Map([
// [0, 0.8],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "40rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(170deg,#3e9eff,#0062ff)",
// topStr: "calc(50% - 67rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 316rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.75,
// opacityAnimMap: new Map([
// [0, 0.75],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "46rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "radial-gradient(77deg,#ff8300 0,#ff9200 54%,rgba(255,146,0,0) 128%),linear-gradient(77deg,#ffb400,#ff9200 25%,#ffdf2f 68%,#ff8e00)",
// topStr: "calc(50% - 28rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 259rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.3,
// opacityAnimMap: new Map([
// [0, 0.3],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "72rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "radial-gradient(77deg,#ff8300 0,#ff9200 54%,rgba(255,146,0,0) 128%),linear-gradient(77deg,#ffb400,#ff9200 25%,#ffdf2f 68%,#ff8e00)",
// topStr: "",
// rightStr: "",
// bottomStr: "calc(50% - 175rem)",
// leftStr: "calc(50% - 579rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.4,
// opacityAnimMap: new Map([
// [0, 0.4],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "160rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(220deg,#e58dff,#8f35ff 67%,rgba(143,53,255,0)),radial-gradient(circle at 1.2222% -87%,rgba(0,45,156,.75) 0,#002d9c 171%,rgba(0,45,156,0) 278%),linear-gradient(137deg,rgba(0,137,255,.3),rgba(3,79,255,.24))",
// topStr: "",
// rightStr: "",
// bottomStr: "calc(50% - 412rem)",
// leftStr: "calc(50% - 701rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.3,
// opacityAnimMap: new Map([
// [0, 0.3],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "24rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(220deg,#e58dff,#8f35ff 67%,rgba(143,53,255,0)),radial-gradient(circle at 1.2222% -87%,rgba(0,45,156,.75) 0,#002d9c 171%,rgba(0,45,156,0) 278%),linear-gradient(137deg,rgba(0,137,255,.3),rgba(3,79,255,.24))",
// topStr: "calc(50% - 3rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 243rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.3,
// opacityAnimMap: new Map([
// [0, 0.3],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "96rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(-27deg,rgba(143,53,255,.8) 11%,rgba(143,53,255,0)),radial-gradient(circle at 62% -28%,rgba(0,45,156,.75) 0,#002d9c 68%,rgba(0,45,156,0) 111%)",
// topStr: "calc(50% - 473rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 154rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.3,
// opacityAnimMap: new Map([
// [0, 0.3],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "46rem",
// backgroundColorStr: "#ffa800",
// backgroundImageStr: "",
// topStr: "",
// rightStr: "",
// bottomStr: "calc(50% - 98rem)",
// leftStr: "calc(50% - 362rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.95,
// opacityAnimMap: new Map([
// [0, 0.95],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "96rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(180deg,#004fff,rgba(0,45,156,0) 70%)",
// topStr: "",
// rightStr: "",
// bottomStr: "calc(50% - 498rem)",
// leftStr: "calc(50% - 165rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.95,
// opacityAnimMap: new Map([
// [0, 0.95],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "40rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "-webkit-radial-gradient(top,rgba(0,45,156,.75) 0,#002d9c 92%,rgba(0,45,156,0) 166%)",
// topStr: "",
// rightStr: "",
// bottomStr: "calc(50% - 352rem)",
// leftStr: "calc(50% - 26rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.35,
// opacityAnimMap: new Map([
// [0, 0.35],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "64rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "-webkit-radial-gradient(top,rgba(0,45,156,.75) 0,#002d9c 92%,rgba(0,45,156,0) 166%),-webkit-linear-gradient(334deg,rgba(0,137,255,.2) 1%,rgba(0,186,255,.04) 38%,rgba(68,149,255,.08) 68%,rgba(3,79,255,.16) 88%)",
// topStr: "calc(50% - 395rem)",
// rightStr: "calc(50% - 102rem)",
// bottomStr: "",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.4,
// opacityAnimMap: new Map([
// [0, 0.4],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "24rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(147deg,#004fff,#002d9c 82%),linear-gradient(153deg,#007fff 5%,#0063ff 95%)",
// topStr: "calc(50% - 206rem)",
// rightStr: "calc(50% - 38rem)",
// bottomStr: "",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.3,
// opacityAnimMap: new Map([
// [0, 0.3],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "130rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(147deg,#004fff,#002d9c 82%),linear-gradient(153deg,#007fff 5%,#0063ff 95%)",
// topStr: "calc(50% - 263rem)",
// rightStr: "calc(50% - 704rem)",
// bottomStr: "",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.67,
// opacityAnimMap: new Map([
// [0, 0.67],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "64rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(128deg,#00ebb6,#00ba46 69%)",
// topStr: "calc(50% - 226rem)",
// rightStr: "calc(50% - 505rem)",
// bottomStr: "",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.95,
// opacityAnimMap: new Map([
// [0, 0.95],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "24rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(170deg,#ffc400,rgba(255,207,0,.6))",
// topStr: "calc(50% - 52rem)",
// rightStr: "calc(50% - 218rem)",
// bottomStr: "",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.2,
// opacityAnimMap: new Map([
// [0, 0.2],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "24rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(170deg,#00b6ff,#007fff)",
// topStr: "",
// rightStr: "calc(50% - 300rem)",
// bottomStr: "calc(50% - 49rem)",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.96,
// opacityAnimMap: new Map([
// [0, 0.96],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "64rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(148deg,#76d2ff,#09baff 99%)",
// topStr: "",
// rightStr: "calc(50% - 453rem)",
// bottomStr: "calc(50% - 170rem)",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.96,
// opacityAnimMap: new Map([
// [0, 0.96],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "96rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(136deg,#3e9eff 19%,#0062ff)",
// topStr: "",
// rightStr: "calc(50% - 657rem)",
// bottomStr: "calc(50% - 133rem)",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.96,
// opacityAnimMap: new Map([
// [0, 0.96],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "160rem",
// backgroundColorStr: "",
// backgroundImageStr:
// "linear-gradient(147deg,rgba(0,79,255,.6),rgba(0,45,156,.6) 82%),linear-gradient(153deg,#007fff 5%,#0063ff 95%)",
// topStr: "",
// rightStr: "calc(50% - 800rem)",
// bottomStr: "calc(50% - 345rem)",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.5,
// opacityAnimMap: new Map([
// [0, 0.5],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "96rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(-2deg,rgba(0,45,156,.75),#002d9c)",
// topStr: "",
// rightStr: "calc(50% - 213rem)",
// bottomStr: "calc(50% - 532rem)",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.2,
// opacityAnimMap: new Map([
// [0, 0.2],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
// {
// widthStr: "96rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(-2deg,rgba(0,45,156,.75),#002d9c)",
// topStr: "",
// rightStr: "calc(50% - 213rem)",
// bottomStr: "calc(50% - 532rem)",
// leftStr: "",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 0.2,
// opacityAnimMap: new Map([
// [0, 0.2],
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 800 },
// },
// ],
// ]),
// },
domArr: [
// 杂乱的正方形
{
widthStr: "160rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(-33deg,#8f35ff,rgba(143,53,255,0)),radial-gradient(circle at 62% -28%,rgba(0,45,156,.75) 0,#002d9c 68%,rgba(0,45,156,0) 111%),linear-gradient(116deg,rgba(0,137,255,.2) 1%,rgba(0,186,255,.04) 38%,rgba(68,149,255,.08) 68%,rgba(3,79,255,.16) 88%)",
topStr: "calc(50% - 421rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 756rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.4,
opacityAnimMap: new Map([
[0.2, 0.4], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "80rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(133deg,rgba(255,186,0,0),rgba(255,207,0,.6) 68%),linear-gradient(170deg,#ffc400,#ff9200),linear-gradient(170deg,#ffc400,#ff9200)",
topStr: "calc(50% - 192rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 487rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 1,
opacityAnimMap: new Map([]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "96rem",
backgroundColorStr: "#cc7201",
backgroundImageStr: "",
topStr: "calc(50% - 141rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 624rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.8,
opacityAnimMap: new Map([
[0, 0.8],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "40rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(170deg,#3e9eff,#0062ff)",
topStr: "calc(50% - 67rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 316rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.75,
opacityAnimMap: new Map([
[0, 0.75],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "46rem",
backgroundColorStr: "",
backgroundImageStr:
"radial-gradient(77deg,#ff8300 0,#ff9200 54%,rgba(255,146,0,0) 128%),linear-gradient(77deg,#ffb400,#ff9200 25%,#ffdf2f 68%,#ff8e00)",
topStr: "calc(50% - 28rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 259rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.3,
opacityAnimMap: new Map([
[0, 0.3],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "72rem",
backgroundColorStr: "",
backgroundImageStr:
"radial-gradient(77deg,#ff8300 0,#ff9200 54%,rgba(255,146,0,0) 128%),linear-gradient(77deg,#ffb400,#ff9200 25%,#ffdf2f 68%,#ff8e00)",
topStr: "",
rightStr: "",
bottomStr: "calc(50% - 175rem)",
leftStr: "calc(50% - 579rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.4,
opacityAnimMap: new Map([
[0, 0.4],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "160rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(220deg,#e58dff,#8f35ff 67%,rgba(143,53,255,0)),radial-gradient(circle at 1.2222% -87%,rgba(0,45,156,.75) 0,#002d9c 171%,rgba(0,45,156,0) 278%),linear-gradient(137deg,rgba(0,137,255,.3),rgba(3,79,255,.24))",
topStr: "",
rightStr: "",
bottomStr: "calc(50% - 412rem)",
leftStr: "calc(50% - 701rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.3,
opacityAnimMap: new Map([
[0, 0.3],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "24rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(220deg,#e58dff,#8f35ff 67%,rgba(143,53,255,0)),radial-gradient(circle at 1.2222% -87%,rgba(0,45,156,.75) 0,#002d9c 171%,rgba(0,45,156,0) 278%),linear-gradient(137deg,rgba(0,137,255,.3),rgba(3,79,255,.24))",
topStr: "calc(50% - 3rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 243rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.3,
opacityAnimMap: new Map([
[0, 0.3],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "96rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(-27deg,rgba(143,53,255,.8) 11%,rgba(143,53,255,0)),radial-gradient(circle at 62% -28%,rgba(0,45,156,.75) 0,#002d9c 68%,rgba(0,45,156,0) 111%)",
topStr: "calc(50% - 473rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 154rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.3,
opacityAnimMap: new Map([
[0, 0.3],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "46rem",
backgroundColorStr: "#ffa800",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "calc(50% - 98rem)",
leftStr: "calc(50% - 362rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.95,
opacityAnimMap: new Map([
[0, 0.95],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "96rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(180deg,#004fff,rgba(0,45,156,0) 70%)",
topStr: "",
rightStr: "",
bottomStr: "calc(50% - 498rem)",
leftStr: "calc(50% - 165rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.95,
opacityAnimMap: new Map([
[0, 0.95],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "40rem",
backgroundColorStr: "",
backgroundImageStr:
"-webkit-radial-gradient(top,rgba(0,45,156,.75) 0,#002d9c 92%,rgba(0,45,156,0) 166%)",
topStr: "",
rightStr: "",
bottomStr: "calc(50% - 352rem)",
leftStr: "calc(50% - 26rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.35,
opacityAnimMap: new Map([
[0, 0.35],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "64rem",
backgroundColorStr: "",
backgroundImageStr:
"-webkit-radial-gradient(top,rgba(0,45,156,.75) 0,#002d9c 92%,rgba(0,45,156,0) 166%),-webkit-linear-gradient(334deg,rgba(0,137,255,.2) 1%,rgba(0,186,255,.04) 38%,rgba(68,149,255,.08) 68%,rgba(3,79,255,.16) 88%)",
topStr: "calc(50% - 395rem)",
rightStr: "calc(50% - 102rem)",
bottomStr: "",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.4,
opacityAnimMap: new Map([
[0, 0.4],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "24rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(147deg,#004fff,#002d9c 82%),linear-gradient(153deg,#007fff 5%,#0063ff 95%)",
topStr: "calc(50% - 206rem)",
rightStr: "calc(50% - 38rem)",
bottomStr: "",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.3,
opacityAnimMap: new Map([
[0, 0.3],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "130rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(147deg,#004fff,#002d9c 82%),linear-gradient(153deg,#007fff 5%,#0063ff 95%)",
topStr: "calc(50% - 263rem)",
rightStr: "calc(50% - 704rem)",
bottomStr: "",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.67,
opacityAnimMap: new Map([
[0, 0.67],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "64rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(128deg,#00ebb6,#00ba46 69%)",
topStr: "calc(50% - 226rem)",
rightStr: "calc(50% - 505rem)",
bottomStr: "",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.95,
opacityAnimMap: new Map([
[0, 0.95],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "24rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(170deg,#ffc400,rgba(255,207,0,.6))",
topStr: "calc(50% - 52rem)",
rightStr: "calc(50% - 218rem)",
bottomStr: "",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.2,
opacityAnimMap: new Map([
[0, 0.2],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "24rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(170deg,#00b6ff,#007fff)",
topStr: "",
rightStr: "calc(50% - 300rem)",
bottomStr: "calc(50% - 49rem)",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.96,
opacityAnimMap: new Map([
[0, 0.96],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "64rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(148deg,#76d2ff,#09baff 99%)",
topStr: "",
rightStr: "calc(50% - 453rem)",
bottomStr: "calc(50% - 170rem)",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.96,
opacityAnimMap: new Map([
[0, 0.96],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "96rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(136deg,#3e9eff 19%,#0062ff)",
topStr: "",
rightStr: "calc(50% - 657rem)",
bottomStr: "calc(50% - 133rem)",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.96,
opacityAnimMap: new Map([
[0, 0.96],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "160rem",
backgroundColorStr: "",
backgroundImageStr:
"linear-gradient(147deg,rgba(0,79,255,.6),rgba(0,45,156,.6) 82%),linear-gradient(153deg,#007fff 5%,#0063ff 95%)",
topStr: "",
rightStr: "calc(50% - 800rem)",
bottomStr: "calc(50% - 345rem)",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.5,
opacityAnimMap: new Map([
[0, 0.5],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "96rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(-2deg,rgba(0,45,156,.75),#002d9c)",
topStr: "",
rightStr: "calc(50% - 213rem)",
bottomStr: "calc(50% - 532rem)",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.2,
opacityAnimMap: new Map([
[0, 0.2],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
{
widthStr: "96rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(-2deg,rgba(0,45,156,.75),#002d9c)",
topStr: "",
rightStr: "calc(50% - 213rem)",
bottomStr: "calc(50% - 532rem)",
leftStr: "",
className: "e-square",
parentClassName: "effect-box",
opacity: 0.2,
opacityAnimMap: new Map([
[0, 0.2],
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 800 },
},
],
]),
},
// // logo 图标
// {
// widthStr: "190rem",
// backgroundColorStr: "",
// backgroundStr:
// "url(" +
// require("@/assets/images/siteArrange/logo-pingtai.png") +
// ") center no-repeat",
// topStr: "calc(50% - 90rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 90rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 1,
// index: 99,
// opacityAnimMap: new Map([
// [0, 1], // [帧,值]
// [0.6, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// scale: 1,
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// scale: 1,
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: -1300, z: 800 },
// scale: 1.5,
// },
// ],
// ]),
// },
// // logo 图标
// {
// widthStr: "180rem",
// backgroundColorStr: "",
// backgroundImageStr: "linear-gradient(0deg, #2254F3 0%, #15C5FF 100%)",
// topStr: "calc(50% - 90rem)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 90rem)",
// className: "e-square",
// parentClassName: "effect-box",
// opacity: 1,
// opacityAnimMap: new Map([
// [0, 1], // [帧,值]
// [0.6, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// scale: 1,
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// scale: 1,
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: -1300, z: 800 },
// scale: 1.5,
// },
// ],
// ]),
// },
// // 平台设置字体
// {
// widthStr: "200rem",
// backgroundColorStr: "",
// backgroundImageStr: "",
// topStr: "calc(62%)",
// rightStr: "",
// bottomStr: "",
// leftStr: "calc(50% - 98rem)",
// className: "e-square",
// parentClassName: "effect-box",
// text: "平台设置",
// fontSizeStr: "48rem",
// fontColorStr: "#ffffff",
// opacity: 1,
// opacityAnimMap: new Map([
// [0, 1], // [帧,值]
// [0.6, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 0 },
// scale: 1,
// },
// transformAnimMap: new Map([
// [
// 0,
// {
// translate3d: { x: 0, y: 0, z: 0 },
// scale: 1,
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: -1300, z: 800 },
// scale: 1.5,
// },
// ],
// ]),
// },
// // e-icon-box 相关元素
// // e-icon-box-bg
// {
// widthStr: "",
// backgroundColorStr: "",
// backgroundImageStr: "",
// topStr: "",
// rightStr: "",
// bottomStr: "",
// leftStr: "",
// className: "e-icon-box-bg",
// parentClassName: "e-icon-box",
// opacity: 0,
// opacityAnimMap: new Map([
// [0.6, 0], // [帧,值]
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 0.8,
// },
// transformAnimMap: new Map([
// [
// 0.6,
// {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 0.8,
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 1,
// },
// ],
// ]),
// },
// // e-icon-box 上部字体
// {
// widthStr: "",
// backgroundColorStr: "",
// backgroundImageStr: "",
// topStr: "calc(-38%)",
// rightStr: "",
// bottomStr: "",
// leftStr: "",
// className: "title_boxx",
// parentClassName: "e-icon-box",
// text: "平台设置",
// opacity: 0,
// fontColorStr: "#ffffff",
// opacityAnimMap: new Map([
// [0.6, 0], // [帧,值]
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 0.8,
// },
// transformAnimMap: new Map([
// [
// 0.6,
// {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 0.8,
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 1,
// },
// ],
// ]),
// },
// {
// widthStr: "",
// backgroundColorStr: "",
// backgroundImageStr: "",
// topStr: "calc(-16%)",
// rightStr: "",
// bottomStr: "",
// leftStr: "",
// className: "desc_boxx",
// parentClassName: "e-icon-box",
// text: "运用以人工智能为代表的新技术,驱动政务服务模式创新,为人民提供更加智慧化、人性化的政务服务。",
// opacity: 0,
// fontColorStr: "#ffffff",
// opacityAnimMap: new Map([
// [0.6, 0], // [帧,值]
// [1, 1],
// ]),
// transform: {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 0.8,
// },
// transformAnimMap: new Map([
// [
// 0.6,
// {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 0.8,
// },
// ],
// [
// 1,
// {
// translate3d: { x: 0, y: 0, z: 10 },
// scale: 1,
// },
// ],
// ]),
// },
// // e-icon 上行
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.1, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 450, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 450, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.1,
// // {
// // translate3d: { x: 450, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.3, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 300, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 300, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.3,
// // {
// // translate3d: { x: 300, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.5, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 150, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 150, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.5,
// // {
// // translate3d: { x: 150, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.7, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 0, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 0, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.7,
// // {
// // translate3d: { x: 0, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.5, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: -150, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: -150, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.5,
// // {
// // translate3d: { x: -150, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.3, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: -300, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: -300, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.3,
// // {
// // translate3d: { x: -300, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.1, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: -450, y: 80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: -450, y: 80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.1,
// // {
// // translate3d: { x: -450, y: 100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // e-icon 下行
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.1, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 450, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 450, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.1,
// // {
// // translate3d: { x: 450, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.3, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 300, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 300, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.3,
// // {
// // translate3d: { x: 300, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.5, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 150, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 150, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.5,
// // {
// // translate3d: { x: 150, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.7, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: 0, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: 0, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.7,
// // {
// // translate3d: { x: 0, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.5, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: -150, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: -150, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.5,
// // {
// // translate3d: { x: -150, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.3, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: -300, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: -300, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.3,
// // {
// // translate3d: { x: -300, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// // {
// // widthStr: "",
// // backgroundColorStr: "",
// // backgroundImageStr: "",
// // topStr: "",
// // rightStr: "",
// // bottomStr: "",
// // leftStr: "",
// // className: "e-icon",
// // parentClassName: "e-icon-box",
// // opacity: 0,
// // opacityAnimMap: new Map([
// // [0.1, 0], // [帧,值]
// // [1, 1],
// // ]),
// // transform: {
// // translate3d: { x: -450, y: -80, z: 10 },
// // scale: 0,
// // },
// // transformAnimMap: new Map([
// // [
// // 0.1,
// // {
// // translate3d: { x: -450, y: -80, z: 10 },
// // scale: 0,
// // },
// // ],
// // [
// // 0.1,
// // {
// // translate3d: { x: -450, y: -100, z: 10 },
// // scale: 0.5,
// // },
// // ],
// // [
// // 1,
// // {
// // translate3d: { x: 0, y: 0, z: 10 },
// // scale: 1,
// // },
// // ],
// // ]),
// // },
// ],
// logo 图标
{
widthStr: "190rem",
backgroundColorStr: "",
backgroundStr:
"url(" +
require("@/assets/images/siteArrange/logo-pingtai.png") +
") center no-repeat",
topStr: "calc(50% - 90rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 90rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 1,
index: 99,
opacityAnimMap: new Map([
[0, 1], // [帧,值]
[0.6, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
scale: 1,
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
scale: 1,
},
],
[
1,
{
translate3d: { x: 0, y: -1300, z: 800 },
scale: 1.5,
},
],
]),
},
// logo 图标
{
widthStr: "180rem",
backgroundColorStr: "",
backgroundImageStr: "linear-gradient(0deg, #2254F3 0%, #15C5FF 100%)",
topStr: "calc(50% - 90rem)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 90rem)",
className: "e-square",
parentClassName: "effect-box",
opacity: 1,
opacityAnimMap: new Map([
[0, 1], // [帧,值]
[0.6, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
scale: 1,
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
scale: 1,
},
],
[
1,
{
translate3d: { x: 0, y: -1300, z: 800 },
scale: 1.5,
},
],
]),
},
// 平台设置字体
{
widthStr: "200rem",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "calc(62%)",
rightStr: "",
bottomStr: "",
leftStr: "calc(50% - 98rem)",
className: "e-square",
parentClassName: "effect-box",
text: "平台设置",
fontSizeStr: "48rem",
fontColorStr: "#ffffff",
opacity: 1,
opacityAnimMap: new Map([
[0, 1], // [帧,值]
[0.6, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 0 },
scale: 1,
},
transformAnimMap: new Map([
[
0,
{
translate3d: { x: 0, y: 0, z: 0 },
scale: 1,
},
],
[
1,
{
translate3d: { x: 0, y: -1300, z: 800 },
scale: 1.5,
},
],
]),
},
// e-icon-box 相关元素
// e-icon-box-bg
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon-box-bg",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.6, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 10 },
scale: 0.8,
},
transformAnimMap: new Map([
[
0.6,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 0.8,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
// e-icon-box 上部字体
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "calc(-38%)",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "title_boxx",
parentClassName: "e-icon-box",
text: "平台设置",
opacity: 0,
fontColorStr: "#ffffff",
opacityAnimMap: new Map([
[0.6, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 10 },
scale: 0.8,
},
transformAnimMap: new Map([
[
0.6,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 0.8,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "calc(-16%)",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "desc_boxx",
parentClassName: "e-icon-box",
text: "运用以人工智能为代表的新技术,驱动政务服务模式创新,为人民提供更加智慧化、人性化的政务服务。",
opacity: 0,
fontColorStr: "#ffffff",
opacityAnimMap: new Map([
[0.6, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 0, z: 10 },
scale: 0.8,
},
transformAnimMap: new Map([
[
0.6,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 0.8,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
// e-icon 上行
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.1, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 450, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 450, y: 80, z: 10 },
scale: 0,
},
],
[
0.1,
{
translate3d: { x: 450, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.3, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 300, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 300, y: 80, z: 10 },
scale: 0,
},
],
[
0.3,
{
translate3d: { x: 300, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.5, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 150, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 150, y: 80, z: 10 },
scale: 0,
},
],
[
0.5,
{
translate3d: { x: 150, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.7, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 0, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 0, y: 80, z: 10 },
scale: 0,
},
],
[
0.7,
{
translate3d: { x: 0, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.5, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: -150, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: -150, y: 80, z: 10 },
scale: 0,
},
],
[
0.5,
{
translate3d: { x: -150, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.3, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: -300, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: -300, y: 80, z: 10 },
scale: 0,
},
],
[
0.3,
{
translate3d: { x: -300, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.1, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: -450, y: 80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: -450, y: 80, z: 10 },
scale: 0,
},
],
[
0.1,
{
translate3d: { x: -450, y: 100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
// e-icon 下行
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.1, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 450, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 450, y: -80, z: 10 },
scale: 0,
},
],
[
0.1,
{
translate3d: { x: 450, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.3, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 300, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 300, y: -80, z: 10 },
scale: 0,
},
],
[
0.3,
{
translate3d: { x: 300, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.5, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 150, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 150, y: -80, z: 10 },
scale: 0,
},
],
[
0.5,
{
translate3d: { x: 150, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.7, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: 0, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: 0, y: -80, z: 10 },
scale: 0,
},
],
[
0.7,
{
translate3d: { x: 0, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.5, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: -150, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: -150, y: -80, z: 10 },
scale: 0,
},
],
[
0.5,
{
translate3d: { x: -150, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.3, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: -300, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: -300, y: -80, z: 10 },
scale: 0,
},
],
[
0.3,
{
translate3d: { x: -300, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
{
widthStr: "",
backgroundColorStr: "",
backgroundImageStr: "",
topStr: "",
rightStr: "",
bottomStr: "",
leftStr: "",
className: "e-icon",
parentClassName: "e-icon-box",
opacity: 0,
opacityAnimMap: new Map([
[0.1, 0], // [帧,值]
[1, 1],
]),
transform: {
translate3d: { x: -450, y: -80, z: 10 },
scale: 0,
},
transformAnimMap: new Map([
[
0.1,
{
translate3d: { x: -450, y: -80, z: 10 },
scale: 0,
},
],
[
0.1,
{
translate3d: { x: -450, y: -100, z: 10 },
scale: 0.5,
},
],
[
1,
{
translate3d: { x: 0, y: 0, z: 10 },
scale: 1,
},
],
]),
},
],
};
// 特效管理
class EffectManager {
......
package com.mortals.xhx.module.page.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.module.page.model.pdu.BuryPointPdu;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.module.page.dao.PageAccessDao;
import com.mortals.xhx.module.page.model.PageAccessEntity;
import com.mortals.xhx.module.page.model.pdu.BuryPointPdu;
import com.mortals.xhx.module.page.model.pdu.PageCensusPdu;
import com.mortals.xhx.module.page.service.PageAccessService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.text.ParseException;
......@@ -122,7 +121,7 @@ public class PageAccessServiceImpl extends AbstractCRUDServiceImpl<PageAccessDao
if(CollectionUtils.isNotEmpty(todayList)){
for (PageAccessEntity item:todayList){
if(item!=null) {
DecimalFormat decimalFormat=new DecimalFormat(".00");
DecimalFormat decimalFormat=new DecimalFormat("#0.00");
String key = item.getTimeStr() + "_" + item.getFirstCode() + "_" + item.getSecondCode() + "_" + item.getThirdCode() + "_" + item.getFourthCode();
if (mp.containsKey(key)) {
PageAccessEntity last = mp.get(key);
......
......@@ -127,7 +127,7 @@ public class PageEventServiceImpl extends AbstractCRUDServiceImpl<PageEventDao,
float a = (float)vo.getValue();
float b = (float)clickSum;
float p = a/b;
DecimalFormat decimalFormat=new DecimalFormat(".00%");
DecimalFormat decimalFormat=new DecimalFormat("#0.00%");
String s = decimalFormat.format(p);
vo.setProportion(s);
}
......@@ -173,7 +173,7 @@ public class PageEventServiceImpl extends AbstractCRUDServiceImpl<PageEventDao,
float a = (float)clickSum;
float b = (float)trendCensusVos.size();
float p = a/b;
DecimalFormat decimalFormat=new DecimalFormat(".00");
DecimalFormat decimalFormat=new DecimalFormat("#0.00");
String s = decimalFormat.format(p);
dayAccessAvg = Float.valueOf(s);
}
......@@ -232,8 +232,8 @@ public class PageEventServiceImpl extends AbstractCRUDServiceImpl<PageEventDao,
float a = (float)clickSum;
float b = (float)item.getAccessCount();
float p = b/a;
DecimalFormat decimalFormat=new DecimalFormat(".00%");
DecimalFormat df=new DecimalFormat(".00");
DecimalFormat decimalFormat=new DecimalFormat("#0.00%");
DecimalFormat df=new DecimalFormat("#0.00");
String s = decimalFormat.format(p);
String s1 = df.format(p);
item.setProportion(s);
......
......@@ -75,7 +75,15 @@ public class PageRouteServiceImpl extends AbstractCRUDServiceImpl<PageRouteDao,
}
Map<String,Object> result = new HashMap<>();
List<PageWayCensusVo> pageWayCensusVos = dao.getPageWayCensus(pdu);
result.put("links",pageWayCensusVos);
List<PageWayCensusVo> list = new ArrayList<>();
Map<String,String> source = new HashMap<>();
for(PageWayCensusVo item:pageWayCensusVos){
source.put(item.getSource(),item.getSourceName());
if(!source.containsKey(item.getTarget())){
list.add(item);
}
}
result.put("links",list);
List<Map<String, Object>> pageCodes = dao.getPageWayCode(pdu);
result.put("data",pageCodes);
return result;
......
......@@ -8,6 +8,7 @@ import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.service.ICacheService;
import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.common.utils.LoginAESUtil;
import com.mortals.xhx.module.param.service.ParamService;
......@@ -87,9 +88,11 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
@Override
protected void saveBefore(UserEntity entity, Map<String, Object> model, Context context) throws AppException {
String loginName = LoginAESUtil.decrypt(entity.getLoginName(),AES_KEY,AES_IV,LoginAESUtil.AES_CBC);
String loginPwd = LoginAESUtil.decrypt(entity.getLoginPwd(),AES_KEY,AES_IV,LoginAESUtil.AES_CBC);
entity.setLoginName(loginName);
entity.setLoginPwd(loginPwd);
if(StringUtils.isNotEmpty(entity.getLoginPwd())) {
String loginPwd = LoginAESUtil.decrypt(entity.getLoginPwd(), AES_KEY, AES_IV, LoginAESUtil.AES_CBC);
entity.setLoginPwd(loginPwd);
}
}
@Override
......
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