Commit 802a93a7 authored by “yiyousong”'s avatar “yiyousong”

perf:修改项目

parent eb1d0943
<template>
<div class="header-site">
<a-popover trigger="click" placement="bottomLeft" v-model="visible">
<a class="ant-dropdown-link" @click="visible = true">
{{ siteName }} <a-icon type="down" />
</a>
<template slot="content">
<div class="content" style="min-width: 50vw; min-height: 200px">
<div class="flex_row flex_align_c primary-color name">
<a-icon type="environment" style="margin-right: 10px" />
<span style="">{{ siteName }}</span>
</div>
<div class="site-list">
<span
v-for="(item, index) in sitelist"
:key="index"
:class="{ 'primary-color': item.id == checkid }"
@click="setSite(item)"
>{{ item.label }}</span
>
</div>
<div class="check-site">
<span>您的选择是:</span>
<span
v-for="(item, index) in checkarr"
:key="index"
@click="updataSite(item)"
>{{ index > 0 ? ">" : "" }}{{ item.label }}</span
>
</div>
<div class="site-btn">
<a-button style="margin-right: 10px" @click="visible = false"
>取消</a-button
>
<a-button type="primary" @click="onSucessSite" :disabled="isSite"
>确定</a-button
>
</div>
</div>
</template>
</a-popover>
</div>
</template>
<script>
import { getSiteTree } from "@/services/basicsetFun";
import { mapMutations } from "vuex";
import local from "@/utils/local";
// import Cookie from "js-cookie";
export default {
data() {
return {
sitelist: [],
visible: false,
offsetLeft: 0,
checkarr: [], //选中站点
checkid: undefined, //最终选中站点
siteName: "",
isSite: true,
};
},
computed: {},
created() {
this.getwaitedListdata();
},
mounted() {},
methods: {
...mapMutations("site", ["SET_SITE_ID", "SET_siteName"]),
// 确认站点
onSucessSite() {
if (this.checkarr.length == 0) return;
let obj = this.checkarr[this.checkarr.length - 1];
this.clickSite(obj);
},
// 选中
setSite(obj) {
this.checkid = undefined;
// 为子节点不添加数据
let data = this.checkarr[this.checkarr.length - 1];
if (data && (data.isLeaf || data.children.length == 0)) {
// 如果为子节点更新最后一个数据
this.checkid = obj.id;
this.checkarr[this.checkarr.length - 1] = obj;
} else {
this.checkarr.push(obj);
if (obj.children && obj.children.length > 0) {
this.sitelist = obj.children;
}
}
if (obj && obj.type == "site") {
this.isSite = false;
} else {
this.isSite = true;
}
},
// 更新选中
updataSite(row) {
const { id } = row;
this.checkid = undefined;
let index = this.checkarr.findIndex((v) => v.id == id);
this.checkarr.length = index + 1;
this.sitelist = row.children;
if (row && row.type == "site") {
this.isSite = false;
} else {
this.isSite = true;
}
// this.getwaitedListdata(id);
},
getwaitedListdata() {
getSiteTree().then((res) => {
const { code, data } = res.data;
if (code == 1) {
const { siteTree } = data;
this.sitelist = siteTree;
let arr = [];
const treeFn = function(e) {
e.forEach((element) => {
arr.push(element);
if (element.children && element.children.length > 0) {
treeFn(element.children);
}
});
};
const siteid = local.getLocal("siteId");
treeFn(siteTree);
const siteObj = arr.find((v) => v.id == siteid);
this.siteName = siteObj ? siteObj.label : "请选择站点";
}
});
},
clickSite(obj) {
// Cookie.set("siteid", obj.id);
// let siteInfo = {
// siteName: obj.label,
// siteid: obj.id,
// };
local.setLocal("siteId", obj.id);
local.setLocal("siteName", obj.label);
this.SET_SITE_ID(obj.id);
this.SET_siteName(obj.label);
this.show = false;
if (location.href.search(/token/gi) >= 0) {
setTimeout(() => {
location.reload();
});
} else {
location.reload();
}
},
ontrigger(e) {
if (e.target && e.target.nodeName == "A") {
this.show = !this.show;
}
},
},
};
</script>
<style lang="less" scoped>
.ant-dropdown-link {
padding: 0 20px;
font-size: 16px;
min-width: 200px;
display: inline-block;
color: #fff;
}
.content {
display: flex;
flex-direction: column;
justify-content: space-around;
.name {
font-size: 20px;
}
.site-list {
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
display: flex;
flex-wrap: wrap;
span {
line-height: 1.5;
padding: 10px 20px;
cursor: pointer;
&:hover {
color: #1890ff;
}
}
}
.check-site,
.site-btn {
padding: 0 20px;
}
.check-site {
cursor: pointer;
}
}
</style>
......@@ -97,8 +97,13 @@ export default {
const { id } = row;
this.checkid = undefined;
let index = this.checkarr.findIndex((v) => v.id == id);
this.checkarr.length = index + 1;
this.sitelist = row.children;
if (index > -1) {
this.checkarr.splice(index + 1, this.checkarr.length - (index + 1));
}
if (row.children && row.children.length > 0) {
this.sitelist = row.children;
}
if (row && row.type == "site") {
this.isSite = false;
......@@ -110,11 +115,12 @@ export default {
getwaitedListdata() {
getSiteTree().then((res) => {
const { code, data } = res.data;
if (code == 1) {
const { siteTree } = data;
this.sitelist = siteTree;
let arr = [];
const treeFn = function(e) {
const treeFn = function (e) {
e.forEach((element) => {
arr.push(element);
if (element.children && element.children.length > 0) {
......
VUE_APP_API_BASE_URL=http://8.136.255.30:11072
\ No newline at end of file
# 易政秀
VUE_APP_API_ES_URL=http://8.136.255.30
# 系统名称
VUE_APP_systemName = 数字政务一体化智慧管理平台
\ No newline at end of file
# 开发环境配置
NODE_ENV = development
#VUE_APP_API_BASE_URL=http://8.136.255.30:11078
# VUE_APP_API_BASE_URL=http://8.136.255.30:11078
VUE_APP_API_BASE_URL=http://192.168.0.98:11078
#图片显示拼接
VUE_APP_API_IMG_URL=http://8.136.255.30:11078/
# VUE_APP_API_IMG_URL=http://8.136.255.30:11078/
VUE_APP_API_IMG_URL=http://192.168.0.98:11078/
#余林
#VUE_APP_API_PHP_URL=http://8.136.255.30:8090
# VUE_APP_API_PHP_URL=http://8.136.255.30:8090
VUE_APP_API_PHP_URL=http://192.168.0.98:8090
#宜宾
#VUE_APP_API_BASE_URL=http://10.12.185.213:11072
......
......@@ -6,5 +6,3 @@ VUE_APP_API_BASE_URL=/basics_api
VUE_APP_API_PHP_URL=/zwfw_api
#图片显示拼接
VUE_APP_API_IMG_URL =
VUE_APP_API_PRP_RUL=http://112.19.80.237:11007
\ No newline at end of file
......@@ -11,11 +11,13 @@
},
"dependencies": {
"@babel/polyfill": "^7.12.1",
"@ianwalter/vuex-reset": "^4.3.4",
"@jiaminghi/data-view": "^2.10.0",
"ant-design-vue": "^1.7.8",
"axios": "^0.27.2",
"babel-polyfill": "^6.26.0",
"core-js": "^3.8.3",
"crypto-js": "^4.1.1",
"echarts": "^5.3.3",
"element-ui": "^2.15.8",
"font-awesome": "^4.7.0",
......@@ -25,22 +27,29 @@
"lodash": "^4.17.21",
"moment": "^2.29.4",
"qs": "^6.10.3",
"secure-ls": "^1.2.6",
"swiper": "5",
"v-viewer": "^1.6.4",
"vue": "^2.6.14",
"vue-highlightjs": "^1.3.3",
"vue-lazyload": "1.3.3",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
"vuex": "^3.6.2",
"vuex-persistedstate": "^4.1.0"
},
"devDependencies": {
"@tailwindcss/postcss7-compat": "^2.2.17",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"autoprefixer": "^10.4.15",
"browserslist": "^4.21.4",
"caniuse-lite": "^1.0.30001442",
"less": "^4.0.0",
"less-loader": "^8.0.0",
"postcss": "^8.4.12",
"tailwindcss": "^3.3.3",
"vue-template-compiler": "^2.6.14",
"webpack-bundle-analyzer": "^4.7.0"
},
......
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>
智慧大厅综合管理系统
</title>
<style>
*,
:after,
:before {
-webkit-box-sizing: border-box !important;
-moz-box-sizing: border-box !important;
-o-box-sizing: border-box !important;
-ms-box-sizing: border-box !important;
box-sizing: border-box !important;
}
html,
body {
font-size: 16px;
font-family: "Arial", "Microsoft YaHei", "黑体", "宋体", "微软雅黑",
sans-serif !important;
width: 100%;
height: 100%;
}
</style>
</head>
<body style="font-size: 16px;">
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
\ No newline at end of file
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= process.env.VUE_APP_systemName %></title>
<style>
@font-face {
font-family: Source Han Sans CN ;
src: url('./SourceHanSansSC-Regular-2.otf');
}
</style>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<div class="app">
<a-spin v-bind="loadingProps">
<a-config-provider :locale="zh_CN">
<router-view />
<!-- <keep-alive>
<router-view />
</keep-alive> -->
</a-config-provider>
</a-spin>
<div class="app h-full w-full">
<a-config-provider :locale="zh_CN">
<router-view />
</a-config-provider>
<!-- 导出进度条 -->
<div class="export" v-if="progressFile.show">
<a-progress :percent="progressFile.percent" status="active" />
<div
v-if="progressFile.show"
class="export w-full h-full flex justify-center items-center fixed left-0 top-0 z-50"
>
<div class="w-[300px]">
<a-progress :percent="progressFile.percent" status="active" />
</div>
</div>
</div>
</template>
......@@ -19,24 +19,23 @@
import Vue from "vue";
import zh_CN from "ant-design-vue/lib/locale-provider/zh_CN";
export default {
name: "App",
data() {
return {
zh_CN,
loadingProps: {
spinning: false,
},
progressFile:{
show:false,
percent:1
}
progressFile: {
show: false,
percent: 1,
},
};
},
beforeCreate() {
Vue.prototype.$app = this;
},
created() {
this.readVueXData();
// this.readVueXData();
},
methods: {
readVueXData() {
......@@ -57,26 +56,9 @@ export default {
},
};
</script>
<style lang="less" scoped>
.app {
width: 100% !important;
min-width: 1440px !important;
height: 100%;
}
.ant-spin-nested-loading,
/deep/.ant-spin-container {
width: 100%;
min-height: 100% !important;
display: flex;
// flex-direction: column;
}
.export{
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%);
z-index: 99;
width: 300px;
height: 150px;
.export {
background-color: rgba(0, 0, 0, 0.3);
}
</style>
</style>
\ No newline at end of file
/* 颜色 */
.primary {
color: #1890ff;
}
.delete {
color: #ff4d4f;
}
.green {
color: #1bbc9b;
}
.clofff {
color: #fff;
}
.orange {
color: orange;
}
.bgdel {
background-color: #ff4d4f;
}
.bgpr {
background-color: #1890ff;
}
.bgg {
background-color: #1bbc9b;
}
/* 版心 */
.container {
width: 1200px;
}
/* 弹性布局 */
.flex {
display: flex;
}
.flex1 {
flex: 1;
}
.flexc {
flex-direction: column;
}
.flexwrap {
flex-wrap: wrap;
}
.jcc {
justify-content: center;
}
.jca {
justify-content: space-around;
}
.jcb {
justify-content: space-between;
}
.jce {
justify-content: space-evenly;
}
.aic {
align-items: center;
}
.aca {
align-content: space-around;
}
.acb {
align-content: space-between;
}
.ace {
align-content: space-evenly;
}
/* margin */
.m10 {
margin: 10px;
}
.m15 {
margin: 15px;
}
.m20 {
margin: 20px;
}
.mt10 {
margin-top: 10px;
}
.mt15 {
margin-top: 15px;
}
.mt20 {
margin-top: 20px;
}
.mt50 {
margin-top: 50px;
}
.ml10 {
margin-left: 10px;
}
.ml15 {
margin-left: 15px;
}
.ml20 {
margin-left: 20px;
}
.ml25 {
margin-left: 25px;
}
.mr10 {
margin-right: 10px;
}
.mr15 {
margin-right: 15px;
}
.mr20 {
margin-right: 20px;
}
.mr25 {
margin-right: 25px;
}
.mr50 {
margin-right: 50px;
}
.mb10 {
margin-bottom: 10px;
}
.mb15 {
margin-bottom: 15px;
}
.mb20 {
margin-bottom: 20px;
}
.mb25 {
margin-bottom: 25px;
}
/* padding */
.pd10 {
padding: 10px;
}
.pd15 {
padding: 15px;
}
.pd20 {
padding: 20px;
}
.pdt10 {
padding-top: 10px;
}
.pdt15 {
padding-top: 15px;
}
.pdt20 {
padding-top: 20px;
}
.pdt30 {
padding-top: 30px;
}
.pdl8 {
padding-left: 8px;
}
.pdl10 {
padding-left: 10px;
}
.pdl15 {
padding-left: 15px;
}
.pdl20 {
padding-left: 20px;
}
.pdr10 {
padding-right: 10px;
}
.pdr15 {
padding-right: 15px;
}
.pdr20 {
padding-right: 20px;
}
.pdb10 {
padding-bottom: 10px;
}
.pdb15 {
padding-bottom: 15px;
}
.pdb20 {
padding-bottom: 20px;
}
/* 字体大小 */
.font16 {
font-size: 16px;
}
.font18 {
font-size: 18px;
}
.font20 {
font-size: 20px;
}
.font22 {
font-size: 22px;
}
.font24 {
font-size: 24px;
}
.font26 {
font-size: 26px;
}
.font28 {
font-size: 28px;
}
.font30 {
font-size: 30px;
}
/* 字体位置 */
.tac {
text-align: center;
}
.tal {
text-align: left;
}
.tar {
text-align: right;
}
/* 加粗 */
.fontw600 {
font-weight: 600;
}
.fontw700 {
font-weight: 700;
}
.fontw800 {
font-weight: 800;
}
/* 手型鼠标 */
.pointer {
cursor: pointer;
}
.pagination {
margin-top: 10px;
text-align: right;
}
.color_title {
margin-left: 15px;
position: relative;
margin-bottom: 15px;
color: #1890ff;
}
.color_title::before {
content: "";
width: 4px;
height: 20px;
position: absolute;
top: 0px;
left: -16px;
background-color: #0595fd;
}
::-webkit-scrollbar {
width: 6px;
height: 6px;
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;
}
.ant-modal-close {
color: #188fff !important;
}
.ant-modal-close svg {
font-size: 26px !important;
}
.ant-modal-title {
color: #1890ff !important;
font-size: 18px;
font-weight: bold;
}
.header_box {
padding-bottom: 1rem;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
}
.header_box > div {
display: flex;
justify-content: flex-start;
align-items: center;
}
.header_box > div b {
font-style: normal;
font-weight: unset;
font-size: 16px;
margin-left: 20px;
}
.header_box > div b i {
color: #0595fd;
font-style: normal;
}
.header_box > div sub {
font-size: 14px;
font-style: normal;
bottom: unset;
margin-left: 20px;
}
.header_box > div .export_btn {
outline: none;
cursor: pointer;
border: none;
padding: 0.8rem 1.2rem;
margin: 0;
font-family: inherit;
font-size: inherit;
position: relative;
display: inline-block;
font-size: 0.8rem;
border-radius: 6px;
overflow: hidden;
background: #42dac8;
color: ghostwhite;
}
.header_box > div .export_btn span {
position: relative;
z-index: 10;
transition: color 0.4s;
}
.header_box > div .export_btn:hover span {
color: #fef2f2;
}
.header_box > div .export_btn::before,
.header_box > div .export_btn::after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
}
.header_box > div .export_btn::before {
content: "";
background: #08cfb8;
width: 120%;
left: -10%;
transform: skew(30deg);
transition: transform 0.4s cubic-bezier(0.3, 1, 0.8, 1);
}
.header_box > div .export_btn:hover::before {
transform: translate3d(100%, 0, 0);
}
.header_box > span {
display: flex;
justify-content: space-between;
align-items: center;
}
.header_box > span /deep/ .ant-input-affix-wrapper {
width: 15rem !important;
margin-right: 1rem !important;
}
.header_box > span /deep/ .ant-input {
height: 2.3rem !important;
}
.header_box > span /deep/ .ant-select-selection {
width: 170px !important;
height: 2.3rem !important;
margin-right: 1rem !important;
}
.header_box > span /deep/ .ant-select-selection__rendered {
height: 100% !important;
}
.header_box > span /deep/ .ant-select-selection-selected-value {
height: 100% !important;
line-height: 2.3rem !important;
}
.header_box > span .search_btn {
padding: 0.8rem 1.2rem;
border: 0;
border-radius: 5px;
background: #1890ff;
box-shadow: rgba(0, 0, 0, 0.05) 0 0 8px;
letter-spacing: 1.5px;
text-transform: uppercase;
font-size: 0.8rem;
color: hsl(0, 0%, 100%);
transition: all 0.5s ease;
cursor: pointer;
}
.header_box > span .search_btn:hover {
letter-spacing: 3px;
background-color: #7d5cf9;
color: hsl(0, 0%, 100%);
box-shadow: #5d18dc 0px 2px 10px 0px;
}
.header_box > span .search_btn:active {
letter-spacing: 3px;
background-color: #7d5cf9;
color: hsl(0, 0%, 100%);
box-shadow: #5d18dc 0px 0px 0px 0px;
transform: translateY(2px);
transition: 100ms;
}
.main .type0 {
color: #888888;
}
.main .type1 {
color: #f94545;
}
.main .type2 {
color: #04ca8f;
}
.main .ant-btn-link {
padding: 0 !important;
}
.main .ant-btn-link + .ant-btn-link {
margin-left: 1rem !important;
}
.main .ant-table-pagination {
float: right !important;
}
.ant-btn-success {
background-color: #04ca8f;
border-color: #04ca8f;
color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
-webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.05);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.05);
}
.ant-btn-success:hover,
.ant-btn-success:focus {
color: #fff;
background-color: #42dac8;
border-color: #42dac8;
}
.ant-select {
min-width: 120px;
}
.ant-calendar-picker {
min-width: 270px;
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.addclass {
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%) !important;
color: #fff !important;
}
/* 颜色 */
/* 基础 */
.primary {
color: #1890ff;
}
......@@ -31,58 +31,8 @@
background-color: #1bbc9b;
}
/* 版心 */
.container {
width: 1200px;
}
/* 弹性布局 */
.flex {
display: flex;
}
.flex1 {
flex: 1;
}
.flexc {
flex-direction: column;
}
.flexwrap {
flex-wrap: wrap;
}
.jcc {
justify-content: center;
}
.jca {
justify-content: space-around;
}
.jcb {
justify-content: space-between;
}
.jce {
justify-content: space-evenly;
}
.aic {
align-items: center;
}
.aca {
align-content: space-around;
}
.acb {
align-content: space-between;
}
.ace {
align-content: space-evenly;
img {
display: inline-block;
}
/* margin */
......@@ -334,7 +284,7 @@
::-webkit-scrollbar-track {
border-radius: 6px;
background: #fff;
background: #0000;
}
.ant-modal-close {
......@@ -358,7 +308,7 @@
align-items: center;
flex-wrap: wrap;
&>div {
& > div {
display: flex;
justify-content: flex-start;
align-items: center;
......@@ -433,7 +383,7 @@
}
}
&>span {
& > span {
display: flex;
justify-content: space-between;
align-items: center;
......@@ -510,7 +460,7 @@
.ant-btn-link {
padding: 0 !important;
&+.ant-btn-link {
& + .ant-btn-link {
margin-left: 1rem !important;
}
}
......@@ -550,8 +500,195 @@
white-space: nowrap;
}
.addclass {
.addclass,.ant-btn-primary {
background: linear-gradient(90deg, #5ab6ff 0%, #2e9aff 100%) !important;
color: #fff !important;
border:none !important
border: none !important;
}
.total-info {
margin: 16px;
font-size: 16px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #fff;
}
.reportforms-out-box {
width: 100%;
flex: 1;
background-color: #fff;
border-radius: 8px;
overflow: hidden;
.ant-tabs-bar {
margin: 0px;
}
.ant-tabs-nav-wrap {
background: #e2effc;
}
.ant-tabs-nav-scroll {
height: 54px;
}
.ant-tabs-tab {
font-size: 18px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #787878;
}
.ant-tabs-tab-active {
font-size: 18px;
font-weight: bold;
color: #0857e8;
}
.ant-tabs-ink-bar {
width: 40px !important;
height: 6px;
background: #0857e8;
border-radius: 4px 4px 0px 0px;
bottom: 0px;
}
.tab-box {
height: 54px;
padding: 0px 10px;
background: #e2effc;
a {
display: inline-block;
height: inherit;
margin-right: 40px;
font-size: 18px;
line-height: 54px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #787878;
}
.router-link-active {
font-size: 18px;
font-weight: bold;
color: #0857e8;
position: relative;
&::after {
content: "";
width: 40px;
height: 6px;
background: #0857e8;
border-radius: 4px 4px 0px 0px;
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 0px;
}
}
}
.reportforms-out {
padding: 10px;
}
.ant-table {
border:none;
tr, th,td{
border:none !important;
}
}
.ant-table-thead th {
background: linear-gradient(0deg, #f9fbff 0%, #cbddff 78%);
font-size: 16px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #232323;
}
.ant-table-tbody {
tr:nth-child(even){
background:#F2F6FE;
}
td{
font-family: Source Han Sans CN;
font-weight: 500;
color: #787878;
}
}
.search-form {
width: 100%;
}
.ant-pagination-item {
font-family: Source Han Sans CN;
}
.ant-pagination-item-active {
background: #0857e8;
a {
color: #fff;
}
}
}
.search-form {
width: 100%;
.ant-space {
width: inherit;
}
.export-btn {
height: 42px;
background: #00a870;
box-shadow: 0px 4px 8px 1px rgba(0, 168, 112, 0.26);
border-radius: 4px;
font-size: 16px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #ffffff;
}
.ant-select {
width: 100%;
height: 42px;
.ant-select-selection__rendered {
height: 100%;
display: flex;
align-items: center;
}
.ant-select-selection {
height: 42px;
background: #f0f0f0;
border-radius: 4px;
border: none;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #232323;
}
}
.ant-select-selection__choice__content{
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #232323;
}
.ant-calendar-picker {
min-width: 100% !important;
max-width: 100%;
}
.ant-calendar-picker-input {
.ant-calendar-range-picker-input:nth-child(1) {
text-align: left;
}
.ant-calendar-range-picker-input:nth-child(3) {
text-align: right;
}
}
.ant-input {
width: 100%;
height: 42px;
background: #f0f0f0;
border: none;
border-radius: 4px;
font-size: 14px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #232323;
}
.search-btn {
height: 42px;
background: #0857e8;
box-shadow: 0px 4px 8px 1px rgba(8, 87, 232, 0.26);
border-radius: 4px;
font-size: 16px;
font-family: Source Han Sans CN;
font-weight: 500;
color: #ffffff;
}
}
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}
\ No newline at end of file
/*
* 在 normalize.css 基础上进行的其他重置
*/
* {
box-sizing: border-box;
}
html,
body {
width: 100%;
height: 100%;
}
html {
/* AntD 字体家族:https://ant.design/docs/spec/font-cn#%E5%AD%97%E4%BD%93%E5%AE%B6%E6%97%8F */
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
}
p {
margin: 0;
padding: 0;
}
input,
button {
border: none;
/* 去掉浏览器默认的 input 边框样式 */
outline: none;
/* 去掉浏览器默认的聚焦时候的蓝色边框 */
}
a {
text-decoration: none;
color: #000;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 0;
padding: 0
}
\ No newline at end of file
/* @import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities'; */
/* @tailwind base; */
@tailwind components;
@tailwind utilities;
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
This diff is collapsed.
@font-face {
font-family: "iconfont"; /* Project id 4222008 */
src: url('iconfont.woff2?t=1692777691620') format('woff2'),
url('iconfont.woff?t=1692777691620') format('woff'),
url('iconfont.ttf?t=1692777691620') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-dot:before {
content: "\e608";
}
.icon-hidden:before {
content: "\e607";
}
.icon-pwd:before {
content: "\e615";
}
.icon-show:before {
content: "\e61c";
}
.icon-user:before {
content: "\e649";
}
window._iconfont_svg_string_4222008='<svg><symbol id="icon-dot" viewBox="0 0 1024 1024"><path d="M512 320a192.064 192.064 0 0 1 0 384 192 192 0 0 1 0-384z" fill="" ></path></symbol><symbol id="icon-hidden" viewBox="0 0 1024 1024"><path d="M853.504 451.072c46.592-34.816 85.504-76.288 110.592-123.904 7.168-13.824 1.536-31.232-11.776-37.888-6.656-3.584-14.336-4.608-21.504-2.048-7.168 2.048-13.312 7.168-16.384 14.336-62.464 118.272-223.744 198.144-401.92 198.144S173.568 419.84 110.592 301.568c-3.584-6.656-9.216-11.776-16.384-13.824-7.168-2.048-14.848-1.536-21.504 2.048-14.336 6.656-19.456 24.576-11.776 37.888 25.088 47.616 63.488 90.112 110.592 123.904l-107.52 134.144c-6.656 8.704-8.192 20.48-3.584 30.208 4.608 9.728 14.848 16.384 25.6 16.384 8.704 0 16.384-3.584 22.016-10.752l111.616-138.752c49.664 27.648 106.496 48.128 167.936 60.416l-71.168 155.136c-6.656 14.336 0 31.232 14.336 37.376 4.096 1.536 8.192 3.072 11.776 3.072 10.752 0 20.992-6.144 26.112-16.384l76.8-170.496c21.504 2.048 44.032 4.096 66.56 4.096 18.432 0 35.84-1.536 53.248-3.072l77.312 168.96c3.072 6.656 8.704 12.288 15.872 14.848 7.168 2.56 14.848 2.048 21.504-1.024 14.336-6.144 20.48-23.552 14.336-37.376l-69.632-153.6c63.488-10.24 124.416-31.744 180.224-62.976l111.104 138.752c5.632 6.656 13.824 10.752 22.016 10.752 6.144 0 12.288-2.048 17.408-6.144 12.288-9.728 14.336-27.648 4.608-39.936l-106.496-134.144z m0 0" ></path></symbol><symbol id="icon-pwd" viewBox="0 0 1024 1024"><path d="M725.4 928.3H299.7c-88 0-159.6-71.6-159.6-159.6V555.8c0-88 71.6-159.6 159.6-159.6h425.7c88 0 159.6 71.6 159.6 159.6v212.8c0 88.1-71.6 159.7-159.6 159.7zM299.7 460c-52.8 0-95.8 43-95.8 95.8v212.8c0 52.8 43 95.8 95.8 95.8h425.7c52.8 0 95.8-43 95.8-95.8V555.8c0-52.8-43-95.8-95.8-95.8H299.7z" fill="#A1A0A5" ></path><path d="M778.6 406.8h-63.9c0-110.9-90.2-244.8-202.2-244.8S310.3 296 310.3 406.8h-63.9c0-142.7 116.2-308.6 266.1-308.6s266.1 165.9 266.1 308.6z" fill="#A1A0A5" ></path></symbol><symbol id="icon-show" viewBox="0 0 1024 1024"><path d="M678.976 586.24c0 92.224-74.752 166.976-166.976 166.976S345.024 678.464 345.024 586.24 419.776 419.2 512 419.2s166.976 74.816 166.976 167.04z" fill="#666666" ></path><path d="M512 266.112C229.248 266.112 0 586.24 0 586.24s229.248 320.128 512 320.128 512-320.128 512-320.128-229.248-320.128-512-320.128z m0 532.992c-117.568 0-212.864-95.296-212.864-212.864 0-117.568 95.296-212.864 212.864-212.864s212.864 95.296 212.864 212.864c0 117.568-95.296 212.864-212.864 212.864z" fill="#666666" ></path><path d="M678.976 586.24c0 92.224-74.752 166.976-166.976 166.976S345.024 678.464 345.024 586.24 419.776 419.2 512 419.2s166.976 74.816 166.976 167.04z" fill="#666666" ></path><path d="M678.976 586.24c0 92.224-74.752 166.976-166.976 166.976S345.024 678.464 345.024 586.24 419.776 419.2 512 419.2s166.976 74.816 166.976 167.04z" fill="#666666" ></path></symbol><symbol id="icon-user" viewBox="0 0 1024 1024"><path d="M602.08 960.576H423.488c-169.408 0-303.2 0-303.2-87.872v-17.568c0-164.672 136.032-298.624 303.2-298.624H602.08c167.168 0 303.2 133.952 303.2 298.624v17.568c-0.032 87.872-140.544 87.872-303.2 87.872zM423.456 609.184c-138.112 0-250.496 110.304-250.496 245.92v17.568c0 35.168 144.768 35.168 250.496 35.168h178.592c87.52 0 250.496 0 250.496-35.168v-17.568c0-135.616-112.384-245.92-250.496-245.92H423.456z m80.384-70.304c-132.736 0-240.672-106.4-240.672-237.184S371.104 64.544 503.84 64.544s240.672 106.368 240.672 237.152S636.544 538.88 503.84 538.88zM315.872 301.696c0 101.696 84.32 184.48 187.968 184.48s187.968-82.752 187.968-184.48-84.32-184.448-187.968-184.448S315.872 200 315.872 301.696z" ></path></symbol></svg>',function(n){var t=(t=document.getElementsByTagName("script"))[t.length-1],e=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var c,i,o,l,d,s=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}c=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_4222008,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?s(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),c()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(o=c,l=n.document,d=!1,h(),l.onreadystatechange=function(){"complete"==l.readyState&&(l.onreadystatechange=null,a())})}function a(){d||(d=!0,o())}function h(){try{l.documentElement.doScroll("left")}catch(t){return void setTimeout(h,50)}a()}}(window);
\ No newline at end of file
{
"id": "4222008",
"name": "门户",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "1920286",
"name": "点",
"font_class": "dot",
"unicode": "e608",
"unicode_decimal": 58888
},
{
"icon_id": "12183287",
"name": "不可见",
"font_class": "hidden",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "12387627",
"name": "密码",
"font_class": "pwd",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "15391351",
"name": "可见",
"font_class": "show",
"unicode": "e61c",
"unicode_decimal": 58908
},
{
"icon_id": "29195000",
"name": "用户",
"font_class": "user",
"unicode": "e649",
"unicode_decimal": 58953
}
]
}
<template>
<div class="previe-modal" v-if="Visible" @click="Visible = false">
<img @click.stop v-if="previeData.type === 'img'" :src="previeData.url" />
<video
@click.stop
v-else
:src="previeData.url"
autoplay
muted
controls
></video>
<a-icon type="close-circle" />
</div>
</template>
<script>
export default {
props: {
previeData: {
type: Object,
required: true,
default: () => {
return {};
},
},
previeVisible: {
type: Boolean,
required: true,
default: false,
},
},
computed: {
Visible: {
get() {
return this.previeVisible;
},
set(val) {
this.$emit("update:previeVisible", val);
},
},
},
};
</script>
<style lang="less" scoped>
.previe-modal {
width: 100%;
height: 100%;
position: fixed;
top: 0px;
left: 0px;
z-index: 10000;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
img,
video {
height: 400px;
max-width: 800px;
object-fit: contain;
}
.anticon-close-circle {
font-size: 40px;
margin-top: 30px;
color: #fff;
cursor: pointer;
}
}
</style>
\ No newline at end of file
let customComponents = {
install: function (Vue) {
//在use的时候vue会自动调用此方法
const files = require.context(
"@/components/reportformsForm",
true,
/\.vue$/
); //返回的是一个函数
// require.context()的参数
// 参数一 {String}:读取文件的目录路径
// 参数二 {Boolean}:是否深入遍历,即是否遍历子目录(二级目录)
// 参数三 {RegExp}:匹配目录内文件的正则表达式/\.vue$/表示匹配所有.vue后缀名的文件
files.keys().forEach((item) => {
const componentConfig = files(item);
const name = componentConfig.default.name || componentConfig.name;
const component = componentConfig.default || componentConfig;
Vue.component(name, component); //注册当前组件
});
},
};
export default customComponents;
<template>
<!-- 效能监察报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择"
v-model="searchForm.have_process"
>
<a-select-option value="" label="全部"> 全部 </a-select-option>
<a-select-option :value="0" label="未处理"> 未处理 </a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择窗口"
v-model="searchForm.window_id"
>
<a-select-option value="" label="全部窗口">全部窗口</a-select-option>
<a-select-option
v-for="v in windowData"
:key="v.id"
:value="v.id"
:label="v.name + '-' + v.fromnum"
>{{ v.name + "-" + v.fromnum }}</a-select-option
>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择类型"
v-model="searchForm.warn_alert"
>
<a-select-option value="" label="全部类型">全部类型</a-select-option>
<a-select-option
v-for="(v, key) in alert"
:key="key"
:value="key"
:label="v"
>{{ v }}</a-select-option
>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入工作人员姓名查询"
v-model="searchForm.workman_name"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import Storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
import { windowList } from "@/api/customer";
const alert = {
1: "离岗",
2: "离开",
4: "玩手机",
5: "扶头",
6: "趴桌",
};
export default {
name: "abnormalReportForm-search",
data() {
return {
siteId: Storage.get(2, "siteId"),
alert,
// 搜索数据
searchForm: {
have_process: "",
warn_alert: "",
window_id: "",
workman_name: "",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
windowData: [],
};
},
created() {
this.windowList();
},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 获取窗口列表
async windowList() {
let res = await windowList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.windowData = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 物联网警告报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择类型"
v-model="searchForm.alarmType"
>
<a-select-option value="" label="全部类型"> 全部类型 </a-select-option>
<a-select-option :value="0" label="离线"> 离线 </a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择状态"
v-model="searchForm.alarmStatus"
>
<a-select-option value="" label="全部状态">全部状态</a-select-option>
<a-select-option :value="0" label="未清除"> 未清除 </a-select-option>
<a-select-option :value="1" label="清除未确认">
清除未确认
</a-select-option>
<a-select-option :value="2" label="清除已确认">
清除已确认
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入设备名称查询"
v-model="searchForm.deviceName"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
export default {
name: "alerting-search",
data() {
return {
siteId: storage.get(2, "siteId"),
// 搜索数据
searchForm: {
alarmStatus: "",
alarmType: "",
deviceName: "",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入手机号码搜索"
v-model="searchForm.phone"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
export default {
name: "callRecordForm-search",
data() {
return {
siteId: storage.get(2, "siteId"),
// 搜索数据
searchForm: {
phone: "",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择大厅"
v-model="searchForm.hallid"
>
<a-select-option value="" label="全部大厅"> 全部大厅 </a-select-option>
<a-select-option
v-for="v in datingList"
:key="v.id"
:value="v.id"
:label="v.hallName"
>
{{ v.hallName }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择部门"
v-model="searchForm.sectionid"
>
<a-select-option value="" label="全部部门"> 全部部门 </a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择设备"
v-model="searchForm.id"
>
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="v in deviceData"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择状态"
v-model="searchForm.style"
>
<a-select-option value="" label="全部状态"> 全部状态 </a-select-option>
<a-select-option
v-for="v in style"
:key="v.key"
:value="v.key"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="输入排队编号搜索"
v-model="searchForm.flownum"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getDatingList, getBumenList, getCalllist } from "@/api/dataAdmin";
import { debounce } from "lodash";
const style = [
{
key: 1,
name: "办理中",
},
{
key: 4,
name: "办理完成",
},
];
export default {
name: "callRecord-search",
data() {
return {
siteId: storage.get(2, "siteId"),
style,
datingList: [], // 大厅列表
deptList: [], // 部门列表
deviceData: [], // 设备列表
// 搜索数据
searchForm: {
id: "", // 排队机id
style: "", // 状态
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
flownum: "", // 排号编码
hallid: "", // 大厅id
sectionid: "", // 部门id
},
};
},
created() {
this.getDatingListArr();
this.getBumenListArr();
this.getCalllist();
},
methods: {
...mapMutations("search", ["set_searForm", "set_isExport", "reset"]),
// 获取大厅列表
async getDatingListArr() {
let res = await getDatingList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.datingList = data;
}
},
// // 获取部门列表
async getBumenListArr() {
let res = await getBumenList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.deptList = data;
}
},
//获取排号机设备列表
async getCalllist() {
let res = await getCalllist({
page: 1,
size: -1,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.deviceData = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 办事部门评价报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择大厅"
v-model="searchForm.hallid"
>
<a-select-option value="" label="全部大厅"> 全部大厅 </a-select-option>
<a-select-option
v-for="v in datingList"
:key="v.id"
:value="v.id"
:label="v.hallName"
>
{{ v.hallName }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择部门"
v-model="searchForm.sectionid"
>
<a-select-option value="" label="全部部门"> 全部部门 </a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择评价"
v-model="evaChoose"
mode="multiple"
>
<a-select-option value=""> 全部评价 </a-select-option>
<a-select-option
v-for="v in optonList"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择来源"
v-model="evaFrom"
mode="multiple"
>
<a-select-option value="" label=""> 全部来源 </a-select-option>
<a-select-option value="1" label="窗口评价"> 窗口评价 </a-select-option>
<a-select-option value="2" label="自助服务终端">
自助服务终端
</a-select-option>
<a-select-option value="3" label="背靠背评价">
背靠背评价
</a-select-option>
<a-select-option value="4" label="微官网"> 微官网 </a-select-option>
<a-select-option value="5" label="好差评"> 好差评 </a-select-option>
<a-select-option value="6" label="一体化评价">
一体化评价
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入评价人姓名或部门名称搜索"
v-model="searchForm.info"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getDatingList, getBumenList, getOptonList } from "@/api/dataAdmin";
import { debounce } from "lodash";
export default {
name: "departmentEvaluation-search",
data() {
return {
siteId: storage.get(2, "siteId"),
datingList: [], // 大厅列表
deptList: [], // 部门列表
evaChoose: [], //评价选项
evaFrom: [], // 评价来源
evaDates: [], // 评价日期
optonList: [], // 评价选项列表
// 搜索数据
searchForm: {
info: "",
type: "bmpj",
sectionid: "", // 部门id
hallid: "", // 大厅id
option_id: "", // 评价ids
pjxt: "", // 评价来源
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {
this.getDatingListArr();
this.getBumenListArr();
this.getOptonList();
},
methods: {
...mapMutations("search", ["set_searForm", "set_isExport", "reset"]),
// 获取大厅列表
async getDatingListArr() {
let res = await getDatingList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.datingList = data;
}
},
// // 获取部门列表
async getBumenListArr() {
let res = await getBumenList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.deptList = data;
}
},
// 获取评价选项
async getOptonList() {
let res = await getOptonList();
if (res.data.code == 1) {
this.optonList = res.data.data;
}
},
// 搜索
handleSearch() {
let option_id = this.evaChoose.join(",");
let pjxt = this.evaFrom.join(",");
this.searchForm.option_id = option_id;
this.searchForm.pjxt = pjxt;
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 存件记录报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择设备"
v-model="searchForm.number"
>
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="v in deviceData"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择状态"
v-model="searchForm.status"
>
<a-select-option value="" label="全部状态"> 全部状态 </a-select-option>
<a-select-option :value="1" label="未取件"> 未取件 </a-select-option>
<a-select-option :value="2" label="已取件"> 已取件 </a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入邮递员姓名或联系电话查询"
v-model="searchForm.keyword"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getSitePickupDevice } from "@/api/dataAdmin";
import { debounce } from "lodash";
export default {
name: "depositRecord-search",
data() {
return {
siteId: storage.get(2, "siteId"),
deviceData: [], // 设备列表
// 搜索数据
searchForm: {
number: "",
keyword: "",
status: "",
time: [
this.$moment(new Date()).format("YYYY-MM-DD"),
this.$moment(new Date()).format("YYYY-MM-DD"),
],
},
};
},
created() {
this.getSitePickupDevice();
},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
//获取设备列表
async getSitePickupDevice() {
let res = await getSitePickupDevice({
page: 1,
size: -1,
});
if (res.data.code == 1) {
let { data } = res.data;
this.deviceData = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择"
v-model="searchForm.type"
>
<a-select-option :value="1" label="按事项"> 按事项 </a-select-option>
<a-select-option :value="2" label="按材料"> 按材料 </a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择类型"
v-model="searchForm.status"
>
<a-select-option value="" label="全部类型"> 全部类型 </a-select-option>
<a-select-option :value="1" label="本地打印">
本地打印
</a-select-option>
<a-select-option :value="2" label="在线提交">
在线提交
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入名称搜索"
v-model="searchForm.searchName"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
export default {
name: "fillForm-search",
data() {
return {
siteId: storage.get(2, "siteId"),
// 搜索数据
searchForm: {
type: 2, // 事项或者材料搜索
status: "", // 打印或者提交
searchName: "", // 搜索内容
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "set_isExport", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 办不成事报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择"
v-model="searchForm.reply"
>
<a-select-option value=""> 全部 </a-select-option>
<a-select-option :value="0"> 未回复 </a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择来源"
v-model="searchForm.source"
>
<a-select-option value="" label="全部来源"> 全部来源 </a-select-option>
<a-select-option
v-for="v in deviceList"
:key="v.value"
:value="v.value"
:label="v.label"
>
{{ v.label }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入标题或姓名关键字搜索"
v-model="searchForm.keyword"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
const deviceList = [
{
label: "微官网",
value: 1,
},
{
label: "自助服务系统",
value: 2,
},
];
export default {
name: "ImpossibleForm-search",
data() {
return {
siteId: storage.get(2, "siteId"),
deviceList,
// 搜索数据
searchForm: {
source: "",
keyword: "",
reply: "",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择来源"
v-model="searchForm.source"
>
<a-select-option value="" label="全部来源"> 全部来源 </a-select-option>
<a-select-option
v-for="(v, key) in source"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择类型"
v-model="searchForm.strTypeID"
>
<a-select-option value="" label="全部类型"> 全部类型 </a-select-option>
<a-select-option
v-for="v in typeList"
:key="v.id"
:value="v.value"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入标题或姓名关键字搜索"
v-model="searchForm.keyword"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
import { getType } from "@/api/dataAdmin";
const source = {
1: "微官网",
2: "自助服务系统",
3: "数字填单系统",
};
export default {
name: "letterRecordForm-search",
data() {
return {
siteId: storage.get(2, "siteId"),
source,
typeList: [],
// 搜索数据
searchForm: {
keyword: "",
strTypeID: "",
source: "",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {
this.getType();
},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 获取类型列表
async getType() {
let res = await getType();
if (res.data.code == 1) {
this.typeList = res.data.data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 预约记录报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择部门"
v-model="searchForm.sectionid"
>
<a-select-option value="" label="全部部门"> 全部部门 </a-select-option>
<a-select-option
v-for="(v, key) in depList"
:key="key"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择状态"
v-model="searchForm.status"
>
<a-select-option value="" label="全部状态"> 全部状态 </a-select-option>
<a-select-option
v-for="(v, key) in statusItem"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入预约人姓名/业务名称搜索"
v-model="searchForm.title"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getDeptList } from "@/api/dataAdmin";
import { debounce } from "lodash";
let statusItem = {
0: "预约中",
1: "成功取号",
2: "超时未取号",
3: "预约取消",
};
export default {
name: "RecordReport-search",
data() {
return {
statusItem,
depList: [], // 部门列表
siteId: storage.get(2, "siteId"),
// 搜索数据
searchForm: {
status: "", // 状态
title: "",
sectionid: "", // 部门
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {
this.getDeptList();
},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 部门列表
async getDeptList() {
let res = await getDeptList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.depList = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 办理事项评价报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择大厅"
v-model="searchForm.hallid"
>
<a-select-option value="" label="全部大厅"> 全部大厅 </a-select-option>
<a-select-option
v-for="v in datingList"
:key="v.id"
:value="v.id"
:label="v.hallName"
>
{{ v.hallName }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择部门"
v-model="searchForm.sectionid"
>
<a-select-option value="" label="全部部门"> 全部部门 </a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择评价"
v-model="evaChoose"
mode="multiple"
>
<a-select-option value=""> 全部评价 </a-select-option>
<a-select-option
v-for="v in optonList"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择来源"
v-model="evaFrom"
mode="multiple"
>
<a-select-option value="" label=""> 全部来源 </a-select-option>
<a-select-option value="1" label="窗口评价"> 窗口评价 </a-select-option>
<a-select-option value="2" label="自助服务终端">
自助服务终端
</a-select-option>
<a-select-option value="3" label="背靠背评价">
背靠背评价
</a-select-option>
<a-select-option value="4" label="微官网"> 微官网 </a-select-option>
<a-select-option value="5" label="好差评"> 好差评 </a-select-option>
<a-select-option value="6" label="一体化评价">
一体化评价
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入评价人姓名或排号编号搜索"
v-model="searchForm.info"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getDatingList, getBumenList, getOptonList } from "@/api/dataAdmin";
import { debounce } from "lodash";
export default {
name: "matterEvaluation-search",
data() {
return {
siteId: storage.get(2, "siteId"),
datingList: [], // 大厅列表
deptList: [], // 部门列表
evaChoose: [], //评价选项
evaFrom: [], // 评价来源
evaDates: [], // 评价日期
optonList: [], // 评价选项列表
// 搜索数据
searchForm: {
info: "",
type: "phpj",
sectionid: "", // 部门id
hallid: "", // 大厅id
option_id: "", // 评价ids
pjxt: "", // 评价来源
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {
this.getDatingListArr();
this.getBumenListArr();
this.getOptonList();
},
methods: {
...mapMutations("search", ["set_searForm", "set_isExport", "reset"]),
// 获取大厅列表
async getDatingListArr() {
let res = await getDatingList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.datingList = data;
}
},
// // 获取部门列表
async getBumenListArr() {
let res = await getBumenList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.deptList = data;
}
},
// 获取评价选项
async getOptonList() {
let res = await getOptonList();
if (res.data.code == 1) {
this.optonList = res.data.data;
}
},
// 搜索
handleSearch() {
let option_id = this.evaChoose.join(",");
let pjxt = this.evaFrom.join(",");
this.searchForm.option_id = option_id;
this.searchForm.pjxt = pjxt;
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 微官网注册报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择类型"
v-model="searchForm.check_real"
>
<a-select-option value="-1" label="全部类型">
全部类型
</a-select-option>
<a-select-option
v-for="(v, key) in check_realList"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入昵称关键字搜索"
v-model="searchForm.search"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
let check_realList = {
0: "未实名认证",
1: "实名认证",
};
export default {
name: "microForm-search",
data() {
return {
check_realList,
siteId: storage.get(2, "siteId"),
// 搜索数据
searchForm: {
search: "",
check_real: "-1",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 网络理政报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择"
v-model="searchForm.status"
>
<a-select-option value=""> 全部建议 </a-select-option>
<a-select-option :value="0"> 未处理 </a-select-option>
<a-select-option :value="1"> 已处理 </a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择类型"
v-model="searchForm.type"
>
<a-select-option value="" label="全部类型"> 全部类型 </a-select-option>
<a-select-option
v-for="(v, key) in nowType"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择来源"
v-model="searchForm.device"
>
<a-select-option value="" label="全部来源"> 全部来源 </a-select-option>
<a-select-option
v-for="(v, key) in nowDevice"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入标题或姓名关键字搜索"
v-model="searchForm.info"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
const nowType = {
1: "部门建议",
2: "办事建议",
3: "网站建议",
4: "我要就错",
5: "我要投诉",
};
const nowDevice = {
1: "评价系统",
2: "导视系统",
3: "自助服务系统",
4: "微官网",
5: "数字填单系统",
};
export default {
name: "networkForm-search",
data() {
return {
siteId: storage.get(2, "siteId"),
nowType,
nowDevice,
// 搜索数据
searchForm: {
type: "",
keyword: "",
device: "",
status: "",
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 取件其他记录报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择设备"
v-model="searchForm.number"
>
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="v in deviceData"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择操作"
v-model="searchForm.operationType"
>
<a-select-option value="" label="全部操作"> 全部操作 </a-select-option>
<a-select-option
v-for="(v, key) in operationTypeList"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getSitePickupDevice } from "@/api/dataAdmin";
import { debounce } from "lodash";
const operationTypeList = {
1: "存件",
2: "取件",
3: "锁定",
4: "开箱",
5: "清箱",
6: "解锁",
};
export default {
name: "otherRecord-search",
data() {
return {
siteId: storage.get(2, "siteId"),
deviceData: [], // 设备列表
operationTypeList,
// 搜索数据
searchForm: {
number: "",
operationType: "",
time: [
this.$moment(new Date()).format("YYYY-MM-DD"),
this.$moment(new Date()).format("YYYY-MM-DD"),
],
},
};
},
created() {
this.getSitePickupDevice();
},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
//获取设备列表
async getSitePickupDevice() {
let res = await getSitePickupDevice({
page: 1,
size: -1,
});
if (res.data.code == 1) {
let { data } = res.data;
this.deviceData = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 取件记录报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择设备"
v-model="searchForm.number"
>
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="v in deviceData"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入取件人姓名或手机号搜索"
v-model="searchForm.keyword"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getSitePickupDevice } from "@/api/dataAdmin";
import { debounce } from "lodash";
export default {
name: "pickUpRecord-search",
data() {
return {
siteId: storage.get(2, "siteId"),
deviceData: [], // 设备列表
// 搜索数据
searchForm: {
number: "",
keyword: "",
time: [
this.$moment(new Date()).format("YYYY-MM-DD"),
this.$moment(new Date()).format("YYYY-MM-DD"),
],
},
};
},
created() {
this.getSitePickupDevice();
},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
//获取设备列表
async getSitePickupDevice() {
let res = await getSitePickupDevice({
page: 1,
size: -1,
});
if (res.data.code == 1) {
let { data } = res.data;
this.deviceData = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 易政秀报表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择用户类型"
v-model="searchForm.memberLevel"
>
<a-select-option value="" label="全部用户"> 全部用户 </a-select-option>
<a-select-option
v-for="(v, key) in levelList"
:key="key"
:value="key"
:label="v"
>
{{ v }}
</a-select-option>
</a-select>
<a-input
allowClear
placeholder="请输入用户姓名或者手机号搜索"
v-model="searchForm.query"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
const levelList = {
1: "试用客户",
// 2: "VIP",
3: "设计师",
};
export default {
name: "PoliticsShow-search",
data() {
return {
siteId: storage.get(2, "siteId"),
levelList,
// 搜索数据
searchForm: {
query: "", //姓名手机号查询条件
memberLevel: "", //会员等级查询条件
customerSrc: "", //客户来源查询条件
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择大厅"
v-model="searchForm.hallid"
>
<a-select-option value="" label="全部大厅"> 全部大厅 </a-select-option>
<a-select-option
v-for="v in datingList"
:key="v.id"
:value="v.id"
:label="v.hallName"
>
{{ v.hallName }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择部门"
v-model="searchForm.sectionid"
>
<a-select-option value="" label="全部部门"> 全部部门 </a-select-option>
<a-select-option
v-for="v in deptList"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择设备"
v-model="searchForm.id"
>
<a-select-option value=""> 全部设备 </a-select-option>
<a-select-option
v-for="v in deviceData"
:key="v.id"
:value="v.id"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择状态"
v-model="searchForm.style"
>
<a-select-option value="" label="全部状态"> 全部状态 </a-select-option>
<a-select-option
v-for="v in style"
:key="v.key"
:value="v.key"
:label="v.name"
>
{{ v.name }}
</a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="输入排队编号搜索"
v-model="searchForm.flownum"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { getDatingList, getBumenList, getTaskList } from "@/api/dataAdmin";
import { debounce } from "lodash";
const style = [
{
key: 0,
name: "排队中",
},
{
key: 1,
name: "办理中",
},
{
key: 4,
name: "办理完成",
},
];
export default {
name: "queueRecord-search",
data() {
return {
siteId: storage.get(2, "siteId"),
style,
datingList: [], // 大厅列表
deptList: [], // 部门列表
deviceData: [], // 设备列表
// 搜索数据
searchForm: {
id: "", // 排队机id
style: "", // 状态
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
flownum: "", // 排号编码
hallid: "", // 大厅id
sectionid: "", // 部门id
},
};
},
created() {
this.getDatingListArr();
this.getBumenListArr();
this.getTaskList();
},
methods: {
...mapMutations("search", ["set_searForm", "set_isExport", "reset"]),
// 获取大厅列表
async getDatingListArr() {
let res = await getDatingList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.datingList = data;
}
},
// // 获取部门列表
async getBumenListArr() {
let res = await getBumenList({
page: 1,
size: -1,
siteId: this.siteId,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.deptList = data;
}
},
//获取排号机设备列表
async getTaskList() {
let res = await getTaskList({
page: 1,
size: -1,
});
if (res.data.code == 1) {
let { data } = res.data.data;
this.deviceData = data;
}
},
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<!-- 样表搜索 -->
<div class="search-form">
<a-space direction="vertical" size="middle">
<a-button block class="export-btn" icon="upload" @click="handleExport">
导出
</a-button>
<a-select
allowClear
showSearch
optionFilterProp="label"
placeholder="请选择"
v-model="searchForm.type"
>
<a-select-option :value="1" label="按事项"> 按事项 </a-select-option>
<a-select-option :value="2" label="按材料"> 按材料 </a-select-option>
</a-select>
<a-range-picker valueFormat="YYYY-MM-DD" v-model="searchForm.time" />
<a-input
allowClear
placeholder="请输入名称搜索"
v-model="searchForm.searchName"
/>
<a-button block class="search-btn" icon="search" @click="handleSearch">
搜索
</a-button>
</a-space>
</div>
</template>
<script>
import storage from "@/utils/js/Storage";
import { mapMutations } from "vuex";
import { debounce } from "lodash";
export default {
name: "sampleForm-search",
data() {
return {
siteId: storage.get(2, "siteId"),
// 搜索数据
searchForm: {
type: 2, // 事项或者材料搜索
status: "", // 打印或者提交
searchName: "", // 搜索内容
time: [
this.$moment().format("YYYY-MM-DD"),
this.$moment().format("YYYY-MM-DD"),
], // 时间区间
},
};
},
created() {},
methods: {
...mapMutations("search", ["set_searForm", "set_isExport", "reset"]),
// 搜索
handleSearch() {
this.set_searForm(this.searchForm);
},
// 导出
handleExport: debounce(
function () {
this.$bus.$emit("export");
},
2000,
{
leading: true,
trailing: false,
}
),
},
beforeDestroy() {
this.reset();
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
......@@ -6,10 +6,8 @@
<style lang="less" scoped>
.view_container {
height: 100%;
height: auto;
width: 100%;
// overflow-y: auto;
// overflow-x: hidden;
box-sizing: border-box !important;
display: flex;
}
</style>
This diff is collapsed.
This diff is collapsed.
import Vue from 'vue'
import Vuex from 'vuex'
import modules from './modules'
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 VuexReset from "@ianwalter/vuex-reset";
// import persistedState from 'vuex-persistedstate'
Vue.use(Vuex)
const store = new Vuex.Store({ modules })
Vue.use(Vuex);
const store = new Vuex.Store({
modules,
plugins: [
// 重置状态插件
VuexReset(),
// 持久化插件
createPersistedState({
key: "info",
storage: {
getItem: (key) => ls.get(key),
setItem: (key, value) => ls.set(key, value),
removeItem: (key) => ls.remove(key),
},
}),
],
});
// const store = new Vuex.Store({modules,plugins: [persistedState()]})
export default store
export default store;
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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