07b47dcc by renchao@pashanhoo.com

style:样式修改

2 parents 24c6ad37 bb6ca1ce
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-27 13:25:25
* @LastEditTime: 2023-03-27 15:43:24
-->
# 安装依赖
npm install
......@@ -21,4 +21,15 @@ npm install --registry=https://registry.npm.taobao.org
- `wip` 开发中
## 项目换肤
给html根标签设置一个data-theme属性,然后通过js切换data-theme的属性值,Scss根据此属性来判断使用对应主题变量
\ No newline at end of file
给html根标签设置一个data-theme属性,然后通过js切换data-theme的属性值,Scss根据此属性来判断使用对应主题变量
## config说明
{
"TITLE": "汉中市数据上报系统",
"THEME": "sb",
"CODE": "BDCJGPT", {"BDCSBPT":上报: "BDCJGPT":监管}
"SERVERAPI": "/bdcsjsb",
"calcHeight": 200, {上报:160 监管:200}
"MANAGEMENTAPI": "http://192.168.2.38:8090/management"
}
\ No newline at end of file
......
{
"TITLE": "汉中市数据上报系统",
"THEME": "sb",
"CODE": "BDCJGPT",
"CODE": "BDCSBPT",
"SERVERAPI": "/bdcsjsb",
"calcHeight": 160,
"MANAGEMENTAPI": "http://192.168.2.38:8090/management"
}
......
......@@ -139,11 +139,25 @@ export default {
let _this = this
if (this.heightNum) {
_this.$nextTick(() => {
window.addEventListener('resize', () => {
if (document.querySelector(".tags-view-container")) {
window.addEventListener('resize', () => {
if (_this.calcHeight == 230) {
_this.tableHeight = _this.calcHeightx(192)
} else {
_this.tableHeight = _this.calcHeightx(_this.calcHeight)
}
});
if (_this.calcHeight == 230) {
_this.tableHeight = _this.calcHeightx(192)
} else {
_this.tableHeight = _this.calcHeightx(_this.calcHeight)
}
} else {
window.addEventListener('resize', () => {
_this.tableHeight = _this.calcHeightx(_this.calcHeight)
});
_this.tableHeight = _this.calcHeightx(_this.calcHeight)
});
_this.tableHeight = _this.calcHeightx(_this.calcHeight)
}
})
} else {
_this.tableHeight = window.innerHeight - _this.heightNum
......@@ -158,9 +172,15 @@ export default {
calcHeightx (value, wappered = true) {
//项目自定义的公共header部分的高度,可忽略
let header = document.querySelector(".from-clues-header").offsetHeight;
//value为动态计算table界面高度时,减去的其他空白部分,需自行在调试找到临界值,剩下的就是table表格的高度(包含header+body部分)
value = value == undefined ? 100 : value;
let res = window.innerHeight - parseInt(header) - value;
if (document.querySelector(".tags-view-container")) {
let tagsView = document.querySelector(".tags-view-container").offsetHeight;
var res = window.innerHeight - parseInt(header) - value - parseInt(tagsView);
} else {
var res = window.innerHeight - parseInt(header) - value;
}
if (wappered) {
//通过原生方法,获取dom节点的高度------获取element-ui table表格body的元素
let wapper = window.document.getElementsByClassName('el-table__body-wrapper');
......
......@@ -6,14 +6,12 @@
<h4>不动产登记上报系统</h4>
</div>
<div class="right-menu">
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover">
<div class="user">
{{ userName }}
<span @click="onCancel">
<i class="el-icon-switch-button"></i>
</span>
</div>
</el-dropdown>
<div class="user">
{{ userName }}
<span @click="onCancel">
<i class="el-icon-switch-button"></i>
</span>
</div>
</div>
</div>
</div>
......
......@@ -194,12 +194,12 @@ export default {
@import "~@/styles/_handle.scss";
.tags-view-container {
height: 40px;
height: 50px;
width: 100%;
background: #fff;
border-bottom: 1px solid #d8dce5;
box-sizing: border-box;
padding-top: 2px;
padding-top: 7px;
margin-bottom: 7px;
border-radius: 4px;
......
......@@ -2,7 +2,7 @@
* @Author: yangwei
* @Date: 2023-01-16 09:10:12
* @LastEditors: Please set LastEditors
* @LastEditTime: 2023-03-23 15:15:02
* @LastEditTime: 2023-03-27 16:54:34
* @FilePath: \bdcjg-web\src\main.js
* @Description:
*
......@@ -19,7 +19,6 @@ import mixin from '@/utils/mixin/theme.js'
import axios from 'axios'
import dataV from '@jiaminghi/data-view';
import * as echarts from "echarts"
import { startLoadingAddCount, endLoadingSubCount } from './utils/requestLoading'
Vue.mixin(mixin)
import './directive/vxe-table'
......@@ -68,4 +67,5 @@ axios.get("./config.json")
store,
render: h => h(App)
})
window.document.documentElement.setAttribute("data-theme", 'blue');
})
\ No newline at end of file
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-27 14:16:28
* @LastEditTime: 2023-03-27 17:26:19
*/
import Vue from 'vue'
import router from "./router";
......@@ -24,7 +24,6 @@ router.beforeEach(async (to, from, next) => {
localStorage.removeItem("token");
next();
} else {
window.document.documentElement.setAttribute("data-theme", 'blue');
let code = Vue.prototype.BASE_API.CODE
//判断token是否存在
const hasToken = localStorage.getItem("token");
......
// .dialogCon {
// background: #031A46;
// -webkit-box-shadow: inset 0px 0px 12px 0px #02d9fd;
// box-shadow: inset 0px 0px 12px 0px #02d9fd;
// border-radius: 0px 2px 2px 2px;
// border: 1px solid #6BC1FC;
// padding: 15px;
// }
......
@import './variables.scss';
@import './mixin.scss';
@import './transition.scss';
// @import './element-ui.scss';
/* CSS 初始化 */
html,
......@@ -430,16 +431,6 @@ aside {
border-radius: 16px;
color: #B06974;
}
// 弹框中间区域样式
.dialogCon {
background: #031A46;
box-shadow: inset 0px 0px 12px 0px #02D9FD;
border-radius: 0px 2px 2px 2px;
border: 1px solid #6BC1FC;
padding: 15px;
}
// 通过 入库 样式
.adopt,
.success {
......@@ -518,4 +509,4 @@ aside {
@font-face {
font-family: AliBold;
src: url('../image/font/Alibaba_PuHuiTi_2.0_55_Regular_85_Bold.ttf')
}
\ No newline at end of file
}
......
......@@ -535,8 +535,12 @@ table td {
// 提示框
.el-message-box {
background-color: #031a46;
border: 1px solid #5f82c7;
background: #031A46;
-webkit-box-shadow: inset 0px 0px 12px 0px #02d9fd;
box-shadow: inset 0px 0px 12px 0px #02d9fd;
border-radius: 0px 2px 2px 2px;
border: 1px solid #6BC1FC;
padding: 15px;
.el-message-box__title {
color: white;
......
......@@ -190,6 +190,21 @@
}
}
.complex-header {
.el-table--border th.el-table__cell {
border-bottom: 1px solid #458ACF !important;
}
.el-table--border .el-table__cell {
border-right: 1px solid #458ACF !important;
}
.el-table--group,
.el-table--border {
border: 1px solid #458ACF !important;
}
}
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .btn-next {
@extend .bgc;
......@@ -228,49 +243,6 @@
text-align: right;
}
// 修改弹框样式
.modifydialog {
.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: white;
}
}
.el-form-item__label {
color: white;
}
.el-input__inner {
background-color: #07388b;
}
.el-input__inner {
background: #07388b;
border-radius: 2px;
border: 1px solid #6bc1fc;
}
.el-textarea__inner {
background: #07388b;
color: #fff;
}
.el-form-item__label {
color: #fff;
}
.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: white;
}
}
}
// 角色管理人员菜单配置弹框样式
.roleconfiguration {
......@@ -1000,6 +972,39 @@
// 人员管理角色管理菜单管理修改新增弹框样式
.PersonnelDialog {
.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: white;
}
}
.el-form-item__label {
color: white;
}
.el-input__inner {
background-color: #07388b;
}
.el-input__inner {
background: #07388b;
border-radius: 2px;
border: 1px solid #6bc1fc;
}
.el-textarea__inner {
background: #07388b;
color: #fff;
}
.el-form-item__label {
color: #fff;
}
.el-dialog__header {
.dialog_title {
display: -webkit-box;
......@@ -1029,4 +1034,72 @@
.selbig {
width: 500px;
}
}
\ No newline at end of file
}
// 弹框中间区域样式
.dialogCon {
background: #031A46;
box-shadow: inset 0px 0px 12px 0px #02D9FD;
border-radius: 0px 2px 2px 2px;
border: 1px solid #6BC1FC;
padding: 15px;
}
// 修改密码界面样式
.informationpassword {
margin: 36px 200px;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #ffffff;
}
.el-input .el-input__inner {
padding: 0 8px;
height: 40px;
line-height: 40px;
border: 1px solid #6bc1fc;
}
}
}
.bottom-wrapper {
padding: 32px 120px 24px;
text-align: center;
}
}
// 修改基本信息界面样式
.informationbase {
margin: 0.1875rem 1.0417rem;
overflow-y: auto;
.form-wrapper {
padding: 0px 120px 0px;
.el-form-item {
/deep/.el-form-item__label {
color: #ffffff;
}
::v-deep .el-input .el-input__inner {
padding: 0 8px;
height: 40px;
line-height: 40px;
border: 1px solid #6bc1fc;
}
}
.el-form-item--small.el-form-item {
margin-bottom: 16px;
}
}
.bottom-wrapper {
padding: 0px 120px 0px;
text-align: center;
}
}
......
......@@ -7,6 +7,7 @@
padding: 0 7px !important;
}
.from-clues {
height: 100%;
width: 100%;
......@@ -16,7 +17,7 @@
&-header {
width: 100%;
padding: 7px 15px 10px 15px;
padding: 7px 15px 15px 15px;
box-sizing: border-box;
background-size: 100% 100%;
background: #FFFFFF;
......@@ -141,4 +142,753 @@
.cz:focus {
background-color: white;
background-size: cover;
}
\ No newline at end of file
}
// 角色管理人员菜单配置弹框样式
.roleconfiguration {
.el-dialog__close {
font-size: 16px !important;
}
}
// 面包屑
.breadcrumb {
width: 80%;
text-indent: 10px;
background: url("~@/image/breadcrumb.png") no-repeat;
background-size: 100% 100%;
line-height: 32px;
height: 32px;
padding-left: 35px;
margin: 8px 0 10px 6px;
color: #CEF8FF;
}
.el-icon-arrow-right {
width: 2px;
position: relative;
left: 10px;
color: #FFFFFF;
}
.el-breadcrumb__inner {
color: #CEF8FF !important;
}
.breadcrumb1366 {
padding: 10px 0 !important;
}
.cur-location {
font-size: 16px;
color: white;
line-height: 40px;
float: left;
img {
position: relative;
top: 3px;
margin-right: 4px;
}
}
.el-breadcrumb__inner a,
.el-breadcrumb__inner.is-link {
color: white;
cursor: text;
font-weight: normal;
}
// .button {
// width: 76px;
// height: 32px;
// color: #ffffff;
// cursor: pointer;
// border: 0;
// font-size: 12px;
// }
// // 按钮样式
// .cx {
// background: url("../image/btn.png") no-repeat 0 -34px;
// background-size: cover;
// }
// .cx:hover {
// background: url("../image/btn.png") no-repeat 0 -34px;
// background-size: cover;
// color: white;
// }
// .cz {
// background: url("../image/btn.png") no-repeat 0 0;
// background-size: cover;
// }
// .cz:hover {
// background: url("../image/btn.png") no-repeat 0 0;
// background-size: cover;
// color: white;
// }
// .el-button:focus {
// background: none;
// }
// .cx:focus {
// background: url("../image/btn.png") no-repeat 0 -34px;
// background-size: cover;
// color: white;
// }
// .cz:focus {
// background: url("../image/btn.png") no-repeat 0 0;
// background-size: cover;
// color: white;
// }
// 监管弹框样式
.dialogBox {
overflow: hidden;
// min-height: 90vh;
.dialog_title {
// display: flex;
// position: relative;
// font-size: 22px;
// top: -10px;
// width: 38%;
// height: 40px;
// margin-left: 28px;
// justify-content: center;
// white-space: nowrap;
b {
// font-weight: 200;
// display: inline-block;
// position: relative;
font-size: 24px;
// top: -11px;
// width: 38%;
// height: 40px;
// margin-left: 28px;
// // @include flex-center;
display: flex;
justify-content: center;
}
}
.dialog_full {
position: absolute;
top: 0;
right: 30px;
}
.el-dialog__body {
max-height: 88vh;
overflow-x: hidden;
overflow-y: hidden;
}
.dialog_footer {
margin-bottom: 8px;
display: flex;
justify-content: center;
align-items: center;
}
.dialogBox-content {
height: auto
}
.editDialogBox-box {
border-radius: 3px;
border: 1px solid #6BC1FC;
.el-form-item__label {
color: #000000;
}
.el-form-item__content {
color: #000000;
}
}
.item-content-input {
.el-input__inner {
border: none !important;
text-align: right;
}
}
.regularHeight {
display: flex;
flex-direction: column;
height: 87vh;
.editDialogBox-con,
.JsonEditor {
flex: 1;
height: 100%;
}
}
.dialog-from {
padding: 13px;
border-radius: 2px;
box-sizing: border-box;
.el-row {
display: flex;
flex-wrap: nowrap;
}
.el-col {
line-height: 18px;
display: flex;
align-items: center;
margin-bottom: 3px;
color: #000000;
border-radius: 2px;
border: 1px solid #224C7C;
span {
display: inline-block;
padding: 3px;
border-radius: 3px;
overflow: hidden;
white-space: nowrap;
text-align: left;
color: #02D9FD;
}
p {
flex: 1;
width: 100%;
padding-left: 5px;
line-height: 20px;
color: #000307;
cursor: not-allowed;
white-space: nowrap;
margin-right: 5px;
text-align: right;
}
}
}
.el-textarea__inner {
// border: 1px solid #224C7C;
// margin: 0 0 10px 0 !important;
// width: 100% !important;
// color: #dadde3 !important;
// background: transparent !important;
}
.el-input__inner {
// border: 1px solid #224C7C !important;
// margin: 0 !important;
// width: 100% !important;
// color: #111111 !important;
// background: transparent !important;
}
.el-dialog__header {
color: #070000;
// height: 46px !important;
// width: 97%;
// margin: 0 auto;
// margin-top: 2px;
}
.el-dialog__body {
padding-top: 0;
padding-bottom: 0;
// height: 95vh;
}
// .el-dialog__headerbtn {
// right: 40px;
// top: 33px;
// &:hover {
// // background: rgb(4, 172, 250);
// right: 40px;
// top: 33px;
// }
// }
.el-form-item {
display: flex;
width: 100%;
}
}
.contentCenter {
position: absolute;
top: 50%;
left: 50%;
transform: translate(calc(-50% + 85px), -50%);
}
.mainCenter {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
// 展开收起按钮位置
.el-input__suffix {
right: 10px;
}
}
// 登簿日志弹出框
.entryJournal {
.el-tabs__header {
margin: 0;
}
.el-dialog {
display: flex;
flex-direction: column;
}
.el-dialog__body {
display: flex;
flex-direction: column;
padding-bottom: 30px;
height: 100%;
flex: 1;
position: relative;
}
.regularHeight {
display: flex;
flex-direction: column;
height: 87vh;
margin-bottom: 5px;
.editDialogBox-con,
.JsonEditor {
flex: 1;
}
}
.d-center {}
.dialog_title {
top: -6px
}
.el-tabs__item {
color: #CEF8FF !important;
display: flex;
flex-direction: row;
justify-content: center;
background: url("~@/image/tabitem.png") no-repeat;
background-size: 100% 100%;
border: none !important;
}
.el-tabs__nav {
display: flex;
border: none !important;
}
.el-tabs__item.is-top:not(:last-child) {
margin-right: 5px;
}
.el-icon-circle-close {
display: none;
}
.el-tabs__item.is-active {
background: url("~@/image/tabitemse.png") no-repeat;
background-size: 100% 100%;
}
.from-clues-content {
margin-top: 0;
background: none;
padding: 0;
}
.editDialogBox-box {
position: relative;
top: 10px;
height: 100%;
}
.dialog-from {
padding-top: 0;
.el-col {
justify-content: space-between;
}
.bz {
height: 100%;
position: relative;
top: 3px;
}
.el-input {
flex: 1;
width: 100%;
}
.el-textarea__inner {
border: none !important;
margin: 0;
}
&_header {
margin: 0 -5px !important;
}
&_title {
font-size: 14px;
color: #d7eaee;
margin: 3px 0;
}
}
}
// 数据上报弹出框
.dataReporting {
.el-dialog__body {
display: flex;
flex-direction: column;
padding-bottom: 30px;
}
.el-tabs {
color: #cef8ff;
}
.d-center {
z-index: 1000;
}
.sjmx {
display: flex;
flex-direction: column;
height: 49vh;
.el-tabs__item {
height: 50px;
padding-top: 6px;
}
}
.result {
flex: 1;
height: 100%;
}
.editDialogBox-con {
flex: 1;
height: 100%;
overflow-y: hidden;
}
.el-tabs__item {
color: #cef8ff !important;
display: flex;
flex-direction: row;
justify-content: center;
background: url("~@/image/tabitem.png") no-repeat;
background-size: 100% 100%;
border: none !important;
}
.obligee-item-name {
background: #05275b;
color: #ffffff;
background: url("~@/image/itembg.png") no-repeat;
background-size: 100% 100%;
}
.el-tabs__nav-scroll {
background: none;
}
.el-tabs__nav {
display: flex;
border: none !important;
}
.el-tabs__item.is-top {
border: 1px solid #dfe4ed;
border-top: 1px solid #dfe4ed;
border-bottom: 1px solid transparent;
}
.el-tabs__header {
border: none;
margin-bottom: 0;
}
.el-tabs__item.is-top:not(:last-child) {
margin-right: 5px;
}
.el-tabs__item.is-top {
background-color: none !important;
}
.el-tabs__item.is-active {
background: url("~@/image/tabitemse.png") no-repeat;
background-size: 100% 100%;
}
.success-images {
width: 30px;
height: 30px;
position: relative;
top: 10px;
right: 3px;
}
.tab-pane-item {
line-height: 20px;
color: #02d9fd;
p {
text-align: center;
}
}
.edit-content {
overflow-y: auto;
overflow-x: hidden;
padding-right: 1px;
border-top: none;
}
.editDialogBox {
border-radius: 8px;
overflow: hidden;
min-width: 1228px;
.el-dialog__header {
display: flex;
margin-bottom: 10px;
}
.dialog_footer {
flex-direction: column;
.dialog_button {
margin-top: 8px;
}
}
.divider {
width: 100%;
border-bottom: 1px solid #ccc;
}
}
.el-dialog__wrapper {
overflow: hidden;
}
.dialog-from {
padding-top: 0;
.el-col {
justify-content: space-between;
}
.bz {
height: 100%;
position: relative;
top: 3px;
}
.el-select {
padding-right: 15px;
}
.el-icon-circle-close {
display: none;
}
.el-input__suffix {
right: -25px !important;
top: -5px;
}
.el-select,
.el-input {
flex: 1;
width: 100%;
}
.el-textarea__inner {
border: none !important;
margin: 0;
}
&_header {
margin: 0 -5px !important;
}
&_title {
font-size: 18px;
color: #d7eaee;
margin: 3px 0;
}
}
}
// 人员管理上下移动按钮样式
.el-button.is-disabled.el-button--text {
width: 64px;
height: 28px;
background: rgba(255, 255, 255, 0.1);
border-radius: 16px;
}
// 人员管理角色管理菜单管理修改新增弹框样式
.PersonnelDialog {
.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: rgb(0, 0, 0);
}
}
.el-form-item__label {
color: rgb(0, 0, 0);
}
.el-input__inner {
// background-color: #07388b;
}
.el-input__inner {
// background: #07388b;
// border-radius: 2px;
// border: 1px solid #6bc1fc;
}
.el-textarea__inner {
// background: #07388b;
// color: rgb(0, 0, 0);
}
.el-form-item__label {
color: rgb(2, 0, 0);
}
.el-dialog__header {
.dialog_title {
// display: -webkit-box;
// display: -ms-flexbox;
// display: flex;
// position: relative;
// top: -7px;
// width: 29%;
// height: 40px;
// margin-left: 28px;
// -webkit-box-pack: center;
// -ms-flex-pack: center;
// justify-content: center;
// white-space: nowrap;
b {
font-size: 16px;
}
}
.el-dialog__headerbtn {
right: 20px !important;
top: 23px !important;
}
}
.selbig {
width: 500px;
}
}
// 弹框中间区域样式
.dialogCon {
background: #ffffff;
border: 1px solid #294ef1;
padding: 15px;
}
// 修改密码界面样式
.informationpassword {
margin: 36px 200px;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #000000;
}
.el-input .el-input__inner {
padding: 0 8px;
height: 40px;
line-height: 40px;
border: 1px solid #6bc1fc;
}
}
}
.bottom-wrapper {
padding: 32px 120px 24px;
text-align: center;
}
}
// 修改基本信息界面样式
.informationbase {
margin: 0.1875rem 1.0417rem;
overflow-y: auto;
.form-wrapper {
padding: 0px 120px 0px;
.el-form-item {
/deep/.el-form-item__label {
color: #000000;
}
::v-deep .el-input .el-input__inner {
padding: 0 8px;
height: 40px;
line-height: 40px;
border: 1px solid #6bc1fc;
}
}
.el-form-item--small.el-form-item {
margin-bottom: 16px;
}
}
.bottom-wrapper {
padding: 0px 120px 0px;
text-align: center;
}
}
......
......@@ -4,19 +4,19 @@
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="form" :model="form" label-width="100px">
<el-form-item>
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row>
<el-col :span="4">
<el-form-item label="开始日期" prop="startTime">
<el-form-item label="开始日期" prop="startTime" class="d-flex">
<el-date-picker type="date" :clearable="false" class="width100" placeholder="开始日期"
:picker-options="pickerOptionsStart" v-model="form.startTime"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="结束日期" prop="endTime">
<el-form-item label="结束日期" prop="endTime" class="d-flex">
<el-date-picker class="width100" :clearable="false" type="date" placeholder="结束日期"
:picker-options="pickerOptionsEnd" v-model="form.endTime" value-format="yyyy-MM-dd HH:mm:ss"
@change="endTimeChange"></el-date-picker>
......@@ -39,322 +39,322 @@
</div>
</template>
<script>
import { mapGetters } from "vuex";
import efficient from "@/api/efficient";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
export default {
name: "jktj",
data () {
return {
// 开始日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.form.endTime) {
return time.getTime() > new Date(this.form.endTime).getTime();
}
},
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.form.startTime) {
return time.getTime() < new Date(this.form.startTime).getTime();
}
},
import { mapGetters } from "vuex";
import efficient from "@/api/efficient";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
export default {
name: "jktj",
data () {
return {
// 开始日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.form.endTime) {
return time.getTime() > new Date(this.form.endTime).getTime();
}
},
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.form.startTime) {
return time.getTime() < new Date(this.form.startTime).getTime();
}
},
// 搜索表单
pieChartsData: [],
};
},
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
},
// 搜索表单
pieChartsData: [],
};
},
created () { },
mounted () {
this.getProcessCounts();
},
computed: {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true);
},
created () { },
mounted () {
this.getProcessCounts();
//查询各区县办件数量
async getProcessCounts () {
this.pieChartsData = [];
let { result: res } = await efficient.getProcessCounts(
this.form.startTime,
this.form.endTime
);
//获取图表配置项需要的数据
res.length > 0 &&
res.forEach((item) => {
this.pieChartsData.push({
//登记数量
value: item.counts,
//登记数量
name: item.recTypeName,
//登记类型代码
groupId: item.recType,
});
});
res.length &&
this.$nextTick(() => {
// 初始化图表
this.echartInit();
this.barChartInit(res[0].recType);
});
},
computed: {
...mapGetters(["dicData"]),
// 重置
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
};
this.getProcessCounts();
},
methods: {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true);
},
//查询各区县办件数量
async getProcessCounts () {
this.pieChartsData = [];
let { result: res } = await efficient.getProcessCounts(
this.form.startTime,
this.form.endTime
);
//获取图表配置项需要的数据
res.length > 0 &&
res.forEach((item) => {
this.pieChartsData.push({
//登记数量
value: item.counts,
//登记数量
name: item.recTypeName,
//登记类型代码
groupId: item.recType,
});
});
res.length &&
this.$nextTick(() => {
// 初始化图表
this.echartInit();
this.barChartInit(res[0].recType);
});
},
// 重置
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
};
this.getProcessCounts();
},
//玫瑰图初始化
echartInit () {
let _this = this;
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
myChart.setOption({
legend: {
bottom: "2%",
left: "center",
textStyle: {
color: "#fff",
},
},
tooltip: {
trigger: "item",
formatter: "{b} : {c}",
//玫瑰图初始化
echartInit () {
let _this = this;
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
myChart.setOption({
legend: {
bottom: "2%",
left: "center",
textStyle: {
color: "#fff",
},
label: {
color: 'inherit',
},
series: [
{
name: "各业务类型办理数量",
type: "pie",
radius: [0, 250],
center: ["50%", "45%"],
roseType: "area",
itemStyle: {
borderRadius: 8,
},
data: this.pieChartsData,
},
tooltip: {
trigger: "item",
formatter: "{b} : {c}",
},
label: {
color: 'inherit',
},
series: [
{
name: "各业务类型办理数量",
type: "pie",
radius: [0, 250],
center: ["50%", "45%"],
roseType: "area",
itemStyle: {
borderRadius: 8,
},
],
});
//添加点击事件
myChart.on("click", function (param) {
_this.barChartInit(param.data.groupId);
});
//默认选中第一个
let index = 1;
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: 0,
});
myChart.on("mouseover", function (e) {
if (e.dataIndex != index) {
myChart.dispatchAction({
type: "downplay",
seriesIndex: 0,
dataIndex: index,
});
}
});
myChart.on("mouseout", function (e) {
index = e.dataIndex;
data: this.pieChartsData,
},
],
});
//添加点击事件
myChart.on("click", function (param) {
_this.barChartInit(param.data.groupId);
});
//默认选中第一个
let index = 1;
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: 0,
});
myChart.on("mouseover", function (e) {
if (e.dataIndex != index) {
myChart.dispatchAction({
type: "highlight",
type: "downplay",
seriesIndex: 0,
dataIndex: e.dataIndex,
dataIndex: index,
});
}
});
myChart.on("mouseout", function (e) {
index = e.dataIndex;
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: e.dataIndex,
});
},
//柱图初始化
async barChartInit (recType) {
//请求recType对应业务的各区县数据
let { result: res } = await efficient.getProcessDays(
recType,
this.form.startTime,
this.form.endTime
);
//行政区数组
let xzqArr = [];
this.dicData["A20"].forEach((item) => {
xzqArr.push(item.DNAME);
let tempArr = res.filter((i) => {
return i.qxdm == item.DCODE;
});
if (tempArr.length) {
item.avgDay = tempArr[0].avgDay;
item.maxDay = tempArr[0].maxDay;
item.minDay = tempArr[0].minDay;
} else {
item.avgDay = 0;
item.maxDay = 0;
item.minDay = 0;
}
});
},
//柱图初始化
async barChartInit (recType) {
//请求recType对应业务的各区县数据
let { result: res } = await efficient.getProcessDays(
recType,
this.form.startTime,
this.form.endTime
);
//行政区数组
let xzqArr = [];
this.dicData["A20"].forEach((item) => {
xzqArr.push(item.DNAME);
let tempArr = res.filter((i) => {
return i.qxdm == item.DCODE;
});
//补全无数据行政区后的结果数组
let dealArr = [...this.dicData["A20"]];
let myChartBar = this.$echarts.init(
document.getElementById("myChart-bar")
);
myChartBar.setOption({
color: ["#00bdb1", "#ff6e6e", "#3f99ff", "#ffaf48"],
tooltip: {
if (tempArr.length) {
item.avgDay = tempArr[0].avgDay;
item.maxDay = tempArr[0].maxDay;
item.minDay = tempArr[0].minDay;
} else {
item.avgDay = 0;
item.maxDay = 0;
item.minDay = 0;
}
});
//补全无数据行政区后的结果数组
let dealArr = [...this.dicData["A20"]];
let myChartBar = this.$echarts.init(
document.getElementById("myChart-bar")
);
myChartBar.setOption({
color: ["#00bdb1", "#ff6e6e", "#3f99ff", "#ffaf48"],
tooltip: {
show: true,
trigger: "axis",
textStyle: {
fontSize: 16, // 字体大小
},
extraCssText: "width:220px;height:160px;", // 背景色
},
grid: {
top: 120,
},
legend: {
data: ["最短用时", "平均用时", "最长用时"],
top: 20,
textStyle: {
show: true,
trigger: "axis",
textStyle: {
fontSize: 16, // 字体大小
},
extraCssText: "width:220px;height:160px;", // 背景色
color: "#fff",
fontSize: "16",
},
grid: {
top: 120,
},
xAxis: [
{
type: "category",
data: xzqArr,
axisLabel: {
interval: 0,
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
},
legend: {
data: ["最短用时", "平均用时", "最长用时"],
top: 20,
textStyle: {
show: true,
],
yAxis: [
{
type: "value",
name: "单位:天",
nameTextStyle: {
color: "#fff",
fontSize: "16",
},
},
xAxis: [
{
type: "category",
data: xzqArr,
axisLabel: {
interval: 0,
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
},
],
yAxis: [
{
type: "value",
name: "单位:天",
nameTextStyle: {
axisLabel: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
axisLabel: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
},
],
label: {
color: 'inherit',
},
series: [
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
],
label: {
color: 'inherit',
},
series: [
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
},
barMaxWidth: "60",
name: "最短用时",
data: dealArr.map((item) => item.minDay),
},
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
barMaxWidth: "60",
name: "最短用时",
data: dealArr.map((item) => item.minDay),
},
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
},
barMaxWidth: "60",
name: "平均用时",
data: dealArr.map((item) => item.avgDay),
},
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
barMaxWidth: "60",
name: "平均用时",
data: dealArr.map((item) => item.avgDay),
},
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
},
barMaxWidth: "60",
name: "最长用时",
data: dealArr.map((item) => item.maxDay),
},
],
});
},
barMaxWidth: "60",
name: "最长用时",
data: dealArr.map((item) => item.maxDay),
},
],
});
},
};
},
};
</script>
<style scoped lang="scss">
.jktjDetail {
height: 100%;
display: flex;
flex-direction: column;
.rows {
margin-left: 100px;
}
.jktjDetail {
height: 100%;
display: flex;
flex-direction: column;
.center {
line-height: 50vh;
text-align: center;
}
.rows {
margin-left: 100px;
}
.echarts-box {
display: flex;
justify-content: center;
.center {
line-height: 50vh;
text-align: center;
}
.chart {
width: 40%;
height: 100%;
float: left;
}
.echarts-box {
display: flex;
justify-content: center;
.chart-bar {
width: 60%;
}
.chart {
width: 40%;
height: 100%;
float: left;
}
.form-clues-content {
flex: 1;
height: 100%;
color: #b6b5b5;
.chart-bar {
width: 60%;
}
}
.form-clues-content {
flex: 1;
height: 100%;
color: #b6b5b5;
}
}
</style>
......
......@@ -3,13 +3,13 @@
<div class="jktjDetail form-clues">
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="form" :model="form" label-width="100px">
<el-form-item>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item v-if="BASE_API.THEME=='jg'">
<Breadcrumb />
</el-form-item>
<el-row>
<el-col :span="4">
<el-form-item label="行政区">
<el-form-item label="行政区" class="d-flex">
<el-select v-model="form.qxdm" class="width100" clearable placeholder="行政区">
<el-option v-for="item in dicData['A20']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
......@@ -17,14 +17,14 @@
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始日期" prop="startTime">
<el-form-item label="开始日期" prop="startTime" class="d-flex">
<el-date-picker type="date" :clearable="false" class="width100" placeholder="开始日期"
:picker-options="pickerOptionsStart" v-model="form.startTime"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="结束日期" prop="endTime">
<el-form-item label="结束日期" prop="endTime" class="d-flex">
<el-date-picker type="date" :clearable="false" class="width100" placeholder="结束日期"
:picker-options="pickerOptionsEnd" v-model="form.endTime" value-format="yyyy-MM-dd HH:mm:ss"
@change="endTimeChange"></el-date-picker>
......@@ -47,274 +47,274 @@
</template>
<script>
import { mapGetters } from "vuex";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
import business from "@/api/business";
export default {
name: "jktj",
data () {
return {
// 开始日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.form.endTime) {
return time.getTime() > new Date(this.form.endTime).getTime();
}
},
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.form.startTime) {
return time.getTime() < new Date(this.form.startTime).getTime();
}
},
import { mapGetters } from "vuex";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
import business from "@/api/business";
export default {
name: "jktj",
data () {
return {
// 开始日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.form.endTime) {
return time.getTime() > new Date(this.form.endTime).getTime();
}
},
recTypeArr: [],
chartData: [],
// 搜索表单
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: "",
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.form.startTime) {
return time.getTime() < new Date(this.form.startTime).getTime();
}
},
interval: 50
};
},
mounted () {
// 查询成功率
this.getSuucessRate();
},
computed: {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true)
},
async getSuucessRate () {
this.recTypeArr = [];
this.chartData = [];
let { result: res } = await business.getSuucessRate(
this.form.startTime,
this.form.endTime,
this.form.qxdm
);
this.chartData = res;
recTypeArr: [],
chartData: [],
// 搜索表单
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: "",
},
interval: 50
};
},
mounted () {
// 查询成功率
this.getSuucessRate();
},
computed: {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true)
},
async getSuucessRate () {
this.recTypeArr = [];
this.chartData = [];
let { result: res } = await business.getSuucessRate(
this.form.startTime,
this.form.endTime,
this.form.qxdm
);
this.chartData = res;
let maxData = Math.max.apply(Math, this.chartData.map(item => { return item.failure }))
this.interval = Math.ceil(maxData / 10)
//行政区代码过滤
res.length > 0 &&
res.forEach((item) => {
this.recTypeArr.push(item.recTypeName);
});
this.$nextTick(() => {
// 初始化图表
this.chartData.length && this.echartInit();
let maxData = Math.max.apply(Math, this.chartData.map(item => { return item.failure }))
this.interval = Math.ceil(maxData / 10)
//行政区代码过滤
res.length > 0 &&
res.forEach((item) => {
this.recTypeArr.push(item.recTypeName);
});
},
// 重置
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: "",
};
this.getSuucessRate();
},
echartInit () {
let _this = this;
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
myChart.setOption({
color: ["#13E5FF", "#C99E68", "#E873B2", "#ffaf48"],
tooltip: {
trigger: "axis",
formatter: '{b}<br/>{a0}:{c0}个<br/>{a1}:{c1}个<br/>{a2}:{c2}%',
axisPointer: {
type: "cross",
crossStyle: {
color: "#fff",
},
},
},
legend: {
data: ["成功", "失败", "成功率"],
top: '16',
textStyle: {
show: true,
this.$nextTick(() => {
// 初始化图表
this.chartData.length && this.echartInit();
});
},
// 重置
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: "",
};
this.getSuucessRate();
},
echartInit () {
let _this = this;
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
myChart.setOption({
color: ["#13E5FF", "#C99E68", "#E873B2", "#ffaf48"],
tooltip: {
trigger: "axis",
formatter: '{b}<br/>{a0}:{c0}个<br/>{a1}:{c1}个<br/>{a2}:{c2}%',
axisPointer: {
type: "cross",
crossStyle: {
color: "#fff",
fontSize: "16",
},
},
label: {
color: 'inherit',
},
legend: {
data: ["成功", "失败", "成功率"],
top: '16',
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
xAxis: [
{
type: "category",
data: _this.recTypeArr,
axisPointer: {
type: "shadow",
},
label: {
color: 'inherit',
},
xAxis: [
{
type: "category",
data: _this.recTypeArr,
axisPointer: {
type: "shadow",
},
axisLabel: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
axisLabel: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
formatter: function (val) {
let c = document.createElement("canvas");
const ctx = c.getContext("2d");
const arr = val.split("");
arr
.map((item) => ctx.measureText(item).width)
.reduce((pre, next, index) => {
const nLen = pre + next;
if (nLen > 40) {
arr[index - 1] += "...";
return next;
} else {
return nLen;
}
});
c = null;
let ind = arr.findIndex((i) => {
return i.indexOf("...") > -1;
formatter: function (val) {
let c = document.createElement("canvas");
const ctx = c.getContext("2d");
const arr = val.split("");
arr
.map((item) => ctx.measureText(item).width)
.reduce((pre, next, index) => {
const nLen = pre + next;
if (nLen > 40) {
arr[index - 1] += "...";
return next;
} else {
return nLen;
}
});
let newArr = ind > 0 ? arr.splice(0, ind + 1) : arr;
return newArr.join("");
},
c = null;
let ind = arr.findIndex((i) => {
return i.indexOf("...") > -1;
});
let newArr = ind > 0 ? arr.splice(0, ind + 1) : arr;
return newArr.join("");
},
},
],
yAxis: [
{
type: "value",
name: "数量/个",
nameTextStyle: {
},
],
yAxis: [
{
type: "value",
name: "数量/个",
nameTextStyle: {
color: "#fff",
fontSize: "16",
},
// interval: this.interval,
axisLabel: {
formatter: "{value}",
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
// interval: this.interval,
axisLabel: {
formatter: "{value}",
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
},
{
type: "value",
name: "成功率",
nameTextStyle: {
},
{
type: "value",
name: "成功率",
nameTextStyle: {
color: "#fff",
fontSize: "16",
},
splitNumber: 2,
axisLabel: {
formatter: "{value} %",
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
splitNumber: 2,
axisLabel: {
formatter: "{value} %",
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
},
],
series: [
{
name: "成功",
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
],
series: [
{
name: "成功",
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
barMaxWidth: '60',
data: this.chartData.map((item) => {
return item.success;
}),
},
{
name: "失败",
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
barMaxWidth: '60',
data: this.chartData.map((item) => {
return item.success;
}),
},
{
name: "失败",
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
barMaxWidth: '60',
data: this.chartData.map((item) => {
return item.failure;
}),
},
{
name: "成功率",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
barMaxWidth: '60',
data: this.chartData.map((item) => {
return item.failure;
}),
},
{
name: "成功率",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
type: "line",
barMaxWidth: '60',
yAxisIndex: 1,
data: this.chartData.map((item) => {
return item.rate;
}),
},
],
});
},
type: "line",
barMaxWidth: '60',
yAxisIndex: 1,
data: this.chartData.map((item) => {
return item.rate;
}),
},
],
});
},
};
},
};
</script>
<style scoped lang="scss">
.jktjDetail {
height: 100%;
display: flex;
flex-direction: column;
.rows {
margin-left: 100px;
}
.jktjDetail {
height: 100%;
display: flex;
flex-direction: column;
.center {
line-height: 50vh;
text-align: center;
color: #b6b5b5;
}
.rows {
margin-left: 100px;
}
.echarts-box {
display: flex;
justify-content: center;
height: 500px;
.center {
line-height: 50vh;
text-align: center;
color: #b6b5b5;
}
.chart {
width: 100%;
height: 100%;
}
}
.echarts-box {
display: flex;
justify-content: center;
height: 500px;
.form-clues-content {
flex: 1;
.chart {
width: 100%;
height: 100%;
}
}
.form-clues-content {
flex: 1;
height: 100%;
}
}
</style>
......
......@@ -4,12 +4,12 @@
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="form" :model="form" label-width="100px">
<el-form-item>
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row>
<el-col :span="4">
<el-form-item label="行政区">
<el-form-item label="行政区" class="d-flex">
<el-select v-model="form.qxdm" class="width100" clearable placeholder="行政区">
<el-option v-for="item in dicData['A20']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
......@@ -17,14 +17,14 @@
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始日期">
<el-form-item label="开始日期" class="d-flex">
<el-date-picker class="width100" :clearable="false" type="date" placeholder="开始日期"
:picker-options="pickerOptionsStart" v-model="form.startTime"
value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="结束日期">
<el-form-item label="结束日期" class="d-flex">
<el-date-picker class="width100" :clearable="false" type="date" placeholder="结束日期"
:picker-options="pickerOptionsEnd" v-model="form.endTime" value-format="yyyy-MM-dd HH:mm:ss"
@change="endTimeChange"></el-date-picker>
......@@ -47,202 +47,202 @@
</template>
<script>
import { mapGetters } from "vuex";
import efficient from "@/api/efficient";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
export default {
name: "jktj",
data () {
return {
// 开始日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.form.endTime) {
return time.getTime() > new Date(this.form.endTime).getTime();
}
},
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.form.startTime) {
return time.getTime() < new Date(this.form.startTime).getTime();
}
},
import { mapGetters } from "vuex";
import efficient from "@/api/efficient";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
export default {
name: "jktj",
data () {
return {
// 开始日期限制
pickerOptionsStart: {
disabledDate: (time) => {
if (this.form.endTime) {
return time.getTime() > new Date(this.form.endTime).getTime();
}
},
// 搜索表单
valueTime: "",
// 搜索表单
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: "",
},
// 结束日期限制
pickerOptionsEnd: {
disabledDate: (time) => {
if (this.form.startTime) {
return time.getTime() < new Date(this.form.startTime).getTime();
}
},
chartData: []
};
},
// 搜索表单
valueTime: "",
// 搜索表单
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: "",
},
chartData: []
};
},
mounted () {
// 查询业务量
this.getProcessCounts();
},
computed: {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true)
},
mounted () {
// 查询业务量
this.getProcessCounts();
async getProcessCounts () {
this.chartData = [];
let { result: res } = await efficient.getProcessCounts(
this.form.startTime,
this.form.endTime,
this.form.qxdm
);
//获取图表配置项需要的数据
this.chartData = res;
this.$nextTick(() => {
// 初始化图表
this.chartData.length && this.echartInit(this.chartData)
});
},
computed: {
...mapGetters(["dicData"]),
// 重置
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: ""
};
this.getProcessCounts();
},
methods: {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true)
},
async getProcessCounts () {
this.chartData = [];
let { result: res } = await efficient.getProcessCounts(
this.form.startTime,
this.form.endTime,
this.form.qxdm
);
//获取图表配置项需要的数据
this.chartData = res;
this.$nextTick(() => {
// 初始化图表
this.chartData.length && this.echartInit(this.chartData)
});
},
// 重置
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
qxdm: ""
};
this.getProcessCounts();
},
//图表渲染
echartInit (chartArr) {
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
myChart.setOption({
color: ["#13E5FF"],
tooltip: {
show: true,
trigger: "axis",
textStyle: {
fontSize: 16, // 字体大小
},
},
grid: {
top: 120,
bottom: 100,
},
label: {
color: 'inherit',
//图表渲染
echartInit (chartArr) {
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
myChart.setOption({
color: ["#13E5FF"],
tooltip: {
show: true,
trigger: "axis",
textStyle: {
fontSize: 16, // 字体大小
},
xAxis: [
{
type: "category",
data: chartArr.map(item => item.recTypeName),
axisLabel: {
interval: 0,
rotate: 40,
formatter: function (val) {
let c = document.createElement("canvas");
const ctx = c.getContext("2d");
const arr = val.split("");
arr
.map((item) => ctx.measureText(item).width)
.reduce((pre, next, index) => {
const nLen = pre + next;
if (nLen > 60) {
arr[index - 1] += "...";
return next;
} else {
return nLen;
}
});
c = null;
let ind = arr.findIndex((i) => {
return i.indexOf("...") > -1;
},
grid: {
top: 120,
bottom: 100,
},
label: {
color: 'inherit',
},
xAxis: [
{
type: "category",
data: chartArr.map(item => item.recTypeName),
axisLabel: {
interval: 0,
rotate: 40,
formatter: function (val) {
let c = document.createElement("canvas");
const ctx = c.getContext("2d");
const arr = val.split("");
arr
.map((item) => ctx.measureText(item).width)
.reduce((pre, next, index) => {
const nLen = pre + next;
if (nLen > 60) {
arr[index - 1] += "...";
return next;
} else {
return nLen;
}
});
let newArr = ind > 0 ? arr.splice(0, ind + 1) : arr;
return newArr.join("");
},
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
c = null;
let ind = arr.findIndex((i) => {
return i.indexOf("...") > -1;
});
let newArr = ind > 0 ? arr.splice(0, ind + 1) : arr;
return newArr.join("");
},
},
],
yAxis: [
{
type: "value",
name: "数量/个",
nameTextStyle: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
axisLabel: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
},
],
yAxis: [
{
type: "value",
name: "数量/个",
nameTextStyle: {
color: "#fff",
fontSize: "16",
},
axisLabel: {
textStyle: {
show: true,
color: "#fff",
fontSize: "16",
},
},
],
},
],
series: [
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
series: [
{
type: "bar",
//显示数值
itemStyle: {
normal: {
label: {
show: true, //开启显示
position: "top", //在上方显示
},
},
barMaxWidth: '60',
data: chartArr.map(item => item.counts),
},
],
});
},
barMaxWidth: '60',
data: chartArr.map(item => item.counts),
},
],
});
},
};
},
};
</script>
<style scoped lang="scss">
.jktjDetail {
height: 100%;
display: flex;
flex-direction: column;
.rows {
margin-left: 100px;
}
.jktjDetail {
height: 100%;
display: flex;
flex-direction: column;
.center {
line-height: 50vh;
text-align: center;
color: #b6b5b5;
}
.rows {
margin-left: 100px;
}
.echarts-box {
display: flex;
justify-content: center;
height: 500px;
.center {
line-height: 50vh;
text-align: center;
color: #b6b5b5;
}
.chart {
width: 100%;
height: 100%;
}
}
.echarts-box {
display: flex;
justify-content: center;
height: 500px;
.form-clues-content {
flex: 1;
.chart {
width: 100%;
height: 100%;
}
}
.form-clues-content {
flex: 1;
height: 100%;
}
}
</style>
......
......@@ -4,7 +4,7 @@
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item v-if="BASE_API.THEME=='jg'">
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
......
/deep/.el-table--border th.el-table__cell {
border-bottom: 1px solid #458ACF !important;
}
/deep/.el-table--border .el-table__cell {
border-right: 1px solid #458ACF !important;
}
/deep/.el-table thead.is-group th.el-table__cell {
background-color: transparent !important;
}
......@@ -17,9 +9,4 @@
.export-excel-wrapper {
display: inline-block;
}
/deep/.el-table--group,
.el-table--border {
border: 1px solid #458ACF !important;
}
\ No newline at end of file
......
......@@ -4,7 +4,7 @@
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item>
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
......@@ -32,7 +32,7 @@
</el-form>
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<div class="from-clues-content complex-header">
<lb-table ref="table" :header-cell-style="headerStyle1" :calcHeight="200" :pagination="false"
:column="tableData.columns" :data="tableData.data">
</lb-table>
......@@ -171,6 +171,7 @@ export default {
</script>
<style scoped lang="scss">
@import "../css/index.scss";
/deep/th.el-table__cell {
height: 0 !important;
}
......
......@@ -4,7 +4,7 @@
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item>
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
......@@ -33,10 +33,9 @@
</el-form>
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<div class="from-clues-content complex-header">
<lb-table ref="table" :pagination="false" :calcHeight="200" :column="tableData.columns" :data="tableData.data">
</lb-table>
<down-lb-table ref="table" v-show="false" :id="'mytable'" :downExcel="true" :pagination="false"
:column="tableData.columns" :data="tableData.data" :downTitle="downTitle">
</down-lb-table>
......
......@@ -2,7 +2,7 @@
* @Author: yangwei
* @Date: 2023-02-17 16:32:50
* @LastEditors: Please set LastEditors
* @LastEditTime: 2023-03-15 10:42:21
* @LastEditTime: 2023-03-27 14:58:51
* @FilePath: \bdcjg-web\src\views\statistics\registerBookQuality\index.vue
* @Description:
*
......@@ -14,7 +14,7 @@
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item>
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
......@@ -42,7 +42,7 @@
</el-form>
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<div class="from-clues-content complex-header">
<lb-table ref="table" :pagination="false" :border="true" :calcHeight="200" :header-cell-style="headerStyle"
:column="tableData.columns" :data="tableData.data">
</lb-table>
......
......@@ -42,136 +42,136 @@
</template>
<script>
import sjsbTask from '@/api/sjsbTask.js'
export default {
props: {
value: { type: Boolean, default: false },
taskData: {
type: Object,
default: null
}
},
data () {
return {
myValue: this.value,
ruleForm: {
jobName: '',
cronExpression: '',
beanName: '',
methodName: '',
methodParams: '',
remark: ''
},
rules: {
jobName: [
{ required: true, message: '任务名', trigger: 'blur' }
],
cronExpression: [
{ required: true, message: 'cron表达式', trigger: 'blur' }
],
beanName: [
{ required: true, message: '任务类名', trigger: 'blur' }
],
methodName: [
{ required: true, message: '任务方法名', trigger: 'blur' }
]
},
message: ''
}
},
methods: {
handleSubmit () {
let _this = this
this.$refs['ruleForm'].validate(async (valid) => {
if (valid) {
if (!_this.taskData) {
try {
let res = await sjsbTask.sjsbTaskSave(_this.ruleForm)
if (res.code == 200) {
_this.loading = false
_this.$message({
message: res.message,
type: 'success'
})
_this.handleClose()
_this.$parent.featchData()
}
} catch (error) {
_this.message = error
_this.$refs.msg.messageShow()
}
} else {
try {
let res = await sjsbTask.updateCron(_this.ruleForm)
if (res.code == 200) {
_this.$message({
message: res.message,
type: 'success'
})
_this.handleClose()
_this.$parent.featchData()
}
} catch (error) {
_this.message = error
_this.$refs.msg.messageShow()
}
}
} else {
this.$message('请检查表单完整性')
return false;
}
})
},
handleClose () {
this.$emit("input", false);
}
},
watch: {
value (val) {
this.myValue = val
import sjsbTask from '@/api/sjsbTask.js'
export default {
props: {
value: { type: Boolean, default: false },
taskData: {
type: Object,
default: null
}
},
taskData (val) {
if (val != null) {
this.ruleForm = val
} else {
this.ruleForm = {
data () {
return {
myValue: this.value,
ruleForm: {
jobName: '',
cronExpression: '',
beanName: '',
methodName: '',
methodParams: '',
remark: ''
},
rules: {
jobName: [
{ required: true, message: '任务名', trigger: 'blur' }
],
cronExpression: [
{ required: true, message: 'cron表达式', trigger: 'blur' }
],
beanName: [
{ required: true, message: '任务类名', trigger: 'blur' }
],
methodName: [
{ required: true, message: '任务方法名', trigger: 'blur' }
]
},
message: ''
}
},
methods: {
handleSubmit () {
let _this = this
this.$refs['ruleForm'].validate(async (valid) => {
if (valid) {
if (!_this.taskData) {
try {
let res = await sjsbTask.sjsbTaskSave(_this.ruleForm)
if (res.code == 200) {
_this.loading = false
_this.$message({
message: res.message,
type: 'success'
})
_this.handleClose()
_this.$parent.featchData()
}
} catch (error) {
_this.message = error
_this.$refs.msg.messageShow()
}
} else {
try {
let res = await sjsbTask.updateCron(_this.ruleForm)
if (res.code == 200) {
_this.$message({
message: res.message,
type: 'success'
})
_this.handleClose()
_this.$parent.featchData()
}
} catch (error) {
_this.message = error
_this.$refs.msg.messageShow()
}
}
} else {
this.$message('请检查表单完整性')
return false;
}
})
},
handleClose () {
this.$emit("input", false);
}
},
watch: {
value (val) {
this.myValue = val
},
taskData (val) {
if (val != null) {
this.ruleForm = val
} else {
this.ruleForm = {
jobName: '',
cronExpression: '',
beanName: '',
methodName: '',
methodParams: '',
remark: ''
}
}
}
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/.dialogBox .dialog_title {
margin-left: 5px !important;
}
// /deep/.dialogBox .dialog_title {
// margin-left: 5px !important;
// }
/deep/.el-dialog__headerbtn {
margin-top: -12px;
}
// /deep/.el-dialog__headerbtn {
// margin-top: -12px;
// }
.editDialogBox-box {
margin: 14px 18px 30px 18px !important
}
// .editDialogBox-box {
// margin: 14px 18px 30px 18px !important
// }
/deep/.el-form-item__label {
color: #fff;
}
// /deep/.el-form-item__label {
// color: #fff;
// }
/deep/.el-form-item {
color: #fff;
margin-bottom: 10px;
}
// /deep/.el-form-item {
// color: #fff;
// margin-bottom: 10px;
// }
/deep/ .el-input__inner {
background-color: transparent;
border: 1px solid #458ACF;
}
// /deep/ .el-input__inner {
// background-color: transparent;
// border: 1px solid #458ACF;
// }
</style>
......
......@@ -25,372 +25,337 @@
</template>
<script>
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
import { editDictNode, getChildDictList } from "@/api/dict";
export default {
props: {
value: { type: Boolean, default: false },
details: {
type: Object,
default: {},
},
},
data () {
return {
key: 0,
myValue: this.value,
keyList: [],
ruleForm: {
DCODE: "",
DNAME: "",
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
import { editDictNode, getChildDictList } from "@/api/dict";
export default {
props: {
value: { type: Boolean, default: false },
details: {
type: Object,
default: {},
},
column: [],
columns: [
{
width: "70",
renderHeader: (h, scope) => {
return (
<div>
{this.details.ISENABLE === "0" ? (
<span>序号</span>
) : (
<i
class="el-icon-plus"
onClick={() => {
this.handleAdd();
}}
style="cursor:pointer;color:#409EFF"
></i>
)}
</div>
);
},
render: (h, scope) => {
return <span>{scope.row.index}</span>;
},
},
data () {
return {
key: 0,
myValue: this.value,
keyList: [],
ruleForm: {
DCODE: "",
DNAME: "",
},
{
prop: "DCODE",
width: "100",
label: "字典项编码",
render: (h, scope) => {
return (
<div>
<el-input
placeholder="字典项编码"
v-show={scope.row.codeShow}
v-fo
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.codeShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
maxlength="8"
></el-input>
column: [],
columns: [
{
width: "70",
renderHeader: (h, scope) => {
return (
<div>
{this.details.ISENABLE === "0" ? (
<span>序号</span>
) : (
<i
class="el-icon-plus"
onClick={() => {
this.handleAdd();
}}
style="cursor:pointer;color:#409EFF"
></i>
)}
</div>
);
},
render: (h, scope) => {
return <span>{scope.row.index}</span>;
},
},
{
prop: "DCODE",
width: "100",
label: "字典项编码",
render: (h, scope) => {
return (
<div>
<el-input
placeholder="字典项编码"
v-show={scope.row.codeShow}
v-fo
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.codeShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
maxlength="8"
></el-input>
<el-input
placeholder="字典项编码"
v-show={!scope.row.codeShow}
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.codeShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
maxlength="8"
></el-input>
</div>
);
<el-input
placeholder="字典项编码"
v-show={!scope.row.codeShow}
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.codeShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
maxlength="8"
></el-input>
</div>
);
},
},
},
{
prop: "DNAME",
label: "字典项名称",
render: (h, scope) => {
return (
<div>
<el-input
placeholder="字典项编码"
v-show={scope.row.nameShow}
v-fo
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.nameShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
></el-input>
{
prop: "DNAME",
label: "字典项名称",
render: (h, scope) => {
return (
<div>
<el-input
placeholder="字典项编码"
v-show={scope.row.nameShow}
v-fo
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.nameShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
></el-input>
<el-input
placeholder="字典项名称"
v-show={!scope.row.nameShow}
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.nameShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
></el-input>
</div>
);
<el-input
placeholder="字典项名称"
v-show={!scope.row.nameShow}
value={scope.row[scope.column.property]}
onFocus={() => {
this.itemShowFalse();
scope.row.nameShow = true;
}}
onInput={(val) => {
scope.row[scope.column.property] = val;
this.itemShowFalse();
scope.row.codeShow = true;
}}
></el-input>
</div>
);
},
},
},
{
width: "130",
label: "移动",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
disabled={scope.row.isTop}
onClick={() => {
this.moveUpward(scope.$index, scope.row);
}}
>
上移
</el-button>
<el-button
type="text"
disabled={scope.row.isBottom}
onClick={() => {
this.moveDown(scope.$index, scope.row);
}}
>
下移
</el-button>
</div>
);
{
width: "130",
label: "移动",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
disabled={scope.row.isTop}
onClick={() => {
this.moveUpward(scope.$index, scope.row);
}}
>
上移
</el-button>
<el-button
type="text"
disabled={scope.row.isBottom}
onClick={() => {
this.moveDown(scope.$index, scope.row);
}}
>
下移
</el-button>
</div>
);
},
},
},
{
width: "100",
label: "操作",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
style="margin-right:10px"
onClick={() => {
this.handleAddSubordinate(scope.row);
}}
>
增加下级
</el-button>
<el-button
type="text"
style="margin-left:0"
onClick={() => {
this.handleMinus(scope.$index, scope.row);
}}
>
删除
</el-button>
</div>
)
{
width: "100",
label: "操作",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
style="margin-right:10px"
onClick={() => {
this.handleAddSubordinate(scope.row);
}}
>
增加下级
</el-button>
<el-button
type="text"
style="margin-left:0"
onClick={() => {
this.handleMinus(scope.$index, scope.row);
}}
>
删除
</el-button>
</div>
)
}
}
}
],
tableData: []
}
},
watch: {
value (val) {
this.myValue = val
],
tableData: []
}
},
"details.dictid": {
handler: function (newValue) {
if (!this.value) return;
getChildDictList(newValue).then((res) => {
this.$endLoading();
let { result } = res;
this.tableData = result ? result : [];
this.tableData.forEach((item, index) => {
item.index = index + 1;
watch: {
value (val) {
this.myValue = val
},
"details.dictid": {
handler: function (newValue) {
if (!this.value) return;
getChildDictList(newValue).then((res) => {
this.$endLoading();
let { result } = res;
this.tableData = result ? result : [];
this.tableData.forEach((item, index) => {
item.index = index + 1;
})
this.tableData = judgeSort(this.tableData)
})
this.tableData = judgeSort(this.tableData)
})
},
immediate: true
},
immediate: true
},
details: {
handler: function (newValue) {
if (newValue.ISENABLE == 2) {
this.column = this.columns.slice(0, 6);
} else {
this.column = this.columns;
}
this.ruleForm = newValue.rowData;
this.addIndexes();
this.key++;
details: {
handler: function (newValue) {
if (newValue.ISENABLE == 2) {
this.column = this.columns.slice(0, 6);
} else {
this.column = this.columns;
}
this.ruleForm = newValue.rowData;
this.addIndexes();
this.key++;
},
deep: true,
},
deep: true,
},
},
methods: {
// 添加索引
addIndexes (data = this.tableData, isAdd = true) {
data.forEach((item, index) => {
if (index == 0) {
item.codeShow = true;
item.nameShow = false;
item.normcodeShow = false;
item.normnameShow = false;
} else {
methods: {
// 添加索引
addIndexes (data = this.tableData, isAdd = true) {
data.forEach((item, index) => {
if (index == 0) {
item.codeShow = true;
item.nameShow = false;
item.normcodeShow = false;
item.normnameShow = false;
} else {
item.codeShow = false;
item.nameShow = false;
item.normcodeShow = false;
item.normnameShow = false;
}
if (isAdd) {
item.index = index + 1;
}
if (item.children) {
this.addIndexes(item.children, false);
}
});
},
itemShowFalse () {
this.tableData.forEach((item, index) => {
item.codeShow = false;
item.nameShow = false;
item.normcodeShow = false;
item.normnameShow = false;
});
},
handleMinus (index, row) {
removeTreeListItem(this.tableData, row.dictid, 'dictid');
this.tableData = judgeSort(this.tableData)
this.key++;
},
handleSubmit () {
editDictNode({
dictid: this.details.rowData.dictid,
typeid: this.details.rowData.TYPEID,
children: this.tableData,
}).then((res) => {
if (res.code === 200) {
this.$message({
message: "修改成功",
type: "success",
});
this.$emit("input", false);
}
});
},
closeDialog () {
this.$emit("input", false);
},
// 增加下级
handleAddSubordinate (row) {
if (!row.children) {
row.children = [];
}
if (isAdd) {
item.index = index + 1;
}
if (item.children) {
this.addIndexes(item.children, false);
}
});
},
itemShowFalse () {
this.tableData.forEach((item, index) => {
item.codeShow = false;
item.nameShow = false;
item.normcodeShow = false;
item.normnameShow = false;
});
},
handleMinus (index, row) {
removeTreeListItem(this.tableData, row.dictid, 'dictid');
this.tableData = judgeSort(this.tableData)
this.key++;
},
handleSubmit () {
editDictNode({
dictid: this.details.rowData.dictid,
typeid: this.details.rowData.TYPEID,
children: this.tableData,
}).then((res) => {
if (res.code === 200) {
this.$message({
message: "修改成功",
type: "success",
});
this.$emit("input", false);
}
});
},
closeDialog () {
this.$emit("input", false);
},
// 增加下级
handleAddSubordinate (row) {
if (!row.children) {
row.children = [];
}
row.children.push({
DCODE: "",
DNAME: "",
ISENABLE: "1",
NORMCODE: "",
NORMNAME: "",
dictid: getUuid(32),
typeid: row.typeid,
});
this.keyList = [];
this.keyList.push(row.dictid);
},
// 增加
handleAdd () {
this.$nextTick(() => {
let container = this.$el.querySelector(".el-table__body-wrapper");
container.scrollTop = container.scrollHeight;
});
this.tableData.push({
DCODE: "",
DNAME: "",
ISENABLE: "1",
normcode: "",
normname: "",
dictid: getUuid(32),
typeid: this.ruleForm.typeid,
});
this.addIndexes();
this.tableData = judgeSort(this.tableData)
this.key++;
},
// 上移下移
moveUpward (index, row) {
realMove(row.dictid, "UP", this.tableData);
let id = findParents(this.tableData, row.dictid);
this.keyList = id;
this.key++;
},
moveDown (index, row) {
realMove(row.dictid, "DOWN", this.tableData);
let id = findParents(this.tableData, row.dictid);
this.keyList = id;
this.key++;
row.children.push({
DCODE: "",
DNAME: "",
ISENABLE: "1",
NORMCODE: "",
NORMNAME: "",
dictid: getUuid(32),
typeid: row.typeid,
});
this.keyList = [];
this.keyList.push(row.dictid);
},
// 增加
handleAdd () {
this.$nextTick(() => {
let container = this.$el.querySelector(".el-table__body-wrapper");
container.scrollTop = container.scrollHeight;
});
this.tableData.push({
DCODE: "",
DNAME: "",
ISENABLE: "1",
normcode: "",
normname: "",
dictid: getUuid(32),
typeid: this.ruleForm.typeid,
});
this.addIndexes();
this.tableData = judgeSort(this.tableData)
this.key++;
},
// 上移下移
moveUpward (index, row) {
realMove(row.dictid, "UP", this.tableData);
let id = findParents(this.tableData, row.dictid);
this.keyList = id;
this.key++;
},
moveDown (index, row) {
realMove(row.dictid, "DOWN", this.tableData);
let id = findParents(this.tableData, row.dictid);
this.keyList = id;
this.key++;
},
},
},
};
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/.el-radio {
margin-right: 5px !important;
display: flex;
}
/deep/.el-radio__label {
display: block;
}
/deep/.el-form-item__label {
color: #fff;
}
/deep/.el-form-item {
color: #fff;
margin-bottom: 10px;
}
/deep/.el-radio-group {
display: flex;
align-items: center;
justify-content: center;
}
.editDialogBox-box {
margin: 14px 18px 30px 18px !important
}
.opacity-input {
/deep/ .el-input__inner {
background-color: transparent;
border: 1px solid #458ACF;
}
}
</style>
......
......@@ -6,7 +6,7 @@
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row :gutter="20">
<el-row :gutter="20" class="mb-5">
<el-col :span="6">
<el-form-item label="字典类型编码">
<el-input v-model="ruleForm.dcode" @clear="queryClick" clearable placeholder="字典类型编码"></el-input>
......@@ -36,101 +36,101 @@
</div>
</template>
<script>
import table from "@/utils/mixin/table"
import { getQlxxDictList, refreshDictCache } from "@/api/dict.js"
import { datas, sendThis } from "./dictionaries"
import editDialog from "./components/editDialog.vue"
export default {
name: "djbcx",
components: {
editDialog
},
mixins: [table],
mounted () {
sendThis(this);
this.queryClick()
},
data () {
return {
isDialog: false,
details: {
dictid: '',
isenable: 1,
rowData: {}
},
ruleForm: {
dcode: '',
dname: ''
},
tableData: {
total: 0,
columns: datas.columns().concat([
{
label: "操作",
render: (h, scope) => {
return (
<el-button type="text"
class='successColor'
onClick={() => { this.editClick(scope.row, 1) }}>修改</el-button>
)
}
}
]),
data: []
}
}
},
methods: {
// 初始化数据
queryClick () {
getQlxxDictList({ ...this.ruleForm, ...this.pageData }).then(res => {
let { records, total } = res.result
this.tableData.data = records ? records : []
this.tableData.total = total ? total : 0
})
import table from "@/utils/mixin/table"
import { getQlxxDictList, refreshDictCache } from "@/api/dict.js"
import { datas, sendThis } from "./dictionaries"
import editDialog from "./components/editDialog.vue"
export default {
name: "djbcx",
components: {
editDialog
},
handleSearch () {
this.pageData.currentPage = 1
this.tableData.data = []
mixins: [table],
mounted () {
sendThis(this);
this.queryClick()
},
handleRefresh () {
this.$confirm('是否确认刷新', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
refreshDictCache().then(res => {
if (res.code == 200) {
let refech = this.$store.dispatch('dict/generateDic')
this.$endLoading()
refech && this.$message({
message: '刷新成功',
type: 'success'
});
} else {
this.$message.error(res.message)
}
data () {
return {
isDialog: false,
details: {
dictid: '',
isenable: 1,
rowData: {}
},
ruleForm: {
dcode: '',
dname: ''
},
tableData: {
total: 0,
columns: datas.columns().concat([
{
label: "操作",
render: (h, scope) => {
return (
<el-button type="text"
class='successColor'
onClick={() => { this.editClick(scope.row, 1) }}>修改</el-button>
)
}
}
]),
data: []
}
}
},
methods: {
// 初始化数据
queryClick () {
getQlxxDictList({ ...this.ruleForm, ...this.pageData }).then(res => {
let { records, total } = res.result
this.tableData.data = records ? records : []
this.tableData.total = total ? total : 0
})
}).catch(() => {
this.$message({
type: 'info',
message: '取消刷新'
},
handleSearch () {
this.pageData.currentPage = 1
this.tableData.data = []
this.queryClick()
},
handleRefresh () {
this.$confirm('是否确认刷新', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
refreshDictCache().then(res => {
if (res.code == 200) {
let refech = this.$store.dispatch('dict/generateDic')
this.$endLoading()
refech && this.$message({
message: '刷新成功',
type: 'success'
});
} else {
this.$message.error(res.message)
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '取消刷新'
});
});
});
},
editClick (row, val) {
this.details.rowData = row
this.details.isenable = val
this.details.dictid = row.dictid
this.isDialog = true
},
editClick (row, val) {
this.details.rowData = row
this.details.isenable = val
this.details.dictid = row.dictid
this.isDialog = true
}
}
}
};
};
</script>
<style scoped lang="scss">
/deep/.dialogBox .dialog_title {
top: 0;
margin-left: 5px;
}
/deep/.dialogBox .dialog_title {
top: 0;
margin-left: 5px;
}
</style>
......
<template>
<div class="content">
<div class="user-info">
<div class="informationbase">
<el-form
ref="form"
label-width="100px"
......@@ -38,7 +37,6 @@
<btn nativeType="cx" type="primary" @click="updateInfo">更新信息</btn>
</div>
</div>
</div>
</template>
<script>
......
<!--
* @Author: xiaomiao 1158771342@qq.com
* @Date: 2023-03-09 20:54:28
* @LastEditors: Please set LastEditors
* @LastEditTime: 2023-03-27 09:13:22
* @LastEditors: xiaomiao 1158771342@qq.com
* @LastEditTime: 2023-03-27 14:26:49
* @FilePath: \上报\bdcjg-web\src\views\system\information\index.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
......@@ -10,7 +10,7 @@
<div class="information from-clues">
<div class="from-clues-header">
<el-form ref="ruleForm" label-width="100px">
<el-form-item v-if="BASE_API.THEME == 'jg'">
<el-form-item v-if="BASE_API.THEME=='jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
......@@ -34,64 +34,38 @@
</div>
</template>
<script>
import "@/utils/flexible.js";
import BaseSet from "./base-set.vue";
import PasswordEdit from "./password-edit.vue";
export default {
components: {
BaseSet,
PasswordEdit,
},
data () {
return {
isshow: true,
};
},
computed: {
userData () {
return this.$store.state.user.userInfo;
import "@/utils/flexible.js";
import BaseSet from "./base-set.vue";
import PasswordEdit from "./password-edit.vue";
export default {
components: {
BaseSet,
PasswordEdit,
},
},
watch: {},
created () { },
mounted () { },
methods: {
information () {
this.isshow = true;
data () {
return {
isshow: true,
};
},
password () {
this.isshow = false;
computed: {
userData () {
return this.$store.state.user.userInfo;
},
},
},
};
watch: {},
created () { },
mounted () { },
methods: {
information () {
this.isshow = true;
},
password () {
this.isshow = false;
},
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
.information {
display: flex;
flex-direction: column;
.btnColRight {
margin-top: 10px;
display: flex;
justify-content: center;
// background-color: cadetblue;
height: 30px;
}
/deep/.content {
.el-input__inner {
background: none;
}
.user-info {
background: none;
}
}
.boxin {
flex: 1;
}
}</style>
</style>
......
<template>
<div class="content">
<div class="user-info">
<el-form
ref="form"
label-width="100px"
:model="form"
class="form-wrapper"
:rules="rules">
<el-form-item label="旧密码:" prop="oldPassword">
<el-input
v-model="form.oldPassword"
clearable
type="password"
show-password />
</el-form-item>
<el-form-item label="新密码:" prop="newPassword">
<el-input
v-model="form.newPassword"
clearable
type="password"
show-password />
</el-form-item>
<el-form-item label="确认密码:" prop="confirmPassword">
<el-input
v-model="form.confirmPassword"
clearable
type="password"
show-password />
</el-form-item>
</el-form>
<div class="bottom-wrapper">
<btn nativeType="cx" type="primary" @click="updatePassword">确认修改</btn>
</div>
<div class="informationpassword">
<el-form
ref="form"
label-width="100px"
:model="form"
class="form-wrapper"
:rules="rules">
<el-form-item label="旧密码:" prop="oldPassword">
<el-input
v-model="form.oldPassword"
clearable
type="password"
show-password />
</el-form-item>
<el-form-item label="新密码:" prop="newPassword">
<el-input
v-model="form.newPassword"
clearable
type="password"
show-password />
</el-form-item>
<el-form-item label="确认密码:" prop="confirmPassword">
<el-input
v-model="form.confirmPassword"
clearable
type="password"
show-password />
</el-form-item>
</el-form>
<div class="bottom-wrapper">
<btn nativeType="cx" type="primary" @click="updatePassword">确认修改</btn>
</div>
</div>
</template>
......@@ -110,27 +108,4 @@
</script>
<style scoped lang="scss">
.user-info {
margin: 36px 200px;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
/deep/.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #ffffff;
}
.el-input .el-input__inner {
padding: 0 8px;
height: 40px;
line-height: 40px;
border: 1px solid #6bc1fc;
}
}
}
.bottom-wrapper {
padding: 32px 120px 24px;
text-align: center;
}
}
</style>
......
<template>
<dialogBox class="modifydialog PersonnelDialog" :isMain="true" width="40%" :title="title" @closeDialog="close" @submitForm="submitForm"
<dialogBox class="PersonnelDialog" :isMain="true" width="40%" :title="title" @closeDialog="close" @submitForm="submitForm"
v-model="myValue">
<div class="dialogCon">
<el-form ref="form" :model="form" :rules="rules">
......@@ -236,35 +236,4 @@
}
</script>
<style scoped lang="scss">
// .modifydialog {
// &-con {
// background: #031a46;
// }
// /deep/.el-dialog__header {
// .dialog_title {
// display: -webkit-box;
// display: -ms-flexbox;
// display: flex;
// position: relative;
// top: -8px;
// width: 28%;
// height: 40px;
// margin-left: 28px;
// -webkit-box-pack: center;
// -ms-flex-pack: center;
// justify-content: center;
// white-space: nowrap;
// b {
// font-size: 16px;
// }
// }
// .el-dialog__headerbtn {
// right: 20px !important;
// top: 23px !important;
// }
// }
// }
</style>
......
......@@ -2,7 +2,7 @@
<div class="timedTask from-clues">
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item v-if="BASE_API.THEME == 'jg'">
<el-form-item v-if="BASE_API.THEME=='jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
......@@ -11,7 +11,7 @@
<el-input v-model.trim="form.menuName" class="width100" clearable placeholder="菜单名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="3" class="btnColRight">
<el-col :span="20" class="btnColRight">
<btn nativeType="cx" @click="searchQuery">查询</btn>
<btn nativeType="cx" @click="handleAdd()">新增菜单</btn>
</el-col>
......@@ -19,7 +19,7 @@
</el-form>
</div>
<div class="from-clues-content">
<lb-table :pagination="false" :column="tableData.columns" :calcHeight="200" :data="tablelistData" row-key="id"
<lb-table :pagination="false" :column="tableData.columns" :calcHeight="BASE_API.calcHeight" :data="tablelistData" row-key="id"
default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
</lb-table>
......
<!-- 新增 & 修改角色 -->
<template>
<dialogBox
class="modifydialog PersonnelDialog"
class="PersonnelDialog"
:title="title"
:width="'567px'"
:isMain="true"
......
......@@ -11,7 +11,7 @@
<el-input v-model.trim="form.rolesName" class="width100" clearable placeholder="角色名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="3" class="btnColRight">
<el-col :span="20" class="btnColRight">
<btn nativeType="cx" @click="searchQuery">查询</btn>
<btn nativeType="cx" @click="handleAddEdit">增加角色</btn>
</el-col>
......@@ -19,7 +19,7 @@
</el-form>
</div>
<div class="from-clues-content">
<lb-table :pagination="false" @size-change="handleSizeChange" :calcHeight="200"
<lb-table :pagination="false" @size-change="handleSizeChange" :calcHeight="BASE_API.calcHeight"
@p-current-change="handleCurrentChange" :column="tableData.columns" :data="listdata" :expand-row-keys="keyList"
row-key="dictid">
</lb-table>
......
......@@ -412,6 +412,7 @@
};
</script>
<style scoped lang="scss">
// @import "~@/styles/mixin.scss";
// @import "~@/styles/dialogBox.scss";
/deep/.dialogBox .el-dialog__header {
height: 59px !important;
}
</style>
......
......@@ -5,7 +5,7 @@
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row>
<el-row class="mb-5">
<el-col :span="6">
<el-form-item label="搜索标题">
<el-input v-model="form.jobName" placeholder="标题"></el-input>
......@@ -251,5 +251,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
// @import "~@/styles/mixin.scss";
</style>
......
<template>
<dialogBox :title="title" :width="'867px'" class="modifydialog PersonnelDialog" @closeDialog="close" :isMain="true" @submitForm="submitForm"
<dialogBox :title="title" :width="'867px'" class="PersonnelDialog" @closeDialog="close" :isMain="true" @submitForm="submitForm"
v-model="myValue">
<div class="dialogCon">
<el-form ref="form" :model="form" :rules="rules">
......
......@@ -5,7 +5,7 @@
<el-form-item v-if="BASE_API.THEME == 'jg'">
<Breadcrumb />
</el-form-item>
<el-row class="mt-10">
<el-row class="mb-5">
<el-col :span="4">
<el-form-item label="用户名" prop="loginName">
<el-input v-model.trim="form.loginName" class="width100" clearable placeholder="用户名"></el-input>
......@@ -22,7 +22,7 @@
</el-form-item>
</el-col>
<!-- 操作按钮 -->
<el-col :span="3" class="btnColRight">
<el-col :span="12" class="btnColRight">
<btn nativeType="cx" @click="getTableList">查询</btn>
<btn nativeType="cx" @click="handleAdd">添加人员</btn>
</el-col>
......@@ -31,7 +31,8 @@
</div>
<div class="from-clues-content">
<lb-table :pagination="false" @size-change="handleSizeChange" @p-current-change="handleCurrentChange"
:column="tableData.columns" :calcHeight="200" :data="tableData.data" :expand-row-keys="keyList" row-key="dictid">
:column="tableData.columns" :calcHeight="BASE_API.calcHeight" :data="tableData.data" :expand-row-keys="keyList"
row-key="dictid">
</lb-table>
</div>
<EditDialog ref="dialogForm" v-model="isDialog" @ok="reloadTableData" />
......
......@@ -2,7 +2,7 @@
<div class="dictionary-config from-clues">
<div class="from-clues-header">
<el-form ref="form" :model="form" label-width="90px">
<el-form-item>
<el-form-item v-if="BASE_API.THEME=='jg'">
<Breadcrumb />
</el-form-item>
<el-row>
......