1b95b632 by 任超

feat:打包分支代码提交

2 parents 856df1c5 eb85698e
Showing 144 changed files with 9327 additions and 4842 deletions
......@@ -21,6 +21,4 @@ yarn-error.log*
*.njsproj
*.sln
*.sw?
/src/api/config.js
package-lock.json
......
......@@ -11,10 +11,11 @@
"@jiaminghi/data-view": "^2.10.0",
"axios": "^0.21.1",
"clipboard": "^2.0.11",
"jsoneditor": "^9.9.2",
"core-js": "^3.6.5",
"echarts": "^4.6.0",
"file-saver": "^2.0.5",
"js-cookie": "2.2.0",
"jsoneditor": "^9.9.2",
"lodash": "^4.17.21",
"node-sass": "^4.14.1",
"normalize.css": "7.0.0",
......@@ -24,7 +25,9 @@
"vue-json-editor": "^1.4.3",
"vue-router": "3.0.2",
"vuex": "3.1.0",
"xe-utils": "^3.5.7"
"xe-utils": "^3.5.7",
"xlsx": "^0.17.0",
"xlsx-style": "^0.8.13"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.4",
......
import request from "@/utils/request";
import SERVER from "./config";
import { getParams } from './util'
import {
api,
getAction,
postAction,
deleteAction,
putAction
} from './manageApi'
/** 角色管理开始 */
// 获取角色列表 categoryId
// 获取角色列表 by categoryId
export const getRolesById = categoryId => {
const conditionGroup = {
conditions: [
{
property: 'category',
value:categoryId,
value: categoryId,
operator: 'EQ'
}
],
queryRelation: 'AND'
}
const params = getParams(conditionGroup);
const params = getParams(conditionGroup)
return getAction(api.roles, params)
}
// 人员列表
export const getUserRoles = (id) => {
return getAction(`${api.userRoles}/${id}/users`)
}
// 更新人员
export const updateUser = (id, data) => {
return putAction(`${api.userRoles}/${id}/users`, data)
}
// 根据条件获取用户
export const getUserList = (params) => {
return getAction(api.users, params)
}
// 导出用户列表
export const exportUserList = (params) => {
return getAction(api.users + '/export', params)
/** 角色管理结束 */
/** 授权管理开始 */
// 获取权限列表
export const getAuthorityListAction = (productId, subsystemCode) => {
const conditionGroup = {
conditions: [
{
property: 'productId',
value: productId,
operator: 'EQ'
},
{
property: 'code',
value: subsystemCode + '_MENU',
operator: 'EQ'
}
],
queryRelation: 'AND'
}
const params = getParams(conditionGroup)
return getAction(api.resourceCategory, params)
}
// 更新用户状态
export const updateStatus = (id, status) => {
return putAction(`${api.users}/${id}/${status}/status`)
/**
* 获取角色的权限 id operationCodes resourceCategoryCode
* id 授权id
* operationCodes 操作符集合
* resourceCategoryCode 菜单默认MENU
*/
export const getRoleAuthorityList = (
id,
operationCodes,
resourceCategoryCode
) => {
return getAction(`${api.rolePermissions}/${id}`, {
operationCodes: operationCodes,
resourceCategoryCode: resourceCategoryCode
})
}
// 更新用户解锁状态
export const updateLock = (id) => {
return putAction(`${api.users}/${id}/lock`)
// 角色授权
export const roleAuthority = (id, permissionDtos) => {
return putAction(`${api.rolePermissions}/${id}`, permissionDtos)
}
// 重置用户密码
// export const resetPassword = id => {
// return putAction(`${api.users}/${id}/reset-password`)
// }
// 重置用户密码
export const resetPassword = (ids) => {
return putAction(`${api.users}/reset-passwords?ids=${ids}`)
}
// 删除人员
export const delUser = (id, data) => {
return deleteAction(`${api.userRoles}/${id}/users`, data)
}
// 获取父级菜单
export const getParentMenuListAction = (id) => {
let conditionGroup = {}
......@@ -81,3 +86,4 @@ export const getParentMenuListAction = (id) => {
const params = getParams(conditionGroup)
return getAction(api.menus, params)
}
......
/*
* @Description: 统计率
* @Autor: renchao
* @LastEditTime: 2023-03-01 15:37:49
*/
/* 引入请求文件 */
import request from '@/utils/request'
/* 引入配置文件 */
import SERVER from './config'
class business {
/*
成功率统计
startDate:开始日期
endDate:结束日期
*/
async getSuucessRate(startDate,endDate,qxdm) {
/**
* @description: 成功率统计
* @param {*} startDate
* @param {*} endDate
* @param {*} qxdm
* @author: renchao
*/
async getSuucessRate (startDate, endDate, qxdm) {
return request({
url: SERVER.SERVERAPI + '/rest/statistics/Business/sf',
method: 'get',
params: {
startDate:startDate,
endDate:endDate,
qxdm:qxdm
startDate: startDate,
endDate: endDate,
qxdm: qxdm
}
})
}
......
/*
* @Description: 这个是所有api的前缀配置文件
* @Autor: renchao
* @LastEditTime: 2023-03-01 15:35:44
*/
export default {
// SERVERAPI: '/service-bdcsjsb-th', //浩浩
// SERVERAPI: '/service-bdcsjsb-zz',
SERVERAPI: '/bdcsjsb', //赵千
MANAGEMENTAPI: 'http://192.168.2.236/management'
// SERVERAPI: '/bdcsjsb-service'
// SERVERAPI: '/bdcsjsb-jiao0'
}
// 汉中
// export default {
// // SERVERAPI: '/service-bdcsjsb-th', //线上
// SERVERAPI: '/bdcsjsb', //赵千
// MANAGEMENTAPI: 'http://172.16.56.32:8877/management'
// }
/*
* @Description: 数据上报模块api文件
* @Autor: renchao
* @LastEditTime: 2023-03-03 14:38:57
*/
/* 引入axios请求文件 */
import request from '@/utils/request'
/* 引入配置 */
import SERVER from './config'
const urlHeader = SERVER.SERVERAPI + '/rest/sjsb/DataReport/'
// 区县上报分页
/**
* @description: 区县上报根据业务id获取xml
* @param {*} bizMsgid
* @author: renchao
*/
export function getXml (bizMsgid) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getXml',
url: urlHeader + 'getXml',
method: 'get',
params: {
businessId: bizMsgid
......@@ -12,58 +24,102 @@ export function getXml (bizMsgid) {
})
}
// 区县上报分页
/**
* @description: 区县上报分页
* @param {*} data
* @author: renchao
*/
export function getAreaReportPage (data) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getAreaReportPage',
url: urlHeader + 'getAreaReportPage',
method: 'post',
data
})
}
// 接入数据上报分页
/**
* @description: 接入数据上报分页
* @author: renchao
*/
export function getReceiveDataReportPage (data) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getReceiveDataReportPage',
url: urlHeader + 'getReceiveDataReportPage',
method: 'post',
data
})
}
// 数据上报分页
/**
* @description: 数据上报分页
* @author: renchao
*/
export function getDataReportPage (data) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getDataReportPage',
url: urlHeader + 'getDataReportPage',
method: 'post',
data
})
}
// 查询数据上报详情tabs选项卡
/**
* @description: 查询数据上报详情tabs选项卡
* @author: renchao
*/
export function getTabsDetail (params) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getTabsDetail',
url: urlHeader + 'getTabsDetail',
method: 'get',
params
})
}
// 查询数据上报详情
/**
* @description: 查询数据上报详情
* @author: renchao
*/
export function getReportDetail (params) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getReportDetail',
url: urlHeader + 'getReportDetail',
method: 'get',
params
})
}
// 结果
/**
* @description: 获取数据上报结果
* @param {*} bsmReport
* @author: renchao
*/
export function getReceiveDataReportResult (bsmReport) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/DataReport/getReceiveDataReportResult',
url: urlHeader + 'getReceiveDataReportResult',
method: 'get',
params: {
bsmReport: bsmReport
}
})
}
/**
* @description: 重新上报
* @param {*} bsmReport
* @author: renchao
*/
export function restartGenerateXml (bsmReport) {
return request({
url: urlHeader + 'restartGenerateXml?bsmReport=' + bsmReport,
method: 'post'
})
}
/**
* @description: 编辑报文头
* @param {*} data
* @author: renchao
*/
export function edit (data) {
return request({
url: urlHeader + 'edit',
method: 'post',
data
})
}
\ No newline at end of file
......
......@@ -78,12 +78,12 @@ export const api = {
crudPut: crud + '/rest/put', // crudPut
crudDel: crud + '/rest/delete', // crudDel
crudMetadata: crud + '/rest/metadata', //crudMetadata
crudBusiness : crud + '/rest/business', // crudBusiness
crudDatasources : crud + '/rest/datasources', // crudDatasources
crudBusiness: crud + '/rest/business', // crudBusiness
crudDatasources: crud + '/rest/datasources', // crudDatasources
}
// 根据code获取字典 params={isTree:true})
export function getDictItems(code, params = {}) {
export function getDictItems (code, params = {}) {
return request({
url: `${api.baseDataCategory}/${code}/base-datas`,
method: 'get',
......@@ -91,21 +91,21 @@ export function getDictItems(code, params = {}) {
})
}
// 获取一级字典值下级接口
export function getDictItemsChild(id) {
export function getDictItemsChild (id) {
return request({
url: `${api.baseData}/dict/${id}`,
method: 'get'
})
}
// 获取传入字段的所有级别字典值
export function getAllDictItems(name) {
export function getAllDictItems (name) {
return request({
url: `${api.baseDataCategory}/${name}/base-datas`,
method: 'get'
})
}
// get公共方法
export function getAction(url, params = {}) {
export function getAction (url, params = {}) {
return request({
url,
method: 'get',
......@@ -113,7 +113,7 @@ export function getAction(url, params = {}) {
})
}
// post公共方法
export function postAction(url, data = null) {
export function postAction (url, data = null) {
return request({
url,
method: 'post',
......@@ -121,7 +121,7 @@ export function postAction(url, data = null) {
})
}
// method= {post | put}
export function httpAction(url, data, method) {
export function httpAction (url, data, method) {
return request({
url,
method,
......@@ -129,7 +129,7 @@ export function httpAction(url, data, method) {
})
}
// put公共方法
export function putAction(url, data = null) {
export function putAction (url, data = null) {
return request({
url,
method: 'put',
......@@ -137,7 +137,7 @@ export function putAction(url, data = null) {
})
}
// delete
export function deleteAction(url, data = null) {
export function deleteAction (url, data = null) {
return request({
url,
method: 'delete',
......@@ -146,7 +146,7 @@ export function deleteAction(url, data = null) {
}
// 批量删除
export function deleteBranch(url, data) {
export function deleteBranch (url, data) {
return request({
url,
method: 'delete',
......
import {
api,
getAction,
deleteAction,
putAction
} from './manageApi'
export const updateUserPassword = (data) => {
return putAction(`${api.users}/update-password`, data)
}
// 根据条件获取用户
export const getUserList = (params) => {
return getAction(api.users, params)
}
// 重置用户密码
// export const resetPassword = id => {
// return putAction(`${api.users}/${id}/reset-password`)
// }
// 重置用户密码
export const resetPassword = (ids) => {
return putAction(`${api.users}/reset-passwords?ids=${ids}`)
}
// 人员列表
export const getUserRoles = (id) => {
return getAction(`${api.userRoles}/${id}/users`)
}
// 更新人员
export const updateUser = (id, data) => {
return putAction(`${api.userRoles}/${id}/users`, data)
}
/*
* @Description: 登薄日志
* @Autor: renchao
* @LastEditTime: 2023-03-02 13:45:53
*/
/* 引入请求文件 */
import request from '@/utils/request'
/* 引入配置文件 */
import SERVER from './config'
// 登簿日志分页
const urlHeader = SERVER.SERVERAPI + '/rest/sjsb/RecordLog/'
/**
* @description: 登簿日志分页
* @author: renchao
*/
export function getRecordLogPage (data) {
return request({
url: SERVER.SERVERAPI + '/rest/sjsb/RecordLog/getRecordLogPage',
url: urlHeader + 'getRecordLogPage',
method: 'post',
data
})
}
/**
* @description: 获取详情明细
* @param {*} dbBsm
* @author: renchao
*/
export function getDetail (dbBsm) {
return request({
url: urlHeader + 'getDetail',
method: 'get',
params: {
dbBsm: dbBsm
}
})
}
/**
* @description: 详情页面编辑
* @param {*} data
* @author: renchao
*/
export function edit (data) {
return request({
url: urlHeader + 'edit',
method: 'post',
data
})
}
/**
* @description: 登薄日志重新生成报文
* @param {*} dbBsm
* @author: renchao
*/
export function regenerateDbXml (dbBsm) {
return request({
url: urlHeader + 'regenerateDbXml',
method: 'get',
params: {
dbBsm: dbBsm
}
})
}
......
/*
* @Author: yangwei
* @Date: 2023-03-09 09:29:52
* @LastEditors: yangwei
* @LastEditTime: 2023-03-09 10:31:31
* @FilePath: \bdcjg-web\src\api\statistics.js
* @Description:
*
* Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
*/
import request from '@/utils/request'
import SERVER from './config'
const url = SERVER.SERVERAPI + '/rest/statistics/Efficient/'
/**
* dataReceiveQuality
* @param startDate
* @param endDate
* @returns {AxiosPromise}
*/
export function dataReceiveQuality (startDate, endDate) {
return request({
url: url + 'dataReceiveQuality?startDate='+startDate+'&endDate='+endDate,
method: 'post'
})
}
/**
* 空项率统计
* @returns {AxiosPromise}
* @param startDate
* @param endDate
*/
export function nonNullSta (startDate, endDate) {
return request({
url: url + 'nonNullSta?startDate='+startDate+'&endDate='+endDate,
method: 'post'
})
}
/**
* 登簿质量统计
* @returns {AxiosPromise}
* @param startDate
* @param endDate
*/
export function registerBookQuality (startDate, endDate) {
return request({
url: url + 'registerBookQuality?startDate='+startDate+'&endDate='+endDate,
method: 'post'
})
}
......@@ -8,10 +8,21 @@ export function getUserInfo () {
})
}
// // 获取菜单信息
// export function getMenuInfo () {
// return request({
// url: SERVER.SERVERAPI + '/rest/user/getUserAuthorizationMenus',
// method: 'get',
// })
// }
// 获取菜单信息
export function getMenuInfo () {
export function getMenuInfo (data) {
return request({
url: SERVER.SERVERAPI + '/rest/user/getUserAuthorizationMenus',
method: 'get',
params: {
productCode: data,
},
})
}
\ No newline at end of file
}
......
......@@ -4,8 +4,7 @@
<script>
import tdTheme from "./theme.json"; // 引入默认主题
import "../map/hanzhong.js";
import { mapGetters } from "vuex";
export default {
name: "echart",
props: {
......@@ -30,14 +29,14 @@ export default {
default: () => ({}),
},
},
data() {
data () {
return {
chart: null,
};
},
watch: {
options: {
handler(options) {
handler (options) {
// 设置true清空echart缓存
this.chart.setOption(options, true);
window.addEventListener("resize", () => {
......@@ -46,22 +45,33 @@ export default {
}
});
},
deep: true,
deep: true
},
},
computed: {
...mapGetters(["dicData"]),
logoName () {
return (
this.dicData["sysCode"] &&
this.dicData["sysCode"].filter((item) => item.DCODE == "areaMap")
);
},
},
mounted() {
mounted () {
this.$echarts.registerTheme("tdTheme", tdTheme); // 覆盖默认主题
this.initChart();
this.$nextTick(() => {
this.initChart();
})
},
beforeDestroy() {
this.chart.dispose();
beforeDestroy () {
// this.chart.dispose();
this.chart = null;
},
methods: {
initChart() {
initChart () {
// 初始化echart
this.chart = this.$echarts.init(this.$el, "tdTheme");
function nowSize(val, initWidth = 1920) {
function nowSize (val, initWidth = 1920) {
return val * (nowClientWidth / initWidth);
}
this.chart.setOption(this.options, true);
......
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'echarts'], factory);
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('echarts'));
} else {
// Browser globals
factory({}, root.echarts);
}
}(this, function(exports, echarts) {
var log = function(msg) {
if (typeof console !== 'undefined') {
console && console.error && console.error(msg);
}
}
if (!echarts) {
log('ECharts is not Loaded');
return;
}
if (!echarts.registerMap) {
log('ECharts Map is not loaded')
return;
}
echarts.registerMap('汉中市', {"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":632701,"name":"玉树市","center":[97.008762,33.00393],"centroid":[96.660011,32.914187],"childrenNum":0,"level":"district","parent":{"adcode":632700},"subFeatureIndex":0,"acroutes":[100000,630000,632700]},"geometry":{"type":"MultiPolygon","coordinates":[[[[96.999029,32.065147],[97.006631,32.067779],[97.016239,32.056344],[97.028771,32.048832],[97.049907,32.049502],[97.057343,32.045722],[97.077895,32.048449],[97.095105,32.038735],[97.105548,32.037587],[97.114487,32.042659],[97.130695,32.043856],[97.153001,32.036821],[97.169459,32.024234],[97.170378,32.034189],[97.187505,32.054526],[97.201039,32.052516],[97.21332,32.042946],[97.231867,32.044813],[97.236462,32.0551],[97.232953,32.065052],[97.211733,32.078972],[97.202042,32.090308],[97.204297,32.097674],[97.212234,32.096861],[97.219753,32.109103],[97.232452,32.104178],[97.233872,32.094422],[97.240723,32.084712],[97.249495,32.083756],[97.256095,32.072849],[97.276062,32.071319],[97.29511,32.074954],[97.307893,32.073902],[97.293272,32.096717],[97.303799,32.118284],[97.313741,32.128993],[97.306723,32.132818],[97.288928,32.13234],[97.271384,32.141183],[97.275895,32.156096],[97.269211,32.162405],[97.264199,32.18257],[97.27673,32.208511],[97.276146,32.218589],[97.282328,32.236641],[97.28166,32.243994],[97.290849,32.271302],[97.28993,32.280609],[97.298368,32.294449],[97.319171,32.302848],[97.344318,32.296931],[97.342229,32.279941],[97.352589,32.283855],[97.367042,32.273784],[97.389683,32.282948],[97.396951,32.292111],[97.412824,32.294736],[97.417921,32.300891],[97.414662,32.316208],[97.424688,32.323411],[97.413075,32.327466],[97.41625,32.360233],[97.412574,32.376826],[97.40188,32.392701],[97.399791,32.402521],[97.389098,32.411958],[97.391353,32.422728],[97.386508,32.428065],[97.368629,32.435117],[97.349414,32.432735],[97.341728,32.442692],[97.346908,32.448981],[97.35025,32.464558],[97.366875,32.473464],[97.375814,32.482037],[97.388513,32.501464],[97.37431,32.503607],[97.369548,32.509987],[97.351252,32.51708],[97.334543,32.514509],[97.328444,32.517794],[97.33329,32.524982],[97.331118,32.537071],[97.341143,32.556677],[97.357685,32.563624],[97.361277,32.554346],[97.374728,32.546256],[97.387343,32.549254],[97.396784,32.55858],[97.411738,32.563434],[97.411905,32.575042],[97.448247,32.58722],[97.464455,32.570998],[97.463452,32.555725],[97.473227,32.544448],[97.485424,32.542116],[97.503637,32.530979],[97.50723,32.533549],[97.521098,32.525838],[97.531792,32.525505],[97.54023,32.536547],[97.554014,32.53155],[97.566295,32.532264],[97.578493,32.522792],[97.591693,32.531074],[97.604392,32.523506],[97.613498,32.524268],[97.620599,32.51927],[97.630207,32.52441],[97.66964,32.517223],[97.684344,32.530455],[97.703392,32.523363],[97.726367,32.524458],[97.731045,32.527314],[97.705564,32.532883],[97.693868,32.544686],[97.675154,32.547684],[97.665212,32.557819],[97.646832,32.567335],[97.63923,32.575994],[97.630708,32.575518],[97.617007,32.586554],[97.610574,32.595972],[97.606313,32.61528],[97.599045,32.616278],[97.58902,32.60924],[97.584007,32.61528],[97.560614,32.621509],[97.543738,32.621699],[97.540062,32.631873],[97.530121,32.639385],[97.524523,32.633585],[97.513245,32.648845],[97.500964,32.646563],[97.482918,32.654216],[97.480829,32.664054],[97.471305,32.664006],[97.464872,32.673749],[97.443569,32.690332],[97.442483,32.696888],[97.429283,32.699073],[97.423852,32.704964],[97.429366,32.712042],[97.424771,32.727763],[97.401796,32.754592],[97.385839,32.780226],[97.382331,32.792613],[97.380158,32.826301],[97.393108,32.82872],[97.392439,32.842191],[97.382832,32.855329],[97.387093,32.866472],[97.372723,32.87349],[97.376148,32.886054],[97.354343,32.887476],[97.348077,32.895819],[97.350082,32.903924],[97.330366,32.904778],[97.325437,32.918522],[97.3175,32.920085],[97.312153,32.913688],[97.294358,32.919185],[97.282328,32.915394],[97.277399,32.923403],[97.26612,32.922597],[97.255343,32.926577],[97.248576,32.962772],[97.243647,32.977455],[97.249411,32.988583],[97.247573,33.005581],[97.229361,33.014008],[97.221424,33.022907],[97.207222,33.023853],[97.201373,33.036727],[97.176394,33.045671],[97.177814,33.057879],[97.16428,33.087635],[97.151832,33.103526],[97.138464,33.113362],[97.123343,33.1353],[97.078647,33.152695],[97.069791,33.165549],[97.052748,33.171551],[97.038378,33.193379],[97.022254,33.204669],[97.024092,33.215958],[97.019664,33.226537],[97.025011,33.237067],[97.01156,33.247596],[97.012479,33.258879],[97.019748,33.269453],[97.018829,33.286019],[97.034117,33.289794],[97.035955,33.295834],[97.018912,33.312395],[97.001786,33.306309],[96.997358,33.315367],[97.008135,33.324425],[97.00095,33.333434],[96.986581,33.334189],[96.983824,33.319849],[96.974801,33.319094],[96.970373,33.335651],[96.978477,33.343197],[96.974884,33.349233],[96.963188,33.342442],[96.949654,33.345413],[96.953246,33.331123],[96.945143,33.325085],[96.91916,33.32433],[96.903872,33.318292],[96.885993,33.322113],[96.860846,33.330415],[96.844806,33.321406],[96.834029,33.329708],[96.83311,33.309376],[96.826927,33.307158],[96.821497,33.319189],[96.813477,33.322962],[96.808965,33.336547],[96.798272,33.345602],[96.799107,33.350884],[96.812558,33.356118],[96.800945,33.365925],[96.800026,33.383274],[96.788413,33.377995],[96.782983,33.354656],[96.769616,33.349375],[96.770451,33.367481],[96.766859,33.376486],[96.772206,33.3878],[96.770451,33.398358],[96.764185,33.397604],[96.758755,33.3878],[96.746223,33.394587],[96.75792,33.398358],[96.754327,33.406605],[96.739958,33.403589],[96.730016,33.409621],[96.731854,33.393786],[96.725588,33.393032],[96.718403,33.406605],[96.70938,33.413344],[96.696765,33.428375],[96.714727,33.427668],[96.716565,33.437468],[96.712889,33.445711],[96.693173,33.450186],[96.699439,33.466011],[96.697601,33.4743],[96.687659,33.481834],[96.676882,33.502878],[96.695763,33.515729],[96.70654,33.532295],[96.70019,33.542835],[96.684902,33.548058],[96.658752,33.542741],[96.648894,33.536671],[96.64079,33.53893],[96.633522,33.550928],[96.622745,33.544859],[96.618233,33.553892],[96.626254,33.572756],[96.619069,33.581034],[96.562342,33.608778],[96.561423,33.60779],[96.553403,33.598998],[96.538114,33.6163],[96.496008,33.610329],[96.467269,33.617852],[96.465514,33.621612],[96.480719,33.629886],[96.484228,33.63891],[96.451813,33.664522],[96.449975,33.679603],[96.440952,33.685569],[96.413132,33.687025],[96.399681,33.68322],[96.405028,33.693037],[96.388737,33.696748],[96.386063,33.704263],[96.400433,33.713373],[96.41639,33.748022],[96.40202,33.747975],[96.393917,33.754735],[96.37161,33.761775],[96.374868,33.749853],[96.364342,33.727929],[96.348886,33.703605],[96.335185,33.685992],[96.328334,33.682233],[96.321734,33.671099],[96.304273,33.66095],[96.288149,33.645584],[96.262752,33.650472],[96.252309,33.649626],[96.238023,33.638393],[96.223987,33.615971],[96.217805,33.610847],[96.183802,33.595424],[96.186392,33.571486],[96.199759,33.561043],[96.188063,33.550034],[96.20143,33.540059],[96.213962,33.522083],[96.231005,33.506691],[96.233344,33.49916],[96.224071,33.496288],[96.21204,33.500289],[96.202099,33.4977],[96.182883,33.507115],[96.160326,33.51201],[96.148547,33.526365],[96.135347,33.531213],[96.117217,33.542882],[96.096749,33.525707],[96.091653,33.518741],[96.079539,33.512246],[96.074443,33.514646],[96.054643,33.50189],[96.038352,33.495723],[96.019721,33.499301],[96.011534,33.50382],[96.005936,33.498359],[96.010281,33.487201],[96.021476,33.470721],[96.033255,33.447313],[96.032086,33.4402],[96.021392,33.439776],[96.004934,33.448161],[95.988559,33.451175],[95.955643,33.446135],[95.933503,33.448302],[95.928324,33.443969],[95.937096,33.424511],[95.931665,33.412873],[95.916711,33.393456],[95.908022,33.389402],[95.891982,33.396142],[95.872934,33.39897],[95.865248,33.395483],[95.849959,33.403259],[95.842022,33.403165],[95.828404,33.409951],[95.817293,33.41947],[95.805597,33.43629],[95.789974,33.441283],[95.771678,33.441425],[95.756473,33.437892],[95.735587,33.447596],[95.710106,33.450657],[95.703589,33.446936],[95.703171,33.428092],[95.687381,33.41947],[95.685376,33.404296],[95.699412,33.399159],[95.708769,33.391618],[95.724141,33.352487],[95.736506,33.347535],[95.743356,33.340226],[95.744025,33.327396],[95.77009,33.3165],[95.773098,33.311027],[95.765579,33.302016],[95.742688,33.296825],[95.751627,33.276486],[95.758979,33.273323],[95.788052,33.28399],[95.798161,33.276958],[95.801002,33.265016],[95.799247,33.245283],[95.81487,33.229276],[95.838597,33.223609],[95.849374,33.203441],[95.864997,33.191206],[95.860235,33.177552],[95.878531,33.153451],[95.898331,33.134685],[95.898832,33.13043],[95.911698,33.125183],[95.926569,33.110336],[95.941774,33.108634],[95.946369,33.103905],[95.948625,33.089007],[95.960822,33.080351],[95.961407,33.07387],[95.952301,33.066112],[95.967924,33.030196],[95.942944,33.008185],[95.934172,33.005676],[95.925149,33.009463],[95.900169,33.008185],[95.892399,33.00293],[95.910946,32.979633],[95.910027,32.970872],[95.915291,32.965567],[95.909443,32.952351],[95.931582,32.93468],[95.944615,32.934585],[95.957564,32.929468],[95.964331,32.934017],[95.977698,32.926246],[96.016212,32.920844],[96.021309,32.922455],[96.04303,32.914019],[96.045536,32.910133],[96.031584,32.902976],[96.048962,32.885011],[96.047876,32.879416],[96.037683,32.878611],[96.019721,32.863011],[96.022395,32.857463],[96.012954,32.854617],[96.033422,32.84978],[96.039103,32.843045],[96.03359,32.819279],[96.033088,32.804097],[96.02064,32.794701],[96.021643,32.781222],[96.027324,32.777283],[96.012035,32.760858],[96.032253,32.756823],[96.040774,32.749939],[96.040607,32.740775],[96.054726,32.727193],[96.067174,32.724248],[96.069179,32.716364],[96.080959,32.707387],[96.089731,32.706152],[96.104017,32.712327],[96.106942,32.722254],[96.151888,32.759482],[96.167261,32.751078],[96.174445,32.737688],[96.166425,32.73009],[96.175114,32.714844],[96.194496,32.692755],[96.191656,32.678691],[96.181881,32.65721],[96.18798,32.652219],[96.176952,32.62013],[96.178706,32.613996],[96.193159,32.609811],[96.211038,32.611238],[96.229083,32.616516],[96.259327,32.61585],[96.274532,32.607861],[96.281382,32.597066],[96.290071,32.59269],[96.291157,32.579752],[96.301684,32.562815],[96.309453,32.557914],[96.308033,32.550063],[96.315552,32.546351],[96.333514,32.527076],[96.352228,32.517889],[96.351393,32.509177],[96.366013,32.497036],[96.368268,32.488894],[96.385061,32.470273],[96.394669,32.470464],[96.408286,32.463367],[96.4138,32.453269],[96.427836,32.439691],[96.441203,32.433306],[96.442372,32.423824],[96.452231,32.425063],[96.463342,32.438547],[96.477461,32.443074],[96.483727,32.449505],[96.504195,32.454888],[96.516643,32.462891],[96.535775,32.454793],[96.547388,32.438833],[96.559167,32.432973],[96.571281,32.420393],[96.577714,32.403855],[96.58799,32.401853],[96.586904,32.389221],[96.608626,32.378828],[96.619403,32.38741],[96.635193,32.382166],[96.650147,32.390985],[96.684401,32.378733],[96.688912,32.373584],[96.700859,32.375062],[96.717651,32.369483],[96.717985,32.380449],[96.693423,32.408907],[96.698436,32.42268],[96.692588,32.435069],[96.702112,32.444217],[96.723917,32.44355],[96.733525,32.428684],[96.740208,32.440358],[96.734861,32.446123],[96.751236,32.457365],[96.760426,32.474036],[96.771203,32.464748],[96.789834,32.439214],[96.800861,32.441978],[96.804203,32.450791],[96.824003,32.460033],[96.839375,32.459937],[96.851322,32.438738],[96.854246,32.406715],[96.87296,32.381641],[96.892426,32.372869],[96.897522,32.36667],[96.88733,32.355178],[96.87672,32.355321],[96.867279,32.349312],[96.878391,32.342206],[96.877221,32.335337],[96.884657,32.327896],[96.894431,32.325224],[96.894097,32.315826],[96.900948,32.311532],[96.90855,32.292111],[96.922586,32.281898],[96.916153,32.272447],[96.926178,32.263855],[96.91231,32.259606],[96.908801,32.25383],[96.915819,32.232725],[96.910305,32.219114],[96.895517,32.204737],[96.912143,32.18515],[96.928684,32.17913],[96.939963,32.179225],[96.957257,32.173061],[96.960933,32.16618],[96.980148,32.168856],[96.982236,32.175976],[96.996606,32.188112],[96.996439,32.200151],[97.011143,32.225657],[97.015654,32.227759],[97.02852,32.218446],[97.048654,32.217443],[97.05634,32.20703],[97.091429,32.206552],[97.112566,32.203161],[97.118163,32.177219],[97.114487,32.154519],[97.097528,32.149835],[97.078312,32.135734],[97.063358,32.139128],[97.054753,32.135112],[97.030274,32.133774],[97.038211,32.126651],[97.033616,32.118523],[97.038128,32.099395],[97.030943,32.096908],[97.029105,32.088347],[97.018912,32.078159],[97.021335,32.074859],[97.001034,32.073758],[96.999029,32.065147]]]]}},{"type":"Feature","properties":{"adcode":632722,"name":"杂多县","center":[95.293423,32.891886],"centroid":[94.28247,33.060889],"childrenNum":0,"level":"district","parent":{"adcode":632700},"subFeatureIndex":1,"acroutes":[100000,630000,632700]},"geometry":{"type":"MultiPolygon","coordinates":[[[[95.742688,33.296825],[95.711275,33.326925],[95.700581,33.332585],[95.690974,33.332255],[95.68287,33.326453],[95.671257,33.310272],[95.660564,33.308385],[95.648784,33.311923],[95.639928,33.319896],[95.633161,33.320274],[95.613862,33.30612],[95.592308,33.308479],[95.577938,33.29692],[95.560227,33.297958],[95.557303,33.319991],[95.526224,33.344612],[95.51152,33.347488],[95.495814,33.340084],[95.487125,33.340273],[95.466406,33.363096],[95.42806,33.38351],[95.408677,33.38153],[95.39389,33.386904],[95.379353,33.405333],[95.337163,33.428281],[95.31352,33.436997],[95.306419,33.433934],[95.302075,33.410658],[95.296644,33.409009],[95.283361,33.417349],[95.27392,33.427574],[95.257713,33.430636],[95.213434,33.433887],[95.207502,33.446418],[95.179431,33.515964],[95.162221,33.533236],[95.151528,33.550363],[95.147434,33.567534],[95.134067,33.584185],[95.122788,33.585925],[95.101902,33.575343],[95.091125,33.563301],[95.094216,33.546317],[95.086029,33.539118],[95.07191,33.53413],[95.048267,33.534271],[95.034148,33.527401],[95.020279,33.532954],[94.992292,33.566029],[94.980345,33.570921],[94.96397,33.564006],[94.941163,33.563912],[94.927796,33.574731],[94.915932,33.579858],[94.903568,33.58014],[94.88452,33.575296],[94.872322,33.56871],[94.863049,33.569322],[94.854109,33.577459],[94.826206,33.567252],[94.819104,33.566923],[94.812671,33.573979],[94.807408,33.591803],[94.810332,33.606991],[94.825287,33.639568],[94.82679,33.648498],[94.822363,33.663159],[94.813423,33.672227],[94.769061,33.685005],[94.74617,33.69501],[94.715175,33.719102],[94.706737,33.74192],[94.709995,33.75342],[94.70657,33.762103],[94.688942,33.763418],[94.682342,33.774774],[94.667388,33.790118],[94.617762,33.810665],[94.590443,33.815965],[94.545079,33.82014],[94.535304,33.803254],[94.527033,33.794856],[94.518846,33.793167],[94.49679,33.803441],[94.479747,33.806397],[94.470306,33.792135],[94.458025,33.780921],[94.432711,33.777965],[94.411073,33.78308],[94.390521,33.774117],[94.383253,33.766327],[94.358273,33.753937],[94.355433,33.746192],[94.359276,33.736286],[94.355934,33.724737],[94.346744,33.728164],[94.318339,33.717787],[94.317671,33.703511],[94.309901,33.700224],[94.294195,33.700975],[94.288096,33.692051],[94.273643,33.681952],[94.25259,33.67514],[94.240392,33.678287],[94.231453,33.67575],[94.20923,33.679838],[94.196698,33.672885],[94.183582,33.670113],[94.159605,33.672462],[94.148577,33.678099],[94.136714,33.677301],[94.116663,33.681059],[94.10764,33.689749],[94.073888,33.686085],[94.06027,33.676596],[94.044731,33.678006],[94.035207,33.659353],[94.016326,33.658084],[94.003293,33.648122],[93.990845,33.63139],[93.979065,33.62777],[93.974554,33.618322],[93.961103,33.614796],[93.946483,33.597493],[93.930693,33.594766],[93.920751,33.602807],[93.906131,33.605581],[93.888085,33.627112],[93.864025,33.636748],[93.855002,33.645443],[93.836371,33.649767],[93.82008,33.664803],[93.804959,33.66875],[93.792845,33.667247],[93.784073,33.685099],[93.747647,33.703089],[93.73428,33.71774],[93.726343,33.704967],[93.723837,33.691769],[93.715232,33.690078],[93.6763,33.670583],[93.660176,33.66922],[93.653493,33.662595],[93.640961,33.664522],[93.614227,33.654607],[93.598103,33.651881],[93.586908,33.653291],[93.548979,33.66532],[93.521827,33.668656],[93.509713,33.68073],[93.497849,33.683549],[93.475042,33.66875],[93.439452,33.656017],[93.417647,33.639427],[93.407204,33.639991],[93.391832,33.634586],[93.37813,33.634445],[93.368021,33.647276],[93.359918,33.651881],[93.341204,33.644926],[93.328338,33.643422],[93.314052,33.635667],[93.294335,33.63468],[93.282973,33.643798],[93.259581,33.653479],[93.248219,33.648592],[93.234016,33.63327],[93.210791,33.637735],[93.202102,33.642811],[93.175953,33.646947],[93.155735,33.652868],[93.142786,33.662407],[93.118975,33.668656],[93.098674,33.662172],[93.086978,33.664803],[93.059241,33.657802],[93.03518,33.660997],[93.024988,33.668233],[93.008279,33.659447],[92.992823,33.65987],[92.979456,33.664287],[92.945955,33.655876],[92.915962,33.66236],[92.90836,33.661185],[92.877866,33.666965],[92.850965,33.656768],[92.839603,33.647041],[92.83434,33.633223],[92.822727,33.620296],[92.812952,33.615407],[92.808942,33.600926],[92.815041,33.593731],[92.807522,33.570827],[92.818967,33.555209],[92.841357,33.543306],[92.851967,33.534177],[92.855978,33.512716],[92.848876,33.499207],[92.825735,33.485883],[92.815459,33.47736],[92.793904,33.469402],[92.760236,33.474017],[92.744529,33.46149],[92.734337,33.458193],[92.698162,33.472981],[92.687385,33.465446],[92.682456,33.442932],[92.669423,33.432474],[92.657225,33.40915],[92.660985,33.390204],[92.673099,33.383274],[92.655638,33.382002],[92.620382,33.367576],[92.599162,33.35211],[92.610691,33.319],[92.609689,33.311593],[92.598494,33.303573],[92.6208,33.283518],[92.633165,33.284886],[92.679031,33.266999],[92.71178,33.247785],[92.7198,33.240089],[92.721053,33.232109],[92.710276,33.217942],[92.711863,33.191348],[92.70919,33.183222],[92.700585,33.182371],[92.670593,33.147259],[92.673517,33.132983],[92.707603,33.111565],[92.718129,33.101635],[92.731914,33.061097],[92.729826,33.038242],[92.721555,33.030385],[92.703258,33.023475],[92.692231,33.00738],[92.689557,32.997911],[92.696993,32.982995],[92.674603,32.952636],[92.656557,32.940839],[92.649706,32.923592],[92.648955,32.902692],[92.643357,32.895582],[92.627149,32.885627],[92.608352,32.879037],[92.596322,32.869934],[92.594734,32.821414],[92.587382,32.785114],[92.586714,32.769261],[92.581451,32.754829],[92.560899,32.731847],[92.571091,32.733367],[92.578109,32.741107],[92.591643,32.737213],[92.600081,32.743624],[92.605762,32.730612],[92.613281,32.728095],[92.624476,32.732559],[92.634585,32.721019],[92.649539,32.721541],[92.667836,32.731895],[92.68797,32.766033],[92.697076,32.764893],[92.710777,32.754544],[92.723142,32.749939],[92.73442,32.750936],[92.745532,32.741724],[92.756393,32.743149],[92.77661,32.724201],[92.789393,32.720069],[92.795324,32.726101],[92.810529,32.730802],[92.822727,32.729757],[92.839018,32.717219],[92.855226,32.710522],[92.866755,32.698171],[92.877031,32.696983],[92.879119,32.710807],[92.888643,32.707909],[92.900006,32.712802],[92.913874,32.704584],[92.918887,32.711899],[92.930416,32.710522],[92.938352,32.720069],[92.950717,32.714797],[92.964502,32.714607],[92.983383,32.721921],[92.98497,32.728998],[93.001178,32.741107],[93.008196,32.741962],[93.020978,32.734506],[93.026742,32.710332],[93.023735,32.703064],[93.047545,32.693942],[93.041613,32.674366],[93.048631,32.670089],[93.048715,32.653978],[93.056902,32.651174],[93.060912,32.631636],[93.065591,32.627167],[93.077036,32.627309],[93.088231,32.636723],[93.107446,32.637246],[93.117221,32.647419],[93.131089,32.64219],[93.159662,32.644804],[93.164507,32.664814],[93.175368,32.67047],[93.195001,32.665052],[93.210457,32.655309],[93.228084,32.654596],[93.239112,32.662058],[93.252981,32.655214],[93.249221,32.644994],[93.262755,32.625217],[93.284477,32.624932],[93.288069,32.620082],[93.30294,32.617895],[93.30411,32.606672],[93.313383,32.602963],[93.313801,32.590216],[93.308454,32.580418],[93.338447,32.571189],[93.364847,32.549635],[93.37554,32.538308],[93.376459,32.530884],[93.385566,32.525172],[93.396426,32.542258],[93.409376,32.544733],[93.412216,32.557867],[93.435776,32.557343],[93.446971,32.562006],[93.462928,32.556011],[93.465685,32.540545],[93.475376,32.528171],[93.47713,32.50394],[93.488242,32.498846],[93.501692,32.503417],[93.516396,32.475941],[93.53227,32.475227],[93.534358,32.48637],[93.554994,32.485989],[93.563849,32.492465],[93.563933,32.500084],[93.572455,32.501226],[93.620409,32.523982],[93.630434,32.542021],[93.625756,32.551157],[93.638622,32.551586],[93.654662,32.573187],[93.669867,32.57547],[93.678639,32.568049],[93.698189,32.575851],[93.721999,32.578134],[93.741716,32.57371],[93.751657,32.563053],[93.762936,32.56862],[93.780647,32.557058],[93.792761,32.558533],[93.82267,32.547541],[93.829771,32.529551],[93.827766,32.520983],[93.838544,32.513319],[93.850407,32.510891],[93.850741,32.495513],[93.85968,32.486323],[93.855754,32.474131],[93.858678,32.464701],[93.868619,32.473941],[93.898027,32.472655],[93.913232,32.462033],[93.913566,32.468464],[93.929022,32.476655],[93.959934,32.484942],[93.971797,32.471702],[93.975306,32.460414],[93.996275,32.463272],[93.998448,32.455889],[94.011146,32.44617],[94.031865,32.449172],[94.029359,32.459556],[94.040554,32.459414],[94.052751,32.470654],[94.067205,32.470178],[94.07063,32.466082],[94.090931,32.463986],[94.102293,32.447742],[94.121508,32.442073],[94.137633,32.433878],[94.148159,32.440834],[94.153088,32.454507],[94.180741,32.455889],[94.187926,32.470131],[94.177734,32.483132],[94.182245,32.499131],[94.196782,32.516175],[94.229281,32.509939],[94.244736,32.516985],[94.257352,32.512319],[94.293359,32.503845],[94.294195,32.519793],[94.317504,32.531788],[94.321347,32.526648],[94.353511,32.532883],[94.35677,32.520983],[94.37139,32.524839],[94.373729,32.535262],[94.379159,32.53769],[94.38342,32.549492],[94.376987,32.562197],[94.38743,32.577468],[94.3952,32.594212],[94.393111,32.603486],[94.404891,32.59873],[94.407648,32.583319],[94.428534,32.571569],[94.434215,32.563148],[94.463456,32.572473],[94.46379,32.594973],[94.459028,32.599444],[94.469722,32.608242],[94.479246,32.607291],[94.485762,32.594783],[94.497542,32.601869],[94.508904,32.603771],[94.513081,32.596305],[94.535387,32.598207],[94.554519,32.610762],[94.565631,32.627452],[94.596876,32.630019],[94.59178,32.640621],[94.60122,32.650651],[94.60122,32.663341],[94.614588,32.673606],[94.633719,32.655689],[94.638481,32.645517],[94.66037,32.628878],[94.677914,32.618323],[94.690195,32.614519],[94.687522,32.604295],[94.703646,32.598255],[94.717264,32.604104],[94.723279,32.594497],[94.737565,32.58741],[94.738735,32.573853],[94.744583,32.570047],[94.745335,32.560579],[94.761709,32.555059],[94.772069,32.555297],[94.757866,32.546256],[94.755778,32.54026],[94.760874,32.52679],[94.78577,32.52441],[94.794459,32.513986],[94.795378,32.498893],[94.806823,32.486323],[94.812671,32.487989],[94.827626,32.478656],[94.842079,32.475893],[94.850768,32.464605],[94.859623,32.464891],[94.88995,32.472321],[94.904069,32.451554],[94.912507,32.415675],[94.922449,32.409908],[94.938406,32.408431],[94.941748,32.40376],[94.957036,32.411719],[94.968064,32.407096],[94.980094,32.409193],[94.993462,32.420965],[95.019778,32.408192],[95.027046,32.412005],[95.033646,32.402807],[95.057289,32.394417],[95.059629,32.388316],[95.0745,32.376206],[95.081183,32.384311],[95.090624,32.38803],[95.107834,32.384216],[95.131644,32.386933],[95.131226,32.398898],[95.14075,32.397182],[95.154702,32.401615],[95.152864,32.387315],[95.165062,32.384549],[95.172831,32.393512],[95.185781,32.393702],[95.191211,32.386981],[95.207252,32.388077],[95.21853,32.396896],[95.222707,32.380449],[95.229475,32.373489],[95.229057,32.362998],[95.241087,32.364286],[95.261723,32.348072],[95.246183,32.342778],[95.226634,32.344829],[95.217611,32.339201],[95.206082,32.338104],[95.19355,32.332284],[95.177928,32.333715],[95.150358,32.331712],[95.136072,32.323888],[95.096806,32.322219],[95.095803,32.313583],[95.08135,32.298076],[95.079512,32.280609],[95.106581,32.258843],[95.120366,32.265048],[95.132145,32.263998],[95.138578,32.273879],[95.161636,32.280371],[95.178596,32.282327],[95.191796,32.293256],[95.207419,32.297694],[95.208338,32.308812],[95.214604,32.311055],[95.21452,32.321455],[95.225799,32.318593],[95.241254,32.320358],[95.240753,32.30175],[95.246434,32.293543],[95.2395,32.2871],[95.247353,32.27617],[95.256543,32.254164],[95.253619,32.25044],[95.256042,32.235638],[95.263895,32.211854],[95.277847,32.207078],[95.280854,32.200868],[95.26991,32.19461],[95.280938,32.182761],[95.285616,32.172631],[95.301991,32.163552],[95.307923,32.164077],[95.313102,32.148736],[95.323629,32.152368],[95.331065,32.148927],[95.343596,32.154806],[95.353705,32.145963],[95.366905,32.151173],[95.360472,32.163934],[95.365318,32.176693],[95.389044,32.186106],[95.398151,32.17913],[95.407925,32.179799],[95.41653,32.172918],[95.43349,32.187826],[95.419037,32.202158],[95.417617,32.20832],[95.428561,32.217156],[95.431318,32.231149],[95.403665,32.243326],[95.400824,32.254498],[95.40826,32.265144],[95.428561,32.282518],[95.438837,32.317687],[95.455128,32.351267],[95.460057,32.369865],[95.472004,32.380974],[95.487293,32.389984],[95.493558,32.399327],[95.486457,32.40457],[95.464903,32.407811],[95.436832,32.425635],[95.430984,32.432878],[95.42831,32.44941],[95.422295,32.455269],[95.430482,32.466511],[95.447024,32.473941],[95.454794,32.481275],[95.469163,32.486466],[95.513191,32.495227],[95.535498,32.50613],[95.541346,32.514414],[95.531237,32.521221],[95.514027,32.544781],[95.49005,32.561863],[95.486958,32.574947],[95.475095,32.59483],[95.46131,32.62341],[95.431568,32.64547],[95.426806,32.659919],[95.41369,32.668996],[95.420624,32.677313],[95.443432,32.691234],[95.45329,32.703254],[95.461895,32.708099],[95.472171,32.704489],[95.491303,32.688336],[95.516032,32.674699],[95.536751,32.653455],[95.544688,32.648417],[95.575348,32.638529],[95.610521,32.611713],[95.621381,32.607861],[95.642435,32.592928],[95.664741,32.585745],[95.685711,32.571712],[95.695235,32.569952],[95.701584,32.58194],[95.712946,32.587553],[95.729822,32.578943],[95.754969,32.584176],[95.763908,32.583985],[95.779949,32.569856],[95.788888,32.568953],[95.805012,32.578467],[95.840602,32.581084],[95.859817,32.571997],[95.888222,32.566146],[95.884379,32.57704],[95.874688,32.581987],[95.87026,32.593356],[95.862825,32.594022],[95.855723,32.604057],[95.848288,32.603771],[95.840351,32.614614],[95.85021,32.624219],[95.867336,32.631969],[95.874772,32.638434],[95.885298,32.633395],[95.887387,32.626073],[95.893987,32.629259],[95.902091,32.642142],[95.90468,32.654168],[95.900503,32.67199],[95.907772,32.675459],[95.934172,32.654976],[95.963078,32.641381],[95.981207,32.641286],[95.995326,32.646896],[96.004182,32.660775],[96.013372,32.684773],[96.023731,32.687719],[96.032169,32.68425],[96.041526,32.708812],[96.036096,32.713087],[96.032169,32.734791],[96.040607,32.740775],[96.040774,32.749939],[96.032253,32.756823],[96.012035,32.760858],[96.027324,32.777283],[96.021643,32.781222],[96.02064,32.794701],[96.033088,32.804097],[96.03359,32.819279],[96.039103,32.843045],[96.033422,32.84978],[96.012954,32.854617],[96.022395,32.857463],[96.019721,32.863011],[96.037683,32.878611],[96.047876,32.879416],[96.048962,32.885011],[96.031584,32.902976],[96.045536,32.910133],[96.04303,32.914019],[96.021309,32.922455],[96.016212,32.920844],[95.977698,32.926246],[95.964331,32.934017],[95.957564,32.929468],[95.944615,32.934585],[95.931582,32.93468],[95.909443,32.952351],[95.915291,32.965567],[95.910027,32.970872],[95.910946,32.979633],[95.892399,33.00293],[95.900169,33.008185],[95.925149,33.009463],[95.934172,33.005676],[95.942944,33.008185],[95.967924,33.030196],[95.952301,33.066112],[95.961407,33.07387],[95.960822,33.080351],[95.948625,33.089007],[95.946369,33.103905],[95.941774,33.108634],[95.926569,33.110336],[95.911698,33.125183],[95.898832,33.13043],[95.898331,33.134685],[95.878531,33.153451],[95.860235,33.177552],[95.864997,33.191206],[95.849374,33.203441],[95.838597,33.223609],[95.81487,33.229276],[95.799247,33.245283],[95.801002,33.265016],[95.798161,33.276958],[95.788052,33.28399],[95.758979,33.273323],[95.751627,33.276486],[95.742688,33.296825]]]]}},{"type":"Feature","properties":{"adcode":632723,"name":"称多县","center":[97.110893,33.367884],"centroid":[97.013299,33.918962],"childrenNum":0,"level":"district","parent":{"adcode":632700},"subFeatureIndex":2,"acroutes":[100000,630000,632700]},"geometry":{"type":"MultiPolygon","coordinates":[[[[97.003373,34.723952],[97.002872,34.712816],[96.993766,34.703581],[96.992429,34.685989],[97.0073,34.676565],[97.011143,34.648983],[97.018912,34.634353],[97.017325,34.626921],[96.995771,34.62037],[96.99151,34.605456],[96.995687,34.598997],[96.991259,34.587518],[96.991343,34.571343],[96.983907,34.560837],[96.983072,34.549353],[96.96912,34.536007],[96.971292,34.518333],[96.960933,34.514379],[96.950824,34.520845],[96.913479,34.514658],[96.885074,34.523636],[96.853327,34.526659],[96.836368,34.51517],[96.811889,34.515821],[96.783902,34.513356],[96.775965,34.509402],[96.76452,34.514147],[96.764185,34.527682],[96.750234,34.535774],[96.723499,34.538937],[96.718654,34.546981],[96.70019,34.555583],[96.691084,34.55112],[96.678803,34.562046],[96.667942,34.557489],[96.657082,34.558698],[96.654157,34.549771],[96.644466,34.544842],[96.63419,34.5454],[96.619236,34.556002],[96.59033,34.559767],[96.572033,34.573528],[96.561507,34.574086],[96.549393,34.58473],[96.529175,34.597603],[96.503443,34.597835],[96.485899,34.605224],[96.475456,34.615167],[96.461838,34.616654],[96.452899,34.622275],[96.451312,34.646336],[96.432263,34.653906],[96.407869,34.668719],[96.385479,34.673686],[96.3742,34.683389],[96.365177,34.699079],[96.361084,34.712537],[96.364091,34.727015],[96.351727,34.732118],[96.32683,34.747149],[96.316722,34.747474],[96.292828,34.754849],[96.285225,34.762409],[96.276871,34.748494],[96.250471,34.745711],[96.247046,34.754988],[96.23418,34.762873],[96.227413,34.761945],[96.225575,34.770432],[96.21204,34.778825],[96.212625,34.783833],[96.199425,34.790509],[96.192324,34.790045],[96.187645,34.779984],[96.172524,34.761296],[96.16584,34.758559],[96.154478,34.744412],[96.149549,34.742696],[96.140693,34.728036],[96.151053,34.685757],[96.14721,34.673083],[96.156985,34.648426],[96.155397,34.632448],[96.142782,34.605038],[96.129916,34.594071],[96.142197,34.578966],[96.137435,34.570227],[96.15498,34.56437],[96.160243,34.572087],[96.171521,34.574411],[96.186476,34.572552],[96.207111,34.577572],[96.215382,34.567299],[96.211623,34.547353],[96.228666,34.541448],[96.233762,34.536565],[96.237271,34.521217],[96.228164,34.507867],[96.215466,34.500842],[96.214881,34.494747],[96.205942,34.492095],[96.207947,34.478786],[96.200094,34.477158],[96.195415,34.467431],[96.181797,34.463428],[96.154645,34.465476],[96.152724,34.454863],[96.146207,34.449556],[96.153225,34.427627],[96.162666,34.42772],[96.164169,34.419524],[96.158572,34.411747],[96.160494,34.404388],[96.179375,34.395071],[96.193744,34.393255],[96.22499,34.37625],[96.220311,34.368654],[96.259744,34.353975],[96.270104,34.336496],[96.277205,34.340504],[96.290489,34.338826],[96.299428,34.341577],[96.317975,34.340551],[96.325494,34.328804],[96.336438,34.319852],[96.343706,34.319153],[96.367433,34.307962],[96.377458,34.292945],[96.389238,34.296769],[96.411043,34.293831],[96.416474,34.281051],[96.45457,34.259264],[96.461838,34.248718],[96.476375,34.243492],[96.47554,34.229164],[96.503527,34.209558],[96.500102,34.172667],[96.504613,34.16141],[96.511881,34.157626],[96.542375,34.157299],[96.552985,34.141088],[96.546552,34.126695],[96.548975,34.115198],[96.557998,34.104214],[96.554322,34.080932],[96.566519,34.0814],[96.574289,34.054697],[96.588909,34.050908],[96.593254,34.040197],[96.59434,34.013341],[96.605451,34.003934],[96.595175,33.98788],[96.596345,33.97922],[96.59058,33.954031],[96.607289,33.943822],[96.624165,33.909439],[96.632937,33.881605],[96.630932,33.869653],[96.619737,33.847291],[96.627006,33.82633],[96.628259,33.815543],[96.623914,33.810712],[96.594757,33.796592],[96.574373,33.780546],[96.559167,33.758161],[96.556995,33.741873],[96.56276,33.722671],[96.581975,33.695621],[96.582226,33.680026],[96.587322,33.670958],[96.584983,33.663582],[96.565433,33.649626],[96.559919,33.636466],[96.558833,33.620907],[96.561423,33.60779],[96.562342,33.608778],[96.619069,33.581034],[96.626254,33.572756],[96.618233,33.553892],[96.622745,33.544859],[96.633522,33.550928],[96.64079,33.53893],[96.648894,33.536671],[96.658752,33.542741],[96.684902,33.548058],[96.70019,33.542835],[96.70654,33.532295],[96.695763,33.515729],[96.676882,33.502878],[96.687659,33.481834],[96.697601,33.4743],[96.699439,33.466011],[96.693173,33.450186],[96.712889,33.445711],[96.716565,33.437468],[96.714727,33.427668],[96.696765,33.428375],[96.70938,33.413344],[96.718403,33.406605],[96.725588,33.393032],[96.731854,33.393786],[96.730016,33.409621],[96.739958,33.403589],[96.754327,33.406605],[96.75792,33.398358],[96.746223,33.394587],[96.758755,33.3878],[96.764185,33.397604],[96.770451,33.398358],[96.772206,33.3878],[96.766859,33.376486],[96.770451,33.367481],[96.769616,33.349375],[96.782983,33.354656],[96.788413,33.377995],[96.800026,33.383274],[96.800945,33.365925],[96.812558,33.356118],[96.799107,33.350884],[96.798272,33.345602],[96.808965,33.336547],[96.813477,33.322962],[96.821497,33.319189],[96.826927,33.307158],[96.83311,33.309376],[96.834029,33.329708],[96.844806,33.321406],[96.860846,33.330415],[96.885993,33.322113],[96.903872,33.318292],[96.91916,33.32433],[96.945143,33.325085],[96.953246,33.331123],[96.949654,33.345413],[96.963188,33.342442],[96.974884,33.349233],[96.978477,33.343197],[96.970373,33.335651],[96.974801,33.319094],[96.983824,33.319849],[96.986581,33.334189],[97.00095,33.333434],[97.008135,33.324425],[96.997358,33.315367],[97.001786,33.306309],[97.018912,33.312395],[97.035955,33.295834],[97.034117,33.289794],[97.018829,33.286019],[97.019748,33.269453],[97.012479,33.258879],[97.01156,33.247596],[97.025011,33.237067],[97.019664,33.226537],[97.024092,33.215958],[97.022254,33.204669],[97.038378,33.193379],[97.052748,33.171551],[97.069791,33.165549],[97.078647,33.152695],[97.123343,33.1353],[97.138464,33.113362],[97.151832,33.103526],[97.16428,33.087635],[97.177814,33.057879],[97.176394,33.045671],[97.201373,33.036727],[97.207222,33.023853],[97.221424,33.022907],[97.229361,33.014008],[97.247573,33.005581],[97.249411,32.988583],[97.243647,32.977455],[97.248576,32.962772],[97.255343,32.926577],[97.26612,32.922597],[97.277399,32.923403],[97.282328,32.915394],[97.294358,32.919185],[97.312153,32.913688],[97.3175,32.920085],[97.325437,32.918522],[97.330366,32.904778],[97.350082,32.903924],[97.361779,32.907005],[97.360358,32.917811],[97.369632,32.926577],[97.362029,32.941976],[97.375814,32.956709],[97.388931,32.956757],[97.410151,32.96192],[97.415414,32.968504],[97.435298,32.975371],[97.447412,32.976271],[97.46504,32.972056],[97.478824,32.980864],[97.481581,32.97807],[97.506227,32.981338],[97.523771,32.98863],[97.500128,33.011641],[97.497622,33.021818],[97.518007,33.022149],[97.526361,33.029628],[97.541399,33.034787],[97.537306,33.058211],[97.516921,33.09752],[97.501214,33.096811],[97.487764,33.106695],[97.490688,33.122535],[97.497956,33.137947],[97.486343,33.145274],[97.487931,33.168196],[97.494865,33.167723],[97.518007,33.182608],[97.529703,33.204103],[97.550506,33.204811],[97.55485,33.211566],[97.575151,33.220823],[97.577657,33.234423],[97.592863,33.245944],[97.593614,33.251373],[97.609154,33.268179],[97.605979,33.283423],[97.615336,33.30178],[97.62202,33.335981],[97.636807,33.344612],[97.650425,33.341263],[97.676073,33.341027],[97.676323,33.357533],[97.689523,33.362814],[97.702306,33.359749],[97.702306,33.36635],[97.710911,33.369273],[97.707151,33.376156],[97.716007,33.376345],[97.720017,33.386244],[97.733468,33.387187],[97.75001,33.397368],[97.748756,33.403778],[97.758782,33.403212],[97.753518,33.410187],[97.741321,33.411648],[97.723442,33.421213],[97.715673,33.421355],[97.703726,33.428987],[97.67482,33.433039],[97.672564,33.442555],[97.664961,33.44769],[97.645245,33.449009],[97.625528,33.46149],[97.610741,33.459041],[97.604559,33.451835],[97.588101,33.460124],[97.580331,33.469873],[97.568802,33.464222],[97.552594,33.465682],[97.5551,33.47397],[97.546662,33.480515],[97.542151,33.49271],[97.529035,33.500007],[97.511992,33.519447],[97.518592,33.532154],[97.517338,33.545894],[97.521265,33.554927],[97.519845,33.566076],[97.525192,33.575766],[97.510738,33.582492],[97.472809,33.58743],[97.461781,33.581598],[97.448581,33.583714],[97.437052,33.60022],[97.415748,33.605487],[97.406308,33.620014],[97.405974,33.628523],[97.415748,33.63421],[97.416166,33.639662],[97.429199,33.664522],[97.428614,33.674576],[97.435465,33.680307],[97.422432,33.709569],[97.42828,33.721544],[97.417837,33.72854],[97.4165,33.748445],[97.423267,33.754922],[97.409817,33.767641],[97.406391,33.795138],[97.400627,33.804098],[97.385756,33.807475],[97.368796,33.824126],[97.371804,33.841993],[97.398037,33.848276],[97.392523,33.861543],[97.396366,33.869653],[97.389599,33.879918],[97.39528,33.889291],[97.410736,33.88212],[97.419926,33.886807],[97.460695,33.887369],[97.468465,33.902083],[97.482751,33.896976],[97.498541,33.903864],[97.50489,33.912297],[97.517589,33.909346],[97.524941,33.902599],[97.537222,33.905738],[97.546662,33.914124],[97.559528,33.91478],[97.582921,33.921245],[97.601885,33.930052],[97.633966,33.919137],[97.642404,33.924899],[97.644409,33.943354],[97.655604,33.94888],[97.659865,33.956325],[97.661536,33.975101],[97.652764,33.998412],[97.658528,34.012217],[97.675572,34.01086],[97.687351,34.016616],[97.702306,34.036735],[97.703141,34.058158],[97.693701,34.069382],[97.694954,34.076584],[97.683341,34.080698],[97.663541,34.114451],[97.65903,34.132023],[97.637559,34.158467],[97.627701,34.19966],[97.620182,34.212265],[97.607149,34.217681],[97.588685,34.205449],[97.584007,34.195364],[97.584425,34.178412],[97.575903,34.169211],[97.567883,34.168277],[97.549419,34.172808],[97.541065,34.178319],[97.534381,34.192282],[97.526946,34.199379],[97.496285,34.205729],[97.4891,34.212592],[97.479493,34.237285],[97.476067,34.264116],[97.468465,34.27508],[97.452675,34.286742],[97.413075,34.294811],[97.404052,34.32251],[97.391437,34.336869],[97.369966,34.348195],[97.360191,34.36255],[97.338386,34.375224],[97.327358,34.371217],[97.316247,34.375923],[97.303632,34.396702],[97.317584,34.413377],[97.33705,34.416916],[97.346908,34.428605],[97.334543,34.435403],[97.339055,34.440618],[97.327358,34.448858],[97.325019,34.464498],[97.311234,34.467431],[97.302044,34.479903],[97.275227,34.48116],[97.2251,34.497213],[97.209561,34.49805],[97.191348,34.493351],[97.175642,34.484789],[97.163695,34.497027],[97.146151,34.503587],[97.156928,34.51196],[97.158849,34.518798],[97.183913,34.527729],[97.193771,34.54368],[97.194439,34.555769],[97.199786,34.563068],[97.19469,34.571715],[97.200454,34.589888],[97.197196,34.607454],[97.185667,34.611589],[97.148908,34.620092],[97.129107,34.633238],[97.105548,34.630312],[97.090176,34.635468],[97.073634,34.645175],[97.064778,34.656924],[97.07355,34.674661],[97.118414,34.684689],[97.125682,34.704926],[97.137378,34.725576],[97.114905,34.723256],[97.104378,34.731654],[97.091429,34.735876],[97.075138,34.745897],[97.025847,34.751416],[97.011644,34.75624],[97.000533,34.739541],[97.006297,34.728546],[97.003373,34.723952]]]]}},{"type":"Feature","properties":{"adcode":632724,"name":"治多县","center":[95.616843,33.852322],"centroid":[92.60308,34.879225],"childrenNum":0,"level":"district","parent":{"adcode":632700},"subFeatureIndex":3,"acroutes":[100000,630000,632700]},"geometry":{"type":"MultiPolygon","coordinates":[[[[94.061941,35.636484],[94.048992,35.638732],[94.032367,35.648687],[94.008556,35.673593],[93.985832,35.678821],[93.963526,35.688634],[93.934035,35.70656],[93.915404,35.708669],[93.889171,35.702205],[93.880149,35.705231],[93.85024,35.709677],[93.83587,35.722236],[93.781483,35.730577],[93.769202,35.737176],[93.76185,35.756328],[93.748232,35.759214],[93.726928,35.750739],[93.707796,35.749364],[93.697604,35.751884],[93.681396,35.765032],[93.676551,35.764895],[93.660594,35.753717],[93.627594,35.755916],[93.600358,35.763062],[93.587158,35.771033],[93.568277,35.772682],[93.549647,35.782574],[93.539371,35.7812],[93.5311,35.761322],[93.51272,35.757244],[93.478467,35.767093],[93.448558,35.773552],[93.429677,35.774285],[93.408457,35.772178],[93.385482,35.777079],[93.361087,35.774834],[93.347135,35.778132],[93.309039,35.778498],[93.265429,35.777582],[93.253482,35.779552],[93.225495,35.790543],[93.192996,35.789032],[93.174115,35.791321],[93.147046,35.800067],[93.086894,35.80721],[93.080712,35.813894],[93.067178,35.84154],[93.044621,35.846848],[93.016299,35.849182],[93.002431,35.84186],[92.993993,35.833348],[92.98355,35.833027],[92.971269,35.837695],[92.937601,35.84543],[92.915461,35.847992],[92.86617,35.862405],[92.829912,35.868993],[92.802426,35.866614],[92.756226,35.869222],[92.695489,35.87741],[92.673851,35.875352],[92.644025,35.878782],[92.591894,35.878508],[92.527648,35.887153],[92.496987,35.894288],[92.488633,35.893602],[92.452207,35.898266],[92.424888,35.910475],[92.406342,35.915185],[92.369415,35.910292],[92.351202,35.896574],[92.34243,35.896254],[92.331653,35.908509],[92.314276,35.911344],[92.296898,35.908692],[92.25805,35.907778],[92.213521,35.914545],[92.17885,35.922591],[92.170078,35.923003],[92.146602,35.9305],[92.141339,35.935162],[92.125382,35.938773],[92.057627,35.957237],[92.04309,35.958745],[91.998979,35.975194],[91.97425,35.988487],[91.974584,35.999769],[91.967817,36.006528],[91.9349,36.010501],[91.910004,36.015616],[91.895885,36.022465],[91.880429,36.024885],[91.858457,36.021826],[91.836402,36.013926],[91.793126,36.005478],[91.750601,36.011643],[91.719523,36.020547],[91.679505,36.037166],[91.646004,36.043419],[91.63272,36.037759],[91.616095,36.049125],[91.594039,36.050951],[91.579837,36.055561],[91.582928,36.060809],[91.570229,36.072537],[91.565133,36.071122],[91.565467,36.080795],[91.553353,36.082848],[91.548842,36.095257],[91.556444,36.119795],[91.562961,36.131195],[91.571315,36.155083],[91.555191,36.155083],[91.552016,36.148519],[91.535224,36.135754],[91.527705,36.133019],[91.523528,36.120525],[91.507738,36.10926],[91.493869,36.103468],[91.477328,36.091699],[91.441905,36.078879],[91.40431,36.067335],[91.388269,36.065099],[91.342988,36.072354],[91.316421,36.074316],[91.291943,36.081343],[91.276487,36.094436],[91.255099,36.107938],[91.229786,36.117743],[91.206059,36.123671],[91.175732,36.133475],[91.142899,36.14159],[91.122682,36.154901],[91.104803,36.156724],[91.116082,36.141089],[91.119925,36.12244],[91.12477,36.115508],[91.122264,36.104608],[91.111988,36.094983],[91.092522,36.088825],[91.081327,36.088414],[91.057266,36.094025],[91.039722,36.093889],[91.033289,36.100001],[91.009562,36.103331],[91.003714,36.10064],[90.995026,36.107801],[90.979236,36.106797],[90.96261,36.093067],[90.952335,36.064186],[90.940722,36.045474],[90.934289,36.043191],[90.927271,36.031276],[90.91098,36.031368],[90.884664,36.024885],[90.872299,36.026437],[90.852415,36.017168],[90.838714,36.019771],[90.829357,36.029907],[90.815906,36.03575],[90.820251,36.04027],[90.806382,36.044104],[90.787334,36.065144],[90.776306,36.086316],[90.755253,36.094436],[90.742387,36.095941],[90.738043,36.101369],[90.726848,36.103878],[90.714149,36.115143],[90.66302,36.133931],[90.652159,36.134751],[90.624005,36.130784],[90.615567,36.126453],[90.587162,36.134159],[90.578056,36.130511],[90.568866,36.132426],[90.550904,36.145055],[90.52701,36.148519],[90.490835,36.14118],[90.479724,36.132244],[90.464435,36.131377],[90.423916,36.133976],[90.395595,36.139538],[90.373873,36.147516],[90.349645,36.142684],[90.341875,36.144872],[90.32926,36.157909],[90.310129,36.160097],[90.28824,36.157408],[90.274455,36.161373],[90.253402,36.157454],[90.236777,36.160599],[90.198179,36.187485],[90.175706,36.189764],[90.151812,36.196188],[90.143123,36.203203],[90.13009,36.207804],[90.127584,36.214955],[90.133599,36.227252],[90.145713,36.238955],[90.128503,36.246741],[90.086397,36.250929],[90.082052,36.255573],[90.058409,36.255527],[90.047716,36.265405],[90.043455,36.276602],[90.020647,36.275191],[90.003604,36.278513],[90.008784,36.266862],[90.027665,36.259897],[90.0219,36.238363],[90.019895,36.21368],[90.010037,36.19965],[90.009786,36.185708],[89.993078,36.163561],[89.982384,36.155995],[89.944371,36.140359],[89.93727,36.130101],[89.94646,36.110856],[89.948214,36.097766],[89.943285,36.090193],[89.947212,36.070164],[89.941447,36.067517],[89.927662,36.076187],[89.913125,36.079381],[89.90828,36.074727],[89.902432,36.079427],[89.887394,36.077008],[89.859239,36.081662],[89.847794,36.07605],[89.832589,36.079062],[89.812287,36.079563],[89.79466,36.071213],[89.768427,36.078103],[89.764333,36.072719],[89.752971,36.079928],[89.730999,36.083487],[89.727573,36.088506],[89.68814,36.090923],[89.684381,36.085951],[89.659485,36.069708],[89.641523,36.065874],[89.643277,36.057067],[89.63793,36.050084],[89.623644,36.050038],[89.617044,36.042917],[89.605181,36.038261],[89.56249,36.035522],[89.55071,36.028674],[89.543441,36.030774],[89.514117,36.025341],[89.506431,36.029131],[89.487049,36.027304],[89.475603,36.022145],[89.462236,36.030226],[89.451543,36.027761],[89.440431,36.031733],[89.431743,36.043648],[89.419127,36.045976],[89.41094,36.034746],[89.404507,36.017123],[89.420965,36.007076],[89.434667,35.993512],[89.427064,35.984513],[89.426813,35.967609],[89.432578,35.95943],[89.434165,35.94636],[89.421467,35.932511],[89.427983,35.917425],[89.450457,35.91043],[89.472846,35.900507],[89.489973,35.903525],[89.509188,35.894425],[89.541687,35.882076],[89.554469,35.879789],[89.552798,35.873247],[89.531077,35.874162],[89.530659,35.870274],[89.543943,35.867346],[89.549958,35.857418],[89.558312,35.861536],[89.577862,35.861536],[89.592231,35.855451],[89.607186,35.861124],[89.624062,35.859111],[89.66032,35.848175],[89.671515,35.851607],[89.707606,35.849273],[89.726989,35.852751],[89.741191,35.858745],[89.748794,35.854352],[89.778786,35.861536],[89.791986,35.857876],[89.801928,35.847763],[89.786723,35.833668],[89.781543,35.807713],[89.767675,35.799014],[89.776447,35.781017],[89.781627,35.777857],[89.780039,35.763383],[89.772353,35.761047],[89.763832,35.765765],[89.746872,35.754679],[89.752553,35.731769],[89.740773,35.715499],[89.750632,35.711144],[89.749713,35.702984],[89.742862,35.700509],[89.750381,35.69111],[89.748292,35.687075],[89.748877,35.66277],[89.74587,35.65855],[89.728158,35.654788],[89.725318,35.649834],[89.733338,35.642723],[89.742361,35.6218],[89.753723,35.61354],[89.765837,35.59977],[89.764333,35.587375],[89.749546,35.580489],[89.738016,35.58003],[89.719219,35.583932],[89.709277,35.576816],[89.707773,35.562902],[89.700756,35.548021],[89.700004,35.537456],[89.70627,35.535067],[89.704097,35.525925],[89.709945,35.516505],[89.705267,35.507407],[89.720138,35.501754],[89.741108,35.507315],[89.753472,35.491597],[89.765252,35.482541],[89.744115,35.479737],[89.738935,35.468611],[89.728492,35.467507],[89.731751,35.463093],[89.725067,35.452379],[89.714373,35.447596],[89.710948,35.439226],[89.699001,35.435776],[89.702009,35.428876],[89.686469,35.414707],[89.676862,35.420596],[89.658482,35.425564],[89.634839,35.41917],[89.617545,35.410842],[89.601338,35.397912],[89.599416,35.39193],[89.58112,35.381988],[89.568087,35.383507],[89.560568,35.377938],[89.545948,35.375314],[89.534586,35.36887],[89.50735,35.372506],[89.497241,35.361319],[89.499246,35.354459],[89.512446,35.347875],[89.516373,35.332126],[89.506849,35.322637],[89.494735,35.298544],[89.497241,35.290342],[89.511277,35.284306],[89.527819,35.286794],[89.531829,35.276379],[89.514953,35.265732],[89.485712,35.256697],[89.471844,35.244987],[89.458727,35.238532],[89.45054,35.223961],[89.469087,35.214645],[89.475353,35.208141],[89.481368,35.192595],[89.492981,35.176077],[89.50451,35.165694],[89.519464,35.134029],[89.538596,35.126503],[89.540768,35.120962],[89.556474,35.119161],[89.564912,35.12147],[89.583041,35.116621],[89.593067,35.104245],[89.586383,35.09667],[89.594236,35.087339],[89.590728,35.057954],[89.580117,35.055089],[89.588305,35.043627],[89.586216,35.028142],[89.581621,35.019543],[89.567669,35.011637],[89.576776,34.999568],[89.573935,34.980236],[89.566416,34.963629],[89.570343,34.950581],[89.563074,34.945074],[89.561236,34.931052],[89.568004,34.917906],[89.584378,34.907814],[89.579115,34.895221],[89.609525,34.894897],[89.624396,34.892396],[89.621138,34.88156],[89.654472,34.883181],[89.658816,34.888599],[89.670178,34.887627],[89.671682,34.894712],[89.700756,34.908231],[89.711783,34.920545],[89.733505,34.906148],[89.746956,34.903555],[89.765085,34.916008],[89.787558,34.921748],[89.802429,34.917258],[89.814209,34.905685],[89.830667,34.898462],[89.848128,34.900731],[89.86751,34.906796],[89.86609,34.900175],[89.904437,34.871788],[89.915465,34.868917],[89.928163,34.872483],[89.946543,34.890961],[89.968766,34.900453],[90.007698,34.906935],[90.019812,34.91337],[90.049136,34.909203],[90.063673,34.905176],[90.089822,34.902861],[90.096673,34.896517],[90.107533,34.874567],[90.115804,34.868083],[90.127918,34.866369],[90.167769,34.87943],[90.185146,34.892443],[90.183392,34.907768],[90.189658,34.917073],[90.199432,34.923507],[90.209792,34.937624],[90.221154,34.942298],[90.242875,34.945676],[90.252483,34.943177],[90.272366,34.927164],[90.295007,34.926701],[90.305032,34.922859],[90.321825,34.933829],[90.340622,34.93642],[90.375043,34.931515],[90.422412,34.939614],[90.443298,34.927025],[90.464268,34.925266],[90.535949,34.924387],[90.57062,34.921147],[90.582985,34.924017],[90.60738,34.925405],[90.638207,34.919295],[90.643554,34.902768],[90.653747,34.895915],[90.679813,34.903185],[90.717157,34.900129],[90.728603,34.887581],[90.741552,34.886099],[90.781319,34.890452],[90.806466,34.880773],[90.8464,34.860903],[90.876894,34.853074],[90.91875,34.834495],[90.923929,34.81174],[90.933036,34.80386],[90.948241,34.798158],[90.942059,34.77326],[90.961107,34.75573],[90.977231,34.756287],[90.985084,34.746546],[91.003881,34.745108],[91.014241,34.762409],[91.024266,34.766304],[91.05994,34.762455],[91.064702,34.771869],[91.056932,34.788284],[91.059188,34.796443],[91.069046,34.794821],[91.096532,34.796258],[91.121763,34.786661],[91.126358,34.781004],[91.156099,34.797463],[91.166626,34.799549],[91.190937,34.798066],[91.215332,34.804231],[91.232793,34.80284],[91.247413,34.793754],[91.263788,34.789396],[91.303639,34.790973],[91.321517,34.789906],[91.335302,34.773956],[91.350006,34.761945],[91.373733,34.751927],[91.38075,34.751277],[91.410409,34.739402],[91.453434,34.72437],[91.495707,34.716296],[91.545751,34.708546],[91.57073,34.702792],[91.5917,34.695365],[91.63247,34.677447],[91.648594,34.673037],[91.675411,34.661754],[91.681009,34.661289],[91.704067,34.670483],[91.726541,34.667233],[91.732138,34.661939],[91.738571,34.646336],[91.748012,34.635003],[91.760794,34.625155],[91.770903,34.623204],[91.808164,34.625062],[91.828632,34.620742],[91.843252,34.600809],[91.853695,34.592677],[91.879594,34.585101],[91.909921,34.58301],[91.935402,34.578455],[91.958543,34.576596],[91.965645,34.56953],[91.966397,34.555304],[91.949604,34.536053],[91.93064,34.517635],[91.928718,34.506285],[91.937992,34.488698],[91.961468,34.48088],[92.004911,34.473853],[92.028136,34.461426],[92.047351,34.454584],[92.066316,34.442433],[92.084946,34.435543],[92.099399,34.434704],[92.137078,34.417196],[92.150194,34.40844],[92.16707,34.403037],[92.212101,34.396003],[92.224131,34.387711],[92.232068,34.377601],[92.274341,34.378626],[92.298569,34.382679],[92.342514,34.379651],[92.365238,34.379325],[92.39523,34.383797],[92.42422,34.389807],[92.438757,34.380816],[92.467914,34.376902],[92.491306,34.3783],[92.507932,34.411374],[92.51378,34.415938],[92.537673,34.411374],[92.546446,34.401965],[92.540848,34.379977],[92.554466,34.342043],[92.559813,34.332999],[92.578694,34.290426],[92.592813,34.276386],[92.595486,34.266822],[92.61278,34.239572],[92.627985,34.202414],[92.631744,34.187145],[92.644694,34.173088],[92.655387,34.154123],[92.654468,34.14833],[92.661653,34.138424],[92.652798,34.122863],[92.656975,34.112488],[92.667334,34.111459],[92.677443,34.100708],[92.690894,34.092808],[92.69056,34.083551],[92.702172,34.078267],[92.704094,34.072282],[92.713367,34.070318],[92.735339,34.076817],[92.753803,34.067979],[92.766585,34.072983],[92.803428,34.082569],[92.826821,34.071112],[92.833504,34.078735],[92.855142,34.087151],[92.870598,34.090049],[92.883631,34.087852],[92.896998,34.092621],[92.912704,34.091592],[92.902679,34.068728],[92.878033,34.06059],[92.87795,34.053621],[92.868676,34.044173],[92.852469,34.045249],[92.844281,34.034957],[92.829661,34.030559],[92.818216,34.036548],[92.806352,34.034817],[92.782291,34.035659],[92.774522,34.020406],[92.766167,34.018301],[92.755975,34.001033],[92.739851,33.994574],[92.726484,33.982076],[92.717545,33.964145],[92.719382,33.953188],[92.706767,33.942792],[92.719132,33.935813],[92.723643,33.922791],[92.729408,33.91806],[92.742858,33.915764],[92.749041,33.907518],[92.741772,33.899131],[92.750461,33.884651],[92.752717,33.869372],[92.741689,33.847479],[92.747286,33.839086],[92.743026,33.833318],[92.749542,33.817607],[92.746367,33.814793],[92.761823,33.791572],[92.75681,33.786505],[92.752717,33.765342],[92.757562,33.762244],[92.756393,33.747506],[92.765415,33.729667],[92.77377,33.723563],[92.766418,33.710368],[92.756476,33.703746],[92.776276,33.698063],[92.782124,33.689937],[92.797664,33.684629],[92.792985,33.653197],[92.784296,33.636842],[92.79474,33.631202],[92.812952,33.615407],[92.822727,33.620296],[92.83434,33.633223],[92.839603,33.647041],[92.850965,33.656768],[92.877866,33.666965],[92.90836,33.661185],[92.915962,33.66236],[92.945955,33.655876],[92.979456,33.664287],[92.992823,33.65987],[93.008279,33.659447],[93.024988,33.668233],[93.03518,33.660997],[93.059241,33.657802],[93.086978,33.664803],[93.098674,33.662172],[93.118975,33.668656],[93.142786,33.662407],[93.155735,33.652868],[93.175953,33.646947],[93.202102,33.642811],[93.210791,33.637735],[93.234016,33.63327],[93.248219,33.648592],[93.259581,33.653479],[93.282973,33.643798],[93.294335,33.63468],[93.314052,33.635667],[93.328338,33.643422],[93.341204,33.644926],[93.359918,33.651881],[93.368021,33.647276],[93.37813,33.634445],[93.391832,33.634586],[93.407204,33.639991],[93.417647,33.639427],[93.439452,33.656017],[93.475042,33.66875],[93.497849,33.683549],[93.509713,33.68073],[93.521827,33.668656],[93.548979,33.66532],[93.586908,33.653291],[93.598103,33.651881],[93.614227,33.654607],[93.640961,33.664522],[93.653493,33.662595],[93.660176,33.66922],[93.6763,33.670583],[93.715232,33.690078],[93.723837,33.691769],[93.726343,33.704967],[93.73428,33.71774],[93.747647,33.703089],[93.784073,33.685099],[93.792845,33.667247],[93.804959,33.66875],[93.82008,33.664803],[93.836371,33.649767],[93.855002,33.645443],[93.864025,33.636748],[93.888085,33.627112],[93.906131,33.605581],[93.920751,33.602807],[93.930693,33.594766],[93.946483,33.597493],[93.961103,33.614796],[93.974554,33.618322],[93.979065,33.62777],[93.990845,33.63139],[94.003293,33.648122],[94.016326,33.658084],[94.035207,33.659353],[94.044731,33.678006],[94.06027,33.676596],[94.073888,33.686085],[94.10764,33.689749],[94.116663,33.681059],[94.136714,33.677301],[94.148577,33.678099],[94.159605,33.672462],[94.183582,33.670113],[94.196698,33.672885],[94.20923,33.679838],[94.231453,33.67575],[94.240392,33.678287],[94.25259,33.67514],[94.273643,33.681952],[94.288096,33.692051],[94.294195,33.700975],[94.309901,33.700224],[94.317671,33.703511],[94.318339,33.717787],[94.346744,33.728164],[94.355934,33.724737],[94.359276,33.736286],[94.355433,33.746192],[94.358273,33.753937],[94.383253,33.766327],[94.390521,33.774117],[94.411073,33.78308],[94.432711,33.777965],[94.458025,33.780921],[94.470306,33.792135],[94.479747,33.806397],[94.49679,33.803441],[94.518846,33.793167],[94.527033,33.794856],[94.535304,33.803254],[94.545079,33.82014],[94.590443,33.815965],[94.617762,33.810665],[94.667388,33.790118],[94.682342,33.774774],[94.688942,33.763418],[94.70657,33.762103],[94.709995,33.75342],[94.706737,33.74192],[94.715175,33.719102],[94.74617,33.69501],[94.769061,33.685005],[94.813423,33.672227],[94.822363,33.663159],[94.82679,33.648498],[94.825287,33.639568],[94.810332,33.606991],[94.807408,33.591803],[94.812671,33.573979],[94.819104,33.566923],[94.826206,33.567252],[94.854109,33.577459],[94.863049,33.569322],[94.872322,33.56871],[94.88452,33.575296],[94.903568,33.58014],[94.915932,33.579858],[94.927796,33.574731],[94.941163,33.563912],[94.96397,33.564006],[94.980345,33.570921],[94.992292,33.566029],[95.020279,33.532954],[95.034148,33.527401],[95.048267,33.534271],[95.07191,33.53413],[95.086029,33.539118],[95.094216,33.546317],[95.091125,33.563301],[95.101902,33.575343],[95.122788,33.585925],[95.134067,33.584185],[95.147434,33.567534],[95.151528,33.550363],[95.162221,33.533236],[95.179431,33.515964],[95.207502,33.446418],[95.213434,33.433887],[95.257713,33.430636],[95.27392,33.427574],[95.283361,33.417349],[95.296644,33.409009],[95.302075,33.410658],[95.306419,33.433934],[95.31352,33.436997],[95.337163,33.428281],[95.379353,33.405333],[95.39389,33.386904],[95.408677,33.38153],[95.42806,33.38351],[95.466406,33.363096],[95.487125,33.340273],[95.495814,33.340084],[95.51152,33.347488],[95.526224,33.344612],[95.557303,33.319991],[95.560227,33.297958],[95.577938,33.29692],[95.592308,33.308479],[95.613862,33.30612],[95.633161,33.320274],[95.639928,33.319896],[95.648784,33.311923],[95.660564,33.308385],[95.671257,33.310272],[95.68287,33.326453],[95.690974,33.332255],[95.700581,33.332585],[95.711275,33.326925],[95.742688,33.296825],[95.765579,33.302016],[95.773098,33.311027],[95.77009,33.3165],[95.744025,33.327396],[95.743356,33.340226],[95.736506,33.347535],[95.724141,33.352487],[95.708769,33.391618],[95.699412,33.399159],[95.685376,33.404296],[95.687381,33.41947],[95.703171,33.428092],[95.703589,33.446936],[95.710106,33.450657],[95.735587,33.447596],[95.756473,33.437892],[95.771678,33.441425],[95.789974,33.441283],[95.805597,33.43629],[95.817293,33.41947],[95.828404,33.409951],[95.842022,33.403165],[95.849959,33.403259],[95.865248,33.395483],[95.872934,33.39897],[95.891982,33.396142],[95.908022,33.389402],[95.916711,33.393456],[95.931665,33.412873],[95.937096,33.424511],[95.928324,33.443969],[95.933503,33.448302],[95.955643,33.446135],[95.988559,33.451175],[96.004934,33.448161],[96.021392,33.439776],[96.032086,33.4402],[96.033255,33.447313],[96.021476,33.470721],[96.010281,33.487201],[96.005936,33.498359],[96.011534,33.50382],[96.019721,33.499301],[96.038352,33.495723],[96.054643,33.50189],[96.074443,33.514646],[96.079539,33.512246],[96.091653,33.518741],[96.096749,33.525707],[96.117217,33.542882],[96.135347,33.531213],[96.148547,33.526365],[96.160326,33.51201],[96.182883,33.507115],[96.202099,33.4977],[96.21204,33.500289],[96.224071,33.496288],[96.233344,33.49916],[96.231005,33.506691],[96.213962,33.522083],[96.20143,33.540059],[96.188063,33.550034],[96.199759,33.561043],[96.186392,33.571486],[96.183802,33.595424],[96.217805,33.610847],[96.223987,33.615971],[96.238023,33.638393],[96.252309,33.649626],[96.262752,33.650472],[96.288149,33.645584],[96.304273,33.66095],[96.321734,33.671099],[96.328334,33.682233],[96.335185,33.685992],[96.348886,33.703605],[96.364342,33.727929],[96.374868,33.749853],[96.37161,33.761775],[96.365929,33.756096],[96.350641,33.752294],[96.346129,33.742483],[96.330841,33.743892],[96.324575,33.724267],[96.303856,33.728681],[96.295668,33.733892],[96.286646,33.733094],[96.284891,33.726286],[96.270438,33.729995],[96.263337,33.715627],[96.258825,33.718633],[96.256068,33.733657],[96.250638,33.730653],[96.250721,33.717834],[96.240863,33.714782],[96.23184,33.720793],[96.236268,33.732859],[96.233511,33.740371],[96.215549,33.734268],[96.202015,33.736474],[96.20377,33.744032],[96.23159,33.755392],[96.22783,33.77346],[96.215299,33.773413],[96.220562,33.786223],[96.216051,33.789977],[96.208949,33.782423],[96.183802,33.780077],[96.188397,33.765811],[96.180294,33.76276],[96.175699,33.771771],[96.168597,33.771724],[96.151554,33.758161],[96.139858,33.76262],[96.13802,33.77163],[96.131671,33.774634],[96.111954,33.764732],[96.097501,33.769941],[96.101093,33.777496],[96.110952,33.782798],[96.127995,33.783643],[96.130668,33.788194],[96.107109,33.809868],[96.081962,33.79997],[96.067425,33.814887],[96.047625,33.803441],[96.043949,33.811697],[96.044701,33.829003],[96.034676,33.833459],[96.021225,33.822063],[95.989144,33.832896],[95.986638,33.839039],[95.994658,33.854652],[95.982627,33.868293],[95.960989,33.861309],[95.956227,33.881183],[95.922225,33.890369],[95.925901,33.903489],[95.922308,33.909252],[95.898665,33.910704],[95.891982,33.921948],[95.901589,33.945976],[95.892483,33.949301],[95.869174,33.944103],[95.867002,33.975335],[95.848873,33.997663],[95.846116,34.01554],[95.826734,34.02195],[95.824812,34.030279],[95.83208,34.047073],[95.819215,34.060216],[95.801754,34.062554],[95.795237,34.054463],[95.785045,34.05741],[95.783374,34.06971],[95.77786,34.076022],[95.756556,34.078735],[95.756222,34.090938],[95.751794,34.096314],[95.73166,34.103513],[95.702419,34.126882],[95.6949,34.135854],[95.691809,34.147302],[95.698242,34.160943],[95.689554,34.172761],[95.688133,34.194477],[95.680698,34.203862],[95.662402,34.210725],[95.645024,34.211939],[95.638257,34.223376],[95.630321,34.224543],[95.603085,34.220202],[95.579442,34.218614],[95.571338,34.220715],[95.567078,34.229024],[95.586878,34.240505],[95.588632,34.247972],[95.583452,34.254738],[95.56666,34.26519],[95.563736,34.273167],[95.574346,34.297609],[95.575265,34.307915],[95.555214,34.328477],[95.538839,34.330855],[95.526893,34.343581],[95.505255,34.348382],[95.477267,34.364181],[95.462146,34.367862],[95.457968,34.381002],[95.432738,34.392882],[95.422462,34.402944],[95.415528,34.415286],[95.399822,34.427021],[95.399989,34.441781],[95.3913,34.444342],[95.363563,34.445227],[95.354206,34.458866],[95.355877,34.478786],[95.344849,34.483766],[95.318951,34.486139],[95.309427,34.475622],[95.317697,34.464591],[95.31753,34.452629],[95.30667,34.452303],[95.30032,34.469432],[95.29514,34.474365],[95.281189,34.476971],[95.269743,34.460123],[95.253452,34.460821],[95.239583,34.46757],[95.224545,34.484091],[95.218029,34.495538],[95.199983,34.499074],[95.179515,34.485115],[95.160467,34.493584],[95.147016,34.512053],[95.128553,34.512937],[95.124292,34.525822],[95.115603,34.528612],[95.097224,34.520659],[95.076839,34.526612],[95.059545,34.574039],[95.053948,34.580314],[95.039077,34.586589],[95.022117,34.576689],[95.012927,34.57971],[95.01017,34.587193],[95.0151,34.600531],[95.013679,34.606804],[94.980512,34.62116],[94.981013,34.634957],[94.989702,34.648751],[94.988783,34.658039],[94.982768,34.660407],[94.957955,34.660314],[94.935565,34.66584],[94.924287,34.674522],[94.914512,34.688588],[94.903066,34.691977],[94.883684,34.685432],[94.85954,34.686082],[94.824785,34.700425],[94.810165,34.711609],[94.792119,34.704741],[94.76714,34.709103],[94.757281,34.718384],[94.746922,34.718013],[94.738651,34.726226],[94.714089,34.728453],[94.692284,34.721261],[94.662793,34.729659],[94.642909,34.727664],[94.628372,34.734577],[94.617846,34.750535],[94.608405,34.754246],[94.579165,34.754617],[94.559365,34.749654],[94.540484,34.749747],[94.517091,34.737918],[94.516339,34.731051],[94.50456,34.702235],[94.470891,34.704973],[94.463539,34.699589],[94.462704,34.687892],[94.451509,34.67884],[94.423271,34.686964],[94.409737,34.684643],[94.400046,34.67364],[94.380413,34.675776],[94.377823,34.651027],[94.371724,34.65112],[94.354932,34.669183],[94.347245,34.666768],[94.353595,34.643457],[94.349668,34.635607],[94.331706,34.641274],[94.304387,34.64053],[94.300711,34.628732],[94.301714,34.607315],[94.288012,34.595047],[94.285673,34.577711],[94.267461,34.567764],[94.24624,34.569716],[94.227276,34.575713],[94.211402,34.574643],[94.194192,34.559628],[94.183081,34.5547],[94.166706,34.558047],[94.142979,34.574876],[94.130698,34.569716],[94.122093,34.557722],[94.109812,34.557164],[94.096946,34.563068],[94.059184,34.551724],[94.034288,34.539774],[94.011063,34.537402],[93.992432,34.517915],[93.963944,34.506006],[93.953918,34.505773],[93.942139,34.50047],[93.925346,34.497539],[93.912564,34.498423],[93.89527,34.504052],[93.870625,34.504471],[93.833447,34.500749],[93.809387,34.5014],[93.771123,34.506332],[93.763521,34.510332],[93.721247,34.523589],[93.686409,34.528054],[93.667277,34.527589],[93.657001,34.518147],[93.65107,34.504889],[93.64188,34.498004],[93.627009,34.495119],[93.56669,34.501772],[93.512553,34.517589],[93.489829,34.521682],[93.4519,34.523357],[93.412383,34.52131],[93.396009,34.523636],[93.379383,34.530566],[93.351563,34.537867],[93.330426,34.547167],[93.320067,34.547772],[93.298178,34.540983],[93.288988,34.532938],[93.279631,34.531077],[93.24471,34.53796],[93.214133,34.56172],[93.208953,34.56781],[93.187482,34.577851],[93.179378,34.586356],[93.152811,34.607501],[93.135851,34.615539],[93.123069,34.632123],[93.126745,34.637929],[93.119727,34.650655],[93.119727,34.661382],[93.105525,34.672062],[93.091239,34.675497],[93.076117,34.693927],[93.064254,34.694901],[93.047879,34.682414],[93.032006,34.68571],[93.031337,34.69996],[93.009031,34.703627],[93.000677,34.708268],[92.979206,34.713651],[92.986223,34.720101],[92.997585,34.748448],[92.990568,34.76009],[92.981378,34.766861],[92.975279,34.778825],[92.984051,34.823837],[92.991988,34.843206],[92.982213,34.852843],[92.977368,34.907444],[92.976198,34.944334],[92.99015,34.968162],[92.991821,34.981577],[92.984887,35.001094],[93.013041,35.03577],[93.019056,35.052501],[93.018137,35.068536],[93.034094,35.088078],[93.042449,35.124425],[93.039274,35.161079],[93.04437,35.171785],[93.057821,35.185259],[93.066593,35.197946],[93.079793,35.208648],[93.085307,35.217735],[93.090988,35.236504],[93.095834,35.241944],[93.121732,35.257573],[93.131674,35.260339],[93.166262,35.259601],[93.215971,35.271632],[93.241201,35.284674],[93.273616,35.290573],[93.283809,35.289236],[93.292831,35.294766],[93.294502,35.307897],[93.299849,35.315636],[93.316391,35.32273],[93.345214,35.338205],[93.359416,35.348474],[93.384563,35.35782],[93.419401,35.360997],[93.42951,35.360076],[93.448391,35.363529],[93.473204,35.370941],[93.519738,35.393264],[93.541877,35.397636],[93.566439,35.406885],[93.587242,35.418388],[93.618822,35.446217],[93.639207,35.472887],[93.648731,35.480242],[93.680143,35.497526],[93.725508,35.509153],[93.749569,35.519354],[93.789336,35.526614],[93.800197,35.526614],[93.82008,35.515495],[93.851409,35.51453],[93.877893,35.525603],[93.904126,35.518987],[93.921587,35.524409],[93.957344,35.549078],[93.97681,35.566254],[93.987002,35.571535],[94.001455,35.568458],[94.017913,35.571581],[94.036627,35.596327],[94.062025,35.616293],[94.061941,35.636484]]]]}},{"type":"Feature","properties":{"adcode":632725,"name":"囊谦县","center":[96.479797,32.203206],"centroid":[96.12882,32.169504],"childrenNum":0,"level":"district","parent":{"adcode":632700},"subFeatureIndex":4,"acroutes":[100000,630000,632700]},"geometry":{"type":"MultiPolygon","coordinates":[[[[96.040607,32.740775],[96.032169,32.734791],[96.036096,32.713087],[96.041526,32.708812],[96.032169,32.68425],[96.023731,32.687719],[96.013372,32.684773],[96.004182,32.660775],[95.995326,32.646896],[95.981207,32.641286],[95.963078,32.641381],[95.934172,32.654976],[95.907772,32.675459],[95.900503,32.67199],[95.90468,32.654168],[95.902091,32.642142],[95.893987,32.629259],[95.887387,32.626073],[95.885298,32.633395],[95.874772,32.638434],[95.867336,32.631969],[95.85021,32.624219],[95.840351,32.614614],[95.848288,32.603771],[95.855723,32.604057],[95.862825,32.594022],[95.87026,32.593356],[95.874688,32.581987],[95.884379,32.57704],[95.888222,32.566146],[95.859817,32.571997],[95.840602,32.581084],[95.805012,32.578467],[95.788888,32.568953],[95.779949,32.569856],[95.763908,32.583985],[95.754969,32.584176],[95.729822,32.578943],[95.712946,32.587553],[95.701584,32.58194],[95.695235,32.569952],[95.685711,32.571712],[95.664741,32.585745],[95.642435,32.592928],[95.621381,32.607861],[95.610521,32.611713],[95.575348,32.638529],[95.544688,32.648417],[95.536751,32.653455],[95.516032,32.674699],[95.491303,32.688336],[95.472171,32.704489],[95.461895,32.708099],[95.45329,32.703254],[95.443432,32.691234],[95.420624,32.677313],[95.41369,32.668996],[95.426806,32.659919],[95.431568,32.64547],[95.46131,32.62341],[95.475095,32.59483],[95.486958,32.574947],[95.49005,32.561863],[95.514027,32.544781],[95.531237,32.521221],[95.541346,32.514414],[95.535498,32.50613],[95.513191,32.495227],[95.469163,32.486466],[95.454794,32.481275],[95.447024,32.473941],[95.430482,32.466511],[95.422295,32.455269],[95.42831,32.44941],[95.430984,32.432878],[95.436832,32.425635],[95.464903,32.407811],[95.486457,32.40457],[95.493558,32.399327],[95.487293,32.389984],[95.472004,32.380974],[95.460057,32.369865],[95.455128,32.351267],[95.438837,32.317687],[95.428561,32.282518],[95.40826,32.265144],[95.400824,32.254498],[95.403665,32.243326],[95.431318,32.231149],[95.428561,32.217156],[95.417617,32.20832],[95.419037,32.202158],[95.43349,32.187826],[95.41653,32.172918],[95.424718,32.159585],[95.440174,32.157482],[95.437667,32.148784],[95.441343,32.137694],[95.434158,32.124404],[95.445687,32.117662],[95.450533,32.108577],[95.452705,32.091456],[95.449698,32.076916],[95.45471,32.062516],[95.441928,32.058449],[95.435412,32.061272],[95.432153,32.052421],[95.423548,32.051751],[95.421292,32.033902],[95.430482,32.024282],[95.45446,32.007863],[95.450449,32.00322],[95.431485,31.999246],[95.420875,32.007863],[95.417449,32.001305],[95.395644,32.001448],[95.387457,31.992256],[95.376429,31.990054],[95.377265,31.977795],[95.361057,31.959165],[95.370497,31.951549],[95.371416,31.944987],[95.361391,31.941681],[95.368409,31.929177],[95.381692,31.925679],[95.391634,31.928075],[95.393389,31.920217],[95.407006,31.919642],[95.405419,31.904691],[95.407925,31.894818],[95.422211,31.881923],[95.419371,31.87224],[95.433323,31.850184],[95.432989,31.844861],[95.441761,31.829993],[95.459556,31.817666],[95.462313,31.811717],[95.456047,31.803753],[95.470333,31.794829],[95.479105,31.79622],[95.492807,31.776498],[95.500994,31.774098],[95.511688,31.750579],[95.546526,31.739825],[95.554964,31.74597],[95.566242,31.740833],[95.576852,31.74741],[95.581447,31.768435],[95.601414,31.767667],[95.61027,31.773618],[95.614698,31.78336],[95.637171,31.782161],[95.675936,31.772467],[95.681199,31.776306],[95.694232,31.768963],[95.721885,31.763011],[95.736171,31.764115],[95.779615,31.749091],[95.792647,31.731039],[95.801921,31.703474],[95.817126,31.686662],[95.824979,31.68205],[95.834587,31.686566],[95.83726,31.699055],[95.849792,31.705059],[95.853301,31.714136],[95.846199,31.736368],[95.857812,31.74261],[95.85965,31.752979],[95.868589,31.772898],[95.889726,31.796124],[95.899334,31.817138],[95.910194,31.815843],[95.92022,31.820208],[95.943779,31.819297],[95.946787,31.816035],[95.982878,31.816658],[95.992569,31.804329],[95.988977,31.787439],[95.992402,31.77693],[96.000757,31.773522],[96.046372,31.732047],[96.059906,31.732287],[96.064835,31.720571],[96.077534,31.719754],[96.091068,31.712551],[96.106942,31.710294],[96.108529,31.699439],[96.124569,31.697614],[96.135681,31.702081],[96.147043,31.690072],[96.152975,31.652356],[96.14838,31.631161],[96.152975,31.609336],[96.16041,31.601066],[96.193494,31.605682],[96.206192,31.598662],[96.21722,31.608807],[96.212709,31.61448],[96.225157,31.624912],[96.222651,31.632459],[96.222901,31.653029],[96.248633,31.660429],[96.247463,31.678063],[96.252977,31.693627],[96.241532,31.710822],[96.234514,31.716249],[96.222316,31.736128],[96.23017,31.750675],[96.206777,31.765747],[96.177954,31.775586],[96.1762,31.781153],[96.18163,31.794733],[96.181045,31.809222],[96.175532,31.824237],[96.183134,31.835797],[96.2026,31.840784],[96.20778,31.858479],[96.214213,31.865767],[96.214463,31.876459],[96.199759,31.883889],[96.189066,31.902822],[96.203101,31.906224],[96.218724,31.90541],[96.237271,31.916336],[96.242785,31.92635],[96.251139,31.929608],[96.267932,31.923188],[96.288567,31.919786],[96.351894,31.916144],[96.368603,31.924482],[96.383808,31.924146],[96.389322,31.91993],[96.400182,31.893763],[96.399263,31.877609],[96.408286,31.863754],[96.407869,31.845772],[96.41497,31.833878],[96.428755,31.824093],[96.43335,31.799675],[96.465096,31.776642],[96.470527,31.769347],[96.485147,31.766323],[96.523912,31.745298],[96.526919,31.738577],[96.542876,31.729358],[96.565183,31.713223],[96.572618,31.711686],[96.580973,31.720667],[96.592251,31.723356],[96.615643,31.73704],[96.632269,31.718122],[96.644216,31.709957],[96.661175,31.705731],[96.670616,31.711927],[96.668276,31.72422],[96.673456,31.727918],[96.69618,31.71961],[96.706874,31.70357],[96.722747,31.687046],[96.735196,31.679264],[96.753826,31.673931],[96.77513,31.673931],[96.781229,31.6796],[96.790502,31.69843],[96.801864,31.703234],[96.821915,31.700304],[96.837203,31.715528],[96.839375,31.729694],[96.833694,31.739201],[96.818155,31.746354],[96.81072,31.760227],[96.81097,31.767187],[96.802532,31.772419],[96.797018,31.795741],[96.781813,31.803897],[96.766107,31.818961],[96.762097,31.839442],[96.760927,31.862986],[96.766525,31.867445],[96.794345,31.869219],[96.809132,31.890887],[96.809634,31.898173],[96.784904,31.912838],[96.774796,31.937178],[96.755163,31.943406],[96.750317,31.962374],[96.740125,31.97655],[96.743049,32.000778],[96.725588,32.011454],[96.721077,32.017964],[96.732773,32.026771],[96.747142,32.013656],[96.760677,32.014996],[96.767778,32.010927],[96.783234,32.011071],[96.796851,32.018251],[96.80671,32.011502],[96.822583,32.008342],[96.840378,31.997714],[96.849484,31.987037],[96.847312,31.978801],[96.866527,31.964338],[96.87037,31.967738],[96.863102,31.995655],[96.876302,31.996134],[96.889168,32.002885],[96.894431,32.013799],[96.90713,32.003507],[96.935869,31.992591],[96.942553,31.986606],[96.955335,31.994028],[96.966196,32.009443],[96.959345,32.019735],[96.94673,32.022367],[96.934198,32.04108],[96.935953,32.04821],[96.952829,32.061464],[96.999029,32.065147],[97.001034,32.073758],[97.021335,32.074859],[97.018912,32.078159],[97.029105,32.088347],[97.030943,32.096908],[97.038128,32.099395],[97.033616,32.118523],[97.038211,32.126651],[97.030274,32.133774],[97.054753,32.135112],[97.063358,32.139128],[97.078312,32.135734],[97.097528,32.149835],[97.114487,32.154519],[97.118163,32.177219],[97.112566,32.203161],[97.091429,32.206552],[97.05634,32.20703],[97.048654,32.217443],[97.02852,32.218446],[97.015654,32.227759],[97.011143,32.225657],[96.996439,32.200151],[96.996606,32.188112],[96.982236,32.175976],[96.980148,32.168856],[96.960933,32.16618],[96.957257,32.173061],[96.939963,32.179225],[96.928684,32.17913],[96.912143,32.18515],[96.895517,32.204737],[96.910305,32.219114],[96.915819,32.232725],[96.908801,32.25383],[96.91231,32.259606],[96.926178,32.263855],[96.916153,32.272447],[96.922586,32.281898],[96.90855,32.292111],[96.900948,32.311532],[96.894097,32.315826],[96.894431,32.325224],[96.884657,32.327896],[96.877221,32.335337],[96.878391,32.342206],[96.867279,32.349312],[96.87672,32.355321],[96.88733,32.355178],[96.897522,32.36667],[96.892426,32.372869],[96.87296,32.381641],[96.854246,32.406715],[96.851322,32.438738],[96.839375,32.459937],[96.824003,32.460033],[96.804203,32.450791],[96.800861,32.441978],[96.789834,32.439214],[96.771203,32.464748],[96.760426,32.474036],[96.751236,32.457365],[96.734861,32.446123],[96.740208,32.440358],[96.733525,32.428684],[96.723917,32.44355],[96.702112,32.444217],[96.692588,32.435069],[96.698436,32.42268],[96.693423,32.408907],[96.717985,32.380449],[96.717651,32.369483],[96.700859,32.375062],[96.688912,32.373584],[96.684401,32.378733],[96.650147,32.390985],[96.635193,32.382166],[96.619403,32.38741],[96.608626,32.378828],[96.586904,32.389221],[96.58799,32.401853],[96.577714,32.403855],[96.571281,32.420393],[96.559167,32.432973],[96.547388,32.438833],[96.535775,32.454793],[96.516643,32.462891],[96.504195,32.454888],[96.483727,32.449505],[96.477461,32.443074],[96.463342,32.438547],[96.452231,32.425063],[96.442372,32.423824],[96.441203,32.433306],[96.427836,32.439691],[96.4138,32.453269],[96.408286,32.463367],[96.394669,32.470464],[96.385061,32.470273],[96.368268,32.488894],[96.366013,32.497036],[96.351393,32.509177],[96.352228,32.517889],[96.333514,32.527076],[96.315552,32.546351],[96.308033,32.550063],[96.309453,32.557914],[96.301684,32.562815],[96.291157,32.579752],[96.290071,32.59269],[96.281382,32.597066],[96.274532,32.607861],[96.259327,32.61585],[96.229083,32.616516],[96.211038,32.611238],[96.193159,32.609811],[96.178706,32.613996],[96.176952,32.62013],[96.18798,32.652219],[96.181881,32.65721],[96.191656,32.678691],[96.194496,32.692755],[96.175114,32.714844],[96.166425,32.73009],[96.174445,32.737688],[96.167261,32.751078],[96.151888,32.759482],[96.106942,32.722254],[96.104017,32.712327],[96.089731,32.706152],[96.080959,32.707387],[96.069179,32.716364],[96.067174,32.724248],[96.054726,32.727193],[96.040607,32.740775]]]]}},{"type":"Feature","properties":{"adcode":632726,"name":"曲麻莱县","center":[95.800674,34.12654],"centroid":[95.261073,34.953979],"childrenNum":0,"level":"district","parent":{"adcode":632700},"subFeatureIndex":5,"acroutes":[100000,630000,632700]},"geometry":{"type":"MultiPolygon","coordinates":[[[[96.37161,33.761775],[96.393917,33.754735],[96.40202,33.747975],[96.41639,33.748022],[96.400433,33.713373],[96.386063,33.704263],[96.388737,33.696748],[96.405028,33.693037],[96.399681,33.68322],[96.413132,33.687025],[96.440952,33.685569],[96.449975,33.679603],[96.451813,33.664522],[96.484228,33.63891],[96.480719,33.629886],[96.465514,33.621612],[96.467269,33.617852],[96.496008,33.610329],[96.538114,33.6163],[96.553403,33.598998],[96.561423,33.60779],[96.558833,33.620907],[96.559919,33.636466],[96.565433,33.649626],[96.584983,33.663582],[96.587322,33.670958],[96.582226,33.680026],[96.581975,33.695621],[96.56276,33.722671],[96.556995,33.741873],[96.559167,33.758161],[96.574373,33.780546],[96.594757,33.796592],[96.623914,33.810712],[96.628259,33.815543],[96.627006,33.82633],[96.619737,33.847291],[96.630932,33.869653],[96.632937,33.881605],[96.624165,33.909439],[96.607289,33.943822],[96.59058,33.954031],[96.596345,33.97922],[96.595175,33.98788],[96.605451,34.003934],[96.59434,34.013341],[96.593254,34.040197],[96.588909,34.050908],[96.574289,34.054697],[96.566519,34.0814],[96.554322,34.080932],[96.557998,34.104214],[96.548975,34.115198],[96.546552,34.126695],[96.552985,34.141088],[96.542375,34.157299],[96.511881,34.157626],[96.504613,34.16141],[96.500102,34.172667],[96.503527,34.209558],[96.47554,34.229164],[96.476375,34.243492],[96.461838,34.248718],[96.45457,34.259264],[96.416474,34.281051],[96.411043,34.293831],[96.389238,34.296769],[96.377458,34.292945],[96.367433,34.307962],[96.343706,34.319153],[96.336438,34.319852],[96.325494,34.328804],[96.317975,34.340551],[96.299428,34.341577],[96.290489,34.338826],[96.277205,34.340504],[96.270104,34.336496],[96.259744,34.353975],[96.220311,34.368654],[96.22499,34.37625],[96.193744,34.393255],[96.179375,34.395071],[96.160494,34.404388],[96.158572,34.411747],[96.164169,34.419524],[96.162666,34.42772],[96.153225,34.427627],[96.146207,34.449556],[96.152724,34.454863],[96.154645,34.465476],[96.181797,34.463428],[96.195415,34.467431],[96.200094,34.477158],[96.207947,34.478786],[96.205942,34.492095],[96.214881,34.494747],[96.215466,34.500842],[96.228164,34.507867],[96.237271,34.521217],[96.233762,34.536565],[96.228666,34.541448],[96.211623,34.547353],[96.215382,34.567299],[96.207111,34.577572],[96.186476,34.572552],[96.171521,34.574411],[96.160243,34.572087],[96.15498,34.56437],[96.137435,34.570227],[96.142197,34.578966],[96.129916,34.594071],[96.142782,34.605038],[96.155397,34.632448],[96.156985,34.648426],[96.14721,34.673083],[96.151053,34.685757],[96.140693,34.728036],[96.149549,34.742696],[96.154478,34.744412],[96.16584,34.758559],[96.172524,34.761296],[96.187645,34.779984],[96.192324,34.790045],[96.199425,34.790509],[96.212625,34.783833],[96.21204,34.778825],[96.225575,34.770432],[96.227413,34.761945],[96.23418,34.762873],[96.247046,34.754988],[96.250471,34.745711],[96.276871,34.748494],[96.285225,34.762409],[96.292828,34.754849],[96.316722,34.747474],[96.32683,34.747149],[96.351727,34.732118],[96.364091,34.727015],[96.361084,34.712537],[96.365177,34.699079],[96.3742,34.683389],[96.385479,34.673686],[96.407869,34.668719],[96.432263,34.653906],[96.451312,34.646336],[96.452899,34.622275],[96.461838,34.616654],[96.475456,34.615167],[96.485899,34.605224],[96.503443,34.597835],[96.529175,34.597603],[96.549393,34.58473],[96.561507,34.574086],[96.572033,34.573528],[96.59033,34.559767],[96.619236,34.556002],[96.63419,34.5454],[96.644466,34.544842],[96.654157,34.549771],[96.657082,34.558698],[96.667942,34.557489],[96.678803,34.562046],[96.691084,34.55112],[96.70019,34.555583],[96.718654,34.546981],[96.723499,34.538937],[96.750234,34.535774],[96.764185,34.527682],[96.76452,34.514147],[96.775965,34.509402],[96.783902,34.513356],[96.811889,34.515821],[96.836368,34.51517],[96.853327,34.526659],[96.885074,34.523636],[96.913479,34.514658],[96.950824,34.520845],[96.960933,34.514379],[96.971292,34.518333],[96.96912,34.536007],[96.983072,34.549353],[96.983907,34.560837],[96.991343,34.571343],[96.991259,34.587518],[96.995687,34.598997],[96.99151,34.605456],[96.995771,34.62037],[97.017325,34.626921],[97.018912,34.634353],[97.011143,34.648983],[97.0073,34.676565],[96.992429,34.685989],[96.993766,34.703581],[97.002872,34.712816],[97.003373,34.723952],[96.9809,34.728453],[96.963188,34.745154],[96.951409,34.748633],[96.941968,34.768345],[96.936538,34.771962],[96.935368,34.785502],[96.943639,34.798529],[96.956087,34.812018],[96.965528,34.817395],[96.983573,34.818646],[96.995938,34.823929],[96.996439,34.840426],[97.005796,34.844133],[97.009639,34.855391],[97.01791,34.856641],[97.023006,34.872251],[97.007133,34.898694],[97.017409,34.906842],[97.047652,34.913879],[97.065697,34.907398],[97.079566,34.911611],[97.121338,34.950535],[97.156343,34.970753],[97.21307,35.000678],[97.22226,35.008863],[97.217497,35.02768],[97.204047,35.036694],[97.204297,35.043951],[97.216411,35.055875],[97.2185,35.068074],[97.225601,35.074542],[97.241725,35.077268],[97.243146,35.09667],[97.252336,35.100042],[97.264617,35.128581],[97.262444,35.139846],[97.27648,35.148847],[97.294358,35.167678],[97.304718,35.175708],[97.312822,35.187751],[97.326105,35.195501],[97.342229,35.213676],[97.361445,35.222946],[97.371136,35.232446],[97.370718,35.243374],[97.343482,35.26269],[97.348244,35.29882],[97.32126,35.29882],[97.30948,35.319459],[97.311318,35.332494],[97.296698,35.338113],[97.278067,35.318722],[97.261776,35.317709],[97.240472,35.321716],[97.217915,35.334382],[97.193353,35.331987],[97.177396,35.333507],[97.146234,35.343178],[97.127771,35.342579],[97.111229,35.347046],[97.097945,35.355656],[97.076892,35.38185],[97.056257,35.390825],[97.043391,35.407851],[97.045647,35.430808],[97.031945,35.443503],[97.017743,35.452471],[97.000366,35.472657],[96.986163,35.47845],[96.972879,35.48038],[96.963522,35.485989],[96.958009,35.476289],[96.946062,35.466542],[96.93896,35.469209],[96.941049,35.490539],[96.929854,35.498491],[96.912143,35.484885],[96.902535,35.489666],[96.894097,35.480978],[96.851573,35.496423],[96.850654,35.506074],[96.843887,35.510026],[96.825591,35.500927],[96.819158,35.503868],[96.792256,35.504787],[96.785406,35.507407],[96.771955,35.527073],[96.763016,35.52983],[96.743801,35.54329],[96.731436,35.55537],[96.712806,35.562718],[96.715479,35.573739],[96.707626,35.585034],[96.69359,35.585631],[96.690833,35.591645],[96.67496,35.592058],[96.663013,35.583335],[96.630431,35.588248],[96.617314,35.582371],[96.599185,35.582601],[96.592502,35.579111],[96.581724,35.581132],[96.569443,35.594812],[96.566102,35.60257],[96.552317,35.605691],[96.542876,35.614549],[96.526752,35.611429],[96.500102,35.616936],[96.485732,35.617532],[96.48356,35.62203],[96.461755,35.622672],[96.441704,35.635979],[96.42959,35.63419],[96.42182,35.638411],[96.405863,35.640017],[96.374033,35.649008],[96.3544,35.652541],[96.341952,35.641852],[96.33861,35.634511],[96.320815,35.641576],[96.304273,35.64309],[96.292494,35.64832],[96.265676,35.642632],[96.262585,35.646348],[96.241866,35.647357],[96.230838,35.640842],[96.224071,35.629418],[96.203686,35.6363],[96.198673,35.631987],[96.179876,35.63263],[96.134093,35.647678],[96.128997,35.634649],[96.117552,35.625104],[96.100091,35.616385],[96.086557,35.61276],[96.072688,35.613402],[96.063833,35.59619],[96.06425,35.588661],[96.057483,35.573831],[96.053974,35.55537],[96.046455,35.554911],[96.020055,35.54035],[96.01145,35.540855],[95.993405,35.532403],[95.979787,35.533046],[95.968926,35.544484],[95.968174,35.553211],[95.956729,35.565519],[95.948959,35.569193],[95.945283,35.590865],[95.925734,35.620424],[95.917045,35.617487],[95.900837,35.623728],[95.892734,35.635016],[95.885131,35.636163],[95.792564,35.639512],[95.773182,35.641898],[95.745445,35.633823],[95.736756,35.650431],[95.739513,35.657174],[95.725645,35.65222],[95.689971,35.650752],[95.684959,35.647999],[95.666746,35.654192],[95.649035,35.646394],[95.640262,35.648963],[95.632994,35.659238],[95.598323,35.655201],[95.588799,35.658596],[95.571088,35.653321],[95.55605,35.659926],[95.54427,35.655385],[95.502915,35.656394],[95.489548,35.659651],[95.479022,35.657862],[95.468662,35.646898],[95.468244,35.634924],[95.461143,35.625793],[95.460308,35.617349],[95.433824,35.601285],[95.397065,35.59775],[95.371751,35.602846],[95.357632,35.626068],[95.350113,35.624232],[95.338834,35.633272],[95.321039,35.640475],[95.29113,35.640017],[95.2791,35.637677],[95.249776,35.647219],[95.233902,35.647173],[95.212014,35.639695],[95.20132,35.645155],[95.195388,35.642494],[95.175254,35.647678],[95.176591,35.656853],[95.166733,35.672722],[95.155621,35.656807],[95.174586,35.636392],[95.143173,35.629922],[95.14969,35.610602],[95.1471,35.603442],[95.156123,35.595914],[95.148269,35.577137],[95.134819,35.573142],[95.118695,35.579616],[95.118444,35.566989],[95.126798,35.556518],[95.120031,35.546689],[95.126882,35.535343],[95.113431,35.511635],[95.099396,35.516873],[95.091292,35.532311],[95.096388,35.542188],[95.09029,35.545311],[95.065811,35.548113],[95.052611,35.547332],[95.047932,35.550777],[95.031474,35.548756],[95.021365,35.552063],[95.009836,35.546092],[94.998391,35.551007],[94.995968,35.561478],[94.976586,35.572224],[94.964722,35.564877],[94.941413,35.566759],[94.929383,35.574015],[94.931639,35.579065],[94.913426,35.581958],[94.894628,35.589579],[94.883517,35.586595],[94.877418,35.589717],[94.861545,35.585585],[94.852104,35.58632],[94.854109,35.578101],[94.838236,35.573831],[94.828127,35.583106],[94.824368,35.60459],[94.817183,35.616156],[94.804066,35.611061],[94.802813,35.602708],[94.786689,35.590956],[94.768309,35.607986],[94.76597,35.613081],[94.759036,35.606563],[94.743497,35.605462],[94.725284,35.609409],[94.718016,35.607344],[94.711666,35.594124],[94.698299,35.594353],[94.696545,35.589579],[94.68301,35.588018],[94.66555,35.592425],[94.658448,35.599082],[94.649008,35.597475],[94.642324,35.606242],[94.626952,35.595731],[94.620937,35.60179],[94.591613,35.592793],[94.579833,35.601744],[94.539314,35.604406],[94.520767,35.609455],[94.506481,35.60973],[94.48877,35.602157],[94.461284,35.60615],[94.434048,35.623636],[94.419929,35.61588],[94.407314,35.614045],[94.384256,35.617074],[94.363453,35.628867],[94.336468,35.629968],[94.313744,35.638273],[94.28041,35.633043],[94.265957,35.638503],[94.253425,35.653871],[94.267628,35.660797],[94.248496,35.662724],[94.238972,35.660981],[94.228612,35.651623],[94.214076,35.648825],[94.196114,35.661852],[94.169797,35.669191],[94.15526,35.66942],[94.136546,35.658779],[94.122511,35.640384],[94.114992,35.638411],[94.092936,35.642127],[94.073053,35.640842],[94.061941,35.636484],[94.062025,35.616293],[94.036627,35.596327],[94.017913,35.571581],[94.001455,35.568458],[93.987002,35.571535],[93.97681,35.566254],[93.957344,35.549078],[93.921587,35.524409],[93.904126,35.518987],[93.877893,35.525603],[93.851409,35.51453],[93.82008,35.515495],[93.800197,35.526614],[93.789336,35.526614],[93.749569,35.519354],[93.725508,35.509153],[93.680143,35.497526],[93.648731,35.480242],[93.639207,35.472887],[93.618822,35.446217],[93.587242,35.418388],[93.566439,35.406885],[93.541877,35.397636],[93.519738,35.393264],[93.473204,35.370941],[93.448391,35.363529],[93.42951,35.360076],[93.419401,35.360997],[93.384563,35.35782],[93.359416,35.348474],[93.345214,35.338205],[93.316391,35.32273],[93.299849,35.315636],[93.294502,35.307897],[93.292831,35.294766],[93.283809,35.289236],[93.273616,35.290573],[93.241201,35.284674],[93.215971,35.271632],[93.166262,35.259601],[93.131674,35.260339],[93.121732,35.257573],[93.095834,35.241944],[93.090988,35.236504],[93.085307,35.217735],[93.079793,35.208648],[93.066593,35.197946],[93.057821,35.185259],[93.04437,35.171785],[93.039274,35.161079],[93.042449,35.124425],[93.034094,35.088078],[93.018137,35.068536],[93.019056,35.052501],[93.013041,35.03577],[92.984887,35.001094],[92.991821,34.981577],[92.99015,34.968162],[92.976198,34.944334],[92.977368,34.907444],[92.982213,34.852843],[92.991988,34.843206],[92.984051,34.823837],[92.975279,34.778825],[92.981378,34.766861],[92.990568,34.76009],[92.997585,34.748448],[92.986223,34.720101],[92.979206,34.713651],[93.000677,34.708268],[93.009031,34.703627],[93.031337,34.69996],[93.032006,34.68571],[93.047879,34.682414],[93.064254,34.694901],[93.076117,34.693927],[93.091239,34.675497],[93.105525,34.672062],[93.119727,34.661382],[93.119727,34.650655],[93.126745,34.637929],[93.123069,34.632123],[93.135851,34.615539],[93.152811,34.607501],[93.179378,34.586356],[93.187482,34.577851],[93.208953,34.56781],[93.214133,34.56172],[93.24471,34.53796],[93.279631,34.531077],[93.288988,34.532938],[93.298178,34.540983],[93.320067,34.547772],[93.330426,34.547167],[93.351563,34.537867],[93.379383,34.530566],[93.396009,34.523636],[93.412383,34.52131],[93.4519,34.523357],[93.489829,34.521682],[93.512553,34.517589],[93.56669,34.501772],[93.627009,34.495119],[93.64188,34.498004],[93.65107,34.504889],[93.657001,34.518147],[93.667277,34.527589],[93.686409,34.528054],[93.721247,34.523589],[93.763521,34.510332],[93.771123,34.506332],[93.809387,34.5014],[93.833447,34.500749],[93.870625,34.504471],[93.89527,34.504052],[93.912564,34.498423],[93.925346,34.497539],[93.942139,34.50047],[93.953918,34.505773],[93.963944,34.506006],[93.992432,34.517915],[94.011063,34.537402],[94.034288,34.539774],[94.059184,34.551724],[94.096946,34.563068],[94.109812,34.557164],[94.122093,34.557722],[94.130698,34.569716],[94.142979,34.574876],[94.166706,34.558047],[94.183081,34.5547],[94.194192,34.559628],[94.211402,34.574643],[94.227276,34.575713],[94.24624,34.569716],[94.267461,34.567764],[94.285673,34.577711],[94.288012,34.595047],[94.301714,34.607315],[94.300711,34.628732],[94.304387,34.64053],[94.331706,34.641274],[94.349668,34.635607],[94.353595,34.643457],[94.347245,34.666768],[94.354932,34.669183],[94.371724,34.65112],[94.377823,34.651027],[94.380413,34.675776],[94.400046,34.67364],[94.409737,34.684643],[94.423271,34.686964],[94.451509,34.67884],[94.462704,34.687892],[94.463539,34.699589],[94.470891,34.704973],[94.50456,34.702235],[94.516339,34.731051],[94.517091,34.737918],[94.540484,34.749747],[94.559365,34.749654],[94.579165,34.754617],[94.608405,34.754246],[94.617846,34.750535],[94.628372,34.734577],[94.642909,34.727664],[94.662793,34.729659],[94.692284,34.721261],[94.714089,34.728453],[94.738651,34.726226],[94.746922,34.718013],[94.757281,34.718384],[94.76714,34.709103],[94.792119,34.704741],[94.810165,34.711609],[94.824785,34.700425],[94.85954,34.686082],[94.883684,34.685432],[94.903066,34.691977],[94.914512,34.688588],[94.924287,34.674522],[94.935565,34.66584],[94.957955,34.660314],[94.982768,34.660407],[94.988783,34.658039],[94.989702,34.648751],[94.981013,34.634957],[94.980512,34.62116],[95.013679,34.606804],[95.0151,34.600531],[95.01017,34.587193],[95.012927,34.57971],[95.022117,34.576689],[95.039077,34.586589],[95.053948,34.580314],[95.059545,34.574039],[95.076839,34.526612],[95.097224,34.520659],[95.115603,34.528612],[95.124292,34.525822],[95.128553,34.512937],[95.147016,34.512053],[95.160467,34.493584],[95.179515,34.485115],[95.199983,34.499074],[95.218029,34.495538],[95.224545,34.484091],[95.239583,34.46757],[95.253452,34.460821],[95.269743,34.460123],[95.281189,34.476971],[95.29514,34.474365],[95.30032,34.469432],[95.30667,34.452303],[95.31753,34.452629],[95.317697,34.464591],[95.309427,34.475622],[95.318951,34.486139],[95.344849,34.483766],[95.355877,34.478786],[95.354206,34.458866],[95.363563,34.445227],[95.3913,34.444342],[95.399989,34.441781],[95.399822,34.427021],[95.415528,34.415286],[95.422462,34.402944],[95.432738,34.392882],[95.457968,34.381002],[95.462146,34.367862],[95.477267,34.364181],[95.505255,34.348382],[95.526893,34.343581],[95.538839,34.330855],[95.555214,34.328477],[95.575265,34.307915],[95.574346,34.297609],[95.563736,34.273167],[95.56666,34.26519],[95.583452,34.254738],[95.588632,34.247972],[95.586878,34.240505],[95.567078,34.229024],[95.571338,34.220715],[95.579442,34.218614],[95.603085,34.220202],[95.630321,34.224543],[95.638257,34.223376],[95.645024,34.211939],[95.662402,34.210725],[95.680698,34.203862],[95.688133,34.194477],[95.689554,34.172761],[95.698242,34.160943],[95.691809,34.147302],[95.6949,34.135854],[95.702419,34.126882],[95.73166,34.103513],[95.751794,34.096314],[95.756222,34.090938],[95.756556,34.078735],[95.77786,34.076022],[95.783374,34.06971],[95.785045,34.05741],[95.795237,34.054463],[95.801754,34.062554],[95.819215,34.060216],[95.83208,34.047073],[95.824812,34.030279],[95.826734,34.02195],[95.846116,34.01554],[95.848873,33.997663],[95.867002,33.975335],[95.869174,33.944103],[95.892483,33.949301],[95.901589,33.945976],[95.891982,33.921948],[95.898665,33.910704],[95.922308,33.909252],[95.925901,33.903489],[95.922225,33.890369],[95.956227,33.881183],[95.960989,33.861309],[95.982627,33.868293],[95.994658,33.854652],[95.986638,33.839039],[95.989144,33.832896],[96.021225,33.822063],[96.034676,33.833459],[96.044701,33.829003],[96.043949,33.811697],[96.047625,33.803441],[96.067425,33.814887],[96.081962,33.79997],[96.107109,33.809868],[96.130668,33.788194],[96.127995,33.783643],[96.110952,33.782798],[96.101093,33.777496],[96.097501,33.769941],[96.111954,33.764732],[96.131671,33.774634],[96.13802,33.77163],[96.139858,33.76262],[96.151554,33.758161],[96.168597,33.771724],[96.175699,33.771771],[96.180294,33.76276],[96.188397,33.765811],[96.183802,33.780077],[96.208949,33.782423],[96.216051,33.789977],[96.220562,33.786223],[96.215299,33.773413],[96.22783,33.77346],[96.23159,33.755392],[96.20377,33.744032],[96.202015,33.736474],[96.215549,33.734268],[96.233511,33.740371],[96.236268,33.732859],[96.23184,33.720793],[96.240863,33.714782],[96.250721,33.717834],[96.250638,33.730653],[96.256068,33.733657],[96.258825,33.718633],[96.263337,33.715627],[96.270438,33.729995],[96.284891,33.726286],[96.286646,33.733094],[96.295668,33.733892],[96.303856,33.728681],[96.324575,33.724267],[96.330841,33.743892],[96.346129,33.742483],[96.350641,33.752294],[96.365929,33.756096],[96.37161,33.761775]]]]}}]}
);
}));
......@@ -2,7 +2,7 @@
<div class="naturalBuilding itemForm">
<el-form :model="naturalForm" :rules="rules" ref="formList" label-width="115px" :key="key">
<div v-for="(item, index) in naturalForm.naturalList" :key="index" class="naturalBuilding-item">
<p class="naturalBuilding-name">自然幢{{ index + 1 }}</p>
<p class="naturalBuilding-name obligee-item-name">自然幢{{ index + 1 }}</p>
<div class="naturalBuilding-list">
<el-row>
<el-col :span="8">
......@@ -330,7 +330,7 @@ export default {
default: "",
},
},
data() {
data () {
return {
naturalForm: {
naturalList: [
......@@ -366,7 +366,7 @@ export default {
};
},
methods: {
async featchData() {
async featchData () {
try {
let { result: res } = await kttFwZrz.getKttFwZrzById(this.bsmSjsb);
this.naturalForm.naturalList = res;
......@@ -375,7 +375,7 @@ export default {
this.$refs.msg.messageShow();
}
},
handleUpdateForm() {
handleUpdateForm () {
return new Promise(async (resolve) => {
try {
let res = await kttFwZrz.updateKttFwZrz(this.naturalForm.naturalList);
......
/*
* FileName: lb-column.vue
* Remark: element-column
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 9:58:23 am
* Last Modified: Tuesday, 19th March 2019 10:14:42 am
* Modified By: 任超
*/
<template>
<el-table-column v-bind="$attrs" v-on="$listeners" :prop="column.prop" :label="column.label" :type="column.type"
:index="column.index" :column-key="column.columnKey" :width="column.width" :min-width="column.minWidth"
:fixed="column.fixed" :scoped-slot="column.renderHeader" :sortable="column.sortable || false"
:sort-method="column.sortMethod" :sort-by="column.sortBy" :sort-orders="column.sortOrders"
:resizable="column.resizable || true" :formatter="column.formatter"
:show-overflow-tooltip="column.showOverflowTooltip || false" :align="column.align || align || 'center'"
:header-align="column.headerAlign || headerAlign || column.align || align || 'center'"
:class-name="column.className" :label-class-name="column.labelClassName" :selectable="column.selectable"
:reserve-selection="column.reserveSelection || false" :filters="column.filters"
:filter-placement="column.filterPlacement" :filter-multiple="column.filterMultiple"
:filter-method="column.filterMethod" :filtered-value="column.filteredValue">
<template slot="header" slot-scope="scope">
<lb-render v-if="column.renderHeader" :scope="scope" :render="column.renderHeader">
</lb-render>
<span v-else>{{ scope.column.label }}</span>
</template>
<template slot-scope="scope">
<lb-render :scope="scope" :render="column.render">
</lb-render>
</template>
<template v-if="column.children">
<lb-column v-for="(col, index) in column.children" :key="index" :column="col">
</lb-column>
</template>
</el-table-column>
</template>
<script>
import LbRender from './LbRender'
import forced from './forced.js'
export default {
name: 'LbColumn',
props: {
column: Object,
headerAlign: String,
align: String
},
components: {
LbRender
},
methods: {
setColumn () {
if (this.column.type) {
this.column.renderHeader = forced[this.column.type].renderHeader
this.column.render = this.column.render || forced[this.column.type].renderCell
}
if (this.column.formatter) {
this.column.render = (h, scope) => {
return <span>{scope.column.formatter(scope.row, scope.column, scope.row, scope.$index)}</span>
}
}
if (!this.column.render) {
this.column.render = (h, scope) => {
return <span>{scope.row[scope.column.property]}</span>
}
}
}
},
watch: {
column: {
handler () {
this.setColumn()
},
immediate: true
}
}
}
</script>
/*
* FileName: lb-render.vue
* Remark: 自定义render
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 10:15:30 am
* Last Modified: Tuesday, 19th March 2019 10:15:32 am
* Modified By: 任超
*/
<script>
export default {
name: 'LbRender',
functional: true,
props: {
scope: Object,
render: Function
},
render: (h, ctx) => {
return ctx.props.render ? ctx.props.render(h, ctx.props.scope) : ''
}
}
</script>
export default {
selection: {
renderHeader: (h, { store }) => {
return (
<el-checkbox
disabled={store.states.data && store.states.data.length === 0}
indeterminate={
store.states.selection.length > 0 && !store.states.isAllSelected
}
nativeOn-click={store.toggleAllSelection}
value={store.states.isAllSelected}
/>
)
},
renderCell: (h, { row, column, store, $index }) => {
return (
<el-checkbox
nativeOn-click={event => event.stopPropagation()}
value={store.isSelected(row)}
disabled={
column.selectable
? !column.selectable.call(null, row, $index)
: false
}
on-input={() => {
store.commit('rowSelectedChanged', row)
}}
/>
)
},
sortable: false,
resizable: false
},
index: {
renderHeader: (h, scope) => {
return <span>{scope.column.label || '#'}</span>
},
renderCell: (h, { $index, column }) => {
let i = $index + 1
const index = column.index
if (typeof index === 'number') {
i = $index + index
} else if (typeof index === 'function') {
i = index($index)
}
return <div>{i}</div>
},
sortable: false
},
expand: {
renderHeader: (h, scope) => {
return <span>{scope.column.label || ''}</span>
},
renderCell: (h, { row, store }, proxy) => {
const expanded = store.states.expandRows.indexOf(row) > -1
return (
<div
class={
'el-table__expand-icon ' +
(expanded ? 'el-table__expand-icon--expanded' : '')
}
on-click={e => proxy.handleExpandClick(row, e)}
>
<i class='el-icon el-icon-arrow-right' />
</div>
)
},
sortable: false,
resizable: false,
className: 'el-table__expand-column'
}
}
/*
* FileName: lb-table.vue
* Remark: element table
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 9:55:27 am
* Last Modified: Tuesday, 19th March 2019 9:55:34 am
* Modified By: 任超
*/
<template>
<div :class="['lb-table', customClass]">
<el-table v-if="!heightNumSetting" class="table-fixed" :row-style="{ height: '50px' }" ref="elTable" :border='border'
:row-class-name="tableRowClassName" :show-header='showHeader' @row-click="singleElection" v-bind="$attrs"
:height="tableHeight" v-on="$listeners" :data="data" style="width: 100%"
:span-method="this.merge ? this.mergeMethod : this.spanMethod">
<el-table-column width="45" align="center" v-if="isRadio">
<template slot-scope="scope">
<el-radio v-model="selected" :label="scope.$index"></el-radio>
</template>
</el-table-column>
<el-table-column :label="downTitle" align="center">
<lb-column v-bind="$attrs" v-for="(item, index) in column" :key="index" :column="item">
</lb-column>
</el-table-column>
</el-table>
<br>
<el-pagination class="lb-table-pagination" v-if="pagination" v-bind="$attrs" v-on="$listeners" background
layout="total, prev, pager, next" @current-change="paginationCurrentChange"
:style="{ 'margin-top': paginationTop, 'text-align': paginationAlign }">
</el-pagination>
</div>
</template>
<script>
import LbColumn from './LbColumn'
export default {
props: {
column: Array,
data: Array,
spanMethod: Function,
pagination: {
type: Boolean,
default: true,
},
downExcel: {
type: Boolean,
default: false,
},
downTitle: {
type: String,
default: '标题'
},
isRadio: {
type: Boolean,
default: false,
},
border: {
type: Boolean,
default: false,
},
showHeader: {
type: Boolean,
default: true,
},
paginationTop: {
type: String,
default: '0',
},
heightNum: {
type: Number,
default: 355,
},
maxHeight: {
type: Number,
default: 500
},
heightNumSetting: {
type: Boolean,
default: false,
},
customClass: {
type: String,
default: '',
},
paginationAlign: {
type: String,
default: 'left',
},
merge: Array,
},
components: {
LbColumn,
},
data () {
return {
tableHeight: 'auto',
mergeLine: {},
mergeIndex: {},
selected: ''
}
},
created () {
this.getMergeArr(this.data, this.merge)
this.getHeight()
},
computed: {
dataLength () {
return [] || this.data.length
},
},
methods: {
// 单选
singleElection (row) {
this.selected = this.data.indexOf(row);
},
tableRowClassName ({ row, rowIndex }) {
if (rowIndex % 2 === 1) {
return 'interlaced';
}
},
getHeight () {
if (!this.heightNumSetting) {
let _this = this
if (this.heightNum) {
_this.$nextTick(() => {
window.addEventListener('resize', () => {
_this.tableHeight = _this.calcHeightx(230)
});
_this.tableHeight = _this.calcHeightx(230)
})
} else {
_this.tableHeight = window.innerHeight - _this.heightNum
}
}
},
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 (wappered) {
//通过原生方法,获取dom节点的高度------获取element-ui table表格body的元素
let wapper = window.document.getElementsByClassName('el-table__body-wrapper');
//通过原生方法,获取dom节点的高度------获取element-ui table表格header的元素
let header = window.document.getElementsByClassName('el-table__header-wrapper');
//必须加延时,要不然赋不上去值
setTimeout(() => {
//通过上边计算得到的table高度的value值,减去table表格的header高度,剩下的通过dom节点直接强行赋给table表格的body
wapper[0].style.height = (value - header[0].clientHeight)
}, 100)
}
return res;
},
clearSelection () {
this.$refs.elTable.clearSelection()
},
toggleRowSelection (row, selected) {
this.$refs.elTable.toggleRowSelection(row, selected)
},
toggleAllSelection () {
this.$refs.elTable.toggleAllSelection()
},
toggleRowExpansion (row, expanded) {
this.$refs.elTable.toggleRowExpansion(row, expanded)
},
setCurrentRow (row) {
this.$refs.elTable.setCurrentRow(row)
},
clearSort () {
this.$refs.elTable.clearSort()
},
clearFilter (columnKey) {
this.$refs.elTable.clearFilter(columnKey)
},
doLayout () {
this.$refs.elTable.doLayout()
},
sort (prop, order) {
this.$refs.elTable.sort(prop, order)
},
paginationCurrentChange (val) {
this.$emit('p-current-change', val)
},
getMergeArr (tableData, merge) {
if (!merge) return
this.mergeLine = {}
this.mergeIndex = {}
merge.forEach((item, k) => {
tableData.forEach((data, i) => {
if (i === 0) {
this.mergeIndex[item] = this.mergeIndex[item] || []
this.mergeIndex[item].push(1)
this.mergeLine[item] = 0
} else {
if (data[item] === tableData[i - 1][item]) {
this.mergeIndex[item][this.mergeLine[item]] += 1
this.mergeIndex[item].push(0)
} else {
this.mergeIndex[item].push(1)
this.mergeLine[item] = i
}
}
})
})
},
mergeMethod ({ row, column, rowIndex, columnIndex }) {
const index = this.merge.indexOf(column.property)
if (index > -1) {
const _row = this.mergeIndex[this.merge[index]][rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col,
}
}
},
},
watch: {
merge () {
this.getMergeArr(this.data, this.merge)
},
dataLength () {
this.getMergeArr(this.data, this.merge)
}
},
}
</script>
<style rel="stylesheet/scss" scoped lang="scss">
.lb-table {
margin-top: 1px;
.interlaced {
background: #fafcff;
border: 1px solid #ebf2fa;
}
}
/deep/.el-table .cell {
padding-left: 3px;
padding-right: 3px;
}
/deep/.el-radio__label {
display: none;
}
</style>
## 这是对于element-table 进行的二次封装
### 文档地址
<!-- table 已经全局注册不需要每个页面单独注册 -->
[Windows/Mac/Linux 全平台客户端](https://github.liubing.me/lb-element-table/zh/guide/)
<template>
<!--上报统计柱状图 -->
<!--上报统计柱状图 -->
<Echart
:options="options"
id="bottomLeftChart"
height="100%"
width="100%"
></Echart>
width="100%"></Echart>
</template>
<script>
import Echart from "@/common/echart";
export default {
data() {
return {
options: {},
};
},
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({}),
import Echart from "@/common/echart";
export default {
data () {
return {
options: {},
};
},
},
watch: {
cdata: {
handler(newData) {
this.options = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
grid: {
left: "5%",
right: "8%",
bottom: "5%",
containLabel: true,
},
xAxis: {
type: "value",
splitLine: { show: false },
axisTick: { show: false },
axisLine: {
show: true,
lineStyle: {
color: "#01F3F5",
},
},
axisLabel: {
show: true,
textStyle: {
color: "#01F3F5",
fontSize: 12,
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({}),
},
},
watch: {
cdata: {
handler (newData) {
this.options = {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
},
},
yAxis: {
type: "category",
data: newData.category,
axisLine: {
show: true,
lineStyle: {
color: "#01F3F5",
},
grid: {
left: "5%",
right: "8%",
bottom: "5%",
containLabel: true,
},
},
series: [
{
name: "成功",
type: "bar",
stack: "总量",
barWidth: 18,
label: {
xAxis: {
type: "value",
splitLine: { show: false },
axisTick: { show: false },
axisLine: {
show: true,
formatter: function (params) {
if (params.value > 0) {
return params.value;
} else {
return '';
}
}
lineStyle: {
color: "#01F3F5",
},
},
itemStyle: {
normal: {
color: "#5fba7d",
axisLabel: {
show: true,
textStyle: {
color: "#01F3F5",
fontSize: 12,
},
},
data: newData.barData,
},
{
name: "失败",
type: "bar",
stack: "总量",
label: {
yAxis: {
type: "category",
data: newData.category,
axisLine: {
show: true,
formatter: function (params) {
if (params.value > 0) {
return params.value;
} else {
return '';
}
}
lineStyle: {
color: "#01F3F5",
},
},
},
series: [
{
name: "成功",
type: "bar",
stack: "总量",
barWidth: 18,
label: {
show: true,
formatter: function (params) {
if (params.value > 0) {
return params.value;
} else {
return '';
}
}
},
itemStyle: {
normal: {
color: "#5fba7d",
},
},
data: newData.barData,
},
itemStyle: {
normal: {
// 这里设置圆角
color: "#c97168",
{
name: "失败",
type: "bar",
stack: "总量",
label: {
show: true,
formatter: function (params) {
if (params.value > 0) {
return params.value;
} else {
return '';
}
}
},
itemStyle: {
normal: {
// 这里设置圆角
color: "#c97168",
},
},
data: newData.lineData,
},
data: newData.lineData,
},
],
};
],
};
},
immediate: true,
deep: true,
},
immediate: true,
deep: true,
},
},
};
};
</script>
......
......@@ -3,47 +3,47 @@
</template>
<script>
import Chart from "./Chart";
import work from "@/api/work";
export default {
data() {
return {
cdata: {
category: [],
lineData: [],
barData: [],
},
};
},
components: {
Chart,
},
mounted() {
window.addEventListener("resize", () => {
import Chart from "./Chart";
import work from "@/api/work";
export default {
data () {
return {
cdata: {
category: [],
lineData: [],
barData: [],
},
};
},
components: {
Chart,
},
mounted () {
window.addEventListener("resize", () => {
this.submitViews();
});
this.submitViews();
});
this.submitViews();
},
methods: {
async submitViews() {
try {
let { result: res } = await work.submitViews("A20");
this.cdata.category = [];
this.cdata.barData = [];
this.cdata.lineData = [];
res.map((item) => {
return (
this.cdata.category.push(item.areaName),
this.cdata.barData.push(item.successCount),
this.cdata.lineData.push(item.failureCount)
);
});
} catch (error) {
// this.$refs.msg.messageShow();
}
},
},
};
methods: {
async submitViews () {
try {
let { result: res } = await work.submitViews("A20");
this.cdata.category = [];
this.cdata.barData = [];
this.cdata.lineData = [];
res.map((item) => {
return (
this.cdata.category.push(item.areaName),
this.cdata.barData.push(item.successCount),
this.cdata.lineData.push(item.failureCount)
);
});
} catch (error) {
// this.$refs.msg.messageShow();
}
},
},
};
</script>
<style lang="scss" scoped></style>
......
<template>
<!--登记类型总量柱状图 -->
<Echart :options="options" id="bottomLeftChart" height="100%" width="100%" class="" ></Echart>
<Echart :options="options" id="bottomLeftChart" height="100%" width="100%" class=""></Echart>
</template>
<script>
import Echart from "@/common/echart";
export default {
data () {
return {
options: {},
};
},
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({}),
import Echart from "@/common/echart";
export default {
data () {
return {
options: {},
};
},
},
watch: {
cdata: {
handler (newData) {
this.options = {
grid: {
// 让图表占满容器
top: "20%",
left: "10%",
right: "5%",
bottom: "16%",
},
xAxis: {
data: newData.category,
axisLabel: {
show: true,
color: "#ffff",
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({}),
},
},
watch: {
cdata: {
handler (newData) {
this.options = {
grid: {
// 让图表占满容器
top: "20%",
left: "12%",
right: "5%",
bottom: "16%",
},
xAxis: {
data: newData.category,
axisLabel: {
show: true,
color: "#ffff",
textStyle: {
fontWeight: "normal",
fontSize: "8",
},
},
axisTick: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: "rgba(95, 180, 237, 0.32)",
},
}
},
yAxis: {
splitLine: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: "rgba(95, 180, 237, 0.32)",
axisTick: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: "rgba(95, 180, 237, 0.32)",
},
}
},
axisTick: {
show: false,
},
axisLabel: {
color: "#ffff",
},
},
series: [
{
// 顶部圆片
type: "pictorialBar",
animation: false,
itemStyle: {
color: "rgba(115, 240, 252, 1)",
yAxis: {
splitLine: {
show: false,
},
symbolRepeat: false,
symbolSize: [15, 8],
symbolMargin: 1,
z: 10,
data: newData.lineData,
symbolPosition: "end",
symbolOffset: [0, -4],
},
{
// 底部圆片
type: "pictorialBar",
animation: false,
itemStyle: {
color: "rgba(50, 96, 225, 0.8)",
axisLine: {
show: true,
lineStyle: {
color: "rgba(95, 180, 237, 0.32)",
},
},
axisTick: {
show: false,
},
axisLabel: {
color: "#ffff",
},
symbolRepeat: false,
symbolSize: [15, 8],
symbolMargin: 1,
z: 10,
data: newData.lineData,
symbolPosition: "start",
symbolOffset: [0, 3],
},
{
barWidth: 15,
animation: false,
series: [
{
// 顶部圆片
type: "pictorialBar",
animation: false,
itemStyle: {
color: "rgba(115, 240, 252, 1)",
},
symbolRepeat: false,
symbolSize: [15, 8],
symbolMargin: 1,
z: 10,
data: newData.lineData,
symbolPosition: "end",
symbolOffset: [0, -4],
},
{
// 底部圆片
type: "pictorialBar",
animation: false,
type: "bar",
label: {
show: true,
position: "top",
textStyle: {
color: "#ffff",
itemStyle: {
color: "rgba(50, 96, 225, 0.8)",
},
symbolRepeat: false,
symbolSize: [15, 8],
symbolMargin: 1,
z: 10,
data: newData.lineData,
symbolPosition: "start",
symbolOffset: [0, 3],
},
itemStyle: {
color: this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 1, color: "rgba(82, 180, 249, 0.35)" },
{ offset: 0, color: "rgba(82, 180, 249, 1)" },
]),
{
barWidth: 15,
animation: false,
type: "bar",
label: {
show: true,
position: "top",
textStyle: {
color: "#ffff",
},
},
itemStyle: {
color: this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 1, color: "rgba(82, 180, 249, 0.35)" },
{ offset: 0, color: "rgba(82, 180, 249, 1)" },
]),
},
data: newData.lineData,
},
data: newData.lineData,
},
],
}
],
}
},
immediate: true,
deep: true,
},
immediate: true,
deep: true,
},
},
};
};
</script>
......
<template>
<!-- 地图 -->
<Echart id="centreLeft2Chart" class="centreLeft2Chart":key="key" ref="centreLeft2ChartRef" width="100%" height="100%"
<Echart
id="centreLeft2Chart"
class="centreLeft2Chart"
:key="key"
ref="centreLeft2ChartRef"
width="100%"
height="100%"
:options="options"></Echart>
</template>
<script>
import Echart from '@/common/echart';
export default {
data () {
return {
options: {},
max: "100", //最大value值
min: "1", // 最小value值
key: 0
};
},
components: {
Echart,
},
props: {
cdata: {
type: Array,
default: () => [],
import Echart from "@/common/echart";
import { mapGetters } from "vuex";
export default {
data () {
return {
options: {},
max: "100", //最大value值
min: "1", // 最小value值
key: 0,
mapjson: "",
};
},
},
mounted() {
window.addEventListener("resize", () => {
this.key++
}); },
watch: {
cdata: {
handler (newData) {
let _this = this;
// 设置点的位置(经纬度)
const geoCoordMap = {
汉台区: [107.03187, 33.06774, 20],
南郑区: [106.94024, 33.00299, 20],
城固县: [107.33367, 33.15661, 20],
洋县: [107.545837, 33.222739, 20],
西乡县: [107.76867, 32.98411, 20],
镇巴县: [107.89648, 32.53487, 20],
勉县: [106.673221, 33.153553, 20],
留坝县: [106.92233, 33.61606, 20],
佛坪县: [107.98974, 33.52496, 20],
宁强县: [106.25958, 32.82881, 20],
略阳县: [106.15399, 33.33009, 20],
};
let convertData = function (data) {
let scatterData = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
scatterData.push({
name: data[i].name,
value: geoCoord.concat(data[i].value),
});
}
}
return scatterData;
};
this.options = {
showLegendSymbol: true,
tooltip: {
trigger: 'item',
textStyle: {
fontSize: 14,
lineHeight: 22,
components: {
Echart,
},
created () { },
props: {
cdata: {
type: Array,
default: () => [],
},
},
mounted () {
window.addEventListener("resize", () => {
this.key++;
});
this.getDistrictcode();
},
watch: {
cdata: {
handler (newData) {
let _this = this;
// 设置点的位置(经纬度)
const geoCoordMap = {
汉台区: [107.03187, 33.06774, 20],
南郑区: [106.94024, 33.00299, 20],
城固县: [107.33367, 33.15661, 20],
洋县: [107.545837, 33.222739, 20],
西乡县: [107.76867, 32.98411, 20],
镇巴县: [107.89648, 32.53487, 20],
勉县: [106.673221, 33.153553, 20],
留坝县: [106.92233, 33.61606, 20],
佛坪县: [107.98974, 33.52496, 20],
宁强县: [106.25958, 32.82881, 20],
略阳县: [106.15399, 33.33009, 20],
};
this.options = {
showLegendSymbol: true,
tooltip: {
trigger: "item",
textStyle: {
fontSize: 14,
lineHeight: 22,
},
position: (point) => {
// 固定在顶部
return [point[0] + 50, point[1] - 20];
},
// 如果需要自定义 tooltip样式,需要使用formatter
formatter: (params) => {
return `<div style="">${params.name}:${params.value + "个"
}</div>`;
},
},
position: point => {
// 固定在顶部
return [point[0] + 50, point[1] - 20];
visualMap: {
min: 0,
max: _this.max,
bottom: "13%",
left: 50,
splitNumber: 6,
seriesIndex: [0],
itemWidth: 20, // 每个图元的宽度
itemGap: 2, // 每两个图元之间的间隔距离,单位为px
pieces: [
// 自定义每一段的范围,以及每一段的文字
{ gte: 100, label: "100以上", color: "#035cf5" }, // 不指定 max,表示 max 为无限大(Infinity)。
{ gte: 50, lte: 6000, label: "20-100", color: "#3375e4" },
{ gte: 20, lte: 2000, label: "1-200", color: "#6797ef" },
{ gte: 1, lte: 1000, label: "1-20", color: "#96b5ef" },
],
textStyle: {
color: "#737373",
},
},
// 如果需要自定义 tooltip样式,需要使用formatter
formatter: params => {
return `<div style="">${params.name}:${params.value + "个"}</div>`
}
},
visualMap: {
min: 0,
max: _this.max,
bottom: '13%',
left: 50,
splitNumber: 6,
seriesIndex: [0],
itemWidth: 20, // 每个图元的宽度
itemGap: 2, // 每两个图元之间的间隔距离,单位为px
pieces: [ // 自定义每一段的范围,以及每一段的文字
{ gte: 100, label: '100以上', color: '#035cf5' }, // 不指定 max,表示 max 为无限大(Infinity)。
{ gte: 50, lte: 6000, label: '20-100', color: '#3375e4' },
{ gte: 20, lte: 2000, label: '1-200', color: '#6797ef' },
{ gte: 1, lte: 1000, label: '1-20', color: '#96b5ef' },
],
textStyle: {
color: '#737373'
}
},
geo: {
aspectScale: 1, //长宽比
zoom: 1.1,
mapType: '汉中市', // 自定义扩展图表类型
top: '15%',
left: '10%',
map: '汉中市',
itemStyle: {
normal: {//阴影
areaColor: '#5689FD ',
shadowColor: '#21371d',
borderWidth: 0,
shadowOffsetX: 2,
shadowOffsetY: 25
}
}
},
series: [
{
type: 'map',
geo: {
aspectScale: 1, //长宽比
zoom: 1.1,
mapType: '汉中市', // 自定义扩展图表类型
top: '15%',
left: '10%',
mapType: "", // 自定义扩展图表类型
top: "15%",
left: "10%",
map: "汉中市",
itemStyle: {
normal: {
areaColor: 'rgba(19,54,162,.5)',
borderColor: 'rgba(0,242,252,.5)',
borderWidth: 2,
shadowBlur: 1,
borderColor: 'rgb(155, 200, 200)',
shadowColor: '#44f2fc',
//阴影
areaColor: "#5689FD ",
shadowColor: "#21371d",
borderWidth: 0,
shadowOffsetX: 2,
shadowOffsetY: 25,
},
// emphasis: {
// areaColor: '#4f7fff',
// borderColor: 'rgba(0,242,252,.5)',
// borderWidth: 2,
// shadowBlur: 10,
// shadowColor: '#00f2fc',
// },
},
label: {
formatter: params => {
return `${params.name}\n${params.value+"个"}`;
},
show: true,
position: 'insideRight',
textStyle: {
fontSize: 14,
color: '#efefef',
series: [
{
type: "map",
aspectScale: 1, //长宽比
zoom: 1.1,
mapType: "汉中市", // 自定义扩展图表类型
top: "15%",
left: "10%",
itemStyle: {
normal: {
areaColor: "rgba(19,54,162,.5)",
borderColor: "rgba(0,242,252,.5)",
borderWidth: 2,
shadowBlur: 1,
borderColor: "rgb(155, 200, 200)",
shadowColor: "#44f2fc",
},
},
emphasis: {
label: {
formatter: (params) => {
return `${params.name}\n${params.value + "个"}`;
},
show: true,
position: "insideRight",
textStyle: {
color: '#fff',
}
}
fontSize: 14,
color: "#efefef",
},
emphasis: {
textStyle: {
color: "#fff",
},
},
},
data: newData,
},
data: newData,
}
],
};
// 重新选择区域
this.handleMapRandomSelect();
},
],
};
// 重新选择区域
this.handleMapRandomSelect();
},
immediate: true,
deep: true,
immediate: true,
deep: true,
},
},
},
methods: {
// 开启定时器
startInterval () {
const _self = this;
// 应通过接口获取配置时间,暂时写死5s
const time = 2000;
if (this.intervalId !== null) {
clearInterval(this.intervalId);
}
this.intervalId = setInterval(() => {
this.$refs.centreLeft2ChartRef && _self.reSelectMapRandomArea();
}, time);
computed: {
...mapGetters(["sidebar", "dicData"]),
logoName () {
return (
this.dicData["sysCode"].filter((item) => { return item.DCODE == "areaMap" })
);
},
},
// 重新随机选中地图区域
reSelectMapRandomArea () {
const length = 9;
this.$nextTick(() => {
try {
const map = this.$refs.centreLeft2ChartRef.chart;
let index = Math.floor(Math.random() * length);
while (index === this.preSelectMapIndex || index >= length) {
index = Math.floor(Math.random() * length);
}
map.dispatchAction({
type: 'mapUnSelect',
seriesIndex: 0,
dataIndex: this.preSelectMapIndex,
});
map.dispatchAction({
type: 'showTip',
seriesIndex: 0,
dataIndex: index,
});
map.dispatchAction({
type: 'mapSelect',
seriesIndex: 0,
dataIndex: index,
});
this.preSelectMapIndex = index;
} catch (error) {
console.log(error)
methods: {
// 根据行政区代码匹配行政区
getDistrictcode () {
this.mapjson = ""
if (this.logoName[0].DNAME) {
this.mapjson = this.logoName[0].DNAME;
require(`@/common/map/${this.mapjson}.js`);
}
});
},
handleMapRandomSelect () {
this.$nextTick(() => {
try {
const map = this.$refs.centreLeft2ChartRef.chart;
const _self = this;
setTimeout(() => {
_self.reSelectMapRandomArea();
}, 0);
// 移入区域,清除定时器、取消之前选中并选中当前
map.on('mouseover', function (params) {
clearInterval(_self.intervalId);
},
// 开启定时器
startInterval () {
const _self = this;
// 应通过接口获取配置时间,暂时写死5s
const time = 2000;
if (this.intervalId !== null) {
clearInterval(this.intervalId);
}
this.intervalId = setInterval(() => {
this.$refs.centreLeft2ChartRef && _self.reSelectMapRandomArea();
}, time);
},
// 重新随机选中地图区域
reSelectMapRandomArea () {
const length = 9;
this.$nextTick(() => {
try {
const map = this.$refs.centreLeft2ChartRef.chart;
let index = Math.floor(Math.random() * length);
while (index === this.preSelectMapIndex || index >= length) {
index = Math.floor(Math.random() * length);
}
map.dispatchAction({
type: 'mapUnSelect',
type: "mapUnSelect",
seriesIndex: 0,
dataIndex: _self.preSelectMapIndex,
dataIndex: this.preSelectMapIndex,
});
map.dispatchAction({
type: 'mapSelect',
type: "showTip",
seriesIndex: 0,
dataIndex: params.dataIndex,
dataIndex: index,
});
_self.preSelectMapIndex = params.dataIndex;
});
// 移出区域重新随机选中地图区域,并开启定时器
map.on('globalout', function () {
_self.reSelectMapRandomArea();
_self.startInterval();
});
this.startInterval();
} catch (error) {
console.log(error)
}
});
map.dispatchAction({
type: "mapSelect",
seriesIndex: 0,
dataIndex: index,
});
this.preSelectMapIndex = index;
} catch (error) {
console.log(error);
}
});
},
handleMapRandomSelect () {
this.$nextTick(() => {
try {
const map = this.$refs.centreLeft2ChartRef.chart;
const _self = this;
setTimeout(() => {
_self.reSelectMapRandomArea();
}, 0);
// 移入区域,清除定时器、取消之前选中并选中当前
map.on("mouseover", function (params) {
clearInterval(_self.intervalId);
map.dispatchAction({
type: "mapUnSelect",
seriesIndex: 0,
dataIndex: _self.preSelectMapIndex,
});
map.dispatchAction({
type: "mapSelect",
seriesIndex: 0,
dataIndex: params.dataIndex,
});
_self.preSelectMapIndex = params.dataIndex;
});
// 移出区域重新随机选中地图区域,并开启定时器
map.on("globalout", function () {
_self.reSelectMapRandomArea();
_self.startInterval();
});
this.startInterval();
} catch (error) {
console.log(error);
}
});
},
},
},
};
};
</script>
<style>
</style>
<style></style>
......
......@@ -4,75 +4,77 @@
id="centreLeft1Chart"
:key="key"
height="1.0417rem"
width="80%"
></Echart>
width="80%"></Echart>
</template>
<script>
import Echart from "@/common/echart";
export default {
components: {
Echart,
},
data() {
return {
key: 0,
};
},
props: {
cdata: {
type: Object,
default: () => ({}),
import Echart from "@/common/echart";
export default {
components: {
Echart,
},
},
watch: {
cdata: {
handler(newData) {
data () {
return {
key: 0,
};
},
props: {
cdata: {
type: Object,
default: () => ({}),
},
},
watch: {
cdata: {
handler (newData) {
this.options = {
color: [
"#37a2da",
"#32c5e9",
"#9fe6b8",
"#ffdb5c",
"#ff9f7f",
"#8378ea",
"#fb7293",
"#e7bcf3",
this.options = {
color: [
"#37a2da",
"#32c5e9",
"#9fe6b8",
"#ffdb5c",
"#ff9f7f",
"#8378ea",
"#fb7293",
"#e7bcf3",
],
series: [
{
name: "Access From",
type: "pie",
radius: ["54%", "70%"],
avoidLabelOverlap: true,
label: {
formatter: (params) => {
// console.log(params)
return `${params.name}(${params.value}`;
],
series: [
{
name: "Access From",
type: "pie",
radius: ["54%", "70%"],
avoidLabelOverlap: true,
label: {
formatter: (params) => {
// console.log(params)
return `${params.name}\n(${params.value})`;
},
position: "outer",
alignTo: "edge",
margin: 5
},
},
labelLine: {
lineStyle: {
width: 3,
labelLine: {
lineStyle: {
width: 3,
},
},
},
data: newData.seriesData,
}
],
};
this.key++;
data: newData.seriesData,
}
],
};
this.key++;
},
immediate: true,
deep: true,
},
immediate: true,
deep: true,
},
},
};
};
</script>
<style lang="scss" scoped>
#centreLeft1Chart {
margin-bottom: 0.0521rem;
margin-left: .3125rem;
}
#centreLeft1Chart {
margin-bottom: 0.0521rem;
margin-left: 0.3125rem;
}
</style>
......
<!--
功能:结果
作者:calliope
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 11:09:01
-->
<template>
<div class='result'>
<p>响应xml</p>
<el-input type="textarea" disabled :rows="6" class="resulttext" placeholder="响应xml" v-model="REPMSGXML">
</el-input>
<p>错误信息</p>
<el-input type="textarea" disabled :rows="6" class="resulttext" placeholder="错误信息" v-model="ERRORINFO">
</el-input>
<div class="result-con" style="margin-bottom: 15px;">
<p>响应xml</p>
<el-input type="textarea" disabled :rows="6" class="resulttext" placeholder="响应xml" v-model="REPMSGXML">
</el-input>
</div>
<div class="result-con" style="margin-top: 15px;">
<p>错误信息</p>
<el-input type="textarea" disabled :rows="6" class="resulttext" placeholder="错误信息" v-model="ERRORINFO">
</el-input>
</div>
</div>
</template>
<script>
......@@ -40,21 +45,40 @@ export default {
<style scoped lang='scss'>
@import '~@/styles/public.scss';
.result {
padding: 15px;
p {
color: #ffffff;
line-height: 26px;
font-size: 18px;
}
height: 100%;
/deep/.el-textarea__inner {
min-height: 33vh !important;
background-color: #08346F !important;
height: 30vh !important;
color: #ffffff;
border: none !important;
color: #ffffff;
}
&-con {
background: #04275B;
border-radius: 2px;
padding: 10px;
box-sizing: border-box;
p {
color: #2997E8;
font-size: 14px;
position: relative;
padding-left: 10px;
}
p::before {
position: absolute;
content: '';
width: 3px;
height: 10px;
background-color: #2997E8;
left: 0;
top: 3px;
}
}
}
</style>
......
<template>
<!-- 编辑 -->
<el-dialog :close-on-click-modal="false" top="0" @close="closeDialog"
custom-class="dialogBox editDialogBox mainCenter" :visible.sync="dialogVisible" width="85%">
<el-dialog :close-on-click-modal="false" top="0" @close="closeDialog" custom-class="dialogBox editDialogBox mainCenter"
:visible.sync="dialogVisible" width="92%">
<div slot="title" class="dialog_title" ref="dialogTitle">
{{ title || '标题' }}
{{ title || '详情' }}
</div>
<div class="editDialogBox-box">
<el-tabs v-model="titleName" type="card" @tab-click="handleTitleTab">
<el-tab-pane label="数据模型" name="sjmx"></el-tab-pane>
<el-tab-pane v-if="visiableXml" label="xml报文" name="xml"></el-tab-pane>
<el-tab-pane v-if="visiableXml" label="响应结果" name="xyjg"></el-tab-pane>
</el-tabs>
<div class="dialog-from" v-if="titleName == 'sjmx'">
<el-row>
<el-col :span="5">
<span>业务报文ID:</span>
<p>{{ dataReport.BizMsgId }}</p>
</el-col>
<el-col :span="6">
<span>接入报文ID:</span>
<p>{{ dataReport.ASID }}</p>
</el-col>
<el-col :span="6">
<span>行政区划编码:</span>
<p>{{ dataReport.AreaCode }}</p>
</el-col>
<el-col :span="7">
<span>上次不动产单元号:</span>
<p>{{ dataReport.PreEstateNum }}</p>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<span>业务编码:</span>
<p>{{ dataReport.RecType }}</p>
</el-col>
<el-col :span="6">
<span>权利类型:</span>
<p>{{ this.dicStatus(dataReport.RightType, 'A8') }}</p>
</el-col>
<el-col :span="6">
<span>登记类型:</span>
<p>{{ this.dicStatus(dataReport.RegType, 'A21') }}</p>
</el-col>
<el-col :span="7">
<span>不动产权证书数量:</span>
<p>{{ dataReport.CertCount }}</p>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<span>创建时间:</span>
<p>{{ dataReport.createDate }}</p>
</el-col>
<el-col :span="6">
<span>业务流水号:</span>
<p>{{ dataReport.RecFlowID }}</p>
</el-col>
<el-col :span="6">
<span>宗地/宗海代码:</span>
<p>{{ dataReport.ParcelID }}</p>
</el-col>
<el-col :span="7">
<span>证明数量:</span>
<p>{{ dataReport.ProofCount }}</p>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<span>不动产单元号:</span>
<p>{{ dataReport.EstateNum }}</p>
</el-col>
<el-col :span="8">
<span>登记机构:</span>
<p>{{ dataReport.RegOrgID }}</p>
</el-col>
<el-col :span="11">
<span>上次不动产权证号/不动产登记证明:</span>
<p>{{ dataReport.PreCertID }}</p>
</el-col>
</el-row>
</div>
</div>
<div class="editDialogBox-box">
<div v-if="titleName == 'sjmx'" class="sjmx">
<el-tabs v-model="activeName" ref="elTabs" type="card" @tab-click="changeList">
<el-tab-pane :name="item.soleurl" v-for="item in headerList" :key="item.soleurl">
<div slot="label" class="tab-pane-item">
<p class="name">{{ item.chinesetable }}</p>
<p class="soleurl" :data-name="item.soleurl">({{ item.datatable }})</p>
</div>
</el-tab-pane>
<div class="regularHeight">
<div class="editDialogBox-box">
<el-tabs v-model="titleName" type="card" @tab-click="handleTitleTab">
<el-tab-pane label="数据模型" name="sjmx"></el-tab-pane>
<el-tab-pane v-if="visiableXml" label="xml报文" name="xml"></el-tab-pane>
<el-tab-pane v-if="visiableXml" label="响应结果" name="xyjg"></el-tab-pane>
</el-tabs>
<div class="edit-content">
<component :is="editItem" ref="editItem" :class="{ 'editForm': $store.state.business.Edit }"
:bsmYwsjb="bsmYwsjb" :bsmSjsb="dataReport.bsmReport || dataReport.bsmSjsb" />
<div class="dialog-from item-content-input" v-if="titleName == 'sjmx'">
<el-row>
<el-col :span="5">
<span>业务报文ID:</span>
<el-select v-model="dataReport.BizMsgId" :disabled="$store.state.business.Edit">
<el-option v-for="item in bwoptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-col>
<el-col :span="6">
<span>ASID:</span>
<el-input v-model="dataReport.ASID" :disabled="$store.state.business.Edit" maxLength="5"></el-input>
</el-col>
<el-col :span="6">
<span>行政区划编码:</span>
<el-input v-model="dataReport.AreaCode" :disabled="$store.state.business.Edit"></el-input>
</el-col>
<el-col :span="7">
<span>上次不动产单元号:</span>
<el-input v-model="dataReport.PreEstateNum" :disabled="$store.state.business.Edit"></el-input>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<span>业务编码:</span>
<el-input v-model="dataReport.RecType" :disabled="$store.state.business.Edit"></el-input>
</el-col>
<el-col :span="6">
<span>权利类型:</span>
<el-select v-model="dataReport.RightType" :disabled="$store.state.business.Edit">
<el-option v-for="item in dicData['A8']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-col>
<el-col :span="6">
<span>登记类型:</span>
<el-select v-model="dataReport.RegType" :disabled="$store.state.business.Edit">
<el-option v-for="item in dicData['A21']" :key="item.DCODE" :label="item.DNAME" :value="item.DCODE">
</el-option>
</el-select>
</el-col>
<el-col :span="7">
<span>不动产权证书数量:</span>
<el-input v-model="dataReport.CertCount" :disabled="$store.state.business.Edit"
oninput="if(value.length > 8) value=value.slice(0, 8)"></el-input>
</el-col>
</el-row>
<el-row>
<el-col :span="5">
<span>创建时间:</span>
<el-date-picker v-model="dataReport.createDate" clearable disabled type="date" value-format="yyyy-MM-dd">
</el-date-picker>
</el-col>
<el-col :span="6">
<span>业务流水号:</span>
<el-input v-model="dataReport.RecFlowID" :disabled="$store.state.business.Edit"></el-input>
</el-col>
<el-col :span="6">
<span>宗地/宗海代码:</span>
<el-input v-model="dataReport.ParcelID" :disabled="$store.state.business.Edit"></el-input>
</el-col>
<el-col :span="7">
<span>证明数量:</span>
<el-input v-model="dataReport.ProofCount" :disabled="$store.state.business.Edit"
oninput="if(value.length > 8) value=value.slice(0, 8)"></el-input>
</el-col>
</el-row>
<el-row>
<el-col :span="7">
<span>不动产单元号:</span>
<el-input v-model="dataReport.EstateNum" :disabled="$store.state.business.Edit"></el-input>
</el-col>
<el-col :span="7">
<span>登记机构:</span>
<el-input v-model="dataReport.RegOrgID" :disabled="$store.state.business.Edit"></el-input>
</el-col>
<el-col :span="11">
<span>上次不动产权证号/不动产登记证明:</span>
<el-input v-model="dataReport.PreCertID" :disabled="$store.state.business.Edit"></el-input>
</el-col>
</el-row>
</div>
</div>
<div class="editDialogBox-box editDialogBox-con" v-if="titleName == 'sjmx'">
<div class="sjmx">
<el-tabs v-model="activeName" ref="elTabs" type="card" @tab-click="changeList">
<el-tab-pane :name="item.soleurl" v-for="item in headerList" :key="item.soleurl">
<div slot="label" class="tab-pane-item">
<p class="name">{{ item.chinesetable }}</p>
<p class="soleurl" :data-name="item.soleurl">({{ item.datatable }})</p>
</div>
</el-tab-pane>
</el-tabs>
<div class="edit-content">
<component :is="editItem" ref="editItem" :class="{ 'editForm': $store.state.business.Edit }"
:bsmYwsjb="bsmYwsjb" :bsmSjsb="dataReport.bsmReport || dataReport.bsmSjsb" />
</div>
</div>
</div>
<div v-if="titleName == 'xyjg'">
<div class="editDialogBox-box JsonEditor" v-if="titleName == 'xml'">
<JsonEditor :resultInfo="resultInfo" />
</div>
<div class="editDialogBox-box JsonEditor" v-if="titleName == 'xyjg'">
<Xyjg :form-data='dataReport'></Xyjg>
</div>
<JsonEditor :resultInfo="resultInfo" class="JsonEditor" v-if="titleName == 'xml'" />
</div>
<div class="d-center" v-if="!$store.state.business.Edit && titleName == 'sjmx'">
<btn nativeType="cz" @click="dialogVisible = false">取 消</btn>
<btn nativeType="cx" @click="submitForm">保 存</btn>
</div>
<div class="d-center" v-if="!$store.state.business.Edit && titleName == 'xml'">
<btn nativeType="cx" @click="handleResubmit">重新上报</btn>
</div>
</el-dialog>
</template>
<script>
import axios from "axios";
import SERVER from '@/api/config'
const urlHeader = SERVER.SERVERAPI + '/rest/sjsb/DataReport/'
import { mapGetters } from "vuex";
import JsonEditor from "@/components/JsonEditor.vue";
import Xyjg from "./Result";
import { getTabsDetail, getXml, getReportDetail } from "@/api/dataReport.js";
import { MessageBox } from "element-ui";
import { getTabsDetail, getXml, getReportDetail, restartGenerateXml, edit } from "@/api/dataReport.js";
export default {
components: { JsonEditor, Xyjg },
props: {
......@@ -133,34 +157,33 @@ export default {
},
data () {
return {
key: 0,
resultInfo: '',
titleName: 'sjmx',
// 报文list
bwoptions: [],
dataReport: {},
index: 0,
bsmYwsjb: "",
ruleFormList: {
bizMsgID: "",
asid: "",
areaCode: "",
preestateNum: "",
recType: "",
rightType: "",
regType: "",
certCount: "",
createDate: "",
recFlowID: "",
regOrgID: "",
prllfCount: "",
parcelID: "",
estateNum: "",
preCertID: "",
digitalSign: "",
BizMsgId: "", // 业务报文ID
ASID: "", // ASID
AreaCode: "", //行政区划编码
PreEstateNum: "", //上次不动产单元号
RecType: "", // 业务编码
RightType: "", // 权利类型
RegType: "", //登记类型
CertCount: "", //不动产权证书数量
createDate: "", //创建时间
RecFlowID: "", // 业务流水号
ParcelID: "", //宗地/宗海代码
ProofCount: "", //证明数量
EstateNum: "", // 不动产单元号
RegOrgID: "", // 登记机构
PreCertID: "", //次不动产权证号/不动产登记证明
},
images: require("./images/success.gif"),
saveloding: false,
dialogVisible: false,
activeName: undefined,
editItem: "",
......@@ -182,21 +205,24 @@ export default {
}
},
handleTitleTab (val) {
console.log(val);
},
isShow (item) {
this.dataReport = item;
this.$set(this.bwoptions, 0, {
value: item.bizMsgid,
label: item.bizMsgid,
})
this.$set(this.bwoptions, 1, {
value: item.bizMsgid + 'CBXZ',
label: item.bizMsgid + 'CBXZ',
})
this.$set(this.bwoptions, 2, {
value: item.bizMsgid + 'BBXZ',
label: item.bizMsgid + 'BBXZ',
})
this.titleName = 'sjmx';
this.dialogVisible = true;
//获取表头列表
getTabsDetail({ bsmReport: this.dataReport.bsmReport || this.dataReport.bsmSjsb }).then((res) => {
if (res.code == 200) {
this.headerList = res.result;
this.activeName = this.tabsActiveName == '' ? res.result[0].soleurl : this.tabsActiveName
this.bsmYwsjb = this.headerList[0].bsmYwsjb;
this.editItem = this.loadView(this.activeName);
}
});
this._getList(item)
//不动产数据查询上报详情
getReportDetail({ bsmReport: item.bsmSjsb || item.bsmReport }).then((res) => {
if (res.code == 200) {
......@@ -210,6 +236,17 @@ export default {
})
}
},
// 获取列表接口
_getList (data) {
getTabsDetail({ bsmReport: data.bsmReport || data.bsmSjsb }).then((res) => {
if (res.code == 200) {
this.headerList = res.result;
this.activeName = this.tabsActiveName == '' ? res.result[0].soleurl : this.tabsActiveName
this.bsmYwsjb = this.headerList[0].bsmYwsjb;
this.editItem = this.loadView(this.activeName);
}
});
},
changeList (val) {
let _index = val.index;
if (_index > this.index) {
......@@ -233,52 +270,66 @@ export default {
this.editItem = "";
this.headerList = [];
},
submitForm () {
let _this = this;
this.$store.dispatch(
"business/setRules",
this.$store.state.business.subRules
);
this.$nextTick(() => {
this.$refs["editItem"] &&
this.$refs["editItem"].verificationForm().then((res) => {
if (!res) {
_this.$message({
message: "请检查表单必填项是否完整",
type: "warning",
});
return false;
} else {
_this.saveloding = true;
_this.$refs["editItem"]
.handleUpdateForm()
.then((res) => {
if (res == 200) {
_this.$alert(
'<p><img class="success-images" src="' +
this.images +
'"/>编辑成功!</p>',
"提示",
{
showConfirmButton: false,
dangerouslyUseHTMLString: true,
}
);
setTimeout(() => {
MessageBox.close(false);
}, 1500);
}
})
.catch(function (error) {
_this.$alert(error, "提示", {
confirmButtonText: "确定",
type: "error",
});
});
_this.saveloding = false;
/**
* @description: 提交
* @author: renchao
*/
submitForm: _.debounce(async function () {
let _this = this
// 上报请求头修改
try {
var headRes = await axios.post(urlHeader + 'edit', this.dataReport,
{
headers: {
'Authorization': sessionStorage.getItem("token") || ""
}
});
});
})
if (headRes.code == 200) {
_this._getList(_this.dataReport)
}
} catch (error) {
this.$message({
message: '报文头修改出错',
type: 'error'
})
}
let listRes = await this.$refs["editItem"].handleUpdateForm()
if (headRes.data?.code == 200 && listRes == 200) {
this.$message({
message: '修改成功',
type: 'success'
})
}
}, 500),
/**
* @description: 重新上报
* @author: renchao
*/
handleResubmit () {
let _this = this
this.$confirm('重新生成报文,是否上报省厅?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
createXml()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
function createXml () {
restartGenerateXml(_this.dataReport.bsmSjsb || _this.dataReport.bsmReport).then((res) => {
if (res.code == 200) {
_this.resultInfo = res.message
_this.$message({
message: '修改成功',
type: 'success'
})
}
})
}
}
}
}
......@@ -287,40 +338,42 @@ export default {
@import "~@/styles/mixin.scss";
@import "~@/styles/dialogBox.scss";
.editForm {
/deep/.el-textarea__inner {
border: 1px solid #224C7C !important;
margin: 0 0 10px 0 !important;
width: 100% !important;
color: #dadde3 !important;
background: transparent !important;
}
/deep/.el-input__inner {
border: 1px solid #224C7C !important;
margin: 0 !important;
width: 100% !important;
color: #dadde3 !important;
background: transparent !important;
}
}
/deep/.el-dialog__body {
display: flex;
flex-direction: column;
padding-bottom: 30px;
}
/deep/ .el-tabs {
color: #CEF8FF;
}
.d-center {
z-index: 1000;
}
.sjmx {
display: flex;
flex-direction: column;
height: 49vh;
/deep/.el-tabs__item {
height: 50px;
padding-top: 6px;
}
}
.result {
flex: 1;
height: 100%;
}
.editDialogBox-con {
flex: 1;
height: 100%;
overflow-y: hidden;
}
/deep/.el-tabs__item {
color: #CEF8FF !important;
......@@ -390,11 +443,9 @@ export default {
}
.edit-content {
height: 450px;
overflow-y: auto;
overflow-x: hidden;
padding-right: 1px;
margin-bottom: 10px;
border-top: none;
}
......@@ -402,66 +453,10 @@ export default {
border-radius: 8px;
overflow: hidden;
min-width: 1228px;
height: 825px !important;
.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: #B5D6DC;
border-radius: 2px;
border: 1px solid #224C7C;
margin: 5px;
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: #c0c4cc;
cursor: not-allowed;
white-space: nowrap;
margin-right: 5px;
text-align: right;
}
}
}
.dialog_title {
display: flex;
position: relative;
font-size: 24px;
top: -11px;
width: 38%;
height: 40px;
margin-left: 28px;
justify-content: center;
}
.el-dialog__header {
display: flex;
margin-bottom: 15px;
margin-bottom: 10px;
}
.dialog_footer {
......@@ -481,5 +476,53 @@ export default {
.el-dialog__wrapper {
overflow: hidden;
}
.dialog-from {
padding-top: 0;
.el-col {
justify-content: space-between;
}
.bz {
height: 100%;
position: relative;
top: 3px;
}
/deep/.el-select {
padding-right: 15px;
}
/deep/.el-icon-circle-close {
display: none;
}
/deep/.el-input__suffix {
right: -25px !important;
top: -5px;
}
/deep/.el-select,
/deep/.el-input {
flex: 1;
width: 100%;
}
/deep/.el-textarea__inner {
border: none !important;
margin: 0;
}
&_header {
margin: 0 -5px !important;
}
&_title {
font-size: 18px;
color: #d7eaee;
margin: 3px 0;
}
}
</style>
......
......@@ -10,26 +10,15 @@ export default {
type: String,
default: ''
}
},
data () {
return {
myValue: this.value,
}
},
methods: {
onJsonChange (value) {
},
onJsonSave (value) {
}
}
}
</script>
<style scoped lang="scss">
/* jsoneditor右上角默认有一个链接,加css去掉了 */
/deep/.el-textarea__inner {
min-height: 73vh !important;
height: 67vh !important;
border: none !important;
background-color: #08346F !important;
color: #ffffff;
border: none !important;
......
......@@ -2,6 +2,7 @@
<div>
<i class="el-icon-s-management icon" :title="title" @click="openDialog" />
<el-dialog
class="configuration"
:key="key"
:title="title"
:inner-dialog="true"
......@@ -9,8 +10,7 @@
width="600px"
:close-on-click-modal="false"
append-to-body
@cancel="cancel"
>
@cancel="cancel">
<vue-json-editor
id="minejson"
v-model="resultInfo"
......@@ -18,15 +18,13 @@
lang="zh"
@json-change="onJsonChange"
@json-save="onJsonSave"
@has-error="onError"
/>
@has-error="onError" />
<el-tooltip
content="全屏缩放"
effect="dark"
placement="bottom"
fullscreen
class="fullScreen"
>
class="fullScreen">
<i class="el-icon-full-screen" @click="enLarge" />
</el-tooltip>
<template slot="footer">
......@@ -34,142 +32,156 @@
<el-button
type="primary"
class="confirmBtn"
@click="onJsonSave"
>保存</el-button>
@click="onJsonSave">保存</el-button>
<el-button
type="primary"
class="cancelBtn"
@click="cancel"
>关闭</el-button>
@click="cancel">关闭</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import vueJsonEditor from 'vue-json-editor'
export default {
components: {
vueJsonEditor
},
props: {
title: {
type: String,
default: '配置参数'
import vueJsonEditor from 'vue-json-editor'
export default {
components: {
vueJsonEditor
},
resultInfos: {
type: String,
default: ''
}
},
data() {
return {
activeNames: [],
resultInfo: {},
tmpResultInfo: {},
dialogVisible: false,
hasJsonFlag: true,
key: 0,
isEnlarge: false
}
},
watch: {
resultInfos: {
handler: function(val) {
++this.key
this.resultInfo =
this.resultInfos === '' ? {} : JSON.parse(this.resultInfos)
this.tmpResultInfo = this.resultInfo
props: {
title: {
type: String,
default: '配置参数'
},
deep: true,
immediate: true
}
},
mounted() {
this.resultInfo =
this.resultInfos === '' ? {} : JSON.parse(this.resultInfos)
},
methods: {
onJsonChange(value) {
// 只有在格式正确的时候进入此事件
this.hasJsonFlag = true
},
onJsonSave() {
const value = this.resultInfo
console.log(this.resultInfo, 'resultInfo')
if (this.hasJsonFlag === false) {
this.$message.error({ message: 'json格式验证失败', showClose: true })
// alert("json验证失败")
return false
} else {
this.dialogVisible = false
this.$emit('getJsonString', JSON.stringify(value))
return true
resultInfos: {
type: String,
default: ''
}
},
onError(value) {
this.hasJsonFlag = false
data () {
return {
activeNames: [],
resultInfo: {},
tmpResultInfo: {},
dialogVisible: false,
hasJsonFlag: true,
key: 0,
isEnlarge: false
}
},
openDialog() {
this.dialogVisible = true
watch: {
resultInfos: {
handler: function (val) {
++this.key
this.resultInfo =
this.resultInfos === '' ? {} : JSON.parse(this.resultInfos)
this.tmpResultInfo = this.resultInfo
},
deep: true,
immediate: true
}
},
cancel() {
console.log(this.tmpResultInfo, 'tmpResultInfo')
this.resultInfo = this.tmpResultInfo
this.dialogVisible = false
mounted () {
this.resultInfo =
this.resultInfos === '' ? {} : JSON.parse(this.resultInfos)
},
// 放大
enLarge() {
const fullarea = document.getElementById('minejson')
if (fullarea.requestFullscreen) {
fullarea.requestFullscreen()
} else if (fullarea.webkitRequestFullScreen) {
fullarea.webkitRequestFullScreen() // webkit内核(chrome、safari、Opera等)
} else if (fullarea.mozRequestFullScreen) {
fullarea.mozRequestFullScreen() // moz内核(firefox)
} else if (fullarea.msRequestFullscreen) {
fullarea.msRequestFullscreen() // IE11、edge
methods: {
onJsonChange (value) {
// 只有在格式正确的时候进入此事件
this.hasJsonFlag = true
},
onJsonSave () {
const value = this.resultInfo
console.log(this.resultInfo, 'resultInfo')
if (this.hasJsonFlag === false) {
this.$message.error({ message: 'json格式验证失败', showClose: true })
// alert("json验证失败")
return false
} else {
this.dialogVisible = false
this.$emit('getJsonString', JSON.stringify(value))
return true
}
},
onError (value) {
this.hasJsonFlag = false
},
openDialog () {
this.dialogVisible = true
},
cancel () {
console.log(this.tmpResultInfo, 'tmpResultInfo')
this.resultInfo = this.tmpResultInfo
this.dialogVisible = false
},
// 放大
enLarge () {
const fullarea = document.getElementById('minejson')
if (fullarea.requestFullscreen) {
fullarea.requestFullscreen()
} else if (fullarea.webkitRequestFullScreen) {
fullarea.webkitRequestFullScreen() // webkit内核(chrome、safari、Opera等)
} else if (fullarea.mozRequestFullScreen) {
fullarea.mozRequestFullScreen() // moz内核(firefox)
} else if (fullarea.msRequestFullscreen) {
fullarea.msRequestFullscreen() // IE11、edge
}
this.isEnlarge = true
}
this.isEnlarge = true
}
}
}
</script>
<style scoped lang="scss">
/* jsoneditor右上角默认有一个链接,加css去掉了 */
.icon {
color: #349af3;
}
/deep/ .jsoneditor-vue {
height: 100%;
}
.fullScreen {
position: absolute;
right: 5%;
top: 22%;
cursor: pointer;
color: #fff;
}
/deep/ .jsoneditor-modes {
display: none !important;
}
.jsoneditor-poweredBy {
display: none !important;
}
.jsoneditor-menu {
background-color: #9c9e9f !important;
border-bottom: 1px solid #9c9e9f !important;
}
.jsoneditor {
border: 1px solid #9c9e9f !important;
}
.el-collapse {
border: 0;
}
.el-collapse-item__header {
height: 44px;
}
/* jsoneditor右上角默认有一个链接,加css去掉了 */
.icon {
color: #349af3;
}
/deep/ .jsoneditor-vue {
height: 100%;
}
.fullScreen {
position: absolute;
right: 5%;
top: 20%;
cursor: pointer;
color: #fff;
}
/deep/ .jsoneditor-modes {
display: none !important;
}
/deep/.jsoneditor-poweredBy {
display: none !important;
}
.jsoneditor-menu {
background-color: #9c9e9f !important;
border-bottom: 1px solid #9c9e9f !important;
}
.jsoneditor {
border: 1px solid #9c9e9f !important;
}
.el-collapse {
border: 0;
}
.el-collapse-item__header {
height: 44px;
}
.configuration {
color: white;
margin-top: 6vh;
/deep/.el-dialog {
background-color: #031a46 !important;
border: 1px solid #5f82c7;
.el-dialog__header {
.el-dialog__title {
color: white !important;
}
.el-dialog__headerbtn {
top: 20px;
}
}
}
}
</style>
......
......@@ -10,9 +10,9 @@
<template>
<div :class="['lb-table', customClass]">
<el-table v-if="!heightNumSetting" class="table-fixed" :row-style="{ height: '50px' }" ref="elTable"
:border='border' :row-class-name="tableRowClassName" :show-header='showHeader' @row-click="singleElection"
v-bind="$attrs" :height="tableHeight" v-on="$listeners" :data="data" style="width: 100%"
<el-table v-if="!heightNumSetting" class="table-fixed" :row-style="{ height: '50px' }" ref="elTable" :border='border'
:row-class-name="tableRowClassName" :show-header='showHeader' @row-click="singleElection" v-bind="$attrs"
:height="tableHeight" v-on="$listeners" :data="data" style="width: 100%"
:span-method="this.merge ? this.mergeMethod : this.spanMethod">
<el-table-column width="45" align="center" v-if="isRadio">
<template slot-scope="scope">
......@@ -24,9 +24,10 @@
</lb-column>
</el-table>
<el-table v-else ref="elTable" class="table-fixed" :row-style="{ height: '50px' }" :border='border'
:row-class-name="tableRowClassName" :show-header='showHeader' v-bind="$attrs" :max-height="maxHeight"
v-on="$listeners" :data="data" style="width: 100%" :span-method="this.merge ? this.mergeMethod : this.spanMethod">
<el-table v-else ref="elTable" id="heightNumSetting" class="table-fixed" :row-style="{ height: '50px' }"
:border='border' :row-class-name="tableRowClassName" :show-header='showHeader' v-bind="$attrs"
:max-height="maxHeight" :height="tableHeight" v-on="$listeners" :data="data" style="width: 100%"
:span-method="this.merge ? this.mergeMethod : this.spanMethod">
<el-table-column width="45" align="center" v-if="isRadio">
<template slot-scope="scope">
......@@ -80,6 +81,10 @@ export default {
type: Number,
default: 500
},
minHeight: {
type: Number,
default: undefined
},
heightNumSetting: {
type: Boolean,
default: false,
......@@ -139,6 +144,11 @@ export default {
} else {
_this.tableHeight = window.innerHeight - _this.heightNum
}
} else {
this.tableHeight = this.heightNum
this.$nextTick(() => {
this.minHeight && (document.getElementById('heightNumSetting').style.minHeight = this.minHeight + 'px')
})
}
},
calcHeightx (value, wappered = true) {
......
/*
* FileName: lb-column.vue
* Remark: element-column
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 9:58:23 am
* Last Modified: Tuesday, 19th March 2019 10:14:42 am
* Modified By: 任超
*/
<template>
<el-table-column v-bind="$attrs" v-on="$listeners" :prop="column.prop" :label="column.label" :type="column.type"
:index="column.index" :column-key="column.columnKey" :width="column.width" :min-width="column.minWidth"
:fixed="column.fixed" :scoped-slot="column.renderHeader" :sortable="column.sortable || false"
:sort-method="column.sortMethod" :sort-by="column.sortBy" :sort-orders="column.sortOrders"
:resizable="column.resizable || true" :formatter="column.formatter"
:show-overflow-tooltip="column.showOverflowTooltip || false" :align="column.align || align || 'center'"
:header-align="column.headerAlign || headerAlign || column.align || align || 'center'"
:class-name="column.className" :label-class-name="column.labelClassName" :selectable="column.selectable"
:reserve-selection="column.reserveSelection || false" :filters="column.filters"
:filter-placement="column.filterPlacement" :filter-multiple="column.filterMultiple"
:filter-method="column.filterMethod" :filtered-value="column.filteredValue">
<template slot="header" slot-scope="scope">
<lb-render v-if="column.renderHeader" :scope="scope" :render="column.renderHeader">
</lb-render>
<span v-else>{{ scope.column.label }}</span>
</template>
<template slot-scope="scope">
<lb-render :scope="scope" :render="column.render">
</lb-render>
</template>
<template v-if="column.children">
<lb-column v-for="(col, index) in column.children" :key="index" :column="col">
</lb-column>
</template>
</el-table-column>
</template>
<script>
import LbRender from './LbRender'
import forced from './forced.js'
export default {
name: 'LbColumn',
props: {
column: Object,
headerAlign: String,
align: String
},
components: {
LbRender
},
methods: {
setColumn () {
if (this.column.type) {
this.column.renderHeader = forced[this.column.type].renderHeader
this.column.render = this.column.render || forced[this.column.type].renderCell
}
if (this.column.formatter) {
this.column.render = (h, scope) => {
return <span>{scope.column.formatter(scope.row, scope.column, scope.row, scope.$index)}</span>
}
}
if (!this.column.render) {
this.column.render = (h, scope) => {
return <span>{scope.row[scope.column.property]}</span>
}
}
}
},
watch: {
column: {
handler () {
this.setColumn()
},
immediate: true
}
}
}
</script>
/*
* FileName: lb-render.vue
* Remark: 自定义render
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 10:15:30 am
* Last Modified: Tuesday, 19th March 2019 10:15:32 am
* Modified By: 任超
*/
<script>
export default {
name: 'LbRender',
functional: true,
props: {
scope: Object,
render: Function
},
render: (h, ctx) => {
return ctx.props.render ? ctx.props.render(h, ctx.props.scope) : ''
}
}
</script>
export default {
selection: {
renderHeader: (h, { store }) => {
return (
<el-checkbox
disabled={store.states.data && store.states.data.length === 0}
indeterminate={
store.states.selection.length > 0 && !store.states.isAllSelected
}
nativeOn-click={store.toggleAllSelection}
value={store.states.isAllSelected}
/>
)
},
renderCell: (h, { row, column, store, $index }) => {
return (
<el-checkbox
nativeOn-click={event => event.stopPropagation()}
value={store.isSelected(row)}
disabled={
column.selectable
? !column.selectable.call(null, row, $index)
: false
}
on-input={() => {
store.commit('rowSelectedChanged', row)
}}
/>
)
},
sortable: false,
resizable: false
},
index: {
renderHeader: (h, scope) => {
return <span>{scope.column.label || '#'}</span>
},
renderCell: (h, { $index, column }) => {
let i = $index + 1
const index = column.index
if (typeof index === 'number') {
i = $index + index
} else if (typeof index === 'function') {
i = index($index)
}
return <div>{i}</div>
},
sortable: false
},
expand: {
renderHeader: (h, scope) => {
return <span>{scope.column.label || ''}</span>
},
renderCell: (h, { row, store }, proxy) => {
const expanded = store.states.expandRows.indexOf(row) > -1
return (
<div
class={
'el-table__expand-icon ' +
(expanded ? 'el-table__expand-icon--expanded' : '')
}
on-click={e => proxy.handleExpandClick(row, e)}
>
<i class='el-icon el-icon-arrow-right' />
</div>
)
},
sortable: false,
resizable: false,
className: 'el-table__expand-column'
}
}
/*
* FileName: lb-table.vue
* Remark: element table
* Project: lb-element-table
* Author: 任超
* File Created: Tuesday, 19th March 2019 9:55:27 am
* Last Modified: Tuesday, 19th March 2019 9:55:34 am
* Modified By: 任超
*/
<template>
<div :class="['lb-table', customClass]">
<el-table v-if="!heightNumSetting" class="table-fixed" :row-style="{ height: '50px' }" ref="elTable" :border='border'
:row-class-name="tableRowClassName" :show-header='showHeader' @row-click="singleElection" v-bind="$attrs"
:height="tableHeight" v-on="$listeners" :data="data" style="width: 100%"
:span-method="this.merge ? this.mergeMethod : this.spanMethod">
<el-table-column width="45" align="center" v-if="isRadio">
<template slot-scope="scope">
<el-radio v-model="selected" :label="scope.$index"></el-radio>
</template>
</el-table-column>
<el-table-column :label="downTitle" align="center">
<lb-column v-bind="$attrs" v-for="(item, index) in column" :key="index" :column="item">
</lb-column>
</el-table-column>
</el-table>
<br>
<el-pagination class="lb-table-pagination" v-if="pagination" v-bind="$attrs" v-on="$listeners" background
layout="total, prev, pager, next" @current-change="paginationCurrentChange"
:style="{ 'margin-top': paginationTop, 'text-align': paginationAlign }">
</el-pagination>
</div>
</template>
<script>
import LbColumn from './LbColumn'
export default {
props: {
column: Array,
data: Array,
spanMethod: Function,
pagination: {
type: Boolean,
default: true,
},
downExcel: {
type: Boolean,
default: false,
},
downTitle: {
type: String,
default: '标题'
},
isRadio: {
type: Boolean,
default: false,
},
border: {
type: Boolean,
default: false,
},
showHeader: {
type: Boolean,
default: true,
},
paginationTop: {
type: String,
default: '0',
},
heightNum: {
type: Number,
default: 355,
},
maxHeight: {
type: Number,
default: 500
},
heightNumSetting: {
type: Boolean,
default: false,
},
customClass: {
type: String,
default: '',
},
paginationAlign: {
type: String,
default: 'left',
},
merge: Array,
},
components: {
LbColumn,
},
data () {
return {
tableHeight: 'auto',
mergeLine: {},
mergeIndex: {},
selected: ''
}
},
created () {
this.getMergeArr(this.data, this.merge)
this.getHeight()
},
computed: {
dataLength () {
return [] || this.data.length
},
},
methods: {
// 单选
singleElection (row) {
this.selected = this.data.indexOf(row);
},
tableRowClassName ({ row, rowIndex }) {
if (rowIndex % 2 === 1) {
return 'interlaced';
}
},
getHeight () {
if (!this.heightNumSetting) {
let _this = this
if (this.heightNum) {
_this.$nextTick(() => {
window.addEventListener('resize', () => {
_this.tableHeight = _this.calcHeightx(230)
});
_this.tableHeight = _this.calcHeightx(230)
})
} else {
_this.tableHeight = window.innerHeight - _this.heightNum
}
}
},
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 (wappered) {
//通过原生方法,获取dom节点的高度------获取element-ui table表格body的元素
let wapper = window.document.getElementsByClassName('el-table__body-wrapper');
//通过原生方法,获取dom节点的高度------获取element-ui table表格header的元素
let header = window.document.getElementsByClassName('el-table__header-wrapper');
//必须加延时,要不然赋不上去值
setTimeout(() => {
//通过上边计算得到的table高度的value值,减去table表格的header高度,剩下的通过dom节点直接强行赋给table表格的body
wapper[0].style.height = (value - header[0].clientHeight)
}, 100)
}
return res;
},
clearSelection () {
this.$refs.elTable.clearSelection()
},
toggleRowSelection (row, selected) {
this.$refs.elTable.toggleRowSelection(row, selected)
},
toggleAllSelection () {
this.$refs.elTable.toggleAllSelection()
},
toggleRowExpansion (row, expanded) {
this.$refs.elTable.toggleRowExpansion(row, expanded)
},
setCurrentRow (row) {
this.$refs.elTable.setCurrentRow(row)
},
clearSort () {
this.$refs.elTable.clearSort()
},
clearFilter (columnKey) {
this.$refs.elTable.clearFilter(columnKey)
},
doLayout () {
this.$refs.elTable.doLayout()
},
sort (prop, order) {
this.$refs.elTable.sort(prop, order)
},
paginationCurrentChange (val) {
this.$emit('p-current-change', val)
},
getMergeArr (tableData, merge) {
if (!merge) return
this.mergeLine = {}
this.mergeIndex = {}
merge.forEach((item, k) => {
tableData.forEach((data, i) => {
if (i === 0) {
this.mergeIndex[item] = this.mergeIndex[item] || []
this.mergeIndex[item].push(1)
this.mergeLine[item] = 0
} else {
if (data[item] === tableData[i - 1][item]) {
this.mergeIndex[item][this.mergeLine[item]] += 1
this.mergeIndex[item].push(0)
} else {
this.mergeIndex[item].push(1)
this.mergeLine[item] = i
}
}
})
})
},
mergeMethod ({ row, column, rowIndex, columnIndex }) {
const index = this.merge.indexOf(column.property)
if (index > -1) {
const _row = this.mergeIndex[this.merge[index]][rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col,
}
}
},
},
watch: {
merge () {
this.getMergeArr(this.data, this.merge)
},
dataLength () {
this.getMergeArr(this.data, this.merge)
}
},
}
</script>
<style rel="stylesheet/scss" scoped lang="scss">
.lb-table {
margin-top: 1px;
.interlaced {
background: #fafcff;
border: 1px solid #ebf2fa;
}
}
/deep/.el-table .cell {
padding-left: 3px;
padding-right: 3px;
}
/deep/.el-radio__label {
display: none;
}
</style>
## 这是对于element-table 进行的二次封装
### 文档地址
<!-- table 已经全局注册不需要每个页面单独注册 -->
[Windows/Mac/Linux 全平台客户端](https://github.liubing.me/lb-element-table/zh/guide/)

1.81 MB | W: | H:

1.74 MB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
......@@ -2,10 +2,10 @@
<div class="navbar-con">
<div class="navbar">
<div class="title">
{{ logoName[0].DNAME }}
{{ logoName[0] && logoName[0].DNAME }}
</div>
<div class="user">
欢迎进入系统 {{ userInfo.name }}
欢迎进入系统 {{ userName }}
<span @click="onCancel">
<svg-icon icon-class="close" class="closeStyle" />退出系统</span>
</div>
......@@ -16,244 +16,247 @@
<sidebarRight />
</div>
</div>
</div>
</div>
</template>
<script>
import sidebarLeft from "./Sidebar/sidebarLeft";
import sidebarRight from "./Sidebar/sidebarRight";
import { logout } from "@/api/login.js";
import { mapGetters } from "vuex";
export default {
components: {
sidebarLeft,
sidebarRight,
},
computed: {
...mapGetters(["sidebar", "dicData", "userInfo"]),
logoName: function () {
return this.dicData['sysCode'] && this.dicData['sysCode'].filter(item =>
item.DCODE == "systemTitle"
)
}
},
methods: {
onCancel () {
logout()
.then((res) => {
sessionStorage.removeItem("token");
this.$store.dispatch("user/resetState");
this.$router.replace({
path: "/login",
query: {
redirect: this.$route.fullPath,
},
import sidebarLeft from "./Sidebar/sidebarLeft";
import sidebarRight from "./Sidebar/sidebarRight";
import { logout } from "@/api/login.js";
import { mapGetters } from "vuex";
export default {
components: {
sidebarLeft,
sidebarRight,
},
computed: {
...mapGetters(["sidebar", "dicData", "userInfo"]),
logoName () {
return this.dicData['sysCode'] && this.dicData['sysCode'].filter(item =>
item.DCODE == "systemTitle"
)
},
userName () {
return this.userInfo ? this.userInfo.name : ""
}
},
methods: {
onCancel () {
logout()
.then((res) => {
sessionStorage.removeItem("token");
this.$store.dispatch("user/resetState");
this.$router.replace({
path: "/jg",
query: {
redirect: this.$route.fullPath,
},
});
})
.catch((error) => {
// console.dir(error);
});
})
.catch((error) => {
// console.dir(error);
});
},
},
},
};
};
</script>
<style lang="scss" scoped>
/deep/.el-menu--horizontal {
display: flex;
align-items: center;
}
.menubg {
height: 34px;
width: 130px;
text-align: center;
color: #ffffff;
margin-right: 20px;
background: url("~@/image/navbar.png") no-repeat;
background-size: 100% 100%;
}
/deep/.el-menu-item {
@extend .menubg;
}
/deep/.el-submenu {
@extend .menubg;
}
/deep/.el-submenu__title {
height: 34px;
color: #ffffff;
}
/deep/.el-menu--horizontal {
display: flex;
align-items: center;
}
/deep/.el-submenu__title span {
font-size: 14px;
}
.menubg {
height: 34px;
width: 130px;
text-align: center;
color: #ffffff;
margin-right: 20px;
background: url("~@/image/navbar.png") no-repeat;
background-size: 100% 100%;
}
.sidebarLeft {
position: relative;
top: 13px;
width: 30%;
}
/deep/.el-menu-item {
@extend .menubg;
}
/deep/.el-menu {
display: flex;
justify-content: space-between;
}
/deep/.el-submenu {
@extend .menubg;
}
/deep/.el-menu-item {
flex: 1;
width: 100%;
}
/deep/.el-submenu__title {
height: 34px;
color: #ffffff;
}
.sidebarRight {
position: relative;
top: 13px;
width: 30%;
padding-left: 20px;
}
/deep/.el-submenu__title span {
font-size: 14px;
}
// 导航选中背景色
.xuanzhong {
background: url("~@/image/selNavbar.png") no-repeat;
background-size: 100% 100%;
color: #ffffff !important;
font-weight: 700;
}
.sidebarLeft {
position: relative;
top: 13px;
width: 30%;
}
/deep/.el-menu-item:hover {
@extend .xuanzhong;
}
/deep/.el-menu {
display: flex;
justify-content: space-between;
}
/deep/.el-submenu__title:hover {
@extend .xuanzhong;
}
/deep/.el-menu-item {
flex: 1;
width: 100%;
}
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
@extend .xuanzhong;
}
.sidebarRight {
position: relative;
top: 13px;
width: 30%;
padding-left: 20px;
}
/deep/.el-menu-item.is-active {
@extend .xuanzhong;
}
// 导航选中背景色
.xuanzhong {
background: url("~@/image/selNavbar.png") no-repeat;
background-size: 100% 100%;
color: #ffffff !important;
font-weight: 700;
}
.navbar {
height: $headerHeight;
overflow: hidden;
position: relative;
display: flex;
align-items: center;
padding: 0 20px;
justify-content: space-between;
background: url("~@/image/header.png") no-repeat;
background-size: 100% 100%;
/deep/.el-menu-item:hover {
@extend .xuanzhong;
}
.user {
font-size: 12px;
color: #ffffff;
position: absolute;
right: 20px;
top: 0;
cursor: pointer;
/deep/.el-submenu__title:hover {
@extend .xuanzhong;
}
.closeStyle {
margin-right: 5px;
}
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
@extend .xuanzhong;
}
.title {
position: absolute;
left: 0;
top: 10px;
bottom: 0;
right: 0;
margin: 0 auto;
font-size: 32px;
color: #ffffff;
font-weight: 700;
text-align: center;
/deep/.el-menu-item.is-active {
@extend .xuanzhong;
}
.right-menu {
float: right;
height: 100%;
line-height: 50px;
.navbar {
height: $headerHeight;
overflow: hidden;
position: relative;
display: flex;
align-items: center;
padding: 0 20px;
justify-content: space-between;
background: url("~@/image/header.png") no-repeat;
background-size: 100% 100%;
.shutdown {
font-size: 20px;
margin-left: 15px;
.user {
font-size: 12px;
color: #ffffff;
position: absolute;
right: 20px;
top: 0;
cursor: pointer;
.closeStyle {
margin-right: 5px;
}
}
.organization-item {
margin-right: 40px;
margin-top: -40px !important;
.title {
position: absolute;
left: 0;
top: 10px;
bottom: 0;
right: 0;
margin: 0 auto;
font-size: 32px;
color: #ffffff;
font-weight: 700;
text-align: center;
}
.item {
margin-right: 40px;
margin-top: -20px;
line-height: 18.4px;
cursor: pointer;
position: relative;
.right-menu {
float: right;
height: 100%;
line-height: 50px;
display: flex;
align-items: center;
.item-box {
position: absolute;
top: -5px;
left: 3px;
width: 100%;
min-width: 25px;
height: 25px;
.shutdown {
font-size: 20px;
margin-left: 15px;
cursor: pointer;
z-index: 100;
}
}
&:focus {
outline: none;
}
.right-menu-item {
display: inline-block;
height: 100%;
font-size: 18px;
color: #fff;
vertical-align: text-bottom;
.organization-item {
margin-right: 40px;
margin-top: -40px !important;
}
&.hover-effect {
.item {
margin-right: 40px;
margin-top: -20px;
line-height: 18.4px;
cursor: pointer;
transition: background 0.3s;
display: flex;
align-items: center;
position: relative;
&:hover {
background: rgba(0, 0, 0, 0.025);
.item-box {
position: absolute;
top: -5px;
left: 3px;
width: 100%;
min-width: 25px;
height: 25px;
cursor: pointer;
z-index: 100;
}
}
}
.avatar-wrapper {
position: relative;
display: flex;
height: 40px;
align-items: center;
&:focus {
outline: none;
}
.user-avatar {
cursor: pointer;
width: 35px;
height: 35px;
border-radius: 50%;
.right-menu-item {
display: inline-block;
height: 100%;
font-size: 18px;
color: #fff;
vertical-align: text-bottom;
&.hover-effect {
cursor: pointer;
transition: background 0.3s;
display: flex;
align-items: center;
&:hover {
background: rgba(0, 0, 0, 0.025);
}
}
}
.el-icon-caret-bottom {
cursor: pointer;
position: absolute;
right: -15px;
top: 17px;
font-size: 12px;
.avatar-wrapper {
position: relative;
display: flex;
height: 40px;
align-items: center;
.user-avatar {
cursor: pointer;
width: 35px;
height: 35px;
border-radius: 50%;
}
.el-icon-caret-bottom {
cursor: pointer;
position: absolute;
right: -15px;
top: 17px;
font-size: 12px;
}
}
}
}
}
</style>
......
<template>
<el-menu router :default-active="activeMenu" mode="horizontal">
<!-- 权限菜单 -->
<sidebar-item v-for="route in permission_routes.slice(2, 5)" :key="route.path" :item="route"
<sidebar-item v-for="route in permission_routes.slice(3, 6)" :key="route.path" :item="route"
:base-path="route.path" />
<!-- 菜单全部展示 -->
<!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
......@@ -9,35 +9,40 @@
</template>
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
}
return path
},
variables () {
return variables
},
asyncRoutes () {
return asyncRoutes.slice(0, 3)
}
return path
},
variables () {
return variables
},
asyncRoutes () {
return asyncRoutes.slice(0, 3)
mounted () {
console.log("permission_routes", this.permission_routes);
}
}
}
</script>
<style scoped lang="scss">
.el-menu--horizontal {
display: flex;
background: none !important;
}
</style>
\ No newline at end of file
.el-menu--horizontal {
display: flex;
background: none !important;
}
</style>
......
<!--
* @Author: xiaomiao 1158771342@qq.com
* @Date: 2023-01-10 09:03:06
* @LastEditors: xiaomiao 1158771342@qq.com
* @LastEditTime: 2023-03-08 10:45:43
* @FilePath: \监管系统\js-web-jianguan\src\layout\components\Sidebar\sidebarRight.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<el-menu router :default-active="activeMenu" mode="horizontal">
<!-- 权限菜单 -->
<sidebar-item v-for="route in permission_routes.slice(5, 8)" :key="route.path" :item="route"
<sidebar-item v-for="route in permission_routes.slice(6, 9)" :key="route.path" :item="route"
:base-path="route.path" />
<!-- 菜单全部展示 -->
<!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
......@@ -9,59 +17,59 @@
</template>
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/styles/variables.scss'
import { asyncRoutes } from '@/router'
export default {
components: { SidebarItem, Logo },
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
}
return path
},
variables () {
return variables
},
asyncRoutes () {
return asyncRoutes.slice(3, 6)
}
return path
},
variables () {
return variables
},
asyncRoutes () {
return asyncRoutes.slice(3, 6)
}
}
}
</script>
<style scoped lang="scss">
.el-menu--horizontal {
display: flex;
background: none !important;
}
.el-menu--horizontal {
display: flex;
background: none !important;
}
/deep/.el-menu-item:hover {
background: none;
font-weight: 700;
color: #fff !important;
}
/deep/.el-menu-item:hover {
background: none;
font-weight: 700;
color: #fff !important;
}
/deep/.el-submenu__title {
color: #fff;
font-size: 18px;
}
/deep/.el-submenu__title {
color: #fff;
font-size: 18px;
}
/deep/.el-submenu__title:hover {
background: none;
font-weight: 700;
font-size: 20px;
}
/deep/.el-submenu__title:hover {
background: none;
font-weight: 700;
font-size: 20px;
}
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
background: none;
color: #fff;
font-size: 20px;
font-weight: 700 !important;
}
</style>
\ No newline at end of file
/deep/.el-menu--horizontal .el-menu-item:not(.is-disabled):focus {
background: none;
color: #fff;
font-size: 20px;
font-weight: 700 !important;
}
</style>
......
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-10 14:59:43
-->
<template>
<div class="app-wrapper">
<div class="app-wrapper jgWrapper">
<navbar />
<div class="appMain">
<app-main />
......@@ -7,54 +12,61 @@
</div>
</template>
<script>
import { AppMain, Navbar, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
export default {
name: 'Layout',
components: {
AppMain,
Navbar,
Sidebar,
TagsView
},
mixins: [ResizeMixin],
computed: {
...mapState({
sidebar: state => state.app.sidebar,
needTagsView: state => state.settings.tagsView,
fixedHeader: state => state.settings.fixedHeader
})
import { AppMain, Navbar, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
export default {
name: 'Layout',
components: {
AppMain,
Navbar,
Sidebar,
TagsView
},
created () {
this.$store.dispatch("products/setData", "BDCJGPT");
console.log("ZOULEJG");
},
mixins: [ResizeMixin],
computed: {
...mapState({
sidebar: state => state.app.sidebar,
needTagsView: state => state.settings.tagsView,
fixedHeader: state => state.settings.fixedHeader
})
}
}
}
</script>
<style lang="scss">
@import "~@/styles/jgSidebar.scss";
</style>
<style lang="scss" scoped>
@import "~@/styles/mixin.scss";
@import "~@/styles/mixin.scss";
.app-wrapper {
@include clearfix;
position: relative;
height: 100%;
width: 100%;
min-width: 1280px;
background: url('~@/image/bg.png') no-repeat;
background-size: 100% 100%;
padding: 12px;
box-sizing: border-box;
.app-wrapper {
@include clearfix;
position: relative;
height: 100%;
width: 100%;
min-width: 1280px;
background: url("~@/image/bg.png") no-repeat;
background-size: 100% 100%;
padding: 12px;
box-sizing: border-box;
&.mobile.openSidebar {
position: fixed;
top: 0;
&.mobile.openSidebar {
position: fixed;
top: 0;
}
}
}
.appMain {
min-width: 1290px;
height: calc(100vh - 101px) !important;
box-sizing: border-box;
.appMain {
// min-width: 1280px;
height: calc(100vh - 101px) !important;
box-sizing: border-box;
.app-main {
height: 100%;
.app-main {
height: 100%;
}
}
}
</style>
......
......@@ -22,6 +22,6 @@ export default {
box-sizing: border-box;
flex: 1;
width: 100%;
margin-right: 15px;
// background-color: #ffffff;
}
</style>
......
......@@ -4,11 +4,7 @@
<div class="logo">
<img :src="require('@/image/logo.png')" alt="" />
</div>
<div class="backdrop">
<Breadcrumb />
</div>
<div class="right-menu">
<div class="dataView d-center pointer" @click="handleDataView">大屏展示</div>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="hover" @command="handleCommand">
<div class="avatar-wrapper">
<span style="padding-right:10px">{{ name }}</span>
......@@ -67,15 +63,6 @@ export default {
}
}
.dataView {
color: #fff;
width: 120px;
height: 32px;
background: url('../../image/dp.png');
background-size: cover;
margin-right: 20px;
}
.NoticeBar {
position: absolute;
bottom: 0;
......@@ -83,7 +70,7 @@ export default {
.el-dropdown-menu {
padding: 0 !important;
border: 1px solid #EBEEF5;
border: 1px solid #ebeef5;
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.12);
border-radius: 4px 0 0 4px 4px;
......@@ -93,14 +80,14 @@ export default {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #4A4A4A;
color: #4a4a4a;
width: 140px;
height: 36px;
line-height: 36px;
}
.el-dropdown-menu__item:nth-child(6) {
border-top: 1px solid #EBEEF5;
border-top: 1px solid #ebeef5;
}
.popper__arrow {
......@@ -111,8 +98,8 @@ export default {
.el-dropdown-menu__item:not(.is-disabled):hover,
.el-dropdown-menu__item:focus {
background: #F6F7F9;
color: #4A4A4A;
background: #f6f7f9;
color: #4a4a4a;
}
}
......@@ -120,15 +107,11 @@ export default {
height: $headerHeight;
overflow: hidden;
position: relative;
// background: linear-gradient(270deg, #148CEE 0%, #1870E3 100%); //默认颜色
// box-shadow: 0 1px 0px rgba(0, 21, 41, 0.08);
background: #0D1230;
background: #3D59C4;
display: flex;
align-items: center;
padding-right: 20px;
justify-content: space-between;
margin-bottom: 10px;
.header-logo {
width: 300px;
}
......
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-06 16:18:21
-->
<template>
<div>
<el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu router :default-active="activeMenu" :background-color="variables.menuBg" :text-color="variables.menuText"
:unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false"
mode="vertical">
:unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false" mode="vertical">
<!-- 权限菜单 -->
<!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> -->
<sidebar-item v-for="route in permission_routes.slice(3)" :key="route.path" :item="route"
:base-path="route.path" />
<!-- 菜单全部展示 -->
<sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" />
<!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
</el-menu>
</el-scrollbar>
</div>
......@@ -27,6 +32,9 @@ export default {
title: defaultSettings.title
}
},
created () {
console.log(this.permission_routes);
},
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu () {
......
<!--
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-10 15:00:56
-->
<template>
<div class="app-wrapper">
<div class="app-wrapper scWrapper">
<navbar />
<div class="main-container">
<sidebar class="sidebar-container" />
......@@ -8,60 +13,66 @@
</div>
</template>
<script>
import { AppMain, Navbar, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
export default {
name: 'Layout',
components: {
AppMain,
Navbar,
Sidebar,
TagsView
},
mixins: [ResizeMixin],
computed: {
...mapState({
sidebar: state => state.app.sidebar,
needTagsView: state => state.settings.tagsView,
fixedHeader: state => state.settings.fixedHeader
})
import { AppMain, Navbar, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex'
export default {
name: 'Layout',
components: {
AppMain,
Navbar,
Sidebar,
TagsView
},
mixins: [ResizeMixin],
created () {
this.$store.dispatch("products/setData", "BDCSBPT");
console.log("ZOULEJG");
},
computed: {
...mapState({
sidebar: state => state.app.sidebar,
needTagsView: state => state.settings.tagsView,
fixedHeader: state => state.settings.fixedHeader
})
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/mixin.scss";
<style lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/sbSidebar.scss";
.app-wrapper {
@include clearfix;
position: relative;
height: 100%;
width: 100%;
background-color: $containerbg;
.app-wrapper {
@include clearfix;
position: relative;
height: 100%;
width: 100%;
// background-color: $containerbg;
padding: 0;
&.mobile.openSidebar {
position: fixed;
top: 0;
&.mobile.openSidebar {
position: fixed;
top: 0;
}
}
}
.drawer-bg {
background: #000;
opacity: 0.3;
width: 100%;
top: 0;
height: 100%;
position: absolute;
z-index: 999;
}
.drawer-bg {
background: #000;
opacity: 0.3;
width: 100%;
top: 0;
height: 100%;
position: absolute;
z-index: 999;
}
.fixed-header {
width: 100%;
transition: width 0.28s;
}
.fixed-header {
width: 100%;
transition: width 0.28s;
}
.el-dropdown-menu--small {
padding: 0;
width: 5px;
}
.el-dropdown-menu--small {
padding: 0;
width: 5px;
}
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-10 16:43:16
*/
import router from "./router";
import store from "./store";
import { getMenuInfo } from "@/api/user";
......@@ -6,33 +11,31 @@ import "nprogress/nprogress.css"; // progress bar style
import getPageTitle from "@/utils/get-page-title";
import Cookies from "js-cookie";
NProgress.configure({ showSpinner: false }); // NProgress Configuration
router.beforeEach(async (to, from, next) => {
NProgress.start();
document.title = getPageTitle(to.meta.title);
let hasAddDict = store.state.dict.addDict;
let hasUser = store.state.user.hasUser;
let hasAddRoute = store.state.permission.addRoutes;
if (to.path == "/login") {
if (to.path == "/sb" || to.path == "/jg") {
sessionStorage.removeItem("token");
sessionStorage.setItem("psth", to.path)
next();
} else {
let code = sessionStorage.getItem("psth") == "/sb" ? "BDCSBPT" : "BDCJGPT"
//判断token是否存在
const hasToken = sessionStorage.getItem("token");
if (hasToken) {
//请求用户信息
if (!hasUser) {
store.dispatch("user/getUserInfo");
}
//加载字典
if (!hasAddDict) {
store.dispatch("dict/generateDic");
import("@/styles/public.scss");
}
if (hasAddRoute) {
next();
} else {
//请求菜单
const { result: getMenuData } = (await getMenuInfo()) || [];
const { result: getMenuData } = (await getMenuInfo(code)) || [];
const accessRoutes = await store.dispatch(
"permission/generateRoutes",
getMenuData
......@@ -42,16 +45,22 @@ router.beforeEach(async (to, from, next) => {
{ path: "*", redirect: "/404", hidden: true },
]);
const routeTo = Cookies.get("routerTo");
if (!hasAddDict) {
await store.dispatch("dict/generateDic");
}
if (routeTo && routeTo !== "/") {
next({ ...to, replace: true });
} else {
next("/home");
}
}
} else if (sessionStorage.getItem("psth")) {
next(sessionStorage.getItem("psth"));
} else {
next("/login");
next("/jg");
}
}
NProgress.done();
});
router.afterEach((to) => {
......
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
/* Layout */
import Layout from '@/layout'
/* Router Modules */
// import componentsRouter from './modules/components'
export const constantRoutes = [
{
path: '/404',
......@@ -22,9 +20,14 @@ export const constantRoutes = [
},
//登录
{
path: "/login",
name: "login",
component: () => import("@/views/login/index.vue"),
path: "/jg",
name: "loginjg",
component: () => import("@/views/loginjg/index.vue"),
},
{
path: "/sb",
name: "loginsb",
component: () => import("@/views/loginsb/index.vue"),
},
// 监管首页
{
......
module.exports = {
title: '汉中市不动产综合监管',
title: '',
/**
* @type {boolean} true | false
* @description Whether show the settings right-panel
......
/*
* @Author: xiaomiao 1158771342@qq.com
* @Date: 2023-03-09 15:24:53
* @LastEditors: xiaomiao 1158771342@qq.com
* @LastEditTime: 2023-03-13 09:03:16
* @FilePath: \上报\bdcjg-web\src\store\modules\permission.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import { constantRoutes } from '@/router'
import asyncRouter from '@/utils/asyncRouter.js'
const state = {
routes: [],
addRoutes: false,
routes: [],
addRoutes: false,
}
const mutations = {
SET_ROUTES: (state, routes) => {
state.addRoutes = true
state.routes = routes
},
RESET_ROUTE: (state) => {
state.addRoutes = false
}
SET_ROUTES: (state, routes) => {
state.addRoutes = true
state.routes = routes
},
RESET_ROUTE: (state) => {
state.addRoutes = false
}
}
const actions = {
// 添加全部菜单
generateRoutes ({ commit }, getMenuInfo) {
return new Promise(resolve => {
// 将权限菜单数组转成路由树数据结构
let permission_tree = asyncRouter(getMenuInfo)
const mergeResult = _.cloneDeep(constantRoutes).concat(permission_tree);
commit('SET_ROUTES', mergeResult)
resolve(permission_tree)
})
},
// 重置路由
resetRoutes ({ commit }) {
commit('RESET_ROUTE')
}
// 添加全部菜单
generateRoutes ({ commit }, getMenuInfo) {
return new Promise(resolve => {
// 将权限菜单数组转成路由树数据结构
let permission_tree = asyncRouter(getMenuInfo)
const mergeResult = _.cloneDeep(constantRoutes).concat(permission_tree);
commit('SET_ROUTES', mergeResult)
resolve(permission_tree)
})
},
// 重置路由
resetRoutes ({ commit }) {
commit('RESET_ROUTE')
}
}
// 树转数组
function dfs (root, fVisit) {
let stack = Array.isArray(root) ? [...root] : [root];
while (stack.length) {
let node = stack.pop();
fVisit && fVisit(node);
let children = node.children;
if (children && children.length) {
for (let i = children.length - 1; i >= 0; i--) stack.push(children[i]);
}
let stack = Array.isArray(root) ? [...root] : [root];
while (stack.length) {
let node = stack.pop();
fVisit && fVisit(node);
let children = node.children;
if (children && children.length) {
for (let i = children.length - 1; i >= 0; i--) stack.push(children[i]);
}
}
}
// 数组转树
//需要插入父节点id,pid为null或'',就是找root节点,然后root节点再去找自己的子节点
function array2Tree (data, pid) {
let res = [];
data.forEach(item => {
if (item.parentId === pid) {
let itemChildren = array2Tree(data, item.id);
if (itemChildren.length) item.children = itemChildren;
res.push(item);
}
});
// 菜单数据反转,保持一致
res.reverse()
_.each(res, c => {
if (c.children && c.children.length > 0) {
c.children.reverse()
}
})
return res;
let res = [];
data.forEach(item => {
if (item.parentId === pid) {
let itemChildren = array2Tree(data, item.id);
if (itemChildren.length) item.children = itemChildren;
res.push(item);
}
});
// 菜单数据反转,保持一致
res.reverse()
_.each(res, c => {
if (c.children && c.children.length > 0) {
c.children.reverse()
}
})
return res;
}
export default {
namespaced: true,
state,
mutations,
actions
namespaced: true,
state,
mutations,
actions
}
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-07 09:38:47
*/
import { getUserInfo } from "@/api/user";
const state = {
hasUser: false,
......@@ -15,14 +20,14 @@ const mutations = {
};
const actions = {
getUserInfo({ commit }) {
getUserInfo ({ commit }) {
return new Promise(async (resolve) => {
let { result: res } = await getUserInfo();
commit("SET_USERINFO", res);
resolve(true);
});
},
resetState({ commit }) {
resetState ({ commit }) {
commit("RESET_USER");
},
};
......
......@@ -2,11 +2,19 @@
overflow: hidden;
background: url("~@/image/dialogBg.png") no-repeat !important;
background-size: 100% 100% !important;
min-height: 90vh;
.dialog_title {
display: flex;
position: relative;
top: -2px;
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;
......@@ -48,10 +56,88 @@
box-shadow: inset 0px 0px 12px 0px #02D9FD;
border-radius: 2px;
border: 1px solid #6BC1FC;
margin: 0 18px 15px 18px;
margin: 0 18px 10px 18px;
}
}
.item-content-input {
/deep/.el-input__inner {
border: none !important;
text-align: right;
}
}
.regularHeight {
display: flex;
flex: 1;
height: 100%;
flex-direction: column;
.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: #B5D6DC;
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: #c0c4cc;
cursor: not-allowed;
white-space: nowrap;
margin-right: 5px;
text-align: right;
}
}
}
/deep/.el-textarea__inner {
border: 1px solid #224C7C;
margin: 0 0 10px 0 !important;
width: 100% !important;
color: #dadde3 !important;
background: transparent !important;
}
/deep/.el-input__inner {
border: 1px solid #224C7C !important;
margin: 0 !important;
width: 100% !important;
color: #dadde3 !important;
background: transparent !important;
}
.dialog_title {
@include flex;
justify-content: space-between;
......@@ -60,7 +146,6 @@
.el-dialog__header {
color: #FFFFFF;
// background: #074487;
height: 46px !important;
width: 97%;
margin: 0 auto;
......@@ -70,6 +155,7 @@
.el-dialog__body {
padding-top: 0;
padding-bottom: 0;
height: 95vh;
}
.el-dialog__headerbtn {
......@@ -79,7 +165,8 @@
background-size: 100% 100%;
right: 40px;
top: 33px;
&:hover{
&:hover {
box-shadow: inset 0px 0px 12px 0px #02D9FD;
}
}
......
// cover some element-ui styles
.el-breadcrumb__inner,
.el-breadcrumb__inner a {
font-weight: 400 !important;
......@@ -16,6 +15,25 @@
padding: 0 7px !important;
}
// input 样式
// 全局css 加上以下代码,可以隐藏上下箭头
// 取消input的上下箭头
input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
}
input::-webkit-outer-spin-button {
-webkit-appearance: none !important;
}
input[type="number"] {
-moz-appearance: textfield;
}
.el-upload {
input[type="file"] {
display: none !important;
......@@ -208,10 +226,29 @@ table td {
box-shadow: inset 0px 0px 20px 0px #03DBFF !important;
}
.el-table__body tr:hover>td {
.el-table__body tr:hover>td,
.el-table__body tr.hover-row>td.el-table__cell {
background: none !important;
}
// table 固定列样式
// tr:hover {
// background: #063160 !important;
// box-shadow: inset 0px 0px 20px 0px #03DBFF !important;
// }
// .el-table__fixed-right-patch {
// background-color: #073781
// }
.el-table__fixed-right {
background-color: #073781
}
.el-table__fixed::before,
.el-table__fixed-right::before {
display: none;
}
// 表格样式
.el-table th {
height: 48px !important;
......@@ -488,4 +525,50 @@ table td {
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
background-color: transparent !important;
}
// 提示框
.el-message-box {
background-color: #031a46;
border: 1px solid #5f82c7;
.el-message-box__title {
color: white;
}
.el-message-box__content {
color: white;
}
}
// 上级菜单
.el-cascader__dropdown {
background-color: #031a46;
border: 1px solid #5f82c7;
}
.el-cascader-menu {
color: white;
}
.el-radio {
.el-cascader-menu:hover {
color: white;
}
}
.el-cascader-node:not(.is-disabled):hover,
.el-cascader-node:not(.is-disabled):focus {
background: #F5F7FA;
background-image: initial;
background-position-x: initial;
background-position-y: initial;
background-size: initial;
background-repeat-x: initial;
background-repeat-y: initial;
background-attachment: initial;
background-origin: initial;
background-clip: initial;
background-color: rgb(80, 142, 235);
}
\ No newline at end of file
......
......@@ -2,7 +2,7 @@
@import './mixin.scss';
@import './transition.scss';
@import './element-ui.scss';
@import './sidebar.scss';
// @import './sidebar.scss';
/* CSS 初始化 */
html,
......@@ -336,6 +336,15 @@ aside {
color: $yellow;
}
// 操作按钮样式
.btnColor {
color: #8DEAF9;
}
.successColor {
color:#67C23A
}
// 通过 入库 样式
.adopt,
.success {
......@@ -408,4 +417,10 @@ aside {
top: 2px;
background: #FF7962;
color: #FF7962;
}
// 引入字体
@font-face {
font-family: AliBold;
src: url('../image/font/Alibaba_PuHuiTi_2.0_55_Regular_85_Bold.ttf')
}
\ No newline at end of file
......
#app {
.jgWrapper {
.main-container {
width: 100%;
height: calc(100% - 74px);
......@@ -340,4 +340,5 @@
word-break: break-all;
line-height: 20px;
flex: 1;
}
\ No newline at end of file
......
.tableClass {
/deep/.el-table {
border: none !important;
border-radius: 0 !important;
background-color: rgba(0, 0, 0, 0);
.el-table {
border: none !important;
border-radius: 0 !important;
background-color: rgba(0, 0, 0, 0);
.el-table__header-wrapper {
border-right: none;
.el-table__header-wrapper {
border-right: none;
}
}
.el-table__row .cell {
color: #8DEAF9 !important;
font-weight: 100 !important;
}
.el-table__row .cell {
color: #8DEAF9 !important;
font-weight: 100 !important;
}
.el-table__row {
background: rgba(0, 0, 0, 0) !important;
}
.el-table__row {
background: rgba(0, 0, 0, 0) !important;
}
thead {
background: #073781;
border-radius: 2px;
height: 42px;
& th {
//inherit:规定应该从父元素继承 background-color 属性的设置。
//transparent:默认。背景颜色为透明。
// background-color: inherit !important;
background-color: transparent;
color: #02D9FD;
}
& tr {
// background-color: inherit !important;
background-color: transparent;
}
}
thead {
background: #073781;
border-radius: 2px;
height: 42px;
& th {
//inherit:规定应该从父元素继承 background-color 属性的设置。
//transparent:默认。背景颜色为透明。
// background-color: inherit !important;
background-color: transparent;
color: #02D9FD;
}
& tr {
// background-color: inherit !important;
background-color: transparent;
}
}
}
}
//*****start*通用表单查询条件,列表样式******//
.bgc {
box-shadow: inset 0px 0px 8px 0px rgba(255, 255, 255, 0.5);
background-color: rgba(0, 0, 0, 0);
}
.from-clues {
height: 100%;
height: 100%;
width: 100%;
// min-width: 1280px;
box-sizing: border-box;
overflow-x: hidden;
padding: 2px;
&-header {
width: 100%;
min-width: 1280px;
padding: 5px 30px 20px 24px;
box-sizing: border-box;
overflow-x: hidden;
padding: 2px;
&-header {
width: 100%;
padding: 5px 30px 20px 24px;
box-sizing: border-box;
background: url("~@/image/formHeader.png") no-repeat;
background-size: 100% 100%;
margin-top: 15px;
/deep/.el-form-item__label {
color: #E3F1FF;
}
background: url("~@/image/formHeader.png") no-repeat;
background-size: 100% 100%;
margin-top: 15px;
/deep/.el-input__inner {
background: #07388B;
border-radius: 2px;
color: #CEF8FF;
border: 1px solid #6BC1FC;
}
.el-form-item__label {
color: #E3F1FF;
}
.advanced-search {
display: flex;
font-size: 12px;
flex-wrap: wrap;
padding-top: 5px;
height: 30px;
span {
display: flex;
align-items: center;
}
i {
color: $light-blue;
margin-left: 5px;
cursor: pointer;
}
.el-input__inner {
background: #07388B;
border-radius: 2px;
color: #CEF8FF;
border: 1px solid #6BC1FC;
}
}
.advanced-search {
display: flex;
font-size: 12px;
flex-wrap: wrap;
padding-top: 5px;
height: 30px;
span {
display: flex;
align-items: center;
}
ul {
display: flex;
align-items: center;
li {
color: $light-blue;
border: 1px solid $light-blue;
border-radius: 10px;
padding: 2px 8px;
line-height: 16px;
}
}
i {
color: $light-blue;
margin-left: 5px;
cursor: pointer;
}
.clean-btn {
margin-left: 10px;
}
ul {
display: flex;
align-items: center;
li {
color: $light-blue;
border: 1px solid $light-blue;
border-radius: 10px;
padding: 2px 8px;
line-height: 16px;
}
}
&-content {
width: 100%;
box-sizing: border-box;
margin-top: 15px;
background: url("~@/image/formContent.png") no-repeat;
background-size: 100% 100%;
padding: 22px 42px 20px;
//修改表头的背景颜色横向渐变色
@extend .tableClass;
.clean-btn {
margin-left: 10px;
}
}
/deep/.el-pagination__total {
color: #FFFFFF;
}
&-content {
width: 100%;
box-sizing: border-box;
margin-top: 15px;
background: url("~@/image/formContent.png") no-repeat;
background-size: 100% 100%;
padding: 22px 42px 20px;
//修改表头的背景颜色横向渐变色
@extend .tableClass;
.el-pagination__total {
color: #FFFFFF;
}
.bgc {
box-shadow: inset 0px 0px 8px 0px rgba(255, 255, 255, 0.5);
background-color: rgba(0, 0, 0, 0);
}
.el-pagination {
.el-input__inner {
color: #FFFFFF;
border: none;
@extend .bgc;
}
.el-pager li:not(.disabled).active {
box-shadow: inset 0px 0px 12px 0px #02D9FD;
border-radius: 1px;
border: 1px solid #02D9FD;
background-color: rgba(0, 0, 0, 0);
}
/deep/ .el-pagination {
.el-input__inner {
color: #FFFFFF;
border: none;
@extend .bgc;
}
.el-pager li:not(.disabled).active {
box-shadow: inset 0px 0px 12px 0px #02D9FD;
border-radius: 1px;
border: 1px solid #02D9FD;
background-color: rgba(0, 0, 0, 0);
}
.el-pager li {
@extend .bgc;
color: #FFFFFF;
}
}
.el-pager li {
@extend .bgc;
color: #FFFFFF;
}
}
}
/deep/.btn-next,
/deep/.btn-prev {
@extend .bgc;
color: #FFFFFF;
}
}
.el-form--inline .el-form-item {
width: auto;
margin-right: 0px;
.el-form--inline .el-form-item {
width: auto;
margin-right: 0px;
.el-form-item__content {
width: auto;
}
.el-form-item__content {
width: auto;
}
}
.el-form-item--small.el-form-item {
margin-bottom: 0px;
}
.el-form-item--small.el-form-item {
margin-bottom: 0px;
}
}
.el-pagination.is-background .btn-prev,
.el-pagination.is-background .btn-next {
@extend .bgc;
color: #FFFFFF;
}
//*****end*通用表单查询条件,列表样式******//
/deep/.el-range-separator {
line-height: 28px !important;
.el-range-separator {
line-height: 28px !important;
}
.width200px {
width: 200px;
width: 200px;
}
.width300px {
width: 300px;
width: 300px;
}
.slxx_title {
border-bottom: 1px solid $borderColor;
padding-left: 10px;
padding-bottom: 5px;
margin-bottom: 10px;
margin-top: 5px;
font-size: 16px;
font-weight: 500;
color: #4a4a4a;
border-bottom: 1px solid $borderColor;
padding-left: 10px;
padding-bottom: 5px;
margin-bottom: 10px;
margin-top: 5px;
font-size: 16px;
font-weight: 500;
color: #4a4a4a;
}
// 搜索框按钮的位置
.btnColRight {
box-sizing: border-box;
text-align: right;
box-sizing: border-box;
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__headerbtn {
position: absolute;
top: 22px;
right: 30px;
}
.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: white;
}
}
}
// 角色配置
.roleconfiguration {
.el-dialog__body {
display: flex;
flex-direction: column;
}
.el-tabs {
color: #cef8ff;
}
.sjmx {
.el-tabs__item {
height: 50px;
padding-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;
}
.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;
margin-bottom: 10px;
border-top: none;
}
.editDialogBox {
border-radius: 8px;
overflow: hidden;
min-width: 1228px;
height: 825px !important;
.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: #b5d6dc;
border-radius: 2px;
border: 1px solid #224c7c;
margin: 5px;
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: #c0c4cc;
cursor: not-allowed;
white-space: nowrap;
margin-right: 5px;
text-align: right;
}
}
}
.dialog_title {
display: flex;
position: relative;
font-size: 24px;
top: -8px;
width: 38%;
height: 40px;
margin-left: 28px;
justify-content: center;
}
.el-dialog__header {
display: flex;
margin-bottom: 10px;
}
.el-dialog__footer {
padding-right: 40px;
}
.divider {
width: 100%;
border-bottom: 1px solid #ccc;
}
}
.el-dialog__wrapper {
overflow: hidden;
}
.el-table {
background: none;
th.el-table__cell {
background-color: #073781;
color: #02d9fd;
}
tr {
background: none;
td {
color: white;
}
}
}
}
\ No newline at end of file
......
.scWrapper {
.main-container {
width: 100%;
height: calc(100% - 74px);
transition: margin-left 0.28s;
display: flex;
}
.sidebar-container {
transition: width 0.28s;
width: $sideBarWidth !important;
font-size: 0px;
margin-right: 15px;
background: #121F41;
.horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out,
0s padding-right ease-in-out;
}
.scrollbar-wrapper {
overflow-x: hidden !important;
margin-right: 0 !important;
&::-webkit-scrollbar {
display: none;
}
}
a {
display: inline-block;
width: 100%;
overflow: hidden;
}
.svg-icon {
margin-right: 5px;
}
.sub-el-icon {
margin-right: 12px;
margin-left: -2px;
}
.el-menu {
background-color: transparent !important;
border: none;
height: 100%;
width: 100% !important;
}
// menu hover
.el-menu--collapse .el-submenu__title,
.el-menu--collapse .submenu-title-noDropdown {
margin-left: 0px !important;
}
// 有子级
.el-submenu__title {
padding-left: 10px !important;
color: $menuText;
height: 42px;
background: linear-gradient(90deg, #013874 0%, #081B56 100%);
margin-bottom: 8px;
&:hover {
color: $subMenuActiveText !important;
background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%);
.svg-icon,
i,
span {
color: $subMenuActiveText !important;
}
}
}
// 没有子级
.submenu-title-noDropdown {
color: $menuText;
padding-left: 20px;
margin-bottom: 8px;
background: linear-gradient(90deg, #013874 0%, #081B56 100%);
&:hover {
color: $menuActiveText !important;
background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%);
.svg-icon {
color: #1ea6f8 !important;
}
i {
color: #1ea6f8 !important;
}
}
}
.submenu-title-noDropdown.is-active,
.el-submenu__title.is-active {
color: $menuActiveText;
background: linear-gradient(90deg, #1D66DC 0%, #081B56 100%);
.svg-icon {
color: #1ea6f8 !important;
}
i {
color: #1ea6f8 !important;
}
}
.submenu-title-noDropdown,
.el-submenu__title {
font-weight: 600;
font-size: $sideBarFontSize;
// margin: 0 10px;
>i {
color: $subMenuActiveText !important;
transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
margin-right: 10px;
}
.svg-icon {
font-size: 18px;
margin-top: -5px;
}
}
.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow {
transform: rotateZ(0deg) !important;
-webkit-transform: rotateZ(0deg) !important;
-moz-transform: rotateZ(0deg) !important;
-ms-transform: rotateZ(0deg) !important;
-o-transform: rotateZ(0deg) !important;
}
.is-active>.el-submenu__title {
color: #fff !important;
}
& .nest-menu .el-submenu>.el-submenu__title,
& .el-submenu .el-menu-item {
&.is-active {
background-color: $subMenuHover !important;
color: $menuActiveText !important;
}
&:hover {
background-color: $subMenuHover !important;
color: $menuActiveText !important;
}
min-width: 130px !important;
background-color: transparent !important;
font-weight: 600;
font-size: $sideBarFontSize;
margin: 0 10px;
// border-radius: 6px;
}
}
.hideSidebar {
.sidebar-container {
width: 54px !important;
}
.submenu-title-noDropdown {
padding: 0 !important;
position: relative;
.el-tooltip {
padding: 0 !important;
.svg-icon {
margin-left: 16px;
}
.sub-el-icon {
margin-left: 19px;
}
}
}
.el-submenu {
overflow: hidden;
&>.el-submenu__title {
padding: 0 !important;
.svg-icon {
margin-left: 16px;
}
.sub-el-icon {
margin-left: 19px;
}
.el-submenu__icon-arrow {
display: none;
}
}
}
.el-menu--collapse {
.el-submenu {
&>.el-submenu__title {
&>span {
height: 0;
width: 0;
overflow: hidden;
visibility: hidden;
display: inline-block;
}
}
}
}
}
.el-menu--collapse .el-menu .el-submenu {
min-width: $sideBarWidth !important;
}
// mobile responsive
.mobile {
.main-container {
margin-left: 0px;
}
.sidebar-container {
transition: transform 0.28s;
width: $sideBarWidth !important;
}
&.hideSidebar {
.sidebar-container {
pointer-events: none;
transition-duration: 0.3s;
transform: translate3d(-$sideBarWidth, 0, 0);
}
}
}
.withoutAnimation {
.main-container,
.sidebar-container {
transition: none;
}
}
}
// when menu collapsed
.el-menu--vertical {
&>.el-menu {
.svg-icon {
margin-right: 16px;
}
.sub-el-icon {
margin-right: 12px;
margin-left: -2px;
}
}
.nest-menu .el-submenu>.el-submenu__title,
.el-menu-item {
width: calc(100% - 12px);
border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
font-weight: 600 !important;
font-size: 15px !important;
background-color: $menuHover !important;
color: $menuText !important;
&:hover {
background-color: $menuHover !important;
opacity: .9;
.svg-icon,
i,
span {
color: $menuText;
}
}
}
// the scroll bar appears when the subMenu is too long
>.el-menu--popup {
max-height: 100vh;
overflow-y: auto;
background-color: #32ACFE !important;
border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
min-width: 140px;
padding: 12px 0;
&::-webkit-scrollbar-track-piece {
background: #d3dce6;
}
&::-webkit-scrollbar {
width: 6px;
}
&::-webkit-scrollbar-thumb {
background: #99a9bf;
border-radius: 20px;
}
}
}
.el-submenu__title {
display: flex;
align-items: center;
}
.el-submenu__title span {
white-space: normal;
word-break: break-all;
line-height: 20px;
flex: 1;
padding-right: 20px;
}
.el-menu-item {
height: 42px;
display: flex;
align-items: center;
padding-right: 20px !important;
}
.el-menu-item span {
white-space: nowrap !important;
word-break: break-all;
line-height: 20px;
flex: 1;
}
\ No newline at end of file
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-07 09:35:10
*/
import Layout from '@/layout'
export default function filterAsyncRouter (routers) {
routers.forEach(item => {
......@@ -21,4 +26,4 @@ export default function filterAsyncRouter (routers) {
}
function loadView (view) {
return r => require.ensure([], () => r(require(`@/views${view}.vue`)))
}
\ No newline at end of file
}
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:11:50
*/
/**
* 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器
*/
......@@ -57,17 +62,17 @@ service.interceptors.response.use(
}
);
//对错误信息的处理函数
function handleErrorData(status) {
function handleErrorData (status) {
switch (status) {
case 401:
Message.error("由于长时间未操作,请重新登录!");
router.replace({
path: "/login",
query: {
redirect: router.history.current.fullPath,
},
});
break;
// case 401:
// Message.error("由于长时间未操作,请重新登录!");
// router.replace({
// path: "/login/jg",
// query: {
// redirect: router.history.current.fullPath,
// },
// });
// break;
case 403:
Message.error("拒绝访问");
break;
......
import Vue from 'vue'
// 下载,导出
Vue.prototype.$download = function(name, href) {
Vue.prototype.$download = function (name, href) {
var a = document.createElement('a') // 创建a标签
var e = document.createEvent('MouseEvents') // 创建鼠标事件对象
e.initEvent('click', false, false) // 初始化事件对象
......@@ -10,7 +10,7 @@ Vue.prototype.$download = function(name, href) {
a.dispatchEvent(e) // 给指定的元素,执行事件click事件
}
// 导出json文件
Vue.prototype.$downloadJson = function(data, name) {
Vue.prototype.$downloadJson = function (data, name) {
// 1 生成文件的 blob 对象
const blobData = new Blob([JSON.stringify(data)], {
type: 'application/octet-stream'
......@@ -84,7 +84,7 @@ const checkCode = (rule, value, callback) => {
// }
// }
// 日期格式转换 "yyyy-MM-dd HH:mm:ss"
Vue.prototype.$formdate = function(date) {
Vue.prototype.$formdate = function (date) {
if (!date) {
return ""
}
......@@ -95,22 +95,22 @@ Vue.prototype.$formdate = function(date) {
var hh = (d.getHours() < 10 ? '0' + d.getHours() : d.getHours()) + ':';
var mm = (d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes()) + ':';
var ss = (d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds());
return YY + MM + DD +" "+hh + mm + ss
return YY + MM + DD + " " + hh + mm + ss
}
// 时间格式过滤
Vue.filter('timeFilter', function(timeStr) {
Vue.filter('timeFilter', function (timeStr) {
if (timeStr) {
return timeStr.substring(0, 10)
}
})
export function getType(o) {
export function getType (o) {
return Object.prototype.toString.call(o).slice(8, -1)
}
export function isKeyType(o, type) {
export function isKeyType (o, type) {
return getType(o).toLowerCase() === type.toLowerCase()
}
// 深拷贝全局挂载
Vue.prototype.$deepCopy = function(sth) {
Vue.prototype.$deepCopy = function (sth) {
// 深度复制数组
// if (Object.prototype.toString.call(obj) === "[object Array]") {
// const object = [];
......@@ -196,7 +196,7 @@ Vue.prototype.$dealArrNotDisabled = arr => {
}
}
}
function nodeDeal(arr) {
function nodeDeal (arr) {
arr.forEach(item => {
delete item.disabled
if (item.children) {
......@@ -222,7 +222,7 @@ Vue.prototype.$dealArrDisabled = (arr, id) => {
}
}
}
function nodeDeal(arr) {
function nodeDeal (arr) {
arr.forEach(item => {
item['disabled'] = true
if (item.children) {
......@@ -249,10 +249,9 @@ Vue.prototype.$getNodeRoute = (val, id) => {
}
}
})
function nodefun(newVal, newId, newCid_list) {
function nodefun (newVal, newId, newCid_list) {
let flag = false
newVal.forEach(j => {
// console.log(j)
if (j.id === newId) {
newCid_list.push(j.id)
flag = true
......@@ -272,7 +271,7 @@ Vue.prototype.$getNodeRoute = (val, id) => {
return newCid_list
}
}
function result(cid_list) {
function result (cid_list) {
const arr = cid_list.concat()
arr.pop()
return arr
......@@ -325,7 +324,7 @@ Vue.prototype.$findParent = (list, id) => {
Vue.prototype.$findChildren = (list, nodeId) => {
let newArray = []
let flag = false
function dealList(list, nodeId) {
function dealList (list, nodeId) {
if (list.length !== 0) {
list.forEach(item => {
if (!flag) {
......
import XLSX2 from "xlsx";
import XLSX from "xlsx-style";
/**
* 获取数据类型
* @param {All} [o] 需要检测的数据
* @returns {String}
*/
export function getType(o) {
export function getType (o) {
return Object.prototype.toString.call(o).slice(8, -1);
}
/**
......@@ -13,10 +15,10 @@ export function getType(o) {
* @param {String} [type] 数据类型
* @returns {Boolean}
*/
export function isKeyType(o, type) {
export function isKeyType (o, type) {
return getType(o).toLowerCase() === type.toLowerCase();
}
export function deepCopy(sth) {
export function deepCopy (sth) {
let copy;
if (null == sth || "object" != typeof sth) return sth;
if (isKeyType(sth, 'date')) {
......@@ -47,7 +49,7 @@ export function deepCopy(sth) {
* @param endLen 字符串后面保留位数
* @returns {string}
*/
export function hideCode(str, frontLen, endLen = 0) {
export function hideCode (str, frontLen, endLen = 0) {
var len = str.length - frontLen - endLen;
var xing = '';
for (var i = 0; i < len; i++) {
......@@ -57,7 +59,7 @@ export function hideCode(str, frontLen, endLen = 0) {
};
// 数组去重
export function unique(arr) {
export function unique (arr) {
var obj = {};
return arr.filter(function (item, index, arr) {
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
......@@ -65,7 +67,7 @@ export function unique(arr) {
}
// 创造id
export function getUuid(len, radix) {
export function getUuid (len, radix) {
var chars = "0123456789abcdefghijklmnopqrstuvwxyz".split(
""
);
......@@ -89,7 +91,7 @@ export function getUuid(len, radix) {
}
//js计算两个时间戳之间的时间差 (月)
export function intervalTime(startTime, endTime) {
export function intervalTime (startTime, endTime) {
// var timestamp=new Date().getTime(); //计算当前时间戳
var timestamp = (Date.parse(new Date())) / 1000;//计算当前时间戳 (毫秒级)
var date1 = ""; //开始时间
......@@ -107,16 +109,184 @@ export function intervalTime(startTime, endTime) {
return mon
}
// 日期转时间戳
export function js_strto_time(str_time) {
export function js_strto_time (str_time) {
var str = str_time.replace(/-/g, '/') // 将-替换成/,因为下面这个构造函数只支持/分隔的日期字符串
var date = new Date(str) // 构造一个日期型数据,值为传入的字符串
return date.getTime()
}
// 时间戳转日期
export function timestampToTime(timestamp) {
export function timestampToTime (timestamp) {
var date = new Date(timestamp)//时间戳为10位需*1000,时间戳为13位的话不需乘1000
var Y = date.getFullYear() + '-'
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
var D = date.getDate() > 10 ? date.getDate() : '0' + date.getDate()
return Y + M + D
}
\ No newline at end of file
}
function formatDate (value) {
var date = new Date(value);
var y = date.getFullYear(),
m = date.getMonth() + 1,
d = date.getDate()
if (m < 10) { m = '0' + m; }
if (d < 10) { d = '0' + d; }
var t = y + '-' + m + '-' + d
return t;
}
export function getCurrentDate (date = 'firstDay') {
var now = new Date() // 当前日期
var nowYear = now.getFullYear() //当前年
var nowMonth = now.getMonth() //当前月 (值为0~11)
var d = now.getDate() //当天
if (date == 'firstDay') {
return formatDate(new Date(nowYear, nowMonth, 1)) // 本月开始时间
} else {
return formatDate(new Date(nowYear, nowMonth + 1, 0)) // 本月结束时间
}
}
export function setExport2Excel (exportName) {
/* generate workbook object from table */
var wb = XLSX2.utils.table_to_sheet(document.querySelector("#mytable"));//mytable为表格的id名
if (!wb['!merges']) {
this.$message.warning('无法导出:报表无数据');
return
}
for (var i = 0; i < 11; i++) {
wb["!cols"][i] = { wpx: 150 }
}
// 样式的文档地址
// https://www.npmjs.com/package/xlsx-style
for (const key in wb) {
if (key == 'A1') {
wb[key].s = {
font: {//字体设置
sz: 24,
bold: true,
},
alignment: {//文字居中
horizontal: 'center',
vertical: 'center',
wrapText: 1,
indent: 0,
wrap_text: true
},
border: { // 设置边框
top: { style: 'thin' },
bottom: { style: 'thin' },
left: { style: 'thin' },
right: { style: 'thin' }
}
}
} else if (key.indexOf('!') === -1) {
wb[key].s = {
font: {//字体设置
sz: 13,
bold: false,
color: {
rgb: '000000'//十六进制,不带#
}
},
alignment: {//文字居中
horizontal: 'center',
vertical: 'center',
wrapText: 1,
indent: 0,
wrap_text: true
},
border: { // 设置边框
top: { style: 'thin' },
bottom: { style: 'thin' },
left: { style: 'thin' },
right: { style: 'thin' }
}
}
}
}
var data = addRangeBorder(wb['!merges'], wb) //合并项添加边框
var filedata = sheet2blob(data)
openDownloadDialog(filedata, exportName + ".xlsx")
}
//为合并项添加边框
function addRangeBorder (range, ws) {
let arr = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
range.forEach(item => {
let startColNumber = Number(item.s.r), endColNumber = Number(item.e.r);
let startRowNumber = Number(item.s.c), endRowNumber = Number(item.e.c);
console.log(startColNumber);
const test = ws[arr[startRowNumber] + (startColNumber + 1)];
for (let col = startColNumber; col <= endColNumber; col++) {
for (let row = startRowNumber; row <= endRowNumber; row++) {
ws[arr[row] + (col + 1)] = test;
}
}
})
return ws;
}
//将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
function sheet2blob (sheet, sheetName) {
sheetName = sheetName || 'sheet1';
var workbook = {
SheetNames: [sheetName],
Sheets: {}
};
workbook.Sheets[sheetName] = sheet; // 生成excel的配置项
var wopts = {
bookType: 'xlsx', // 要生成的文件类型
bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
type: 'binary'
};
var wbout = XLSX.write(workbook, wopts);
var blob = new Blob([s2ab(wbout)], {
type: "application/octet-stream"
}); // 字符串转ArrayBuffer
function s2ab (s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
return blob;
}
function openDownloadDialog (url, saveName) {
if (typeof url == 'object' && url instanceof Blob) {
url = URL.createObjectURL(url); // 创建blob地址
}
var aLink = document.createElement('a');
aLink.href = url;
aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
var event;
if (window.MouseEvent) event = new MouseEvent('click');
else {
event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
aLink.dispatchEvent(event);
}
export function judgeListComplete (list) {
function judgeObjectComplete (obj) {
let flag = false
for (const key in obj) {
if (obj[key] == '' && key != 'index') {
flag = true
}
}
return flag
}
let isNotComplete = list.findIndex(item => {
return judgeObjectComplete(item) === true
})
if (isNotComplete > -1) {
return false
} else {
return true
}
}
......
......@@ -29,11 +29,13 @@ class data extends filter {
},
{
label: "业务号",
prop: "ywh"
prop: "ywh",
minWidth: 150,
},
{
label: "不动产单元号",
prop: "bdcdyh"
prop: "bdcdyh",
minWidth: 150,
},
// {
// label: "不动产产权证号",
......
......@@ -120,11 +120,12 @@ export default {
return (
<div>
<el-button
type="primary"
size="mini"
type="text"
class='btnColor'
onClick={() => { this.handleEdit(scope.row) }}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
)
......@@ -161,5 +162,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:22:01
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
......@@ -34,12 +39,12 @@ class data extends filter {
{
label: "不动产单元号",
prop: "bdcdyh",
width: 150,
minWidth: 150,
},
{
label: "不动产权证号",
prop: "bdcdjzmh",
width: 150,
minWidth: 160,
},
{
label: "抵押类型",
......
......@@ -113,11 +113,13 @@ export default {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
size="mini"
onClick={() => { this.handleEdit(scope.row) }}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
)
......@@ -152,6 +154,6 @@ export default {
</script>
<style scoped lang="scss">
// 引入表单整体样式
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:23:47
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
......@@ -7,16 +12,18 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.xzq, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
},
{
label: "权属状态",
width: 80,
render: (h, scope) => {
return (
<div>
......@@ -31,17 +38,18 @@ class data extends filter {
},
{
label: "供役地不动产单元号",
width: 150,
minWidth: 150,
prop: "GYDBDCDYH"
},
{
label: "需役地不动产单元号",
width: 150,
minWidth: 150,
prop: "XYDBDCDYH"
},
{
label: "不动产产权证号",
prop: "bdcqzh"
prop: "bdcqzh",
minWidth: 150,
},
{
label: "权利类型",
......@@ -59,11 +67,13 @@ class data extends filter {
},
{
label: "登记时间",
prop: "DJSJ"
prop: "DJSJ",
width: 140,
},
{
label: "登记机构",
prop: "DJJG"
prop: "DJJG",
minWidth: 150,
}
]
}
......
......@@ -116,16 +116,17 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 170,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
size="mini"
type="text"
class='btnColor'
onClick={() => { this.handleEdit(scope.row) }}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
)
......@@ -160,5 +161,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:25:09
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
......@@ -33,11 +38,13 @@ class data extends filter {
},
{
label: "不动产单元号",
prop: "bdcdyh"
prop: "bdcdyh",
minWidth: 150,
},
{
label: "不动产权证号",
prop: "bdcqzh"
prop: "bdcqzh",
minWidth: 150,
},
{
label: "权利人",
......@@ -86,7 +93,8 @@ class data extends filter {
},
{
label: "登记机构",
prop: "djjg"
prop: "djjg",
minWidth: 150,
}
]
}
......
......@@ -104,17 +104,19 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 90,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -169,5 +171,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:25:56
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
......@@ -8,7 +13,7 @@ class data extends filter {
{
label: "业务号",
prop: "ywh",
width: 150
minWidth: 150,
},
// {
// label: "权利类型",
......
......@@ -77,12 +77,14 @@ export default {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -135,5 +137,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -34,12 +34,12 @@ class data extends filter {
{
label: "不动产单元号",
prop: "bdcdyh",
width: 150
minWidth: 150,
},
{
label: "不动产权证号",
prop: "bdcqzh",
width: 150
minWidth: 150,
},
{
label: "权利人",
......
......@@ -109,12 +109,14 @@ export default {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -201,5 +203,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -7,6 +7,7 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
......@@ -28,19 +29,17 @@ class data extends filter {
{
label: "业务号",
prop: "YWH",
width: 150
},
{
label: "业务号",
prop: "BDCDYH"
minWidth: 150,
},
{
label: "不动产单元号",
prop: "BDCDYH"
prop: "BDCDYH",
minWidth: 150,
},
{
label: "不动产权证号",
prop: "BDCQZH"
prop: "BDCQZH",
minWidth: 150,
},
{
label: "建筑物名称",
......
......@@ -100,17 +100,19 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 170,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -151,5 +153,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -7,10 +7,11 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.XZQ, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
......@@ -20,7 +21,7 @@ class data extends filter {
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.ZXYWH, 'A22')}</span>
<span>{this.dicStatus(scope.row.qszt, 'A22')}</span>
</div>
)
},
......@@ -28,19 +29,17 @@ class data extends filter {
{
label: "业务号",
prop: "YWH",
width: 150
},
{
label: "业务号",
prop: "BDCDYH"
minWidth: 150,
},
{
label: "不动产单元号",
prop: "BDCDYH"
prop: "BDCDYH",
minWidth: 150,
},
{
label: "不动产权证号",
prop: "BDCQZH"
prop: "BDCQZH",
minWidth: 150,
},
{
label: "海岛名称",
......
......@@ -101,17 +101,19 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 170,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -157,6 +159,6 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -11,7 +11,7 @@ class data extends filter {
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.QXDM, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
......@@ -22,7 +22,7 @@ class data extends filter {
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.QSZT, 'A22')}</span>
<span>{this.dicStatus(scope.row.qszt, 'A22')}</span>
</div>
)
},
......@@ -52,17 +52,17 @@ class data extends filter {
{
label: "业务号",
prop: "YWH",
width: 95
minWidth: 150,
},
{
label: "不动产单元号",
prop: "BDCDYH",
width: 150,
minWidth: 150,
},
{
label: "不动产权证号",
prop: "BDCQZH",
width: 150,
minWidth: 150,
},
{
label: "权利人",
......
......@@ -103,12 +103,14 @@ export default {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -163,6 +165,6 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
@import "./index.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:33:35
*/
import filter from '@/utils/filter.js'
class data extends filter {
......@@ -8,35 +13,40 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.XZQ, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
},
{
label: "权属状态",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.ZXYWH, 'A22')}</span>
<span>{this.dicStatus(scope.row.qszt, 'A22')}</span>
</div>
)
},
},
{
label: "业务号",
prop: "BDCDYH"
prop: "BDCDYH",
minWidth: 150,
},
{
label: "不动产单元号",
prop: "BDCDYH"
prop: "BDCDYH",
minWidth: 150,
},
{
label: "不动产权证号",
prop: "BDCQZH"
prop: "BDCQZH",
minWidth: 150,
},
{
label: "权利人",
......
......@@ -95,17 +95,19 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 170,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -143,5 +145,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -7,20 +7,22 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.XZQ, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
},
{
label: "权属状态",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.ZXYWH, 'A22')}</span>
<span>{this.dicStatus(scope.row.qszt, 'A22')}</span>
</div>
)
},
......@@ -28,11 +30,7 @@ class data extends filter {
{
label: "业务号",
prop: "YWH",
width: 150
},
{
label: "业务号",
prop: "BDCDYH"
width: 150,
},
{
label: "不动产单元号",
......
......@@ -100,17 +100,19 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 170,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -148,5 +150,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Description: ,
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:35:00
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
......@@ -30,15 +35,17 @@ class data extends filter {
{
label: "业务号",
prop: "ywh",
width: 80,
minWidth: 150,
},
{
label: "不动产单元号",
prop: "bdcdyh"
prop: "bdcdyh",
minWidth: 150,
},
{
label: "不动产权证号",
prop: "bdcqzh"
prop: "bdcqzh",
minWidth: 150,
},
{
label: "权利人",
......
......@@ -101,12 +101,14 @@ export default {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -145,5 +147,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -108,16 +108,17 @@ export default {
}].concat(data.columns()).concat([
{
label: "操作",
width: 170,
width: 80,
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
size="mini"
type="text"
class='btnColor'
onClick={() => { this.handleEdit(scope.row) }}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
)
......@@ -160,5 +161,5 @@ export default {
</script>
<style scoped lang="scss">
// 引入表单整体样式
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -7,16 +7,18 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.xzq, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
},
{
label: "权属状态",
width: 80,
render: (h, scope) => {
return (
<div>
......@@ -27,15 +29,18 @@ class data extends filter {
},
{
label: "业务号",
prop: "ywh"
prop: "ywh",
minWidth: 150,
},
{
label: "不动产单元号",
prop: "bdcdyh"
prop: "bdcdyh",
minWidth: 150,
},
{
label: "不动产产权证号",
prop: "bdcqzh"
prop: "bdcqzh",
minWidth: 150,
},
{
label: "权利人",
......
......@@ -101,11 +101,12 @@ export default {
return (
<div>
<el-button
type="primary"
size="mini"
type="text"
class='btnColor'
onClick={() => { this.handleEdit(scope.row) }}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
)
......@@ -151,5 +152,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:37:10
*/
import filter from '@/utils/filter.js'
class data extends filter {
......@@ -8,10 +13,11 @@ class data extends filter {
return [
{
label: "行政区",
width: 80,
render: (h, scope) => {
return (
<div>
<span>{this.dicStatus(scope.row.QXDM, 'A20')}</span>
<span>{this.dicStatus(scope.row.qxdm, 'A20')}</span>
</div>
)
},
......@@ -28,11 +34,13 @@ class data extends filter {
// },
{
label: "业务号",
prop: "YWH"
prop: "YWH",
minWidth: 150,
},
{
label: "不动产单元号",
prop: "BDCDYH"
prop: "BDCDYH",
minWidth: 150,
},
{
label: "不动产权证号",
......
......@@ -102,12 +102,14 @@ export default {
return (
<div>
<el-button
type="primary"
type="text"
class='btnColor'
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
......@@ -143,5 +145,5 @@ export default {
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -11,74 +11,74 @@
</template>
<script>
import maps from "@/components/Echart/Map";
import brokenline from "@/components/Echart/Brokenline";
export default {
data () {
return {};
},
components: { maps, brokenline },
mounted () { },
beforeDestroy () { },
methods: {},
};
import maps from "@/components/Echart/Map";
import brokenline from "@/components/Echart/Brokenline";
export default {
data () {
return {};
},
components: { maps, brokenline },
mounted () { },
beforeDestroy () { },
methods: {},
};
</script>
<style lang="scss" scoped>
.centercard {
width: 44%;
height: calc(100vh - 114px);
box-sizing: border-box;
padding: 0 .0521rem;
display: flex;
flex-direction: column;
.centercard {
width: 44%;
height: calc(100vh - 114px);
box-sizing: border-box;
padding: 0 0.0521rem;
display: flex;
flex-direction: column;
.card1 {
width: 100%;
background: url("~@/image/mapcenter.png") no-repeat;
background-size: 100% 100%;
position: relative;
height: 64%;
.card1 {
width: 100%;
background: url("~@/image/mapcenter.png") no-repeat;
background-size: 100% 100%;
position: relative;
height: 64%;
.title {
position: absolute;
font-weight: bold;
color: #02D9FD;
line-height: .1354rem;
font-size: .1146rem;
position: absolute;
left: 0;
right: 0;
top: .0365rem;
text-align: right;
padding-right: 15%;
.title {
position: absolute;
font-weight: bold;
color: #02d9fd;
line-height: 0.1354rem;
font-size: 0.1146rem;
position: absolute;
left: 0;
right: 0;
top: 0.0365rem;
text-align: right;
padding-right: 15%;
}
}
}
.card2 {
width: 100%;
background: url("~@/image/sjqs.png") no-repeat;
background-size: 100% 100%;
position: relative;
flex: 1;
.title {
position: absolute;
font-weight: bold;
color: #02D9FD;
line-height: .1354rem;
font-size: .1146rem;
position: absolute;
left: 0;
right: 0;
top: .0365rem;
text-align: center;
margin-bottom: .0521rem;
}
.brokenline {
margin: auto;
.card2 {
width: 100%;
background: url("~@/image/sjqs.png") no-repeat;
background-size: 100% 100%;
position: relative;
flex: 1;
.title {
position: absolute;
font-weight: bold;
color: #02d9fd;
line-height: 0.1354rem;
font-size: 0.1146rem;
position: absolute;
left: 0;
right: 0;
top: 0.0365rem;
text-align: center;
margin-bottom: 0.0521rem;
}
.brokenline {
margin: auto;
width: 100%;
}
}
}
}
</style>
......
......@@ -9,63 +9,57 @@
<div class="d-flex">
<dv-decoration-8 class="dv-dec-8" :color="decorationColor" />
<div class="title">
<span class="title-text">{{ products.name }}}</span>
<dv-decoration-5
:dur="1"
class="dv-dec-5"
:color="decorationColor"
/>
:color="decorationColor" />
</div>
<dv-decoration-8
class="dv-dec-8"
:reverse="true"
:color="decorationColor"
/>
:color="decorationColor" />
</div>
<dv-decoration-10 class="dv-dec-10-s" />
</div>
</div>
<screencontent v-show="isshow"/>
<screencontent v-show="isshow" />
</div>
</div>
</div>
</template>
<script>
import drawMixin from "@/utils/drawMixin";
import screencontent from "./screencontent";
export default {
mixins: [drawMixin],
data() {
return {
isshow:true,
loading: true,
decorationColor: ["#568aea", "#568aea"],
};
},
components: {
screencontent,
},
mounted() {
import drawMixin from "@/utils/drawMixin";
import screencontent from "./screencontent";
export default {
mixins: [drawMixin],
data () {
return {
isshow: true,
loading: true,
decorationColor: ["#568aea", "#568aea"],
};
},
components: {
screencontent,
},
mounted () {
// this.timeFn();
this.cancelLoading();
},
beforeDestroy() {
clearInterval(this.timing);
},
methods: {
cancelLoading() {
setTimeout(() => {
this.loading = false;
}, 500);
// this.timeFn();
this.cancelLoading();
},
beforeDestroy () {
clearInterval(this.timing);
},
methods: {
cancelLoading () {
setTimeout(() => {
this.loading = false;
}, 500);
},
},
},
computed: {
...mapGetters(["products"]),
},
};
};
</script>
<style scoped lang="scss">
@import "./index.scss";
@import "./index.scss";
</style>
......
......@@ -55,206 +55,200 @@
<script>
import columnar from "@/components/Echart/Columnar";
import work from "@/api/work";
export default {
data () {
return {
// 日均接入量
qxerrer: "",
qxsuccess: "",
sterrer: "",
stsuccess: "",
qxjrl: "",
stjrl: "",
qxcgl: "",
stcgl: ""
};
},
mounted () {
this.getsthjqxjrtotal();
},
components: { columnar },
computed: {
qxjrlList: function () {
return this.qxjrl && this.qxjrl.toString().split("");
import columnar from "@/components/Echart/Columnar";
import work from "@/api/work";
export default {
data () {
return {
// 日均接入量
qxerrer: "",
qxsuccess: "",
sterrer: "",
stsuccess: "",
qxjrl: "",
stjrl: "",
qxcgl: "",
stcgl: ""
};
},
stjrlList: function () {
return this.stjrl && this.stjrl.toString().split("");
mounted () {
this.getsthjqxjrtotal();
},
},
methods: {
getsthjqxjrtotal () {
return new Promise(async (resolve) => {
try {
let p = {
DJLX: "",
QLLX: "",
XZQDM: "",
};
let res = await work.getsthjqxjrtotal(p);
this.stjrl=res.result.stsum
this.qxjrl=res.result.qxsum
this.qxerrer=Number(res.result.qxjrerrer)
this.sterrer=Number(res.result.sthjerrer)
if(res.result.sum=="0"){
this.qxcgl="100%"
this.stcgl="100%"
}else{
let qxcglnum=Number(res.result.qxjrsuccess)/this.qxjrl*100
let stcgl=Number(res.result.sthjsuccess)/this.qxjrl*100
this.qxcgl=qxcglnum.toFixed(2)+"%";
this.stcgl=stcgl.toFixed(2)+"%";
components: { columnar },
computed: {
qxjrlList: function () {
return this.qxjrl && this.qxjrl.toString().split("");
},
stjrlList: function () {
return this.stjrl && this.stjrl.toString().split("");
},
},
methods: {
getsthjqxjrtotal () {
return new Promise(async (resolve) => {
try {
let p = {
DJLX: "",
QLLX: "",
XZQDM: "",
};
let res = await work.getsthjqxjrtotal(p);
this.stjrl = res.result.stsum
this.qxjrl = res.result.qxsum
this.qxerrer = Number(res.result.qxjrerrer)
this.sterrer = Number(res.result.sthjerrer)
if (res.result.sum == "0") {
this.qxcgl = "100%"
this.stcgl = "100%"
} else {
let qxcglnum = Number(res.result.qxjrsuccess) / this.qxjrl * 100
let stcgl = Number(res.result.sthjsuccess) / this.qxjrl * 100
this.qxcgl = qxcglnum.toFixed(2) + "%";
this.stcgl = stcgl.toFixed(2) + "%";
}
} catch (error) {
this.$refs.msg.messageShow();
}
} catch (error) {
this.$refs.msg.messageShow();
}
});
});
},
},
},
};
};
</script>
<style lang="scss" scoped>
.leftcard {
width: 32%;
height: calc(100vh -114px);
display: flex;
flex-direction: column;
.card {
background: url("~@/image/qxjr.png") no-repeat;
background-size: 100% 100%;
position: relative;
text-align: center;
width: 100%;
height: 22%;
}
.carda {
background: url("~@/image/sthj.png") no-repeat;
background-size: 100% 100%;
position: relative;
text-align: center;
width: 100%;
height: 22%;
}
// .card1 {
// background: url("~@/image/sbtj.png") no-repeat;
// background-size: 100% 100%;
// position: relative;
// text-align: center;
// width: 100%;
// padding: .0417rem 0;
// height: 49%;
// }
.card1 {
background: url("~@/image/sbtj.png") no-repeat;
background-size: 100% 100%;
position: relative;
box-sizing: border-box;
flex: 1;
height: 56%;
}
.cardhead {
color: #02d9fd;
line-height: .125rem;
letter-spacing: .0104rem;
position: absolute;
font-size: .1042rem;
left: 0;
right: 0;
margin: auto;
text-align: center;
top: 8px;
font-weight: 700;
}
.rjjrlList {
.leftcard {
width: 32%;
display: flex;
margin-top: .01781rem;
height: calc(100vh - 114px);
flex-direction: column;
.qxjr {
background: url("~@/image/jrl3.png");
.card {
height: 22%;
background: url("~@/image/qxjr.png") no-repeat;
background-size: 100% 100%;
position: relative;
text-align: center;
width: 100%;
}
.sthj {
background: url("~@/image/jh.png");
background-size: 100% 100%;
}
p {
margin: 0 .0156rem .0521rem .0156rem;
font-weight: 700;
width: .195rem;
height: .2475rem;
font-size: .2863rem;
font-size: .2867rem;
.carda {
height: 22%;
background: url("~@/image/sthj.png") no-repeat;
background-size: 100% 100%;
position: relative;
text-align: center;
width: 100%;
}
}
.cardcontent {
width: 100%;
height: 100%;
display: flex;
// padding: 35px 20px 20px 20px;
box-sizing: border-box;
color: #e3f1ff;
margin-top: .1263rem;
.cardcontent-left {
width: 60%;
flex-direction: column;
.card1 {
background: url("~@/image/sbtj.png") no-repeat;
background-size: 100% 100%;
position: relative;
li{
font-size: .1042rem;
}
box-sizing: border-box;
flex: 1;
}
.cardcontent-left::before {
.cardhead {
color: #02d9fd;
line-height: 0.125rem;
letter-spacing: 0.0104rem;
position: absolute;
font-size: 0.1042rem;
left: 0;
right: 0;
top: .3042rem;
content: "";
width: .0052rem;
height: .4688rem;
background: linear-gradient(180deg,
#091b4c 0%,
#47b5e0 56%,
#091b4c 100%);
margin: auto;
text-align: center;
top: 8px;
font-weight: 700;
}
.cardcontent-right {
flex: 1;
width: 100%;
flex-direction: column;
font-size: .0833rem;
.rjjrlList {
display: flex;
margin-top: 0.01781rem;
.bad {
color: #c97168;
.qxjr {
background: url("~@/image/jrl3.png");
background-size: 100% 100%;
}
.cg {
color: #5fba7d;
.sthj {
background: url("~@/image/jh.png");
background-size: 100% 100%;
}
p {
margin-bottom: .0417rem;
margin: 0 0.0156rem 0.0521rem 0.0156rem;
font-weight: 700;
width: 0.195rem;
height: 0.2475rem;
font-size: 0.2863rem;
font-size: 0.2867rem;
}
}
.cardcontent {
width: 100%;
height: 100%;
display: flex;
// padding: 35px 20px 20px 20px;
box-sizing: border-box;
color: #e3f1ff;
margin-top: 0.1263rem;
.cardcontent-left {
width: 60%;
flex-direction: column;
position: relative;
flex: 1;
height: 100%;
li {
font-size: 0.1042rem;
}
}
.cardcontent-left::before {
position: absolute;
right: 0;
top: 0.3042rem;
content: "";
width: 0.0052rem;
height: 0.4688rem;
background: linear-gradient(
180deg,
#091b4c 0%,
#47b5e0 56%,
#091b4c 100%
);
}
.cardcontent-right {
flex: 1;
width: 100%;
height: 100%;
flex-direction: column;
font-size: 0.09977rem;
span:nth-child(1) {
margin-right: .0781rem;
.bad {
color: #c97168;
}
span:nth-child(2) {
font-size: .1042rem;
font-weight: 900;
.cg {
color: #5fba7d;
}
p {
margin-bottom: 0.0417rem;
span:nth-child(1) {
margin-right: 0.0781rem;
}
span:nth-child(2) {
font-size: 0.1142rem;
font-weight: 900;
}
}
}
}
}
}
</style>
......
<template>
<div class="rightcard">
<div class="card2 cardCon mt-10">
<div class="cardhead">登记业务量</div>
<Rose />
</div>
<div class="card1 cardCon d-center">
<div class="cardhead">新建国有房屋信息</div>
<div class="cardcontent" style="margin-top: .3646rem">
<dv-scroll-board v-if="config.data.length > 0" :config="config" class="board" />
<div v-else="config.data.length==0" class="nodata">暂无数据</div>
<div v-else class="nodata">暂无数据</div>
</div>
</div>
<div class="card2 cardCon mt-10">
<div class="cardhead">登记业务量</div>
<Rose />
</div>
<div class="card3 cardCon mt-10">
<div class="cardhead">登记类型总量</div>
<columnarsmat />
......@@ -19,131 +20,136 @@
</template>
<script>
import columnarsmat from "@/components/Echart/Columnarsmat";
import Rose from "@/components/Echart/Rose";
import work from "@/api/work";
export default {
data () {
return {
config: {
headerBGC: '#016AC5',
oddRowBGC: '#154295',
evenRowBGC: '#154295',
header: ['序号', '用途', '性质', '面积'],
data: [],
key: 0
import columnarsmat from "@/components/Echart/Columnarsmat";
import Rose from "@/components/Echart/Rose";
import work from "@/api/work";
export default {
data () {
return {
config: {
headerBGC: '#016AC5',
oddRowBGC: '#154295',
evenRowBGC: '#154295',
header: ['序号', '用途', '性质', '面积'],
data: [],
key: 0
}
}
}
},
components: { columnarsmat, Rose },
mounted () {
this.addhousetotal();
// scroll(tableref.value.$refs.bodyWrapper);//设置滚动
},
methods: {
async addhousetotal () {
try {
let { result: res } = await work.addhousetotal();
res.map((item, index) => {
return (
this.config.data.push([index, item.fwyt, item.fwxz, item.mj])
)
});
} catch (error) {
console.log("error", error);
},
components: { columnarsmat, Rose },
mounted () {
this.addhousetotal();
// scroll(tableref.value.$refs.bodyWrapper);//设置滚动
},
methods: {
async addhousetotal () {
try {
let { result: res } = await work.addhousetotal();
res.map((item, index) => {
return (
this.config.data.push([index, item.fwyt, item.fwxz, item.mj])
)
});
} catch (error) {
console.log("error", error);
}
}
}
}
}
</script>
<style lang="scss" scoped>
/deep/.row-item:not(:last-child) {
margin-bottom: .026rem;
}
.rightcard {
width: 32%;
display: flex;
height: calc(100vh - 114px);
flex-direction: column;
.cardhead {
font-size: .1042rem;
font-weight: bold;
color: #02D9FD;
text-align: center;
position: absolute;
left: 0;
right: 0;
top: .0625rem;
text-align: center;
/deep/.row-item:not(:last-child) {
margin-bottom: 0.026rem;
}
.cardcontent {
width: 100%;
height: 100%;
display: -webkit-box;
overflow: hidden;
.rightcard {
width: 32%;
display: flex;
height: calc(100vh - 114px);
flex-direction: column;
.nodata {
font-size: .1042rem;
color: #02D9FD;
.cardhead {
font-size: 0.1042rem;
font-weight: bold;
margin: auto;
margin-top: 120px;
color: #02d9fd;
text-align: center;
position: absolute;
left: 0;
right: 0;
top: 0.0625rem;
text-align: center;
}
}
.cardCon {
padding: .0521rem .026rem;
position: relative;
text-align: center;
width: 100%;
}
.cardcontent {
width: 100%;
height: 100%;
display: -webkit-box;
overflow: hidden;
.card1 {
height: 33%;
background: url("~@/image/xjgyfwxx.png") no-repeat;
background-size: 100% 100%;
.nodata {
font-size: 0.1042rem;
color: #02d9fd;
font-weight: bold;
margin: auto;
margin-top: 120px;
}
}
.board {
width: 90%;
margin: 0 auto;
height: 1.1031rem;
margin-top: .0521rem;
/deep/.header{
font-size: .0738rem;
.cardCon {
padding: 0.0521rem 0.026rem;
position: relative;
text-align: center;
width: 100%;
}
.card1 {
height: 33%;
background: url("~@/image/xjgyfwxx.png") no-repeat;
background-size: 100% 100%;
/deep/.dv-scroll-board {
.header {
height: 0.1875rem;
align-items: center;
}
}
/deep/.rows{
.ceil{
font-size: .0738rem;
color: #6BC1FC
}
.board {
width: 90%;
margin: 0 auto;
height: 1.1031rem;
margin-top: 0.0521rem;
/deep/.header {
font-size: 0.0738rem;
}
/deep/.rows {
.ceil {
font-size: 0.0738rem;
color: #6bc1fc;
}
}
}
}
}
.card2 {
height: 33%;
background: url("~@/image/djywl.png") no-repeat;
background-size: 100% 100%;
padding: .3825rem 0 0 0;
}
.card2 {
height: 33%;
background: url("~@/image/djywl.png") no-repeat;
background-size: 100% 100%;
padding: 0.3825rem 0 0 0;
}
.card3 {
height: 33%;
flex: 1;
background: url("~@/image/djlxzl.png") no-repeat;
background-size: 100% 100%;
padding-bottom: 0;
.card3 {
height: 33%;
flex: 1;
background: url("~@/image/djlxzl.png") no-repeat;
background-size: 100% 100%;
padding-bottom: 0;
.cardhead {
top: .0417rem;
.cardhead {
top: 0.0417rem;
}
}
}
.cardhead {
position: absolute;
.cardhead {
position: absolute;
}
}
}
</style>
......
......@@ -10,29 +10,16 @@
<el-row>
<el-col :span="4">
<el-form-item label="开始日期" prop="startTime">
<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-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-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>
<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>
</el-form-item>
</el-col>
<!-- 操作按钮 -->
......@@ -57,7 +44,7 @@ import efficient from "@/api/efficient";
import { getFirstDayOfSeason, timeFormat } from "@/utils/operation";
export default {
name: "jktj",
data() {
data () {
return {
// 开始日期限制
pickerOptionsStart: {
......@@ -83,19 +70,19 @@ export default {
pieChartsData: [],
};
},
created() {},
mounted() {
created () { },
mounted () {
this.getProcessCounts();
},
computed: {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange(val) {
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true);
},
//查询各区县办件数量
async getProcessCounts() {
async getProcessCounts () {
this.pieChartsData = [];
let { result: res } = await efficient.getProcessCounts(
this.form.startTime,
......@@ -121,7 +108,7 @@ export default {
});
},
// 重置
resetForm() {
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(), true),
......@@ -129,7 +116,7 @@ export default {
this.getProcessCounts();
},
//玫瑰图初始化
echartInit() {
echartInit () {
let _this = this;
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
......@@ -190,7 +177,7 @@ export default {
});
},
//柱图初始化
async barChartInit(recType) {
async barChartInit (recType) {
//请求recType对应业务的各区县数据
let { result: res } = await efficient.getProcessDays(
recType,
......@@ -325,7 +312,7 @@ export default {
};
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
.jktjDetail {
height: 100%;
......@@ -364,5 +351,5 @@ export default {
}
</style>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -10,47 +10,24 @@
<el-row>
<el-col :span="4">
<el-form-item label="行政区">
<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-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>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始日期" prop="startTime">
<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-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-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>
<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>
</el-form-item>
</el-col>
<!-- 操作按钮 -->
......@@ -98,7 +75,7 @@ export default {
// 搜索表单
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(),true),
endTime: timeFormat(new Date(), true),
qxdm: "",
},
};
......@@ -111,8 +88,8 @@ export default {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange(val){
this.form.endTime = timeFormat(new Date(val),true)
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true)
},
async getSuucessRate () {
this.recTypeArr = [];
......@@ -137,7 +114,7 @@ export default {
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(),true),
endTime: timeFormat(new Date(), true),
qxdm: "",
};
this.getSuucessRate();
......@@ -231,7 +208,7 @@ export default {
color: "#fff",
fontSize: "16",
},
splitNumber:2,
splitNumber: 2,
axisLabel: {
formatter: "{value} %",
textStyle: {
......@@ -302,7 +279,7 @@ export default {
};
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
.jktjDetail {
height: 100%;
......@@ -337,5 +314,5 @@ export default {
}
</style>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -10,47 +10,24 @@
<el-row>
<el-col :span="4">
<el-form-item label="行政区">
<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-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>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始日期">
<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-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-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>
<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>
</el-form-item>
</el-col>
<!-- 操作按钮 -->
......@@ -98,13 +75,13 @@ export default {
// 搜索表单
form: {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(),true),
endTime: timeFormat(new Date(), true),
qxdm: "",
},
chartData:[]
chartData: []
};
},
mounted() {
mounted () {
// 查询业务量
this.getProcessCounts();
},
......@@ -112,10 +89,10 @@ export default {
...mapGetters(["dicData"]),
},
methods: {
endTimeChange(val){
this.form.endTime = timeFormat(new Date(val),true)
endTimeChange (val) {
this.form.endTime = timeFormat(new Date(val), true)
},
async getProcessCounts(){
async getProcessCounts () {
this.chartData = [];
let { result: res } = await efficient.getProcessCounts(
this.form.startTime,
......@@ -133,13 +110,13 @@ export default {
resetForm () {
this.form = {
startTime: getFirstDayOfSeason(),
endTime: timeFormat(new Date(),true),
endTime: timeFormat(new Date(), true),
qxdm: ""
};
this.getProcessCounts();
},
//图表渲染
echartInit(chartArr) {
echartInit (chartArr) {
// 基于准备好的dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("myChart"));
// 绘制图表
......@@ -158,7 +135,7 @@ export default {
xAxis: [
{
type: "category",
data: chartArr.map(item=>item.recTypeName),
data: chartArr.map(item => item.recTypeName),
axisLabel: {
interval: 0,
formatter: function (val) {
......@@ -221,7 +198,7 @@ export default {
},
},
barMaxWidth: '60',
data: chartArr.map(item=>item.counts),
data: chartArr.map(item => item.counts),
},
],
});
......@@ -230,7 +207,7 @@ export default {
};
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
.jktjDetail {
height: 100%;
......@@ -240,11 +217,13 @@ export default {
.rows {
margin-left: 100px;
}
.center {
line-height: 50vh;
text-align: center;
color:#b6b5b5
color: #b6b5b5
}
.echarts-box {
display: flex;
justify-content: center;
......@@ -263,5 +242,5 @@ export default {
}
</style>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -46,7 +46,7 @@ class data extends filter {
{
prop: "bizMsgid",
label: "业务报文ID",
width: 90,
width: 98,
},
{
prop: "createdate",
......@@ -56,7 +56,7 @@ class data extends filter {
{
prop: "recflowid",
label: "业务流水号",
width: 95,
width: 100,
},
{
prop: "estatenum",
......@@ -70,6 +70,7 @@ class data extends filter {
},
{
prop: "rectypeName",
minWidth: 240,
label: "业务名称",
render: (h, scope) => {
return (
......
......@@ -24,9 +24,8 @@
</el-col>
<el-col :span="6">
<el-form-item label="至" prop="receiveEndTime" label-width="35px">
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd"
clearable v-model="form.receiveEndTime" value-format="yyyy-MM-dd HH:mm:ss"
@change="endTimeChange"></el-date-picker>
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd" clearable
v-model="form.receiveEndTime" value-format="yyyy-MM-dd HH:mm:ss" @change="endTimeChange"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
......@@ -119,6 +118,7 @@ export default {
},
data () {
return {
pickerOptionsStart: {
disabledDate: (time) => {
let endDateVal = this.form.receiveEndTime;
......@@ -189,14 +189,29 @@ export default {
render: (h, scope) => {
return (
<div>
<el-button
type="primary"
onClick={() => {
this.handleEdit(scope.row);
}}
>
详情
</el-button>
{
scope.row.receiveState == 2 ?
<el-button
type="text"
class='successColor'
onClick={() => {
this.handleDetails(scope.row);
}}
>
修改
<i class="el-icon-d-arrow-right"></i>
</el-button> :
<el-button
type="text"
class='btnColor'
onClick={() => {
this.handleDetails(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
}
</div>
)
}
......@@ -245,13 +260,41 @@ export default {
// 结果
handleResult (row) {
this.$popupDialog('响应结果', 'views/jsbwcx/components/result', row)
}
},
// 详情
handleDetails (row) {
if (row.rectypeName) {
this.title = row.rectypeName
} else {
let Title = ''
this.dicData['A21'].map(item => {
if (item.DCODE == row.DJLX || item.DCODE == row.djlx) {
Title = item.DNAME
return
}
})
this.dicData['A8'].map(item => {
if (item.DCODE == row.QLLX || item.DCODE == row.qllx) {
Title += '-' + item.DNAME
return
}
})
this.title = Title
}
this.$refs.editLog.isShow(row);
if (row.receiveState == 2) {
this.$store.dispatch('business/setReportLogEdit')
} else {
this.$store.dispatch('business/setEdit')
}
},
}
}
</script>
<style scoped lang="scss">
// 引入表单整体样式
@import "~@/styles/public.scss";
// // @import "~@/styles/public.scss";
// 引入当前css
@import "./index.scss";
</style>
......
<template>
<div class="bg">
<div class="login-logo"></div>
<div class="login-inner-bg login">
<h2>{{ productName }}</h2>
<div class="user_style">
<h3>欢迎登录</h3>
<el-form
:model="user"
:rules="rules"
ref="user"
id="loginform"
class="demo-ruleForm"
>
<el-form :model="user" :rules="rules" ref="user" id="loginform" class="demo-ruleForm">
<el-form-item prop="account">
<el-input
class="username"
v-model="user.account"
placeholder="请输入用户名"
></el-input>
<el-input class="username" v-model="user.account" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
type="password"
class="password"
v-model="user.password"
placeholder="请输入密码"
></el-input>
<el-input type="password" class="password" @keyup.enter.native="login('user')" v-model="user.password"
placeholder="请输入密码"></el-input>
</el-form-item>
<!-- <el-form-item>
<el-checkbox
label="记住用户名"
@change="checkUserName"
></el-checkbox>
</el-form-item> -->
<el-form-item class="login-btn">
<el-button type="primary" style="width: 100%" @click="login('user')"
>登录</el-button
>
<el-button type="primary" style="width: 100%" @click="login('user')">登录</el-button>
</el-form-item>
</el-form>
</div>
......@@ -44,221 +23,244 @@
</template>
<script>
import { loginIn } from "@/api/login.js";
import { api, getAction } from "@/api/manageApi";
export default {
name: "Login",
data() {
return {
user: {
account: "",
password: "",
checkStatus: false,
},
productName: "",
rules: {
account: [{ required: true, message: "请填写帐号", trigger: "blur" }],
password: [{ required: true, message: "请填写密码", trigger: "blur" }],
},
};
},
created() {
const params = {};
const queryOptions = {
conditionGroup: {
conditions: [
{
property: "code",
value: "BDCJGPT",
operator: "EQ",
},
],
queryRelation: "AND",
},
};
params.queryOptions = JSON.stringify(queryOptions);
//根据子系统code获取子系统详细信息
getAction(api.subsystem, params).then((res) => {
if (res.status === 1) {
this.productName = res.content[0].name;
this.$store.dispatch("products/setData", res.content[0]);
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
},
mounted() {
// this.checkUserName();
},
methods: {
//记住用户名
checkUserName: function (flag) {
this.user.checkStatus = flag;
if (this.user.checkStatus) {
localStorage.setItem("accountId", this.user.account);
let name = localStorage.getItem("accountId");
if (name === "") {
return;
} else {
this.user.account = name;
}
} else {
this.user.account = localStorage.getItem("accountId");
}
import { loginIn } from "@/api/login.js";
import { api, getAction } from "@/api/manageApi";
export default {
name: "Login",
data () {
return {
user: {
account: "",
password: "",
checkStatus: false,
},
productName: "",
rules: {
account: [{ required: true, message: "请填写帐号", trigger: "blur" }],
password: [{ required: true, message: "请填写密码", trigger: "blur" }],
},
};
},
login(user) {
var self = this;
this.$refs[user].validate((valid) => {
if (valid) {
loginIn(self.user.account, self.user.password)
.then((res) => {
if (res.status === 1) {
//存储token
sessionStorage.setItem("token", `Bearer ${res.content}`);
//登录成功后需判断有无重定向,没有重定向则跳转首页
this.$router.replace(this.$route.query.redirect || "/");
} else {
//错误处理
}
})
.catch((error) => {
// console.dir(error);
});
created () {
const params = {};
const queryOptions = {
conditionGroup: {
conditions: [
{
property: "code",
value: "BDCJGPT",
operator: "EQ",
},
],
queryRelation: "AND",
},
};
params.queryOptions = JSON.stringify(queryOptions);
//根据子系统code获取子系统详细信息
getAction(api.subsystem, params).then((res) => {
if (res.status === 1) {
console.log(" res.contentJJJGGG", res.content);
// this.productName = res.content[0].name;
this.$store.dispatch("products/setData", res.content[0].code);
sessionStorage.setItem("products", res.content[0].code)
console.log("jjjggg的product");
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
},
},
computed: {
productName() {
return this.$store.state.products.products.name;
mounted () {
// this.checkUserName();
},
methods: {
//记住用户名
checkUserName: function (flag) {
this.user.checkStatus = flag;
if (this.user.checkStatus) {
localStorage.setItem("accountId", this.user.account);
let name = localStorage.getItem("accountId");
if (name === "") {
return;
} else {
this.user.account = name;
}
} else {
this.user.account = localStorage.getItem("accountId");
}
},
login (user) {
var self = this;
this.$refs[user].validate((valid) => {
if (valid) {
loginIn(self.user.account, self.user.password)
.then((res) => {
if (res.status === 1) {
//存储token
sessionStorage.setItem("token", `Bearer ${res.content}`);
//登录成功后需判断有无重定向,没有重定向则跳转首页
this.$router.replace(this.$route.query.redirect || "/");
} else {
//错误处理
}
})
.catch((error) => {
// console.dir(error);
});
}
});
},
},
},
components: {},
};
components: {},
};
</script>
<style scoped lang="scss">
.username,
.password {
position: relative;
&:before {
content: "";
display: block;
width: 16px;
height: 16px;
position: absolute;
left: 10px;
top: 7px;
background-size: 100% 100%;
.username,
.password {
position: relative;
&:before {
content: "";
display: block;
width: 16px;
height: 16px;
position: absolute;
left: 10px;
top: 7px;
background-size: 100% 100%;
}
/deep/ .el-input__inner {
text-indent: 24px;
border: 1px solid rgba(11, 161, 248, 0.4);
background-color: rgba(6, 135, 205, 0.3) !important;
}
}
/deep/ .el-input__inner {
text-indent: 24px;
border: 1px solid rgba(11, 161, 248, 0.4);
background-color: rgba(6, 135, 205, 0.3) !important;
.username::before {
background-image: url(../../image/username.png);
}
}
.username::before {
background-image: url(../../image/username.png);
}
.password::before {
background-image: url(../../image/password.png);
}
.bg {
width: 100%;
height: 100%;
min-width: 1440px;
min-height: 560px;
background: url(../../image/loginBoxBg.png) no-repeat;
background-size: 100% 100%;
overflow: hidden;
position: relative;
}
.login-inner-bg {
background: url(../../image/loginBg.png) no-repeat;
width: 21.6%;
height: 43%;
min-width: 360px;
min-height: 380px;
top: 30%;
right: 20%;
position: absolute;
background-size: 100% 100%;
box-sizing: border-box;
padding: 56px;
h2 {
.password::before {
background-image: url(../../image/password.png);
}
.bg {
width: 100%;
font-size: 36px;
font-weight: 700;
color: #fff;
text-align: center;
white-space: nowrap;
position: absolute;
right: 0;
top: -70px;
background-image: linear-gradient(
180deg,
rgba(99, 163, 255, 1) 0,
rgba(99, 163, 255, 1) 0,
rgba(182, 220, 255, 1) 49.731445%,
rgba(114, 190, 255, 1) 100%,
rgba(114, 190, 255, 1) 100%
);
overflow-wrap: break-word;
color: rgba(255, 255, 255, 1);
font-size: 36px;
font-family: AlimamaShuHeiTi-Bold;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
height: 100%;
min-width: 1440px;
min-height: 560px;
background: url(../../image/loginBoxBg.png) no-repeat;
background-size: 100% 100%;
overflow: hidden;
position: relative;
.login-logo {
background: url(../../image/loginLogo.png) no-repeat;
background-size: 100% 100%;
width: 28%;
height: 52%;
position: absolute;
top: 25%;
left: 19%;
}
}
}
.login {
.user_style {
h3 {
.login-inner-bg {
background: url(../../image/loginBg.png) no-repeat;
width: 20.6%;
height: 43%;
min-width: 360px;
min-height: 380px;
top: 30%;
right: 20%;
position: absolute;
background-size: 100% 100%;
box-sizing: border-box;
padding: 56px;
h2 {
width: 100%;
font-size: 36px;
font-weight: 700;
color: #fff;
font-size: 22px;
font-weight: normal;
text-align: center;
margin: 16px auto 34px;
font-weight: 400;
white-space: nowrap;
position: absolute;
right: 0;
top: -70px;
background-image: linear-gradient(
180deg,
rgba(99, 163, 255, 1) 0,
rgba(99, 163, 255, 1) 0,
rgba(182, 220, 255, 1) 49.731445%,
rgba(114, 190, 255, 1) 100%,
rgba(114, 190, 255, 1) 100%
);
overflow-wrap: break-word;
color: rgba(255, 255, 255, 1);
font-size: 36px;
font-family: AlimamaShuHeiTi-Bold;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
}
.btn {
width: 100%;
height: 6vh;
background-color: #00c2de;
border-radius: 5px;
font-size: 1.4vw;
color: #ffffff;
}
.btn:hover {
cursor: pointer;
background-color: #2d8cf0;
}
}
.login #loginform {
.el-form-item {
margin-bottom: 24px !important;
}
.login-btn {
margin-top: 40px !important;
.login {
.user_style {
h3 {
color: #fff;
font-size: 22px;
font-weight: normal;
text-align: center;
margin: 16px auto 34px;
font-weight: 400;
}
}
.btn {
width: 100%;
height: 6vh;
background-color: #00c2de;
border-radius: 5px;
font-size: 1.4vw;
color: #ffffff;
}
.btn:hover {
cursor: pointer;
background-color: #2d8cf0;
}
}
.el-button {
font-size: 18px;
background: #0d8cc0 !important;
color: #ffffff !important;
cursor: pointer !important;
.login #loginform {
.el-form-item {
margin-bottom: 24px !important;
}
.login-btn {
margin-top: 40px !important;
}
.el-button {
font-size: 18px;
background: #0d8cc0 !important;
color: #ffffff !important;
cursor: pointer !important;
}
.el-input__inner {
width: 100% !important;
}
.el-checkbox__label {
color: #fff;
}
}
.el-input__inner {
width: 100% !important;
.inputUser .ivu-input {
padding: 6px 24px !important;
border: 1px solid #9f9f9f !important;
}
.el-checkbox__label {
color: #fff;
tr.hover-row > td.el-table__cell {
background-color: transparent !important;
}
}
.inputUser .ivu-input {
padding: 6px 24px !important;
border: 1px solid #9f9f9f !important;
}
</style>
......
<template>
<div class="bg">
<div class="title">
<img src="../../image/bdclogo.png" alt="">
<h2>{{ productName }}</h2>
</div>
<div class="login-inner-bg login">
<div class="user_style">
<h3>用户登录</h3>
<el-form :model="user" :rules="rules" ref="user" id="loginform" class="demo-ruleForm">
<el-form-item prop="account">
<el-input class="username" v-model="user.account" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input type="password" class="password" @keyup.native="login('user')" v-model="user.password"
placeholder="请输入密码" show-password></el-input>
</el-form-item>
<el-form-item prop="yz">
<el-input class="yz" @keyup.native="login('user')" v-model="user.yz"
placeholder="请输入验证码"></el-input>
</el-form-item>
<el-form-item class="login-btn">
<el-button type="primary" style="width: 100%" @click="login('user')">登录</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
import { loginIn } from "@/api/login.js";
import { api, getAction } from "@/api/manageApi";
export default {
name: "Login",
data () {
return {
user: {
account: "",
password: "",
yz: "",
checkStatus: false,
},
productName: "",
rules: {
account: [{ required: true, message: "请填写帐号", trigger: "blur" }],
password: [{ required: true, message: "请填写密码", trigger: "blur" }],
},
};
},
created () {
const params = {};
const queryOptions = {
conditionGroup: {
conditions: [
{
property: "code",
value: "BDCSBPT",
operator: "EQ",
},
],
queryRelation: "AND",
},
};
params.queryOptions = JSON.stringify(queryOptions);
//根据子系统code获取子系统详细信息
getAction(api.subsystem, params).then((res) => {
if (res.status === 1) {
this.productName = res.content[0].name;
// console.log(" res.contentSSSSSBBBBB", res.content);
this.$store.dispatch("products/setData", res.content[0].code);
sessionStorage.setItem("products", res.content[0].code)
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
},
mounted () {
// this.checkUserName();
},
methods: {
//记住用户名
checkUserName: function (flag) {
this.user.checkStatus = flag;
if (this.user.checkStatus) {
localStorage.setItem("accountId", this.user.account);
let name = localStorage.getItem("accountId");
if (name === "") {
return;
} else {
this.user.account = name;
}
} else {
this.user.account = localStorage.getItem("accountId");
}
},
login (user) {
var self = this;
this.$refs[user].validate((valid) => {
if (valid) {
loginIn(self.user.account, self.user.password)
.then((res) => {
if (res.status === 1) {
this.$store.dispatch('business/setInitRules', "layout1")
//存储token
sessionStorage.setItem("token", `Bearer ${res.content}`);
//登录成功后需判断有无重定向,没有重定向则跳转首页
this.$router.replace(this.$route.query.redirect || "/");
} else {
console.log(res);
this.$message.error({ message: res.message })
}
})
.catch((error) => {
// console.dir(error);
});
}
});
},
},
components: {},
};
</script>
<style scoped lang="scss">
.username,
.password,
.yz {
position: relative;
&:before {
content: "";
display: block;
width: 16px;
height: 16px;
position: absolute;
left: 10px;
top: 7px;
background-size: 100% 100%;
}
/deep/ .el-input__inner {
color: #000 !important;
text-indent: 24px;
// border: 1px solid rgba(11, 161, 248, 0.4);
// background-color: rgba(6, 135, 205, 0.3) !important;
}
}
.username::before {
background-image: url(../../image/userlogo.png);
}
.password::before {
background-image: url(../../image/passlogo.png);
}
.yz::before {
background-image: url(../../image/yzlogo.png);
}
.bg {
width: 100%;
height: 100%;
min-width: 1440px;
min-height: 560px;
background: url(../../image/loginBoxsb.png) no-repeat;
background-size: 100% 100%;
overflow: hidden;
position: relative;
}
.title {
width: 24%;
height: 6%;
top: 20%;
right: 38%;
position: absolute;
img {
width: 60px;
height: 60px;
top: 0%;
left: 2%;
position: absolute;
}
h2 {
top: 25%;
left: 22%;
position: absolute;
width: 383px;
height: 42px;
font-size: 28px;
font-weight: 600;
color: #ffffff;
text-shadow: 0px 4px 4px #002c95;
}
}
.login-inner-bg {
background: white;
width: 24.6%;
height: 47%;
min-width: 360px;
min-height: 380px;
top: 30%;
right: 38%;
position: absolute;
background-size: 100% 100%;
box-sizing: border-box;
padding: 56px;
}
.login {
.user_style {
h3 {
font-weight: normal;
text-align: center;
margin: -10px auto 28px;
font-weight: 400;
width: 125px;
height: 29px;
font-size: 20px;
font-family: Source Han Sans CN;
font-weight: 400;
color: #333333;
}
}
.btn {
width: 100%;
height: 6vh;
background-color: #00c2de;
border-radius: 5px;
font-size: 1.4vw;
color: #000;
}
.btn:hover {
cursor: pointer;
background-color: #2d8cf0;
}
}
.login #loginform {
.el-form-item {
margin-bottom: 24px !important;
}
.login-btn {
margin-top: 30px !important;
}
.el-button {
font-size: 18px;
border-radius: 0;
background: #4162d8 !important;
color: #ffffff !important;
cursor: pointer !important;
}
.el-input__inner {
width: 100% !important;
}
.el-checkbox__label {
color: #fff;
}
}
.inputUser .ivu-input {
padding: 6px 24px !important;
border: 1px solid #9f9f9f !important;
}
</style>
/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;
}
/deep/.el-table--group::after,
.el-table--border::after {
width: 0 !important;
}
.export-excel-wrapper {
display: inline-block;
}
\ No newline at end of file
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns () {
return [
{
prop: "recType",
label: "行政区",
width: '90'
},
{
label: '增量数据接入情况',
children: [
{
prop: 'busniessCount',
label: '本期接入业务量(笔)',
},
{
prop: 'receiveCount',
label: '本期接入业务量(次)',
},
{
prop: 'recordTotal',
label: '本期登簿日志反映出的登簿量(条)',
},
{
label: '本期接入质量评价',
children: [
{
prop: 'noReportLog',
label: '未上报登簿日志县区数(个)',
},
{
prop: 'noReportArea',
label: '未上报数据县区数(个)',
},
{
label: '本期未成功接入登簿量及在登簿日志量中的占比',
width: '120',
children: [
{
prop: 'failReportCount',
label: '未成功接入登簿量(条)',
},
{
prop: 'failReportRatio',
label: '占比',
render: (h, scope) => {
return (
<span>{(scope.row.failReportRatio * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '分时段接入登簿量及与本期接入登簿量的占比',
children: [
{
label: '24小时内接入登簿量(占比%)',
width: '120',
children: [
{
prop: 'failReportCount24h',
},
{
prop: 'failReportRatio24h',
render: (h, scope) => {
return (
<span>{(scope.row.failReportRatio24h * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '48小时内接入登簿量(占比%)',
width: '120',
children: [
{
prop: 'failReportCount24To48h',
},
{
prop: 'failReportRatio24To48h',
render: (h, scope) => {
return (
<span>{(scope.row.failReportRatio24To48h * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '超过48小时接入登簿量(占比%)',
width: '120',
children: [
{
prop: 'failReportCount48h',
},
{
prop: 'failReportRatio48h',
render: (h, scope) => {
return (
<span>{(scope.row.failReportRatio48h * 100).toFixed(2)}%</span>
);
},
}
]
}
]
},
{
prop: 'xxx',
label: '网络环境异常情况',
},
{
prop: 'xxx',
label: '非登簿环节接入的区县数',
},
{
prop: 'xxx',
label: '非自动方式接入的区县数',
},
{
prop: 'rate',
label: '综合评分'
}
]
}
]
}
]
}
}
export default new data()
<!-- 登簿日志查询 -->
\ No newline at end of file
<!-- 接入质量评价表 -->
<template>
<div class="from-clues">
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item>
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
<el-col :span="6">
<el-form-item label="接收日期" prop="startTime">
<el-date-picker type="date" class="width100" placeholder="开始日期" :picker-options="pickerOptionsStart"
clearable v-model="form.startTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="至" prop="endTime" label-width="35px">
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd" clearable
v-model="form.endTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<!-- 按钮操作 -->
<el-col :span="12" class="btnColRight">
<el-form-item>
<btn nativeType="cz" @click="handleResetForm">重置</btn>
<btn nativeType="cx" @click="featchDataSelf">查询</btn>
<btn nativeType="cx" @click="handlesetExport2Excel(downTitle)">导出</btn>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<lb-table ref="table" :header-cell-style="headerStyle1" :pagination="false" :column="tableData.columns"
:data="tableData.data">
</lb-table>
<down-lb-table ref="table" v-show="false" :id="'mytable'" :downExcel="true" :header-cell-style="headerStyle"
:pagination="false" :column="tableData.columns" :data="tableData.data" :downTitle="downTitle">
</down-lb-table>
</div>
</div>
</template>
<script>
// 接入质量评价表
// 引入表格头部数据
import data from "./data";
// 引入table混入方法
import tableMixin from "@/mixins/tableMixin.js";
// 导出excel表格
import downLbTable from '@/components/DownLbTable'
// 获取时间
import { getCurrentDate, setExport2Excel } from "@/utils/tools";
import { dataReceiveQuality } from "@/api/statistics.js";
export default {
name: "jsbwcx",
components: {
downLbTable
},
mixins: [tableMixin],
data () {
return {
pickerOptionsStart: {
disabledDate: (time) => {
let endDateVal = this.form.endTime;
if (endDateVal) {
return (
time.getTime() >=
new Date(endDateVal).getTime()
);
}
},
},
pickerOptionsEnd: {
disabledDate: (time) => {
let beginDateVal = this.form.startTime;
if (beginDateVal) {
return (
time.getTime() <
new Date(beginDateVal).getTime()
);
}
},
},
// 表格数据
form: {
startTime: "", // 开始日期
endTime: "" // 结束日期
},
// 校验规则
rules: {
startTime: [
{ required: true, message: "请选择开始日期", trigger: "change" },
],
endTime: [
{ required: true, message: "请选择结束日期", trigger: "change" },
]
},
// 表格数据
tableData: {
// 表格头部
columns: [
{
label: "序号",
type: "index",
width: "50",
// index: this.indexMethod,
}
]
.concat(data.columns()),
data: []
},
// 导出表格标题
downTitle: ''
}
},
watch: {
form: {
handler (newVal, oldVal) {
this.generateFileName()
},
deep: true
}
},
created () {
this.handleResetForm()
this.generateFileName()
},
methods: {
handleSearch () { },
// 生成文件名
generateFileName () {
var reg = /(\d{4})\-(\d{2})\-(\d{2})/;
this.downTitle = `汉中市不动产登记增量数据接入质量评价表(${this.form.startTime.replace(reg, "$1年$2月$3日")}${this.form.endTime.replace(reg, "$1年$2月$3日")})`
},
headerStyle ({ row, rowIndex }) {
if (rowIndex == 4) {
row[2].rowSpan = 2;
row[3].rowSpan = 2;
row[4].rowSpan = 2;
}
},
headerStyle1 ({ row, rowIndex }) {
if (rowIndex == 3) {
row[2].rowSpan = 2;
row[3].rowSpan = 2;
row[4].rowSpan = 2;
}
},
handlesetExport2Excel (val) {
setExport2Excel(val)
},
// 初始化数据
featchDataSelf () {
dataReceiveQuality(this.form.startTime, this.form.endTime).then(res => {
let records = res.result
this.tableData.data = records ? records : []
})
},
// 重置
handleResetForm () {
this.form.startTime = getCurrentDate()
this.form.endTime = getCurrentDate('time')
this.featchDataSelf()
}
}
}
</script>
<style scoped lang="scss">
// 引入表单整体样式
// @import "~@/styles/public.scss";
@import "../css/index.scss";
</style>
......
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns () {
return [
{
label: "行政区划",
prop: "areaName",
width: '80'
},
{
label: '国有建设用地使用权',
prop: "",
children: [
{
label: '用途',
prop: "",
children: [
{
label: '空项率',
prop: "yt",
render: (h, scope) => {
return (
<span>{(scope.row.yt * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '权利性质',
prop: "",
children: [
{
label: '空项率',
prop: "qlxz",
render: (h, scope) => {
return (
<span>{(scope.row.qlxz * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '权利设定方式',
prop: "",
children: [
{
label: '空项率',
prop: "qlsdfs",
render: (h, scope) => {
return (
<span>{(scope.row.qlsdfs * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: ' 共有情况(建设用地)',
prop: "",
children: [
{
label: '空项率',
prop: "gyjsydgyqk",
render: (h, scope) => {
return (
<span>{(scope.row.gyjsydgyqk * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '等别',
prop: "",
children: [
{
label: '空项率',
prop: "dj",
render: (h, scope) => {
return (
<span>{(scope.row.dj * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: ' 容积率',
prop: "",
children: [
{
label: '空项率',
prop: "rjl",
render: (h, scope) => {
return (
<span>{(scope.row.rjl * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
]
},
{
label: '房屋所有权',
prop: "",
children: [
{
label: '房屋共有情况',
prop: "",
children: [
{
label: '空项率',
prop: "fwgyqk",
render: (h, scope) => {
return (
<span>{(scope.row.fwgyqk * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '房屋性质',
prop: "",
children: [
{
label: '空项率',
prop: "fwxz",
render: (h, scope) => {
return (
<span>{(scope.row.fwxz * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '房屋结构',
prop: "",
children: [
{
label: '空项率',
prop: "fwjg",
render: (h, scope) => {
return (
<span>{(scope.row.fwjg * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '竣工时间',
prop: "",
children: [
{
label: '空项率',
prop: "jgsj",
render: (h, scope) => {
return (
<span>{(scope.row.jgsj * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '抵押权',
prop: "",
children: [
{
label: '债务履行期限(债权确定时间)',
prop: "",
children: [
{
prop: 'dyqx',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.dyqx * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '最高额抵押',
prop: "",
children: [
{
label: '最高债权确定事实和数额',
prop: "",
children: [
{
prop: 'zgzqse',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.zgzqse * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '在建建筑物坐落(一般)',
prop: "",
children: [
{
label: '在建建筑物坐落',
prop: "",
children: [
{
prop: 'ybzjzjwzl',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.ybzjzjwzl * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '在建建筑物抵押范围',
prop: "",
children: [
{
prop: 'ybzjzjwdyfw',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.ybzjzjwdyfw * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '在建建筑物坐落(最高额)',
prop: "",
children: [
{
label: '在建建筑物坐落',
prop: "",
children: [
{
prop: 'zgezjzjwzl',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.zgezjzjwzl * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '在建建筑物抵押范围',
prop: "",
children: [
{
prop: 'zgezjzjwdyfw',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.zgezjzjwdyfw * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '抵押注销',
prop: "",
children: [
{
label: '注销抵押原因',
prop: "",
children: [
{
prop: 'dyzxyy',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.dyzxyy * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '注销时间',
prop: "",
children: [
{
prop: 'zxsj',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.zxsj * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '预告登记',
prop: "",
children: [
{
label: '义务人证件种类',
prop: "",
children: [
{
prop: 'ywrzjzl',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.ywrzjzl * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '义务人证件号',
prop: "",
children: [
{
prop: 'ywrzjh',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.ywrzjh * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '规划用途',
prop: "",
children: [
{
prop: 'ghyt',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.ghyt * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '房屋性质',
prop: "",
children: [
{
prop: 'ygdjfwxz',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.ygdjfwxz * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
},
{
label: '查封登记',
prop: "",
children: [
{
label: '解封机关',
prop: "",
children: [
{
prop: 'jfjg',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.jfjg * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '解封文件',
prop: "",
children: [
{
prop: 'jfwj',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.jfwj * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '解封登记时间',
prop: "",
children: [
{
prop: 'jfdjsj',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.jfdjsj * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '解封登簿人',
prop: "",
children: [
{
prop: 'jfdbr',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.jfdbr * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
},
{
label: '解封业务号',
prop: "",
children: [
{
prop: 'jfywh',
label: '空项率',
render: (h, scope) => {
return (
<span>{(scope.row.jfywh * 100).toFixed(2)}%</span>
);
},
},
/*{
label: '分值',
prop: "xx",
}*/
]
}
]
}
]
}
}
export default new data()
<!-- 相关字段空置率统计 -->
<template>
<div class="from-clues">
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item>
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
<el-col :span="6">
<el-form-item label="接收日期" prop="startTime">
<el-date-picker type="date" class="width100" placeholder="开始日期" :picker-options="pickerOptionsStart"
v-model="form.startTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="至" prop="endTime" label-width="35px">
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd"
v-model="form.endTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<!-- 按钮操作 -->
<el-col :span="12" class="btnColRight">
<el-form-item>
<btn nativeType="cz" @click="handleResetForm">重置</btn>
<!-- 导出excel -->
<btn nativeType="cx" @click="featchDataSelf">查询</btn>
<btn nativeType="cx" @click="handlesetExport2Excel(downTitle)">导出</btn>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<lb-table ref="table" :pagination="false" :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>
</div>
</div>
</template>
<script>
// 相关字段空置率统计
// 引入表格头部数据
import data from "./data";
// 引入table混入方法
import tableMixin from "@/mixins/tableMixin.js";
// 导出excel表格
import downLbTable from '@/components/DownLbTable'
// 获取时间
import { getCurrentDate, setExport2Excel } from "@/utils/tools";
import { nonNullSta } from "@/api/statistics.js";
export default {
name: "jsbwcx",
components: {
downLbTable
},
mixins: [tableMixin],
data () {
return {
pickerOptionsStart: {
disabledDate: (time) => {
let endDateVal = this.form.endTime;
if (endDateVal) {
return (
time.getTime() >=
new Date(endDateVal).getTime()
);
}
},
},
pickerOptionsEnd: {
disabledDate: (time) => {
let beginDateVal = this.form.startTime;
if (beginDateVal) {
return (
time.getTime() <
new Date(beginDateVal).getTime()
);
}
},
},
// 表格数据
form: {
startTime: "", // 开始日期
endTime: "" // 结束日期
},
// 校验规则
rules: {
startTime: [
{ required: true, message: "请选择开始日期", trigger: "change" },
],
endTime: [
{ required: true, message: "请选择结束日期", trigger: "change" },
]
},
// 表格数据
tableData: {
// 表格头部
columns: [
{
label: "序号",
type: "index",
width: "50"
// index: this.indexMethod,
}
]
.concat(data.columns()),
data: [],
},
downTitle: ''
}
},
watch: {
form: {
handler (newVal, oldVal) {
this.generateFileName()
},
deep: true
}
},
created () {
this.handleResetForm()
this.generateFileName()
},
methods: {
// 生成文件名
generateFileName () {
var reg = /(\d{4})\-(\d{2})\-(\d{2})/;
this.downTitle = `汉中市不动产登记增量数据相关字段空项率统计(${this.form.startTime.replace(reg, "$1年$2月$3日")}${this.form.endTime.replace(reg, "$1年$2月$3日")})`
},
handlesetExport2Excel (val) {
setExport2Excel(val)
},
// 初始化数据
featchDataSelf () {
nonNullSta(this.form.startTime, this.form.endTime).then(res => {
let records = res.result
this.tableData.data = records ? records : []
})
},
// 重置
handleResetForm () {
this.form.startTime = getCurrentDate()
this.form.endTime = getCurrentDate('time')
this.featchDataSelf()
}
}
}
</script>
<style scoped lang="scss">
// 引入表单整体样式
// @import "~@/styles/public.scss";
@import "../css/index.scss";
</style>
......
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns () {
return [
{
prop: "areaName",
label: "行政区划",
width: '90'
},
{
label: '分项',
children: [
{
width:1
},
{
label: '国有建设用地使用权登记得分及空项率',
children: [
{
prop: 'gyjsydsyqRate',
render: (h, scope) => {
return (
<span>{scope.row.gyjsydsyqRate.toFixed(2)}</span>
);
},
},
{
prop: 'gyjsydsyqRadio',
render: (h, scope) => {
return (
<span>{(scope.row.gyjsydsyqRadio * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '国有建设用地使用权和房屋所有权登记得分及空项率',
children: [
{
prop: 'fwsyqRate',
width: 176,
render: (h, scope) => {
return (
<span>{scope.row.fwsyqRate.toFixed(2)}</span>
);
},
},
{
prop: 'fwsyqRadio',
width: 176,
render: (h, scope) => {
return (
<span>{(scope.row.fwsyqRadio * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '抵押权登记得分及空项率',
children: [
{
prop: 'dyqRate',
render: (h, scope) => {
return (
<span>{scope.row.dyqRate.toFixed(2)}</span>
);
},
},
{
prop: 'dyqRadio',
render: (h, scope) => {
return (
<span>{(scope.row.dyqRadio * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '预告登记得分及空项率',
children: [
{
prop: 'ygdjRate',
render: (h, scope) => {
return (
<span>{scope.row.ygdjRate.toFixed(2)}</span>
);
},
},
{
prop: 'ygdjRadio',
render: (h, scope) => {
return (
<span>{(scope.row.ygdjRadio * 100).toFixed(2)}%</span>
);
},
}
]
},
{
label: '查封登记得分及空项率',
children: [
{
prop: 'cfdjRate',
render: (h, scope) => {
return (
<span>{scope.row.cfdjRate.toFixed(2)}</span>
);
},
},
{
prop: 'cfdjRadio',
render: (h, scope) => {
return (
<span>{(scope.row.cfdjRadio * 100).toFixed(2)}%</span>
);
},
}
]
}
]
},
{
prop: "rate",
width: '90',
label: "综合评分",
},
]
}
}
export default new data()
<!--
* @Author: yangwei
* @Date: 2023-02-17 16:32:50
* @LastEditors: yangwei
* @LastEditTime: 2023-03-09 11:19:43
* @FilePath: \bdcjg-web\src\views\statistics\registerBookQuality\index.vue
* @Description:
*
* Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<!-- 接入质量评价表 -->
<template>
<div class="from-clues">
<!-- 头部搜索 -->
<div class="from-clues-header">
<el-form ref="ruleForm" :model="form" label-width="100px">
<el-form-item>
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
<el-col :span="6">
<el-form-item label="接收日期" prop="startTime">
<el-date-picker type="date" class="width100" placeholder="开始日期" :picker-options="pickerOptionsStart"
v-model="form.startTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="至" prop="endTime" label-width="35px">
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd"
v-model="form.endTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
<!-- 按钮操作 -->
<el-col :span="12" class="btnColRight">
<el-form-item>
<btn nativeType="cz" @click="handleResetForm">重置</btn>
<btn nativeType="cx" @click="featchDataSelf">查询</btn>
<btn nativeType="cx" @click="handlesetExport2Excel(downTitle)">导出</btn>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 列表区域 -->
<div class="from-clues-content">
<lb-table ref="table" :pagination="false" :header-cell-style="headerStyle" :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>
</div>
</div>
</template>
<script>
// 登簿质量评价表
// 引入表格头部数据
import data from "./data";
// 引入table混入方法
import tableMixin from "@/mixins/tableMixin.js";
// 导出excel表格
import downLbTable from '@/components/DownLbTable'
// 获取时间
import { getCurrentDate, setExport2Excel } from "@/utils/tools";
import { registerBookQuality } from "@/api/statistics.js";
export default {
name: "jsbwcx",
components: {
downLbTable
},
mixins: [tableMixin],
data () {
return {
pickerOptionsStart: {
disabledDate: (time) => {
let endDateVal = this.form.endTime;
if (endDateVal) {
return (
time.getTime() >=
new Date(endDateVal).getTime()
);
}
},
},
pickerOptionsEnd: {
disabledDate: (time) => {
let beginDateVal = this.form.startTime;
if (beginDateVal) {
return (
time.getTime() <
new Date(beginDateVal).getTime()
);
}
},
},
// 表格数据
form: {
startTime: "", // 开始日期
endTime: "", // 结束日期
currentPage: 1
},
// 校验规则
rules: {
startTime: [
{ required: true, message: "请选择开始日期", trigger: "change" },
],
endTime: [
{ required: true, message: "请选择结束日期", trigger: "change" },
]
},
// 表格数据
tableData: {
// 表格头部
columns: [
{
label: "序号",
type: "index",
width: "50",
index: this.indexMethod,
}
]
.concat(data.columns()),
data: []
},
downTitle: ''
}
},
watch: {
form: {
handler (newVal, oldVal) {
this.generateFileName()
},
deep: true
}
},
created () {
this.handleResetForm()
this.generateFileName()
},
methods: {
handleSearch () { },
// 生成文件名
generateFileName () {
var reg = /(\d{4})\-(\d{2})\-(\d{2})/;
this.downTitle = `汉中市不动产登记增量数据登簿质量评价表(${this.form.startTime.replace(reg, "$1年$2月$3日")}${this.form.endTime.replace(reg, "$1年$2月$3日")})`
},
handlesetExport2Excel (val) {
setExport2Excel(val)
},
headerStyle ({ row, rowIndex }) {
if (rowIndex == 1) {
row[0].colSpan = 2
row.forEach(item=>{
item.rowSpan = 2
})
// row[0].rowSpan = 2;
// row[1].rowSpan = 2;
// row[2].rowSpan = 2;
// row[3].rowSpan = 2;
// row[4].rowSpan = 2;
}
},
// 初始化数据
featchDataSelf () {
registerBookQuality(this.form.startTime, this.form.endTime).then(res => {
let records = res.result
this.tableData.data = records ? records : []
})
},
// 重置
handleResetForm () {
this.form.startTime = getCurrentDate()
this.form.endTime = getCurrentDate('time')
this.featchDataSelf()
}
}
}
</script>
<style scoped lang="scss">
// 引入表单整体样式
// @import "~@/styles/public.scss";
@import "../css/index.scss";
</style>
......
import store from '@/store'
let vm = null
const sendThis1 = (_this) => {
vm = _this
}
class data {
columns () {
return [
{
width: "70",
renderHeader: (h, scope) => {
return (
<div>
<i
class="el-icon-plus"
onClick={() => {
vm.handleDBAdd();
}}
style="cursor:pointer;color:#409EFF"
></i>
</div>
);
},
render: (h, scope) => {
return <i
class="el-icon-minus"
onClick={() => {
vm.handleDBMinus(scope.row);
}}
style="cursor:pointer;color:#409EFF"
></i>
},
},
{
prop: 'YWH',
label: '业务号',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'DJLX',
label: '登记类型',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'QLLX',
label: '权利类型',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'BDCDYH',
label: '不动产单元号',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'ZSZMH',
label: '证书证明号',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'SFSB',
label: '是否上报',
render: (h, scope) => {
return (
<el-select class="width100" value={scope.row[scope.column.property]}
onChange={(val) => { scope.row[scope.column.property] = val }}>
{
store.getters.dicData['A6'].map(option => {
return (
<el-option label={option.DNAME} value={option.DCODE}></el-option>
)
})
}
</el-select>
)
}
},
{
prop: 'BWID',
label: '报文ID',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
}
]
}
}
let dbdata = new data()
export {
dbdata,
sendThis1
}
let vm = null
const sendThis = (_this) => {
vm = _this
}
class data {
columns () {
return [
{
width: "70",
renderHeader: (h, scope) => {
return (
<div>
<i
class="el-icon-plus"
onClick={() => {
vm.handleSBAdd();
}}
style="cursor:pointer;color:#409EFF"
></i>
</div>
);
},
render: (h, scope) => {
return <i
class="el-icon-minus"
onClick={() => {
vm.handleSBMinus(scope.row);
}}
style="cursor:pointer;color:#409EFF"
></i>
},
},
{
prop: 'YWH',
label: '业务号',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'BDCDYH',
label: '不动产单元号',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
},
{
prop: 'BWID',
label: '报文ID',
render: (h, scope) => {
return (
<el-input value={scope.row[scope.column.property]} onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
)
}
}
]
}
}
let sbdata = new data()
export {
sbdata,
sendThis
}
<template>
<el-dialog :close-on-click-modal="false" top="0" @close="closeDialog" custom-class="dialogBox editDialogBox mainCenter"
:visible.sync="dialogVisible" width="90%">
<div slot="title" class="dialog_title" ref="dialogTitle">
{{ title || '登薄日志' }}
</div>
<div class="regularHeight">
<div class="editDialogBox-box">
<el-tabs v-model="titleName" type="card">
<el-tab-pane label="登薄详情" name="sjmx"></el-tab-pane>
<el-tab-pane label="xml报文" name="xml"></el-tab-pane>
</el-tabs>
<div class="dialog-from" v-if="titleName == 'sjmx'">
<el-row class="dialog-from_header item-content-input">
<el-col :span="8">
<span>行政编码:</span>
<el-input v-model="accessLog.AREACODE" maxlength="10" disabled></el-input>
</el-col>
<el-col :span="8">
<span>行政名称:</span>
<el-input v-model="accessLog.AREANAME" maxlength="20" disabled></el-input>
</el-col>
<el-col :span="8">
<span>日期:</span>
<el-input v-model="accessLog.ACCESSDATE" disabled></el-input>
</el-col>
</el-row>
<el-row class="dialog-from_header item-content-input">
<el-col :span="24">
<span class="bz">备注:</span>
<el-input placeholder="请输入内容" maxlength="1000" v-model="accessLog.REMARK">
</el-input>
</el-col>
</el-row>
<!-- 当日登薄信息记录数 -->
<P class="dialog-from_title">当日登薄信息记录数</P>
<div>
<el-row class="dialog-from_header item-content-input">
<el-col :span="4">
<span>当日登薄量:</span>
<el-input v-model="registerInfo.TOTALNUM" disabled type="number"></el-input>
</el-col>
<el-col :span="4">
<span>首次登记量:</span>
<el-input v-model="registerInfo.FIRSTREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>转移登记量:</span>
<el-input v-model="registerInfo.TRANSFERREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>变更登记量:</span>
<el-input v-model="registerInfo.CHANGEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>注销登记量:</span>
<el-input v-model="registerInfo.LOGOUTREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>更正登记量:</span>
<el-input v-model="registerInfo.RIVISEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
</el-row>
<el-row class="dialog-from_header item-content-input">
<el-col :span="4">
<span>异议登记量:</span>
<el-input v-model="registerInfo.DISSENTINGREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>预告登记量:</span>
<el-input v-model="registerInfo.ADVANCEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>查封登记量:</span>
<el-input v-model="registerInfo.SEIZEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>其他登记:</span>
<el-input v-model="registerInfo.otherReg" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>业务类型量:</span>
<el-input v-model="registerInfo.BUSINESSTYPECOUNT" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4" style="border:none">
</el-col>
</el-row>
</div>
<!-- 当日上报记录数 -->
<P class="dialog-from_title">当日上报记录数</P>
<div>
<el-row class="dialog-from_header item-content-input">
<el-col :span="4">
<span>当日上报量:</span>
<el-input v-model="accessInfo.TOTALNUM" disabled type="number"></el-input>
</el-col>
<el-col :span="4">
<span>首次登记量:</span>
<el-input v-model="accessInfo.FIRSTREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>转移登记量:</span>
<el-input v-model="accessInfo.TRANSFERREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>变更登记量:</span>
<el-input v-model="accessInfo.CHANGEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>注销登记量:</span>
<el-input v-model="accessInfo.LOGOUTREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>更正登记量:</span>
<el-input v-model="accessInfo.RIVISEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
</el-row>
<el-row class="dialog-from_header item-content-input">
<el-col :span="4">
<span>异议登记量:</span>
<el-input v-model="accessInfo.DISSENTINGREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>预告登记量:</span>
<el-input v-model="accessInfo.ADVANCEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>查封登记量:</span>
<el-input v-model="accessInfo.SEIZEREG" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>其他登记:</span>
<el-input v-model="accessInfo.otherReg" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4">
<span>业务类型量:</span>
<el-input v-model="accessInfo.BUSINESSTYPECOUNT" oninput="if(value.length > 6) value=value.slice(0, 6)"
type="number"></el-input>
</el-col>
<el-col :span="4" style="border:none">
</el-col>
</el-row>
</div>
<el-tabs v-model="titleName2" type="card">
<el-tab-pane label="当日登薄详单" name="drdbxd"></el-tab-pane>
<el-tab-pane label="当日上报详单" name="sbslxd"></el-tab-pane>
</el-tabs>
<!-- 当日登薄详单 -->
<div class="from-clues-content" v-show="titleName2 == 'drdbxd'">
<lb-table :column="tableDBData.column" :pagination="false" :heightNumSetting="true" :heightNum="180"
:data="tableDBData.data">
</lb-table>
</div>
<!-- 当日上报详单 -->
<div class="from-clues-content" v-show="titleName2 == 'sbslxd'">
<lb-table :column="tableSBData.column" :pagination="false" :heightNumSetting="true" :heightNum="180"
:data="tableSBData.data">
</lb-table>
</div>
</div>
</div>
<div class="editDialogBox-box" v-if="titleName == 'xml'">
<JsonEditor :resultInfo="resultInfo" :key="key" />
</div>
</div>
<div class="d-center" v-if="titleName == 'sjmx'">
<btn nativeType="cz" @click="dialogVisible = false">取 消</btn>
<btn nativeType="cx" @click="submitForm">保 存</btn>
</div>
<div class="d-center" v-if="!$store.state.business.Edit && titleName == 'xml'">
<btn nativeType="cx" @click="handleResubmit">重新上报</btn>
</div>
</el-dialog>
</template>
<script>
import { sbdata, sendThis } from './data/sbdata'
import { dbdata, sendThis1 } from './data/dbdata'
import { getDetail, edit, regenerateDbXml } from "@/api/recordLog.js"
import JsonEditor from "@/components/JsonEditor.vue";
import { judgeListComplete } from "@/utils/tools.js"
export default {
components: { JsonEditor },
data () {
return {
key: 0,
title: '',
dialogVisible: false,
titleName: 'sjmx',
titleName2: 'drdbxd',
dbBsm: '',
// 头部信息
accessLog: {
AREACODE: '',
AREANAME: '',
ACCESSDATE: '',
REMARK: ''
},
// 当日登薄信息记录数
registerInfo: {
TOTALNUM: '', // 总数量
FIRSTREG: '', // 首次登记数量
TRANSFERREG: '', // 转移登记数量
CHANGEREG: '', // 变更登记数量
LOGOUTREG: '', // 注销登记数量
RIVISEREG: '', // 更正登记数量
DISSENTINGREG: '', // 异议登记数量
ADVANCEREG: '', // 预告登记数量
SEIZEREG: '', // 查封登记数量
EASEMENTREG: '', // 地役权登记数量
otherReg: '', // 其他登记数量
BUSINESSTYPECOUNT: '', // 业务类型总数
},
// 当日上报记录数
accessInfo: {
TOTALNUM: '', // 总数量
FIRSTREG: '', // 首次登记数量
TRANSFERREG: '', // 转移登记数量
CHANGEREG: '', // 变更登记数量
LOGOUTREG: '', // 注销登记数量
RIVISEREG: '', // 更正登记数量
DISSENTINGREG: '', // 异议登记数量
ADVANCEREG: '', // 预告登记数量
SEIZEREG: '', // 查封登记数量
EASEMENTREG: '', // 地役权登记数量
otherReg: '', // 其他登记数量
BUSINESSTYPECOUNT: '', // 业务类型总数
},
// 当日登薄详单
tableDBData: {
data: [],
column: dbdata.columns()
},
// 当日上报详单
tableSBData: {
data: [],
column: sbdata.columns()
},
// XML详情
resultInfo: '',
dataReport: {}
}
},
mounted () {
sendThis(this);
sendThis1(this);
},
watch: {
registerInfo: {
handler: function (newVal, oldVal) {
this.registerInfo.TOTALNUM = (newVal.FIRSTREG - 0) + (newVal.TRANSFERREG - 0) +
(newVal.CHANGEREG - 0) + (newVal.LOGOUTREG - 0) + (newVal.RIVISEREG - 0) + (newVal.DISSENTINGREG - 0)
+ (newVal.ADVANCEREG - 0) + (newVal.SEIZEREG - 0) + (newVal.otherReg - 0)
},
deep: true
},
accessInfo: {
handler: function (newVal, oldVal) {
this.accessInfo.TOTALNUM = (newVal.FIRSTREG - 0) + (newVal.TRANSFERREG - 0) +
(newVal.CHANGEREG - 0) + (newVal.LOGOUTREG - 0) + (newVal.RIVISEREG - 0) + (newVal.DISSENTINGREG - 0)
+ (newVal.ADVANCEREG - 0) + (newVal.SEIZEREG - 0) + (newVal.otherReg - 0)
},
deep: true
}
},
methods: {
closeDialog () {
this.dialogVisible = false;
},
isShow (item) {
this.title = '登薄日志(' + item.ACCESSDATE + ')'
this.titleName = 'sjmx'
this.dialogVisible = true
this.dbBsm = item.dbBsm
this._getDetails(item.dbBsm)
},
/**
* @description: 获取列表接口
* @author: renchao
*/
_getDetails (data) {
getDetail(data).then(res => {
let { accessLog, registerInfo, accessInfo, accessList, registerList
} = res.result
this.accessLog = accessLog
this.resultInfo = accessLog.LOGSXML
this.registerInfo = registerInfo
this.accessInfo = accessInfo
this.tableDBData.data = _.cloneDeep(registerList)
this.tableSBData.data = _.cloneDeep(accessList)
this.tableDBData.data.forEach((item, index) => {
this.$set(item, 'index', index)
})
this.tableSBData.data.forEach((item, index) => {
this.$set(item, 'index', index)
})
})
},
// 当日登薄详单
handleDBAdd () {
this.tableDBData.data.push({
YWH: '',
DJLX: '',
QLLX: '',
BDCDYH: '',
ZSZMH: '',
SFSB: '',
BWID: '',
BSM_DBLOG: this.accessLog.bsmDblog
})
this.tableDBData.data.forEach((item, index) => {
this.$set(item, 'index', index)
})
},
handleDBMinus (row) {
this.$confirm('此操作将删除列表, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.tableDBData.data.splice(row.index, 1)
this.$message({
type: 'success',
message: '删除成功!'
})
this.tableDBData.data.forEach((item, index) => {
this.$set(item, 'index', index)
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
// 当日上报详单
handleSBAdd () {
this.tableSBData.data.push({
YWH: '',
BDCDYH: '',
BWID: '',
BSM_DBLOG: this.accessLog.bsmDblog
})
this.tableSBData.data.forEach((item, index) => {
this.$set(item, 'index', index)
})
},
handleSBMinus (row) {
this.$confirm('此操作将删除列表, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.tableSBData.data.splice(row.index, 1)
this.$message({
type: 'success',
message: '删除成功!'
})
this.tableSBData.data.forEach((item, index) => {
this.$set(item, 'index', index)
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
},
/**
* @description: 确定修改详情
* @param {*} function
* @author: renchao
*/
submitForm: _.debounce(function () {
let _this = this
if (_verify(this.tableDBData.data, '当日登薄详单列表必填') && _verify(this.tableSBData.data, '当日上报详单列表必填')) {
_editDetail()
}
function _verify (data, msg) {
let flag = true
if (!judgeListComplete(data)) {
_this.$message({
message: msg,
type: 'warning'
})
flag = false
}
return flag
}
function _editDetail () {
edit({
accessLog: _this.accessLog, registerInfo: _this.registerInfo,
accessInfo: _this.accessInfo,
accessList: _this.tableSBData.data,
registerList: _this.tableDBData.data
}).then(res => {
if (res.code == 200) {
_this.$message({
message: '保存成功',
type: 'success'
})
_this._getDetails(_this.dbBsm)
}
})
}
}, 600),
/**
* @description: 登薄日志重新生成报文
* @param {*} function
* @author: renchao
*/
handleResubmit () {
let _this = this
this.$confirm('重新生成报文,是否上报省厅?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
createXml()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
})
})
function createXml () {
regenerateDbXml(_this.dbBsm).then(res => {
if (res.code == 200) {
_this.$message({
message: '生成成功',
type: 'success'
})
_this.resultInfo = res.message
}
})
}
}
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
// @import "~@/styles/public.scss";
@import "~@/styles/dialogBox.scss";
/deep/.el-tabs__header {
margin: 0;
}
/deep/.el-dialog {
display: flex;
flex-direction: column;
}
/deep/.el-dialog__body {
display: flex;
flex-direction: column;
padding-bottom: 30px;
height: 100%;
flex: 1;
position: relative;
}
.regularHeight {
display: flex;
flex-direction: column;
flex: 1;
height: 100%;
margin-bottom: 5px;
.editDialogBox-con,
.JsonEditor {
flex: 1;
}
}
.d-center {}
.dialog_title {
top: -13px
}
/deep/.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;
}
/deep/.el-tabs__nav {
display: flex;
border: none !important;
}
/deep/.el-tabs__item.is-top:not(:last-child) {
margin-right: 5px;
}
/deep/.el-icon-circle-close {
display: none;
}
/deep/.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;
}
/deep/.el-input {
flex: 1;
width: 100%;
}
/deep/.el-textarea__inner {
border: none !important;
margin: 0;
}
&_header {
margin: 0 -5px !important;
}
&_title {
font-size: 14px;
color: #d7eaee;
margin: 3px 0;
}
}
</style>
......@@ -22,7 +22,7 @@ class data {
{
prop: "UPLOADTIME",
label: "汇交日期",
width: '150',
width: '140',
},
{
prop: "AREANAME",
......@@ -31,7 +31,7 @@ class data {
{
prop: "ACCESSDATE",
label: "日期",
width: '150',
width: '140',
},
{
prop: "type",
......@@ -183,6 +183,27 @@ class data {
</div>
)
},
},
{
label: "操作",
width: "80",
fixed: "right",
render: (h, scope) => {
return (
<div>
<el-button
type="text"
style="color:#67C23A"
onClick={() => {
vm.handleEdit(scope.row);
}}
>
修改
<i class="el-icon-d-arrow-right"></i>
</el-button>
</div>
);
},
}
]
}
......
......@@ -24,9 +24,8 @@
</el-col>
<el-col :span="6">
<el-form-item label="结束日期" prop="endTime">
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd"
clearable v-model="form.endTime" value-format="yyyy-MM-dd HH:mm:ss"
@change="endTimeChange"></el-date-picker>
<el-date-picker type="date" class="width100" placeholder="结束日期" :picker-options="pickerOptionsEnd" clearable
v-model="form.endTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<!-- 操作按钮 -->
......@@ -45,6 +44,8 @@
:data="tableData.data">
</lb-table>
</div>
<!-- 详情弹框 -->
<editDialog ref="editLog" />
</div>
</template>
<script>
......@@ -57,7 +58,12 @@ import { getRecordLogPage } from "@/api/recordLog.js";
import { mapGetters } from 'vuex'
//引入日期处理方法
import { timeFormat } from "@/utils/operation";
// 引入弹框组件
import editDialog from '../components/editDialog.vue'
export default {
components: {
editDialog
},
name: "dbrzcx",
mixins: [tableMixin],
computed: {
......@@ -135,11 +141,18 @@ export default {
this.$refs.ruleForm.resetFields();
this.form.currentPage = 1
this.featchData();
},
// 编辑
handleEdit (row) {
this.$refs.editLog.isShow(row);
this.$store.dispatch('business/setReportLogEdit')
}
},
destroyed () {
this.$store.dispatch('business/setEdit')
}
}
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
@import "./index.scss";
</style>
......
/*
* @Description:
* @Autor: renchao
* @LastEditTime: 2023-03-13 14:39:14
*/
import filter from '@/utils/filter.js'
let vm = null
const sendThis = (_this) => {
......@@ -51,6 +56,7 @@ class data extends filter {
{
prop: "estatenum",
label: "不动产单元号",
width: 150,
},
{
prop: "rectype",
......@@ -60,6 +66,7 @@ class data extends filter {
{
prop: "rectypeName",
label: "业务名称",
minWidth: 240,
},
{
prop: "exchangeDate",
......
......@@ -79,7 +79,7 @@
<!-- 引入详情组件 -->
<!-- 编辑 -->
<dataDetails ref="editLog" :title="title" :visiableXml="true" />
</div>
</div>
</template>
<script>
// 上报报文查询
......@@ -156,15 +156,31 @@ export default {
render: (h, scope) => {
return (
<div>
<el-button
size="mini"
type="primary"
onClick={() => {
this.handleDetail(scope.row);
}}
>
详情
</el-button>
{
scope.row.exchangeState == 2 ?
<el-button
size="mini"
type="text"
style="color:#67C23A"
onClick={() => {
this.handleDetail(scope.row);
}}
>
修改
<i class="el-icon-d-arrow-right"></i>
</el-button> :
<el-button
size="mini"
type="text"
onClick={() => {
this.handleDetail(scope.row);
}}
>
详情
<i class="el-icon-d-arrow-right"></i>
</el-button>
}
</div>
);
},
......@@ -201,6 +217,11 @@ export default {
handleDetail (row) {
this.title = row.rectypeName;
this.$refs.editLog.isShow(row);
if (row.exchangeState == 2) {
this.$store.dispatch('business/setReportLogEdit')
} else {
this.$store.dispatch('business/setEdit')
}
},
// 重置
resetForm () {
......@@ -214,7 +235,6 @@ export default {
</script>
<style scoped lang="scss">
// 引入页面公共样式
@import "~@/styles/public.scss";
@import "./index.scss";
</style>
......
......@@ -146,8 +146,7 @@ export default {
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
.editDialogBox-box {
margin: 14px 18px 30px 18px !important
}
......
<template>
<!-- 编辑 -->
<dialogBox submitForm="submitForm" class="tableClass" @closeDialog="closeDialog" @submitForm="handleSubmit"
width="60%" v-model="myValue" :isMain="true" title="字典信息">
<dialogBox submitForm="submitForm" class="tableClass" @closeDialog="closeDialog" @submitForm="handleSubmit" width="60%"
v-model="myValue" :isMain="true" title="字典信息">
<div class="editDialogBox-box ">
<el-form :model="ruleForm" ref="ruleForm" label-width="100px">
<el-row :gutter="20">
......@@ -17,9 +17,8 @@
</el-col>
</el-row>
</el-form>
<lb-table :column="column" class="loadingtext opacity-input" :heightNum="600" :key="key"
:expand-row-keys="keyList" row-key="dictid" :tree-props="{ children: 'children' }" :pagination="false"
:data="tableData">
<lb-table :column="column" class="loadingtext opacity-input" :heightNum="600" :key="key" :expand-row-keys="keyList"
row-key="dictid" :tree-props="{ children: 'children' }" :pagination="false" :data="tableData">
</lb-table>
</div>
</dialogBox>
......@@ -359,7 +358,7 @@ export default {
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
/deep/.el-radio {
margin-right: 5px !important;
......
......@@ -127,5 +127,5 @@ export default {
};
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
......@@ -6,8 +6,7 @@
label-width="100px"
:model="form"
class="form-wrapper"
:rules="rules"
>
:rules="rules">
<el-form-item label="用户名:" required>
<el-input v-model="form.loginName" clearable disabled />
</el-form-item>
......@@ -19,9 +18,7 @@
<el-radio
v-for="(item, index) in sexList"
:key="index"
:label="item.value"
>{{ item.name }}</el-radio
>
:label="item.value">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="身份证号:" prop="idCard">
......@@ -30,7 +27,7 @@
<el-form-item label="手机号码:" prop="mobilePhone">
<el-input v-model="form.mobilePhone" clearable />
</el-form-item>
<el-form-item label="办公电话:" prop="telephone">
<el-form-item label="办公电话:">
<el-input v-model="form.telephone" clearable />
</el-form-item>
<el-form-item label="办公地址:">
......@@ -45,200 +42,121 @@
</template>
<script>
// import { api, getAction, putAction, getDictItems } from '@api/manageApi'
export default {
props: {
// userInfo: {
// type: Object,
// default: null
// }
},
data() {
return {
form: {
id: "3127e455-43ba-45ff-9326-0e02ef89485e",
name: "超级管理员",
sort: 1,
loginName: "admin",
email: null,
lastLoginTime: null,
mobilePhone: "18291003568",
isLocked: false,
status: "ACTIVE",
passwordChangeTime: "2021-12-10T08:01:01.569+0000",
idCard: "612725202111021521",
departmentId: "2eae5304-544f-4f5b-b354-8f5d47433c9b",
departmentName: null,
organizationId: "0bca67ae-1d9e-4b41-b057-f165586d24aa",
sex: "0",
isDuty: true,
code: "123324",
jobLevel: null,
telephone: "028-87720898",
address: "办公地点修改测试",
},
sexList: [],
rules: {
mobilePhone: [
{
pattern:
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
message: "手机号码格式有误",
trigger: "blur",
},
],
idCard: [
{
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
message: "身份证号格式有误",
trigger: "blur",
},
],
telephone: [
{
pattern: /\d{3}-\d{8}|\d{4}-\d{7}/,
message: "办公电话格式有误",
trigger: "blur",
},
],
},
};
},
watch: {
// userInfo: {
// handler: function(val) {
// if (val) {
// this.getUserInfo(val.id)
// }
// }
// }
},
mounted() {
// getDictItems('XB').then((res) => {
// if (res.status === 1) {
this.sexList = [
{
id: "079c72b2-f3de-4a4f-b2a1-e5c8f085cc5f",
createdAt: "2021-06-11T02:42:02.000+0000",
updatedAt: "2021-09-03T09:21:46.000+0000",
createdBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 2,
name: "男",
description: "",
code: "N362",
value: "0",
parentId: null,
baseDataCategoryId: "11441374-5e2a-4635-bfa5-d1a430222019",
version: 1,
valid: true,
standard: false,
standardName: null,
standardValue: null,
children: [],
commonName: "男(N362)",
},
{
id: "4d6f845d-6f6a-4848-8fc2-a3760764c196",
createdAt: "2021-06-11T02:42:12.000+0000",
updatedAt: "2021-09-03T09:21:46.000+0000",
createdBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 1,
name: "女",
description: "",
code: "N922",
value: "1",
parentId: null,
baseDataCategoryId: "11441374-5e2a-4635-bfa5-d1a430222019",
version: 1,
valid: true,
standard: false,
standardName: null,
standardValue: null,
children: [],
commonName: "女(N922)",
},
{
id: "637c360b-d4e2-4afb-aa18-33624cf3abcb",
createdAt: "2021-06-11T02:42:29.000+0000",
updatedAt: "2021-09-03T09:21:43.000+0000",
createdBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 0,
name: "保密",
description: "",
code: "BM816",
value: "2",
parentId: null,
baseDataCategoryId: "11441374-5e2a-4635-bfa5-d1a430222019",
version: 1,
valid: true,
standard: false,
standardName: null,
standardValue: null,
children: [],
commonName: "保密(BM816)",
},
];
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
},
methods: {
// getUserInfo(id) {
// getAction(`${api.users}/${id}`).then((res) => {
// if (res.status === 1) {
import { api, getAction, putAction, getDictItems } from '@/api/manageApi'
export default {
props: {
userInfo: {
type: Object,
default: null
}
},
data () {
return {
form: {},
sexList: [],
rules: {
mobilePhone: [
{
pattern:
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
message: '手机号码格式有误',
trigger: 'blur'
}
],
idCard: [
{
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
message: '身份证号格式有误',
trigger: 'blur'
}
]
}
}
},
watch: {
userInfo: {
handler: function (val) {
if (val) {
this.getUserdata(val.id)
}
}
}
},
mounted () {
if (this.userInfo) {
this.getUserdata(this.userInfo)
}
this.sexList = [
{
"name": "男",
"value": "0",
},
{
"name": "女",
"value": "1",
},
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// },
// 更新信息
updateInfo() {
// this.$refs.form.validate((valid) => {
// if (valid) {
// putAction(`${api.users}/${this.form.id}`, this.form).then((res) => {
// if (res.status === 1) {
// this.$message.success({ message: res.message, showClose: true })
// this.getUserInfo(this.form.id)
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// }
// })
{
"name": "保密",
"value": "2",
}
]
},
},
};
methods: {
getUserdata (p) {
getAction(`${api.users}/${p.id}`).then((res) => {
if (res.status === 1) {
this.form = res.content
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
},
updateInfo () {
this.$refs.form.validate((valid) => {
if (valid) {
putAction(`${api.users}/${this.form.id}`, this.form).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.getUserdata(this.form.id)
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
}
})
}
}
}
</script>
<style scoped lang="scss">
.user-info {
margin: 0.1875rem 1.0417rem;
background: #ffffff;
max-height: 90%;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #747e8c;
.user-info {
margin: 0.1875rem 1.0417rem;
background: #ffffff;
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;
}
}
::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: right;
}
}
.bottom-wrapper {
padding: 32px 120px 24px;
text-align: right;
}
}
</style>
......
<!--
* @Author: xiaomiao 1158771342@qq.com
* @Date: 2023-03-08 15:30:43
* @LastEditors: xiaomiao 1158771342@qq.com
* @LastEditTime: 2023-03-08 16:33:50
* @FilePath: \监管系统\js-web-jianguan\src\views\system\information copy\index.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
<div class="information from-clues">
<div class="from-clues-header">
......@@ -13,71 +21,65 @@
</el-row>
</el-form>
</div>
<div class="from-clues-content">
<div class="from-clues-content boxin">
<div class="contentbox">
<base-set v-show="isshow" />
<password-edit v-show="!isshow" />
<base-set v-if="isshow" :userInfo="userData" />
<password-edit v-if="!isshow" :userInfo="userData" />
</div>
</div>
</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 {
active: "baseSet",
isshow: true,
};
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
information() {
this.isshow = true;
import "@/utils/flexible.js";
import BaseSet from "./base-set.vue";
import PasswordEdit from "./password-edit.vue";
export default {
components: {
BaseSet,
PasswordEdit,
},
password() {
this.isshow = false;
data () {
return {
isshow: true,
};
},
},
};
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";
@import "~@/styles/public.scss";
.information{
.btnColRight{
margin-top: 20px;
}
/deep/.content {
.el-input__inner{
background: none;
}
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.information {
/deep/.content {
.el-input__inner {
background: none;
}
.user-info {
background: none;
}
}
/deep/.el-tabs {
.el-tabs__content {
height: 100%;
width: 100%;
background: none;
}
.boxin {
height: 79%;
}
}
}
}
.contentbox{
height: 3.0854rem;
}
}
</style>
......
......@@ -6,31 +6,27 @@
label-width="100px"
:model="form"
class="form-wrapper"
:rules="rules"
>
<el-form-item label="旧密码:" required prop="oldPassword">
:rules="rules">
<el-form-item label="旧密码:" prop="oldPassword">
<el-input
v-model="form.oldPassword"
clearable
type="password"
show-password
/>
show-password />
</el-form-item>
<el-form-item label="新密码:" required prop="newPassword">
<el-form-item label="新密码:" prop="newPassword">
<el-input
v-model="form.newPassword"
clearable
type="password"
show-password
/>
show-password />
</el-form-item>
<el-form-item label="确认密码:" required prop="confirmPassword">
<el-form-item label="确认密码:" prop="confirmPassword">
<el-input
v-model="form.confirmPassword"
clearable
type="password"
show-password
/>
show-password />
</el-form-item>
</el-form>
<div class="bottom-wrapper">
......@@ -41,96 +37,102 @@
</template>
<script>
// import { updateUserPassword } from '@api/organizationManage'
export default {
props: {
// userInfo: {
// type: Object,
// default: null
// }
},
data() {
return {
form: {},
sexList: [],
userId: '',
rules: {
oldPassword: [
{ required: true, message: '旧密码不能为空', trigger: 'blur' }
],
newPassword: [
{ required: true, message: '新密码不能为空', trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: '确认密码不能为空', trigger: 'blur' },
{ validator: this.validatorConfirmPassword, trigger: 'blur' }
]
import { updateUserPassword } from "@/api/personnelManage";
export default {
props: {
userInfo: {
type: Object,
default: null
}
}
},
computed: {},
watch: {
// userInfo: {
// handler: function(val) {
// if (val) {
// this.userId = val.id
// }
// }
// }
},
mounted() {},
methods: {
validatorConfirmPassword(rule, value, callback) {
const { newPassword } = this.form
if (value !== newPassword) {
callback('两次输入密码不一致')
} else {
callback()
},
data () {
return {
form: {},
sexList: [],
userId: '',
rules: {
oldPassword: [
{ required: true, message: '旧密码不能为空', trigger: 'blur' }
],
newPassword: [
{ required: true, message: '新密码不能为空', trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: '确认密码不能为空', trigger: 'blur' },
{ validator: this.validatorConfirmPassword, trigger: 'blur' }
]
}
}
},
computed: {},
watch: {
userInfo: {
handler: function (val) {
if (val) {
this.getid(val)
}
}
}
},
// 确认修改
updatePassword() {
// this.$refs.form.validate((valid) => {
// if (valid) {
// const params = Object.assign({}, this.form, { id: this.userId })
// updateUserPassword(params).then((res) => {
// if (res.status === 1) {
// this.$message.success({ message: res.message, showClose: true })
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// }
// })
mounted () {
if (this.userInfo) {
this.getid(this.userInfo)
}
},
methods: {
getid (val) {
this.userId = val.id
},
validatorConfirmPassword (rule, value, callback) {
const { newPassword } = this.form
if (value !== newPassword) {
callback('两次输入密码不一致')
} else {
callback()
}
},
updatePassword () {
this.$refs.form.validate((valid) => {
if (valid) {
const params = Object.assign({}, this.form, { id: this.userId })
updateUserPassword(params).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
}
})
}
}
}
}
</script>
<style scoped lang="scss">
.user-info {
margin: 36px 200px;
background: #ffffff;
max-height: 90%;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #747e8c;
}
::v-deep .el-input .el-input__inner {
padding: 0 8px;
height: 40px;
line-height: 40px;
border: 1px solid #6BC1FC;
.user-info {
margin: 36px 200px;
background: #ffffff;
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: right;
}
}
.bottom-wrapper {
padding: 32px 120px 24px;
text-align: right;
}
}
</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="用户名:" required>
<el-input v-model="form.loginName" clearable disabled />
</el-form-item>
<el-form-item label="姓名:">
<el-input v-model="form.name" clearable />
</el-form-item>
<el-form-item label="性别:">
<el-radio-group v-model="form.sex">
<el-radio
v-for="(item, index) in sexList"
:key="index"
:label="item.value"
>{{ item.name }}</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item label="身份证号:" prop="idCard">
<el-input v-model="form.idCard" clearable />
</el-form-item>
<el-form-item label="手机号码:" prop="mobilePhone">
<el-input v-model="form.mobilePhone" clearable />
</el-form-item>
<el-form-item label="办公电话:" prop="telephone">
<el-input v-model="form.telephone" clearable />
</el-form-item>
<el-form-item label="办公地址:">
<el-input v-model="form.address" clearable />
</el-form-item>
</el-form>
<div class="bottom-wrapper">
<el-button type="primary" @click="updateInfo">更新信息</el-button>
</div>
</div>
</div>
</template>
<script>
// import { api, getAction, putAction, getDictItems } from '@api/manageApi'
export default {
props: {
// userInfo: {
// type: Object,
// default: null
// }
},
data() {
return {
form: {
id: "3127e455-43ba-45ff-9326-0e02ef89485e",
name: "超级管理员",
sort: 1,
loginName: "admin",
email: null,
lastLoginTime: null,
mobilePhone: "18291003568",
isLocked: false,
status: "ACTIVE",
passwordChangeTime: "2021-12-10T08:01:01.569+0000",
idCard: "612725202111021521",
departmentId: "2eae5304-544f-4f5b-b354-8f5d47433c9b",
departmentName: null,
organizationId: "0bca67ae-1d9e-4b41-b057-f165586d24aa",
sex: "0",
isDuty: true,
code: "123324",
jobLevel: null,
telephone: "028-87720898",
address: "办公地点修改测试",
},
sexList: [],
rules: {
mobilePhone: [
{
pattern:
/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
message: "手机号码格式有误",
trigger: "blur",
},
],
idCard: [
{
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
message: "身份证号格式有误",
trigger: "blur",
},
],
telephone: [
{
pattern: /\d{3}-\d{8}|\d{4}-\d{7}/,
message: "办公电话格式有误",
trigger: "blur",
},
],
},
};
},
watch: {
// userInfo: {
// handler: function(val) {
// if (val) {
// this.getUserInfo(val.id)
// }
// }
// }
},
mounted() {
// getDictItems('XB').then((res) => {
// if (res.status === 1) {
this.sexList = [
{
id: "079c72b2-f3de-4a4f-b2a1-e5c8f085cc5f",
createdAt: "2021-06-11T02:42:02.000+0000",
updatedAt: "2021-09-03T09:21:46.000+0000",
createdBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 2,
name: "男",
description: "",
code: "N362",
value: "0",
parentId: null,
baseDataCategoryId: "11441374-5e2a-4635-bfa5-d1a430222019",
version: 1,
valid: true,
standard: false,
standardName: null,
standardValue: null,
children: [],
commonName: "男(N362)",
},
{
id: "4d6f845d-6f6a-4848-8fc2-a3760764c196",
createdAt: "2021-06-11T02:42:12.000+0000",
updatedAt: "2021-09-03T09:21:46.000+0000",
createdBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 1,
name: "女",
description: "",
code: "N922",
value: "1",
parentId: null,
baseDataCategoryId: "11441374-5e2a-4635-bfa5-d1a430222019",
version: 1,
valid: true,
standard: false,
standardName: null,
standardValue: null,
children: [],
commonName: "女(N922)",
},
{
id: "637c360b-d4e2-4afb-aa18-33624cf3abcb",
createdAt: "2021-06-11T02:42:29.000+0000",
updatedAt: "2021-09-03T09:21:43.000+0000",
createdBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 0,
name: "保密",
description: "",
code: "BM816",
value: "2",
parentId: null,
baseDataCategoryId: "11441374-5e2a-4635-bfa5-d1a430222019",
version: 1,
valid: true,
standard: false,
standardName: null,
standardValue: null,
children: [],
commonName: "保密(BM816)",
},
];
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
},
methods: {
// getUserInfo(id) {
// getAction(`${api.users}/${id}`).then((res) => {
// if (res.status === 1) {
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// },
// 更新信息
updateInfo() {
// this.$refs.form.validate((valid) => {
// if (valid) {
// putAction(`${api.users}/${this.form.id}`, this.form).then((res) => {
// if (res.status === 1) {
// this.$message.success({ message: res.message, showClose: true })
// this.getUserInfo(this.form.id)
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// }
// })
},
},
};
</script>
<style scoped lang="scss">
.user-info {
margin: 0.1875rem 1.0417rem;
background: #ffffff;
max-height: 90%;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #747e8c;
}
::v-deep .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: right;
}
}
</style>
<template>
<div class="information from-clues">
<div class="from-clues-header">
<el-form ref="ruleForm" label-width="100px">
<el-form-item>
<Breadcrumb />
</el-form-item>
<el-row class="mb-5">
<el-col :span="3" class="btnColRight">
<btn nativeType="cx" @click="information">基本信息</btn>
<btn nativeType="cx" @click="password">修改密码</btn>
</el-col>
</el-row>
</el-form>
</div>
<div class="from-clues-content">
<div class="contentbox">
<base-set v-show="isshow" />
<password-edit v-show="!isshow" />
</div>
</div>
</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 {
active: "baseSet",
isshow: true,
};
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
information() {
this.isshow = true;
},
password() {
this.isshow = false;
},
},
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.information{
.btnColRight{
margin-top: 20px;
}
/deep/.content {
.el-input__inner{
background: none;
}
.user-info {
background: none;
}
}
/deep/.el-tabs {
.el-tabs__content {
height: 100%;
width: 100%;
}
}
.contentbox{
height: 3.0854rem;
}
}
</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="旧密码:" required prop="oldPassword">
<el-input
v-model="form.oldPassword"
clearable
type="password"
show-password
/>
</el-form-item>
<el-form-item label="新密码:" required prop="newPassword">
<el-input
v-model="form.newPassword"
clearable
type="password"
show-password
/>
</el-form-item>
<el-form-item label="确认密码:" required prop="confirmPassword">
<el-input
v-model="form.confirmPassword"
clearable
type="password"
show-password
/>
</el-form-item>
</el-form>
<div class="bottom-wrapper">
<el-button type="primary" @click="updatePassword">确认修改</el-button>
</div>
</div>
</div>
</template>
<script>
// import { updateUserPassword } from '@api/organizationManage'
export default {
props: {
// userInfo: {
// type: Object,
// default: null
// }
},
data() {
return {
form: {},
sexList: [],
userId: '',
rules: {
oldPassword: [
{ required: true, message: '旧密码不能为空', trigger: 'blur' }
],
newPassword: [
{ required: true, message: '新密码不能为空', trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: '确认密码不能为空', trigger: 'blur' },
{ validator: this.validatorConfirmPassword, trigger: 'blur' }
]
}
}
},
computed: {},
watch: {
// userInfo: {
// handler: function(val) {
// if (val) {
// this.userId = val.id
// }
// }
// }
},
mounted() {},
methods: {
validatorConfirmPassword(rule, value, callback) {
const { newPassword } = this.form
if (value !== newPassword) {
callback('两次输入密码不一致')
} else {
callback()
}
},
// 确认修改
updatePassword() {
// this.$refs.form.validate((valid) => {
// if (valid) {
// const params = Object.assign({}, this.form, { id: this.userId })
// updateUserPassword(params).then((res) => {
// if (res.status === 1) {
// this.$message.success({ message: res.message, showClose: true })
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// }
// })
}
}
}
</script>
<style scoped lang="scss">
.user-info {
margin: 36px 200px;
background: #ffffff;
max-height: 90%;
overflow-y: auto;
.form-wrapper {
padding: 24px 120px 0px;
.el-form-item {
margin-bottom: 24px;
.el-form-item__label {
color: #747e8c;
}
::v-deep .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: right;
}
}
</style>
<template>
<Dialog :title="title" class="tableClass" :show.sync="visible" :width="'715px'" @close="close()">
<template slot="content">
<lb-table ref="multipleTable"
:pagination="false"
:column="tableData.column"
:data="tableData.data"
@selection-change="handleSelectionChange">
</lb-table>
</template>
<template slot="footer">
<el-button type="primary" class="save" @click="handleSaveMember()"
>保存</el-button
>
<el-button class="cancel-button" @click="close()">取消</el-button>
</template>
</Dialog>
</template>
<script>
import Dialog from "@/components/Dialog/";
export default {
name: "",
components: { Dialog },
props: {},
data() {
return {
title: "人员配置",
visible: false,
tableData: {
column: [
{
type: 'selection'
},
{
prop: 'name',
label: '角色名称'
},
{
prop: 'type',
label: '角色类型'
},
{
prop: 'departmentName',
label: '角色描述'
},
],
data: [
{
id: "3127e455-43ba-45ff-9326-0e02ef89485e",
createdAt: null,
updatedAt: "2022-08-04T03:38:27.626+0000",
createdBy: null,
updatedBy: "3127e455-43ba-45ff-9326-0e02ef89485e",
sort: 1,
name: "超级管理员",
loginName: "admin",
password: "05eb15777e8fd1d61c840472e7267f61d432f63340d86b59",
passwordSalt: "5178114777136485",
email: null,
lastLoginTime: null,
mobilePhone: "18291003568",
status: "ACTIVE",
passwordChangeTime: "2021-12-10T08:01:01.569+0000",
idCard: "612725202111021521",
departmentId: "2eae5304-544f-4f5b-b354-8f5d47433c9b",
organizationId: "0bca67ae-1d9e-4b41-b057-f165586d24aa",
sex: "0",
isDuty: true,
type:"",
code: "123324",
jobLevel: null,
telephone: "028-87720898",
address: "办公地点修改测试",
isLocked: false,
departmentName: "研发部",
_X_ROW_KEY: "row_276",
},
{
name: '数据管理员',
type:"1",
},
{
name: '数据管理员2',
type:"d",
}
]
},
multipleSelection: []
}
},
computed: {},
watch: {},
created() {},
mounted() {},
methods: {
authorization() {
this.visible = true;
},
close() {
// this.resetForm()
this.visible = false;
},
// 保存事件
handleSaveMember() {
// if (this.memberList.length === 0) {
// this.$message.warning("请添加待选人员");
// return false;
// }
// const idList = this.memberList.map(item => item.id)
// updateUser(this.roleId, idList).then(res => {
// if (res.status === 1) {
// this.$message.success({ message: '保存成功', showClose: true })
// this.showMemberConfigDialog = false
// this.$emit('setUsers', this.roleId)
// this.resetMemberConfig()
// } else this.$message.error({ message: res.message, showClose: true })
// })
},
handleSelectionChange (val) {
this.multipleSelection = val
}
}
};
</script>
<style scoped lang="scss">
/deep/.el-dialog__header{
text-align: center;
margin-bottom: 10px;
.el-dialog__title{
color: white;
}
}
</style>
......@@ -8,6 +8,7 @@ class data extends filter {
{
prop: "name",
label: "菜单名称",
align: 'left',
width: 300
},
{
......
<template>
<div>
<Dialog
:title="title"
:show.sync="visible"
:width="'767px'"
@close="close()"
>
<Dialog class="modifydialog" :title="title" :show.sync="visible" :width="'767px'" @close="close()">
<template slot="content">
<el-form ref="form" :model="form" :rules="rules">
<el-row :gutter="24">
......@@ -18,27 +13,16 @@
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="上级菜单:" label-width="124px">
<el-cascader
:key="menuKey"
v-model="form.parentId"
:options="parentMenuList"
:props="setProps"
placeholder="请选择上级菜单"
clearable
@change="handleChange"
/>
<el-cascader :key="menuKey" v-model="form.parentId" :options="parentMenuList" :props="setProps"
placeholder="请选择上级菜单" clearable @change="handleChange" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="代码:" prop="code" label-width="54px">
<el-input
v-model="codeComputed"
placeholder="请输入菜单代码"
:disabled="type === 1"
/>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="代码:" prop="code" label-width="124px">
<el-input v-model="codeComputed" placeholder="请输入菜单代码" :disabled="type === 1" />
</el-form-item>
</el-col>
</el-row>
......@@ -52,32 +36,17 @@
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="浏览器跳转模式:" label-width="124px">
<el-select
v-model="form.jumpMode"
placeholder="请选择浏览器跳转模式"
>
<el-option
v-for="item in jumpModeList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
<el-select v-model="form.jumpMode" placeholder="请选择浏览器跳转模式">
<el-option v-for="item in jumpModeList" :key="item.value" :label="item.name" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item
label="配置参数:"
label-width="124px"
class="form-item-mb0"
>
<el-form-item label="配置参数:" label-width="124px" class="form-item-mb0">
<!-- 配置参数 -->
<JsonEditor
:result-infos="form.metadata"
@getJsonString="getJsonString"
/>
<JsonEditor :result-infos="form.metadata" @getJsonString="getJsonString" />
</el-form-item>
</el-col>
</el-row>
......@@ -86,11 +55,7 @@
<template slot="footer">
<el-button class="cancel-button" @click="close()">取消</el-button>
<el-button
type="primary"
@click="submitForm()"
>保存</el-button>
<el-button type="primary" @click="submitForm()">保存</el-button>
</template>
</Dialog>
<!-- 图标列表 -->
......@@ -99,185 +64,174 @@
</template>
<script>
import Dialog from "@/components/Dialog/";
import { getParentMenuListAction } from '@/api/quanxianmanagement'
import JsonEditor from '@/components/JsonEditors'
import IconList from '@/components/IconList'
import { validateCode } from '@/utils/validate';
import { api, httpAction } from '@/api/manageApi'
export default {
name: 'MenuModal',
components: {
IconList,
JsonEditor,
Dialog
},
props: {
productId: {
type: String,
default: ''
}
},
data() {
return {
form: {
icon: '',
code: ''
},
rules: {
name: [{ required: true, message: '请输入菜单名称', trigger: 'blur' }],
code: [
{ required: true, message: '必填', trigger: 'blur' },
{ validator: validateCode, trigger: 'blur' }
]
},
title: '',
type: '',
visible: false,
parentMenuList: [],
menuKey: 0,
jumpModeList: [
{ name: '在当前页面显示', value: 1 },
{ name: '跳转到新页面', value: 2 }
],
setProps: {
value: 'id',
label: 'name',
children: 'children',
expandTrigger: 'hover',
checkStrictly: true, // 可取消关联,选择任意一级选项
emitPath: false
},
dataUrl: api.menus
}
},
computed: {
codeComputed: {
get: function() {
return this.form.code
},
set: function(val) {
this.form.code = val.toUpperCase()
}
}
},
created() {},
mounted() {},
methods: {
// 获取父级菜单
getParentMenuList(id) {
getParentMenuListAction(id).then((res) => {
if (res.status === 1) {
const list = this.$dealArrChildren(res.content)
if (id) {
this.parentMenuList = this.$dealArrDisabled(
this.$deepCopy(list),
id
)
this.menuKey++
} else {
this.parentMenuList = list
}
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
import Dialog from "@/components/Dialog/";
import { getParentMenuListAction } from '@/api/authorityManage'
import JsonEditor from '@/components/JsonEditors'
import IconList from '@/components/IconList'
import { validateCode } from '@/utils/validate';
import { api, httpAction } from '@/api/manageApi'
export default {
name: 'MenuModal',
components: {
IconList,
JsonEditor,
Dialog
},
getIconList() {
this.$refs.iconList.show(true)
},
getIconName(data) {
this.form.icon = data
},
// 配置参数
getJsonString(data) {
this.form.metadata = data
},
// 新增菜单
add() {
this.getParentMenuList(this.productId)
this.visible = true
this.type = 0
this.form.jumpMode = 1
props: {
productId: {
type: String,
default: ''
}
},
// 编辑菜单
edit(record) {
this.type = 1
// 若有id为编辑
if (record.id) {
this.$nextTick(() => {
this.form = Object.assign({}, record)
this.getParentMenuList(this.productId)
})
data () {
return {
form: {
icon: '',
code: ''
},
rules: {
name: [{ required: true, message: '请输入菜单名称', trigger: 'blur' }],
code: [
{ required: true, message: '必填', trigger: 'blur' },
{ validator: validateCode, trigger: 'blur' }
]
},
title: '',
type: '',
visible: false,
parentMenuList: [],
menuKey: 0,
jumpModeList: [
{ name: '在当前页面显示', value: 1 },
{ name: '跳转到新页面', value: 2 }
],
setProps: {
value: 'id',
label: 'name',
children: 'children',
expandTrigger: 'hover',
checkStrictly: true, // 可取消关联,选择任意一级选项
emitPath: false
},
dataUrl: api.menus
}
this.visible = true
},
// 选择上级菜单
handleChange(value) {
this.form.parentId = value
computed: {
codeComputed: {
get: function () {
return this.form.code
},
set: function (val) {
this.form.code = val.toUpperCase()
}
}
},
// 保存
submitForm(submitType) {
this.$refs.form.validate((valid) => {
if (valid) {
let method = ''
let url = ''
const formData = this.form
formData.productId = this.productId
if (!formData.id) {
method = 'post'
url = this.dataUrl
created () { },
mounted () { },
methods: {
// 获取父级菜单
getParentMenuList (id) {
getParentMenuListAction(id).then((res) => {
if (res.status === 1) {
const list = this.$dealArrChildren(res.content)
if (id) {
this.parentMenuList = this.$dealArrDisabled(
this.$deepCopy(list),
id
)
this.menuKey++
} else {
this.parentMenuList = list
}
} else {
method = 'put'
url = `${this.dataUrl}/${formData.id}`
this.$message.error({ message: res.message, showClose: true })
}
httpAction(url, formData, method)
.then((res) => {
if (res.status === 1) {
this.$message.success({
message: res.message,
showClose: true
})
})
},
getIconList () {
this.$refs.iconList.show(true)
},
getIconName (data) {
this.form.icon = data
},
// 配置参数
getJsonString (data) {
this.form.metadata = data
},
// 新增菜单
add () {
this.getParentMenuList(this.productId)
this.visible = true
this.type = 0
this.form.jumpMode = 1
},
// 编辑菜单
edit (record) {
this.type = 1
// 若有id为编辑
if (record.id) {
this.$nextTick(() => {
this.form = Object.assign({}, record)
this.getParentMenuList(this.productId)
})
}
this.visible = true
},
// 选择上级菜单
handleChange (value) {
this.form.parentId = value
},
// 保存
submitForm (submitType) {
this.$refs.form.validate((valid) => {
if (valid) {
let method = ''
let url = ''
const formData = this.form
formData.productId = this.productId
if (!formData.id) {
method = 'post'
url = this.dataUrl
} else {
method = 'put'
url = `${this.dataUrl}/${formData.id}`
}
debugger
httpAction(url, formData, method)
.then((res) => {
if (res.status === 1) {
this.$message.success({
message: res.message,
showClose: true
})
this.resetForm()
this.resetForm()
this.$emit('ok')
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
.catch((err) => {
console.log(err)
})
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
.catch((err) => {
console.log(err)
})
}
})
},
resetForm () {
this.$refs.form.resetFields()
this.form = {
icon: '',
code: ''
}
})
},
resetForm() {
this.$refs.form.resetFields()
this.form = {
icon: '',
code: ''
},
close () {
this.resetForm()
this.visible = false
}
},
close() {
this.resetForm()
this.visible = false
}
}
}
</script>
<style scoped lang="scss">
/deep/.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: white;
}
}
/deep/.el-form-item__label{
color: white;
}
/deep/.el-input__inner{
background-color: #07388B;
}
// @import "~@/styles/public.scss";
</style>
......
......@@ -13,184 +13,254 @@
</el-form>
</div>
<div class="from-clues-content">
<lb-table
:pagination="false"
:column="tableData.columns"
:data="tablelistData"
row-key="id"
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<lb-table :pagination="false" :column="tableData.columns" :data="tablelistData" row-key="id" default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
</lb-table>
</div>
<edit-dialog ref="dialogForm"
:product-id="productId"
:resource-category-id="resourceCategoryId"
@ok="reloadTableData"/>
<edit-dialog ref="dialogForm" :product-id="productId" :resource-category-id="resourceCategoryId"
@ok="reloadTableData" />
<!-- <authorizationdiglog ref="rolesForm" /> -->
</div>
</template>
<script>
// 定时任务
import data from "./data";
import { deleteAction, getAction, api } from "@/api/manageApi";
import EditDialog from "./edit-dialog.vue";
// import authorizationdiglog from "./authorizationdiglog.vue";
export default {
name: "menus",
components: {
EditDialog,
// authorizationdiglog,
},
data() {
return {
tablelistData: [],
resourceCategoryId:"",
taskData: null,
form: {
job_name: "",
currentPage: 1,
},
title: "",
queryParam: {},
selectType: "0",
queryName: "",
organizationId: "", // 组织机构ID
departmentId: "", // 部门ID
departmentList: [], // 部门列表
levelList: [], // 职务级别
sexList: [],
selectionList: [],
tableData: {
columns: [].concat(data.columns()).concat([
{
label: "操作",
width: 380,
render: (h, scope) => {
return (
<div>
<el-button
type="text"
size="mini"
icon="el-icon-edit"
onClick={() => {
this.handleEdit(scope.row);
}}
>
修改
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
style="color:#F56C6C"
onClick={() => {
this.handleDelete(scope.row.id, scope.row.name);
}}
>
删除
</el-button>
</div>
);
},
},
]),
data: [],
},
pageData: {
total: 5,
pageSize: 15,
current: 1,
},
tableUrl: api.menus, // 菜单接口地址
meumurlid: api.subsystem,// 项目id接口地址
productId:""//项目id
};
},
created() {
this.getTableList();
},
methods: {
// 加载表格数据
getTableList() {
// 定时任务
import data from "./data";
import { deleteAction, getAction, api } from "@/api/manageApi";
import EditDialog from "./edit-dialog.vue";
import { mapGetters } from "vuex";
import { getMenuInfo } from "@/api/user";
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
// import authorizationdiglog from "./authorizationdiglog.vue";
export default {
name: "menus",
components: {
EditDialog,
// authorizationdiglog,
},
data () {
return {
tablelistData: [],
resourceCategoryId: "",
taskData: null,
form: {
job_name: "",
currentPage: 1,
},
title: "",
queryParam: {},
selectType: "0",
queryName: "",
organizationId: "", // 组织机构ID
departmentId: "", // 部门ID
departmentList: [], // 部门列表
levelList: [], // 职务级别
sexList: [],
const queryOptionsid = {
conditionGroup: {
queryRelation: "AND",
conditions: [
selectionList: [],
tableData: {
columns: [].concat(data.columns()).concat([
{
property: "code",
value: "BDCJGPT",
operator: "EQ",
label: "操作",
width: 380,
render: (h, scope) => {
return (
<div>
<el-button
type="text"
size="mini"
icon="el-icon-edit"
onClick={() => {
this.handleEdit(scope.row);
}}
>
修改
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
style="color:#F56C6C"
onClick={() => {
this.handleDelete(scope.row.id, scope.row.name);
}}
>
删除
</el-button>
</div>
);
},
},
],
]),
data: [],
},
pageData: {
total: 5,
pageSize: 15,
current: 1,
},
tableUrl: api.menus, // 菜单接口地址
meumurlid: api.subsystem,// 项目id接口地址
productId: ""//项目id
};
const params = {
queryOptions: queryOptionsid,
};
// 获取系统id
getAction(this.meumurlid, params)
.then((res) => {
this.productId=res.content[0].id;
let queryOptions = {
conditionGroup: {
conditions: [
{
property: "productId",
value: this.productId,
operator: "EQ",
},
],
queryRelation: "AND",
},
orderBys: [{ property: "sort", direction: "desc" }],
};
if (!this.tableUrl) {
console.log("请设置tableUrl属性为接口地址!");
return;
}
if (this.queryOptions !== "") {
this.queryParam.queryOptions = JSON.stringify(queryOptions);
}
// 查询系统菜单
getAction(this.tableUrl, this.queryParam)
.then((res) => {
if (res.status === 1) {
this.loading = false;
this.tablelistData = res.content;
console.log("this.tablelistData", this.tablelistData);
} else {
this.$message.error({ message: res.message, showClose: true });
this.loading = false;
}
})
.catch((error) => {
console.log("errrrrrorrrrr", error);
this.loading = false;
});
})
.catch((error) => {
console.log("errrrrrorrrrr", error);
});
},
// 新增菜单
handleAdd() {
this.$refs.dialogForm.add();
this.$refs.dialogForm.title = "添加";
created () {
this.getTableList();
},
// 修改
handleEdit(record) {
this.$refs.dialogForm.edit(record);
this.$refs.dialogForm.title = "修改";
computed: {
...mapGetters(["products"])
},
// 删除
handleDelete(id,content) {
this.$confirm(
`<div class="customer-message-wrapper">
methods: {
// 加载表格数据
getTableList () {
getMenuInfo(sessionStorage.getItem("products")).then((res) => {
if (res.code === 200) {
this.tablelistData = judgeSort(res.result)
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
const queryOptionsid = {
conditionGroup: {
queryRelation: "AND",
conditions: [
{
property: "code",
value: this.products,
operator: "EQ",
},
],
},
};
const params = {
queryOptions: queryOptionsid,
};
// 获取系统id
getAction(this.meumurlid, params)
.then((res) => {
this.productId = res.content[0].id;
this.getAuthorityList(res.content[0].id, res.content[0].code)
this.selectedSubsystemCode = res.content[0].code
// let queryOptions = {
// conditionGroup: {
// conditions: [
// {
// property: "productId",
// value: this.productId,
// operator: "EQ",
// },
// ],
// queryRelation: "AND",
// },
// orderBys: [{ property: "sort", direction: "desc" }],
// };
// if (!this.tableUrl) {
// console.log("请设置tableUrl属性为接口地址!");
// return;
// }
// if (this.queryOptions !== "") {
// this.queryParam.queryOptions = JSON.stringify(queryOptions);
// }
// 查询系统菜单
// getAction(this.tableUrl, this.queryParam)
// .then((res) => {
// if (res.status === 1) {
// this.loading = false;
// // this.menutablelistData = res.content;
// console.log("res.content菜单", res.content);
// } else {
// this.$message.error({ message: res.message, showClose: true });
// this.loading = false;
// }
// })
// .catch((error) => {
// console.log("er", error);
// this.loading = false;
// });
})
.catch((error) => {
console.log("er", error);
});
// const queryOptionsid = {
// conditionGroup: {
// queryRelation: "AND",
// conditions: [
// {
// property: "code",
// value: sessionStorage.getItem("products"),
// operator: "EQ",
// },
// ],
// },
// };
// const params = {
// queryOptions: queryOptionsid,
// };
// // 获取系统id
// getAction(this.meumurlid, params)
// .then((res) => {
// this.productId = res.content[0].id;
// let queryOptions = {
// conditionGroup: {
// conditions: [
// {
// property: "productId",
// value: this.productId,
// operator: "EQ",
// },
// ],
// queryRelation: "AND",
// },
// orderBys: [{ property: "sort", direction: "desc" }],
// };
// if (!this.tableUrl) {
// console.log("请设置tableUrl属性为接口地址!");
// return;
// }
// if (this.queryOptions !== "") {
// this.queryParam.queryOptions = JSON.stringify(queryOptions);
// }
// // 查询系统菜单
// getAction(this.tableUrl, this.queryParam)
// .then((res) => {
// if (res.status === 1) {
// this.loading = false;
// this.tablelistData = res.content;
// } else {
// this.$message.error({ message: res.message, showClose: true });
// this.loading = false;
// }
// })
// .catch((error) => {
// console.log("er", error);
// this.loading = false;
// });
// })
// .catch((error) => {
// console.log("er", error);
// });
},
// 新增菜单
handleAdd () {
this.$refs.dialogForm.add();
this.$refs.dialogForm.title = "添加";
},
// 修改
handleEdit (record) {
this.$refs.dialogForm.edit(record);
this.$refs.dialogForm.title = "修改";
},
// 删除
handleDelete (id, content) {
this.$confirm(
`<div class="customer-message-wrapper">
<h5 class="title">您确认要执行该操作用于以下信息:</h5>
<p class="content" aria-controls="${content}">${content}
</p>
......@@ -198,49 +268,51 @@ export default {
<span >无法恢复</span>
</p>
</div>`,
'执行确认',
{
dangerouslyUseHTMLString: true,
customClass: 'customer-delete',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
if (!this.tableUrl) {
this.$message.error({
message: '请设置tableUrl属性为接口地址!',
showClose: true
})
return
'执行确认',
{
dangerouslyUseHTMLString: true,
customClass: 'customer-delete',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
const url = this.tableUrl + '/' + id
deleteAction(url).then(res => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.reloadTableData()
} else {
this.$message.error({ message: res.message, showClose: true })
)
.then(() => {
if (!this.tableUrl) {
this.$message.error({
message: '请设置tableUrl属性为接口地址!',
showClose: true
})
return
}
const url = this.tableUrl + '/' + id
deleteAction(url).then(res => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.reloadTableData()
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
})
})
.catch(() => {})
},
// 新增、编辑回显
reloadTableData() {
this.getTableList()
.catch(() => { })
},
// 新增、编辑回显
reloadTableData () {
this.getTableList()
},
},
},
};
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.btnColRight {
margin-top: 20px;
}
/deep/.el-table__expand-icon {
color: #fff;
}
@import "~@/styles/mixin.scss";
// @import "~@/styles/public.scss";
.btnColRight {
margin-top: 20px;
}
/deep/.el-table__expand-icon {
color: #fff;
}
</style>
......
......@@ -8,12 +8,7 @@ class data extends filter {
{
prop: "name",
label: "角色名称",
width: 330
},
{
prop: "type",
label: "类别",
width: 400
width: 130
},
{
prop: "description",
......
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
super()
}
columns () {
return [
{
prop: "name",
label: "角色名称",
width: 330
},
{
prop: "type",
label: "类别",
width: 400
},
{
prop: "address",
label: "备注"
}
]
}
}
export default new data()
<!-- 新增 & 修改角色 -->
<template>
<Dialog
class="modifydialog"
:title="dialogTitle"
:show.sync="showAddEditDialog"
:width="'767px'"
@close="handleCloseDialog()"
>
@close="handleCloseDialog()">
<template slot="content">
<el-form ref="form" :model="dialogForm" :rules="rules" label-width="82px">
<el-row :gutter="24">
<el-col :span="12">
<el-col :span="15">
<el-form-item label="角色名称:" prop="roleName">
<el-input
v-model="dialogForm.roleName"
clearable
placeholder="角色名称"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色类型:" prop="roleType">
<el-input
v-model="dialogForm.roleType"
clearable
placeholder="角色类型"
/>
placeholder="角色名称" />
</el-form-item>
</el-col>
</el-row>
<br>
<el-row>
<el-col :span="24">
<el-form-item label="备注:" class="form-item-mb0">
<el-input
v-model="dialogForm.roleTextArea"
type="textarea"
placeholder="备注"
/>
placeholder="备注" />
</el-form-item>
</el-col>
</el-row>
......@@ -45,77 +33,89 @@
<template slot="footer">
<el-button
class="cancel-button"
@click="handleCloseDialog"
>取消</el-button>
@click="handleCloseDialog">取消</el-button>
<el-button
type="primary"
@click="handleSaveRole()"
>保存</el-button>
<el-button
type="primary"
@click="handleSaveRole()">保存</el-button>
</template>
</Dialog>
</template>
<script>
import Dialog from "@/components/Dialog/";
import { api, httpAction } from '@/api/manageApi'
export default {
components: {
Dialog
},
data() {
return {
dialogTitle: '',
showAddEditDialog: false,
menuType: '',
roleId: '',
sort: 0,
dialogForm: {
roleName: '',
roleType: '',
roleTextArea: ''
},
rules: {
roleName: [
{ required: true, message: '请输入角色名称', trigger: 'blur' }
],
roleType: [
{ required: true, message: '请输入角色类型', trigger: 'blur' }
import Dialog from "@/components/Dialog/";
import { api, httpAction } from '@/api/manageApi'
export default {
components: {
Dialog
},
data () {
return {
dialogTitle: '',
showAddEditDialog: false,
menuType: '',
roleId: '',
sort: 0,
dialogForm: {
roleName: '',
roleType: '',
roleTextArea: ''
},
rules: {
roleName: [
{ required: true, message: '请输入角色名称', trigger: 'blur' }
],
},
roleTypeOptions: [
{ name: '定制', value: '定制' },
{ name: '其他', value: '其他' }
]
},
roleTypeOptions: [
{ name: '定制', value: '定制' },
{ name: '其他', value: '其他' }
]
}
},
methods: {
// 保存新增或关闭事件
handleSaveRole(val) {
this.$refs.form.validate((valid) => {
if (valid) {
try {
const params = {
category: 2,
description: this.dialogForm.roleTextArea,
name: this.dialogForm.roleName,
sort: this.sort,
type: this.dialogForm.roleType
}
console.log("this.roleId",this.roleId);
if (this.roleId) {
params.id = this.roleId
console.log("修改",params.id,params);
httpAction(`${api.roles}/${params.id}`, params, 'post').then(
(res) => {
}
},
methods: {
// 保存新增或关闭事件
handleSaveRole (val) {
this.$refs.form.validate((valid) => {
if (valid) {
try {
const params = {
category: 2,
description: this.dialogForm.roleTextArea,
name: this.dialogForm.roleName,
sort: this.sort,
type: this.dialogForm.roleType
}
if (this.roleId) {
params.id = this.roleId
httpAction(`${api.roles}/${params.id}`, params, 'post').then(
(res) => {
if (res.status === 1) {
this.$message.success({
message: '修改成功',
showClose: true
})
this.dialogForm = {
roleName: '',
}
this.showAddEditDialog = val
this.$emit('ok', this.menuType)
} else {
this.$message.error({
message: res.message,
showClose: true
})
}
}
)
} else {
httpAction(api.roles, params, 'post').then((res) => {
if (res.status === 1) {
this.$message.success({
message: '修改成功',
message: '新增成功',
showClose: true
})
this.dialogForm = {
roleName: '',
roleType: ''
}
this.showAddEditDialog = val
this.$emit('ok', this.menuType)
......@@ -125,58 +125,24 @@ export default {
showClose: true
})
}
}
)
} else {
httpAction(api.roles, params, 'post').then((res) => {
if (res.status === 1) {
this.$message.success({
message: '新增成功',
showClose: true
})
this.dialogForm = {
roleName: '',
roleType: ''
}
this.showAddEditDialog = val
this.$emit('ok', this.menuType)
} else {
this.$message.error({
message: res.message,
showClose: true
})
}
})
})
}
} catch (e) {
console.error(e)
}
} catch (e) {
console.error(e)
}
})
},
// 取消事件
handleCloseDialog () {
this.$refs.form.resetFields()
this.dialogForm = {
roleName: '',
}
})
},
// 取消事件
handleCloseDialog() {
this.$refs.form.resetFields()
this.dialogForm = {
roleName: '',
roleType: ''
this.showAddEditDialog = false
}
this.showAddEditDialog = false
}
}
}
</script>
<style scoped lang="scss">
/deep/.el-input__inner {
background: #07388B;
border-radius: 2px;
border: 1px solid #6BC1FC;
}
/deep/.el-textarea__inner{
background: #07388B;
color: #fff;
}
/deep/.el-form-item__label{
color:#fff;
}
</style>
......
......@@ -13,17 +13,8 @@
</el-form>
</div>
<div class="from-clues-content">
<lb-table
:page-size="pageData.size"
:current-page.sync="pageData.current"
:total="pageData.total"
@size-change="handleSizeChange"
@p-current-change="handleCurrentChange"
:column="tableData.columns"
:data="listdata"
:expand-row-keys="keyList"
row-key="id"
>
<lb-table :pagination="false" @size-change="handleSizeChange" @p-current-change="handleCurrentChange"
:column="tableData.columns" :data="listdata" :expand-row-keys="keyList" row-key="dictid">
</lb-table>
</div>
<EditDialog ref="addEditDialog" @ok="reloadTableData" />
......@@ -31,281 +22,399 @@
</div>
</template>
<script>
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
import { getRolesById, getUserRoles } from "@/api/quanxianmanagement";
import data from "./data";
import sjsbTask from "@/api/sjsbTask.js";
import { api, getAction,deleteAction } from "@/api/manageApi";
import tableMixin from "@/mixins/tableMixin.js";
import EditDialog from "./edit-dialog.vue";
import Roleslistdiglog from "./roleslistdiglog.vue";
export default {
name: "menus",
mixins: [tableMixin],
components: {
EditDialog,
Roleslistdiglog,
},
data() {
return {
personlist: null,
waitMemberList: [],
keyList: [],
listdata: [],
tableUrl: api.roles,
form: {
job_name: "",
currentPage: 1,
},
// 当前所选角色id
roleId: "",
title: "",
queryParam: {},
selectType: "0",
queryName: "",
organizationId: "", // 组织机构ID
departmentId: "", // 部门ID
departmentList: [], // 部门列表
levelList: [], // 职务级别
sexList: [],
typeOptions: [
{
value: "0",
label: "姓名",
},
{
value: "1",
label: "工号",
},
{
value: "2",
label: "部门",
},
{
value: "3",
label: "机构",
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
import { getRolesById, getAuthorityListAction } from "@/api/authorityManage";
import { getUserRoles } from "@/api/personnelManage";
import data from "./data";
import { getMenuInfo } from "@/api/user";
import { api, getAction, deleteAction } from "@/api/manageApi";
import tableMixin from "@/mixins/tableMixin.js";
import EditDialog from "./edit-dialog.vue";
import Roleslistdiglog from "./roleslistdiglog.vue";
import { mapGetters } from "vuex";
export default {
name: "menus",
mixins: [tableMixin],
components: {
EditDialog,
Roleslistdiglog,
},
data () {
return {
personlist: null,
waitMemberList: [],
keyList: [],
listdata: [],
tableUrlroles: api.roles,
form: {
job_name: "",
currentPage: 1,
},
],
selectionList: [],
tableData: {
columns: [
// 当前所选角色id
roleId: "",
title: "",
queryParam: {},
multipleSelection: [],
// 菜单列表
menutablelistData: [],
tableUrl: api.menus, // 菜单接口地址
meumurlid: api.subsystem, // 项目id接口地址
selectType: "0",
queryName: "",
organizationId: "", // 组织机构ID
departmentId: "", // 部门ID
departmentList: [], // 部门列表
levelList: [], // 职务级别
sexList: [],
operationCodes: null, // 操作符对象
operationList: [], // 获取授权列表需要提交的操作符数组
typeOptions: [
{
value: "0",
label: "姓名",
},
{
value: "1",
label: "工号",
},
{
label: "序号",
type: "index",
width: "50",
index: this.indexMethod,
value: "2",
label: "部门",
},
]
.concat(data.columns())
.concat([
{
value: "3",
label: "机构",
},
],
selectionList: [],
tableData: {
columns: [
{
label: "排序",
width: 380,
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>
);
},
label: "序号",
type: "index",
width: "50",
index: this.indexMethod,
},
])
.concat([
{
label: "操作",
width: 380,
render: (h, scope) => {
return (
<div>
<el-tooltip class="item" effect="dark" disabled={scope.row.type !== 'Everyone'} content="没有点击的权限" placement="top">
<span>
<el-button
disabled={scope.row.type === 'Everyone'}
type="text"
size="mini"
icon="el-icon-video-pause"
onClick={() => {
this.getUserList(scope.row);
}}
>
人员
</el-button>
</span>
</el-tooltip>
<el-tooltip class="item" effect="dark" disabled={scope.row.category !== 1} content="系统内置角色 不允许修改" placement="top">
<span>
<el-button
disabled={scope.row.category === 1}
type="text"
size="mini"
icon="el-icon-edit"
onClick={() => {
this.handleAddEdit(scope.row);
}}
>
修改
</el-button>
</span>
</el-tooltip>
<el-tooltip class="item" effect="dark" disabled={scope.row.category !== 1} content="系统内置角色 不允许删除" placement="top">
<span>
<el-button
type="text"
disabled={scope.row.category === 1}
size="mini"
icon="el-icon-delete"
// style="color:#F56C6C"
onClick={() => {
this.handleDelete(scope.row.id, scope.row.name);
}}
>
删除
</el-button>
</span>
</el-tooltip>
</div>
);
]
.concat(data.columns())
.concat([
{
label: "排序",
width: 100,
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>
);
},
},
},
]),
])
.concat([
{
label: "操作",
width: 280,
render: (h, scope) => {
return (
<div>
<el-tooltip
class="item"
effect="dark"
disabled={scope.row.type !== "Everyone"}
content="没有点击的权限"
placement="top"
>
<span>
<el-button
disabled={scope.row.type === "Everyone"}
type="text"
size="mini"
icon="el-icon-video-pause"
onClick={() => {
this.getUserList(scope.row);
}}
>
配置
</el-button>
</span>
</el-tooltip>
<el-tooltip
class="item"
effect="dark"
disabled={scope.row.category !== 1}
content="系统内置角色 不允许修改"
placement="top"
>
<span>
<el-button
disabled={scope.row.category === 1}
type="text"
size="mini"
icon="el-icon-edit"
onClick={() => {
this.handleAddEdit(scope.row);
}}
>
修改
</el-button>
</span>
</el-tooltip>
<el-tooltip
class="item"
effect="dark"
disabled={scope.row.category !== 1}
content="系统内置角色 不允许删除"
placement="top"
>
<span>
<el-button
type="text"
disabled={scope.row.category === 1}
size="mini"
icon="el-icon-delete"
// style="color:#F56C6C"
onClick={() => {
this.handleDelete(scope.row.id, scope.row.name);
}}
>
删除
</el-button>
</span>
</el-tooltip>
</div>
);
},
}]),
},
data: [],
},
pageData: {
total: 5,
pageSize: 15,
current: 1,
},
};
},
created() {
this.getTableData();
},
mounted() {},
methods: {
// 获取角色列表
getTableData() {
let Builtinrole=[]
let Publicrole=[]
}
},
created () {
this.getTableData();
this.getTableList()
},
computed: {
...mapGetters(["products"])
},
mounted () { },
methods: {
// 获取角色列表
getTableData () {
let Builtinrole = [];
let Publicrole = [];
getRolesById(1)
.then((res) => {
Builtinrole = res.content;
getRolesById(2)
.then((res) => {
Publicrole = res.content;
getRolesById(1)
.then((res) => {
Builtinrole = res.content;
getRolesById(2)
.then((res) => {
Publicrole = res.content;
this.listdata = Builtinrole.concat(Publicrole);
this.listdata = Builtinrole.concat(Publicrole);
this.listdata = judgeSort(this.listdata);
})
.catch((e) => console.error(e));
})
.catch((e) => console.error(e));
},
this.listdata = judgeSort(this.listdata);
// 获取菜单列表
getTableList () {
getMenuInfo(sessionStorage.getItem("products")).then((res) => {
if (res.code === 200) {
this.menutablelistData = judgeSort(res.result)
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
.catch((e) => console.error(e));
})
.catch((e) => console.error(e));
const queryOptionsid = {
conditionGroup: {
queryRelation: "AND",
conditions: [
{
property: "code",
value: this.products,
operator: "EQ",
},
],
},
};
const params = {
queryOptions: queryOptionsid,
};
// 获取系统id
getAction(this.meumurlid, params)
.then((res) => {
this.productId = res.content[0].id;
this.getAuthorityList(res.content[0].id, res.content[0].code)
this.selectedSubsystemCode = res.content[0].code
// let queryOptions = {
// conditionGroup: {
// conditions: [
// {
// property: "productId",
// value: this.productId,
// operator: "EQ",
// },
// ],
// queryRelation: "AND",
// },
// orderBys: [{ property: "sort", direction: "desc" }],
// };
// if (!this.tableUrl) {
// console.log("请设置tableUrl属性为接口地址!");
// return;
// }
// if (this.queryOptions !== "") {
// this.queryParam.queryOptions = JSON.stringify(queryOptions);
// }
// 查询系统菜单
// getAction(this.tableUrl, this.queryParam)
// .then((res) => {
// if (res.status === 1) {
// this.loading = false;
// // this.menutablelistData = res.content;
// console.log("res.content菜单", res.content);
// } else {
// this.$message.error({ message: res.message, showClose: true });
// this.loading = false;
// }
// })
// .catch((error) => {
// console.log("er", error);
// this.loading = false;
// });
})
.catch((error) => {
console.log("er", error);
});
},
// 获取权限列表
getAuthorityList (productId, code) {
getAuthorityListAction(productId, code).then(
res => {
if (res.status === 1) {
if (res.content.length !== 0) {
this.operationCodes = res.content[0].operations
this.operationList = []
for (var k in this.operationCodes) {
this.operationList.push(k)
}
}
} else {
this.$message.error({ message: res.message, showClose: true })
}
}
)
},
// 配置
getUserList (row) {
this.getTableList()
const params = {};
const queryOptions = {
conditionGroup: {
conditions: [
{
property: "organizationId",
value: row.organizationId,
operator: "EQ",
},
{
property: "departmentId",
value: row.departmentId,
operator: "EQ",
},
],
queryRelation: "AND",
},
orderBys: [{ property: "sort", direction: "desc" }],
};
params.queryOptions = JSON.stringify(queryOptions);
},
// 人员配置
getUserList(row) {
const params = {};
const queryOptions = {
conditionGroup: {
conditions: [
{
property: "organizationId",
value: row.organizationId,
operator: "EQ",
},
{
property: "departmentId",
value: row.departmentId,
operator: "EQ",
},
],
queryRelation: "AND",
},
orderBys: [{ property: "sort", direction: "desc" }],
};
params.queryOptions = JSON.stringify(queryOptions);
getUserRoles(row.id).then((res) => {
if (res.status === 1) {
this.personlist = res.content;
getAction(api.users, params).then((res) => {
if (res.status === 1) {
this.waitMemberList = res.content;
if (this.personlist) {
this.waitMemberList.forEach((item, i) => {
this.personlist.forEach((val) => {
if (item.id === val.id) {
this.waitMemberList[i].selectStatus = 0;
}
getUserRoles(row.id).then((res) => {
if (res.status === 1) {
this.personlist = res.content;
getAction(api.users, params).then((res) => {
if (res.status === 1) {
this.waitMemberList = res.content;
if (this.personlist) {
this.waitMemberList.forEach((item, i) => {
this.personlist.forEach((val) => {
if (item.id === val.id) {
this.waitMemberList[i].selectStatus = 0;
}
});
});
});
}
this.$refs.rolesForm.personlist(this.waitMemberList, row.id);
this.$refs.rolesForm.menulist(this.operationList, row.id, this.selectedSubsystemCode, this.menutablelistData, this.operationCodes);
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
this.$refs.rolesForm.title = "人员配置";
} else this.$message.error({ message: res.message, showClose: true });
});
},
// 新增、修改角色
handleAddEdit (value) {
this.$refs.addEditDialog.menuType = this.menuType;
this.$refs.addEditDialog.roleId = value.id;
this.roleSort = value.sort ? value.sort : 0;
this.$refs.addEditDialog.dialogForm.roleType = sessionStorage.getItem("products");
if (value.id) {
this.$refs.addEditDialog.dialogForm.roleName = value.name;
this.$refs.rolesForm.adds(this.waitMemberList, row.id);
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
this.$refs.rolesForm.title = "人员配置";
} else this.$message.error({ message: res.message, showClose: true });
});
},
// 新增、修改角色
handleAddEdit(value) {
this.$refs.addEditDialog.menuType = this.menuType;
this.$refs.addEditDialog.roleId = value.id;
this.roleSort = value.sort ? value.sort : 0;
if (value.id) {
this.$refs.addEditDialog.dialogForm.roleName = value.name;
this.$refs.addEditDialog.dialogForm.roleType = value.type;
this.$refs.addEditDialog.dialogForm.roleTextArea = value.description;
}
this.$refs.addEditDialog.showAddEditDialog = true;
this.$refs.addEditDialog.dialogTitle = value.id ? "修改" : "新增";
},
// 上移下移
moveUpward(index, row) {
realMove(row.id, "UP", this.listdata);
this.key++;
let id = findParents(this.listdata, row.id);
this.keyList = id;
},
moveDown(index, row) {
realMove(row.id, "DOWN", this.listdata);
this.key++;
let id = findParents(this.listdata, row.id);
this.keyList = id;
},
this.$refs.addEditDialog.dialogForm.roleTextArea = value.description;
}
this.$refs.addEditDialog.showAddEditDialog = true;
this.$refs.addEditDialog.dialogTitle = value.id ? "修改" : "新增";
},
// 上移下移
moveUpward (index, row) {
realMove(row.dictid, "UP", this.listdata);
this.key++;
let id = findParents(this.listdata, row.dictid);
this.keyList = id;
},
moveDown (index, row) {
realMove(row.dictid, "DOWN", this.listdata);
this.key++;
let id = findParents(this.listdata, row.dictid);
this.keyList = id;
},
// 删除
handleDelete: function(id, content = '') {
this.$confirm(
`<div class="customer-message-wrapper">
// 删除
handleDelete: function (id, content = "") {
this.$confirm(
`<div class="customer-message-wrapper">
<h5 class="title">您确认要执行该操作用于以下信息:</h5>
<p class="content" aria-controls="${content}">${content}
</p>
......@@ -313,47 +422,48 @@ export default {
<span >无法恢复</span>
</p>
</div>`,
'执行确认',
{
dangerouslyUseHTMLString: true,
customClass: 'customer-delete',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
if (!this.tableUrl) {
this.$message.error({
message: '请设置tableUrl属性为接口地址!',
showClose: true
})
return
"执行确认",
{
dangerouslyUseHTMLString: true,
customClass: "customer-delete",
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}
const url = this.tableUrl + '/' + id
deleteAction(url).then(res => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.getTableData()
} else {
this.$message.error({ message: res.message, showClose: true })
)
.then(() => {
if (!this.tableUrlroles) {
this.$message.error({
message: "请设置tableUrl属性为接口地址!",
showClose: true,
});
return;
}
const url = this.tableUrlroles + "/" + id;
deleteAction(url).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true });
this.getTableData();
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
})
})
.catch(() => {})
},
.catch(() => { });
},
// 新增回显
reloadTableData() {
this.getTableData()
reloadTableData () {
this.getTableData();
},
},
},
};
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.btnColRight {
margin-left: -30px;
margin-top: 20px;
}
@import "~@/styles/mixin.scss";
// @import "~@/styles/public.scss";
.btnColRight {
margin-left: -30px;
margin-top: 20px;
}
</style>
......
<template>
<Dialog
:title="title"
class="tableClass"
:show.sync="visible"
:width="'715px'"
@close="close()"
>
<template slot="content">
<el-dialog
:close-on-click-modal="false"
top="0"
@click="close()"
class="roleconfiguration"
custom-class="dialogBox editDialogBox mainCenter"
:visible.sync="visible"
width="85%">
<div slot="title" class="dialog_title" ref="dialogTitle">
{{ title || "标题" }}
</div>
<div class="editDialogBox-box">
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="人员配置" name="first"></el-tab-pane>
<el-tab-pane label="菜单配置" name="second"></el-tab-pane>
</el-tabs>
<lb-table
v-if="activeName == 'first'"
ref="multipleTable"
:pagination="false"
:column="tableData.column"
:data="tableData.data"
:column="usertableData.column"
:data="lastuserList"
@selection-change="handleSelectionChange"
>
@row-click="handleClickTableRow">
>
</lb-table>
</template>
<lb-table
:key="menukey"
v-if="activeName == 'second'"
:pagination="false"
:column="menutableData.column"
:data="lastMenuList"
row-key="id"
default-expand-all
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
</lb-table>
</div>
<template slot="footer">
<el-button type="primary" class="save" @click="handleSaveMember()"
>保存</el-button
>
<el-button type="primary" class="save" @click="handleSaveMember()">保存</el-button>
<el-button class="cancel-button" @click="close()">取消</el-button>
</template>
</Dialog>
</el-dialog>
</template>
<script>
import Dialog from "@/components/Dialog/";
import { updateUser } from "@/api/quanxianmanagement";
export default {
name: "",
components: { Dialog },
data() {
return {
title: "人员配置",
visible: false,
hasSelectList: [
// {
// name: "管理员",
// loginName: "admin1",
// departmentName: "研发部",
// jobLevel: null,
// },
// {
// name: "测试账号",
// loginName: "admin2",
// departmentName: "研发部",
// jobLevel: null,
// },
], //已经选择的id组成的数组
tableData: {
column: [
{
type: "selection",
},
{
prop: "name",
label: "姓名",
},
{
prop: "loginName",
label: "用户名",
},
{
prop: "departmentName",
label: "部门",
},
{
prop: "jobLevel",
label: "职务",
},
],
data: [],
import { api } from "@/api/manageApi";
import { getRoleAuthorityList, roleAuthority } from "@/api/authorityManage";
import { updateUser } from "@/api/personnelManage";
export default {
name: "",
data () {
return {
title: "人员配置",
visible: false,
menutableData: {
column: [
{
prop: "name",
width: 830,
label: "菜单名称",
}
].concat([
{
label: "权限",
render: (h, scope) => {
return (
<div>
<el-checkbox v-model={scope.row.checkArr[0].value}
disabled={scope.row.checkArr[0].disabled}
label={scope.row.checkArr[0].name} onChange={(checked) => {
this.changeCheck(checked, scope.row.checkArr[0].id, scope);
}} />
<el-checkbox v-model={scope.row.checkArr[1].value}
disabled={scope.row.checkArr[0].disabled}
label={scope.row.checkArr[1].name}
onChange={(checked) => {
this.changeCheck(checked, scope.row.checkArr[1].id, scope);
}} />
</div>
);
},
},
]),
},
usertableData: {
column: [
{
type: "selection",
width: 330,
},
{
prop: "name",
width: 330,
label: "姓名",
},
{
prop: "loginName",
label: "用户名",
},
],
},
// 角色id
roleId: "",
},
multipleSelection: [],
};
},
computed: {},
created() {},
mounted() {},
methods: {
// 人员配置根据selectStatus字段确定已选人员
adds(a, rid) {
this.roleId = rid;
this.visible = true;
this.tableData.data = a;
this.tableData.data.forEach((item, index) => {
if (item.selectStatus === 0) {
this.$nextTick(() => {
this.$refs.multipleTable.toggleRowSelection(
this.tableData.data[index],
true
);
});
}
});
menuList: [], // 菜单列表
menukey: 0,
activeName: "first",
lastuserList: [], // 人员表格数据
lastMenuList: [], // 重构完成的菜单表格数据
usermultipleSelection: [],
// 选中菜单列表
checkArr: [], // 重构操作符列表
authorityList: [], // 授权回显数组
checklistbor: [],
// 授权对象数据
menuprams: {},
// 系统code
selectedSubsystemCode: ""
};
},
close() {
this.visible = false;
computed: {},
created () {
},
// 保存
handleSaveMember() {
const idList = this.multipleSelection.map((item) => {
return item.id;
});
updateUser(this.roleId, idList).then((res) => {
if (res.status === 1) {
this.$message.success({ message: "保存成功", showClose: true });
this.visible = false;
// this.$emit("setUsers", this.roleId);
// this.resetMemberConfig();
} else this.$message.error({ message: res.message, showClose: true });
});
mounted () {
},
handleSelectionChange(val) {
this.multipleSelection = val;
methods: {
// 人员配置点击行勾选数据
handleClickTableRow (row, event) {
this.checkNum = 0;
this.isCheck = false;
if (event.label == "操作") {
return;
} else {
if (row.status == "0") {
return;
} else {
if (this.usermultipleSelection.length > 0) {
if (
JSON.stringify(this.usermultipleSelection).indexOf(
JSON.stringify(row)
) == -1
) {
this.usermultipleSelection.push(row);
this.$refs.multipleTable.toggleRowSelection(row, true);
} else {
this.usermultipleSelection.map((item, index) => {
if (item.id == row.id) {
this.usermultipleSelection.splice(index, 1);
this.$refs.multipleTable.toggleRowSelection(row, false);
}
});
}
} else {
this.usermultipleSelection.push(row);
this.$refs.multipleTable.toggleRowSelection(row, true);
}
}
}
if (this.usermultipleSelection.length > 0) {
this.checkNum = this.usermultipleSelection.length;
this.isCheck = true;
} else {
this.isCheck = false;
}
},
// 获取授权主体的菜单权限
// getMenuAuthorityList
menulist (operationList, id, Code, menutablelistData, operationCodes) {
console.log("Code", Code);
this.selectedSubsystemCode = Code
this.menuList = menutablelistData;
getRoleAuthorityList(
id,
operationList.toString(),
Code + '_MENU'
).then(res => {
if (res.status === 1) {
this.authorityList = res.content
this.getRecursionTreeData(this.menuList, this.authorityList, operationCodes)
this.getAuthorizedInfo()
// this.setCheckAllArr()
// this.getAuthorizedInfo()
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
},
/**
* 递归渲染列表数据
* list:原始数组
* authorityList:已授权数组
*/
getRecursionTreeData (list, authorityList, operationCodes) {
++this.menukey
this.checkArr = []
for (const k in operationCodes) {
const obj = {}
obj.name = operationCodes[k]
obj.id = k
obj.value = false
obj.disabled = false
// obj.isAll = false;
this.checkArr.push(obj)
}
for (const [index, item] of Object.entries(list)) {
this.setAuthorizedConditions(
authorityList,
this.$deepCopy(this.checkArr),
item
)
if (
item.children &&
item.children !== null &&
item.children.length !== 0
) {
item.children.forEach((child, j) => {
this.setAuthorizedConditions(
authorityList,
this.$deepCopy(this.checkArr),
child
)
})
this.getRecursionTreeData(item.children, authorityList, operationCodes)
}
}
this.lastMenuList = list
// this.setCheckAllArr(list)
},
// 授权条件
setAuthorizedConditions (authorityList, checkArr, item) {
if (this.roleId === '') {
checkArr.forEach(ele => {
ele.disabled = true
ele.value = false
})
} else {
if (authorityList.length !== 0) {
if (authorityList[0].superPermission === true) {
checkArr.forEach(ele => {
ele.value = true
ele.disabled = true
})
} else {
const repeatArr = authorityList.filter(authorityItem => {
return authorityItem.resourceUri === item.id
})
repeatArr.forEach(element => {
checkArr.forEach(ele => {
if (element.operationCode === ele.id) {
ele.value = true
if (this.roleId !== element.subjectId) {
ele.disabled = true
}
}
})
})
}
}
}
this.$set(item, 'checkArr', this.$deepCopy(checkArr))
},
// 获取拼接授权信息
getAuthorizedInfo () {
const lastArr = []
const authorizedList = []
const wholeArr = this.$deepCopy(this.lastMenuList)
const arr = this.$treeConvertToArr(wholeArr)
arr.forEach(ele => {
ele.checkArr.forEach(val => {
if (val.value === true && val.disabled === false) {
const obj = {
operationCode: val.id,
name: ele.name,
id: ele.id
}
lastArr.push(obj)
}
})
})
lastArr.forEach(element => {
authorizedList.push({
operationCode: element.operationCode, // 标识符
productCode: this.selectedSubsystemCode, // 子系统code
resourceCategoryCode: this.selectedSubsystemCode + '_MENU', // 资源类别code默认为MENU
resourceName: element.name,
resourceUri: element.id, // 授权菜单id
subjectId: this.roleId, // 授权对象id
subjectType: 'ROLE' // 授权对象类别
})
})
this.menuprams = {
subjectId: this.roleId,
authorizedList: authorizedList
}
},
// 获取人员列表做筛选
personlist (a, rid) {
this.roleId = rid;
this.visible = true;
this.lastuserList = a;
this.lastuserList.forEach((item, index) => {
if (item.selectStatus === 0) {
this.$nextTick(async () => {
await this.$refs.multipleTable
if (this.$refs.multipleTable) {
this.$refs.multipleTable.toggleRowSelection(
this.lastuserList[index],
true
);
}
});
}
});
},
// 关闭事件
close () {
this.visible = false;
},
// 保存事件
handleSaveMember () {
// 人员授权
const idList = this.usermultipleSelection.map((item) => {
return item.id;
})
updateUser(this.roleId, idList).then((res) => {
if (res.status === 1) {
this.$message.success({ message: "保存成功", showClose: true });
this.visible = false;
} else this.$message.error({ message: res.message, showClose: true });
});
// 菜单授权
roleAuthority(
this.menuprams.subjectId,
this.menuprams.authorizedList
).then((res) => {
if (res.status === 1) {
this.$message.success({
message: res.message,
})
// this.authorizedContChange()
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
},
// 勾选人员事件
handleSelectionChange (val) {
this.lastuserList.forEach((element, index) => {
delete this.lastuserList[index].selectStatus
});
this.usermultipleSelection = val;
this.lastuserList.forEach((element, index) => {
this.usermultipleSelection.forEach(element1 => {
if (element.id == element1.id) {
this.lastuserList[index].selectStatus = 0
}
});
});
},
// 数据筛选
setarrdata (scope, arr) {
arr.forEach((item, index, arr) => {
if (item.id == scope.row.id) {
this.checklistbor = [...arr]
} else if (item.id !== scope.row.id && item.children) {
this.setarrdata(scope, item.children)
}
})
},
// 勾选菜单事件
changeCheck (flag, checkId, scope) {
this.checklistbor = []
this.setarrdata(scope, this.lastMenuList)
const parents = this.$findParent(this.lastMenuList, scope.row.parentId)
const childs = this.$findChildren(this.lastMenuList, scope.row.id)
this.$setChildArr(
this.lastMenuList,
scope.row.id,
checkId,
flag,
this.checklistbor,
parents,
childs
)
this.getAuthorizedInfo()
},
handleClick (tab, event) {
this.lastuserList.forEach((item, index) => {
if (item.selectStatus === 0) {
this.$nextTick(async () => {
await this.$refs.multipleTable
if (this.$refs.multipleTable) {
this.$refs.multipleTable.toggleRowSelection(
this.lastuserList[index],
true
);
}
});
}
});
}
},
},
};
};
</script>
<style scoped lang="scss">
/deep/.el-dialog__header {
text-align: center;
margin-bottom: 10px;
.el-dialog__title {
color: white;
}
}
@import "~@/styles/mixin.scss";
@import "~@/styles/dialogBox.scss";
</style>
......
......@@ -249,5 +249,5 @@ export default {
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
</style>
......
/*
* @Author: xiaomiao 1158771342@qq.com
* @Date: 2023-01-30 17:59:51
* @LastEditors: xiaomiao 1158771342@qq.com
* @LastEditTime: 2023-03-08 15:09:15
* @FilePath: \监管系统\js-web-jianguan\src\views\system\users\data\index.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
import filter from '@/utils/filter.js'
class data extends filter {
constructor() {
......@@ -13,7 +21,7 @@ class data extends filter {
{
prop: "name",
label: "姓名",
width: 300
width: 100
},
{
prop: "loginName",
......
<template>
<Dialog :title="title" :show.sync="visible" :width="'715px'" @close="close()">
<Dialog :title="title" class="modifydialog" :show.sync="visible" :width="'715px'" @close="close()">
<template slot="content">
<el-form ref="form" :model="form" :rules="rules">
<el-row :gutter="24">
......@@ -15,9 +15,7 @@
v-for="(item, index) in sexList"
:key="index"
v-model="form.sex"
:label="item.value"
>{{ item.name }}</el-radio
>
:label="item.value">{{ item.name }}</el-radio>
</el-form-item>
</el-col>
<el-col :span="6">
......@@ -36,8 +34,7 @@
<el-input
v-model="form.loginName"
:disabled="showLoginName"
placeholder="用户名"
/>
placeholder="用户名" />
</el-form-item>
</el-col>
</el-row>
......@@ -51,12 +48,10 @@
<el-form-item
label="手机号码:"
prop="mobilePhone"
label-width="72px"
>
label-width="72px">
<el-input
v-model="form.mobilePhone"
placeholder="手机号码"
/>
placeholder="手机号码" />
</el-form-item>
</el-col>
</el-row>
......@@ -65,14 +60,12 @@
<el-form-item label="最高职务级别:" label-width="100px">
<el-select
v-model="form.jobLevel"
placeholder="最高职务级别"
>
placeholder="最高职务级别">
<el-option
v-for="item in levelList"
:key="item.value"
:label="item.name"
:value="item.value"
/>
:value="item.value" />
</el-select>
</el-form-item>
</el-col>
......@@ -87,8 +80,7 @@
<el-form-item
label="办公地点:"
label-width="100px"
class="form-item-mb0"
>
class="form-item-mb0">
<el-input v-model="form.address" placeholder="办公地点" />
</el-form-item>
</el-col>
......@@ -103,87 +95,87 @@
</template>
<script>
import { api, httpAction } from '@/api/manageApi'
import Dialog from "@/components/Dialog/";
export default {
name: "",
components: { Dialog },
props: {},
data() {
return {
form: {
sex: "0",
},
rules: {
name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
code: [{ required: true, message: "请输入工号", trigger: "blur" }],
mobilePhone: [{ validator: "sddd", trigger: "blur" }],
loginName: [
{ required: true, message: "请输入用户名", trigger: "blur" },
],
},
title: "",
visible: false,
showLoginName: false,
sexList: [{lable:"0",value:"0",name:"男"},{lable:"1",value:"1",name:"女"}],
levelList: [{lable:"0",value:"0",name:"干事"},{lable:"1",value:"1",name:"经理"}],
dataUrl: api.users
};
},
computed: {
departmentid() {
return this.$store.state.user.userInfo;
},
},
watch: {},
created() {},
mounted() {},
methods: {
// initDictConfig() {
// getDictItems('XB').then((res) => {
// if (res.status === 1) {
// this.sexList = res.content
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// getDictItems('ZWJB').then((res) => {
// if (res.status === 1) {
// this.levelList = res.content
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// },
// 添加人员
add() {
this.visible = true;
// this.type = 0
this.showLoginName = false
import { api, httpAction } from '@/api/manageApi'
import Dialog from "@/components/Dialog/";
export default {
name: "",
components: { Dialog },
props: {},
data () {
return {
form: {
sex: "0",
},
rules: {
name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
code: [{ required: true, message: "请输入工号", trigger: "blur" }],
mobilePhone: [{ validator: "sddd", trigger: "blur" }],
loginName: [
{ required: true, message: "请输入用户名", trigger: "blur" },
],
},
title: "修改",
visible: false,
showLoginName: false,
sexList: [{ lable: "0", value: "0", name: "男" }, { lable: "1", value: "1", name: "女" }],
levelList: [{ lable: "0", value: "0", name: "干事" }, { lable: "1", value: "1", name: "经理" }],
dataUrl: api.users
};
},
// 编辑
edit(record) {
// this.initDictConfig()
this.showLoginName = true
// 若有id为编辑
if (record) {
this.$nextTick(() => {
this.form = Object.assign({}, record)
})
}
this.visible = true
},
handleChange(value) {
this.form.departmentId = value;
computed: {
departmentid () {
return this.$store.state.user.userInfo;
},
},
// 保存
submitForm(submitType) {
watch: {},
created () { },
mounted () { },
methods: {
// initDictConfig() {
// getDictItems('XB').then((res) => {
// if (res.status === 1) {
// this.sexList = res.content
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// getDictItems('ZWJB').then((res) => {
// if (res.status === 1) {
// this.levelList = res.content
// } else {
// this.$message.error({ message: res.message, showClose: true })
// }
// })
// },
// 添加人员
adds () {
this.visible = true;
// this.type = 0
this.showLoginName = false
},
// 编辑
edit (record) {
// this.initDictConfig()
this.showLoginName = true
// 若有id为编辑
if (record) {
this.$nextTick(() => {
this.form = Object.assign({}, record)
})
}
this.visible = true
},
handleChange (value) {
this.form.departmentId = value;
},
// 保存
submitForm (submitType) {
this.$refs.form.validate((valid) => {
if (valid) {
let method = ''
let url = ''
this.form.organizationId=this.departmentid.organizationId;
this.form.departmentId=this.departmentid.departmentId;
this.form.organizationId = this.departmentid.organizationId;
this.form.departmentId = this.departmentid.departmentId;
const formData = this.form
if (!formData.id) {
method = 'post'
......@@ -197,11 +189,11 @@ export default {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.resetForm()
this.resetForm()
this.close()
this.close()
this.$emit('ok')
this.$emit('ok')
} else {
this.$message.error({ message: res.message, showClose: true })
}
......@@ -212,30 +204,18 @@ export default {
}
})
},
resetForm() {
this.form = {
sex: '0'
resetForm () {
this.form = {
sex: '0'
}
this.$refs.form.resetFields()
},
close () {
this.resetForm()
this.visible = false
}
this.$refs.form.resetFields()
},
close() {
this.resetForm()
this.visible = false
}
},
};
};
</script>
<style scoped lang="scss">
/deep/.el-input__inner {
background: #07388B;
border-radius: 2px;
border: 1px solid #6BC1FC;
}
/deep/.el-textarea__inner{
background: #07388B;
color: #fff;
}
/deep/.el-form-item__label{
color:#fff;
}
</style>
......
.btnColRight {
margin-top: 20px;
}
......@@ -17,304 +17,294 @@
</div>
<div class="from-clues-content">
<lb-table
:page-size="pageData.size"
:current-page.sync="pageData.current"
:total="pageData.total"
:pagination="false"
@size-change="handleSizeChange"
@p-current-change="handleCurrentChange"
:column="tableData.columns"
:data="tableData.data"
:expand-row-keys="keyList"
row-key="dictid"
>
row-key="dictid">
</lb-table>
</div>
<edit-dialog ref="dialogForm" @ok="reloadTableData"/>
<EditDialog ref="dialogForm" @ok="reloadTableData" />
</div>
</template>
<script>
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
import {
resetPassword,
getUserList,
} from "@/api/quanxianmanagement";
import { api, deleteAction } from '@/api/manageApi'
import data from "./data";
import { deleteDomStr } from '@/utils/proDomStr'
import sjsbTask from "@/api/sjsbTask.js";
import tableMixin from "@/mixins/tableMixin.js";
import EditDialog from "./edit-dialog.vue";
export default {
name: "menus",
mixins: [tableMixin],
components: {
EditDialog,
},
data() {
return {
taskData: null,
keyList: [],
form: {
job_name: "",
currentPage: 1,
},
queryParam: {},
selectType: "0",
queryName: "",
organizationId: "", // 组织机构ID
departmentId: "", // 部门ID
departmentList: [], // 部门列表
levelList: [], // 职务级别
sexList: [],
typeOptions: [
{
value: "0",
label: "姓名",
},
{
value: "1",
label: "工号",
},
{
value: "2",
label: "部门",
},
{
value: "3",
label: "机构",
import {
getUuid,
judgeSort,
realMove,
findParents,
removeTreeListItem,
} from "@/utils/operation";
import {
resetPassword,
getUserList,
} from "@/api/personnelManage";
import { api, deleteAction } from '@/api/manageApi'
import data from "./data";
import { deleteDomStr } from '@/utils/proDomStr'
import tableMixin from "@/mixins/tableMixin.js";
import EditDialog from "./edit-dialog.vue";
export default {
name: "menus",
mixins: [tableMixin],
components: {
EditDialog,
},
data () {
return {
taskData: null,
keyList: [],
form: {
job_name: "",
currentPage: 1,
},
],
selectionList: [],
tableData: {
columns: [
queryParam: {},
selectType: "0",
queryName: "",
organizationId: "", // 组织机构ID
departmentId: "", // 部门ID
departmentList: [], // 部门列表
levelList: [], // 职务级别
sexList: [],
typeOptions: [
{
label: "序号",
type: "index",
width: "50",
index: this.indexMethod,
value: "0",
label: "姓名",
},
]
.concat(data.columns())
.concat([
{
label: "负责人",
render: (h, scope) => {
return (
<i v-show={scope.row.isDuty!==null} class="el-icon-check" />
)
}
{
value: "1",
label: "工号",
},
{
value: "2",
label: "部门",
},
{
value: "3",
label: "机构",
},
],
selectionList: [],
tableData: {
columns: [
{
label: "排序",
width: 280,
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>
);
},
label: "序号",
type: "index",
width: "50",
index: this.indexMethod,
},
{
label: "操作",
width: 380,
render: (h, scope) => {
return (
<div>
<el-button
type="text"
size="mini"
icon="el-icon-video-pause"
onClick={() => {
this.resetPassword(scope.row.id);
}}
>
重置
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-edit"
onClick={() => {
this.handleEdit(scope.row);
}}
>
修改
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
style="color:#F56C6C"
onClick={() => {
this.handleDelete(scope.row.id, scope.row.name);
}}
>
删除
</el-button>
</div>
);
]
.concat(data.columns())
.concat([
{
label: "负责人",
render: (h, scope) => {
return (
<i v-show={scope.row.isDuty !== null} class="el-icon-check" />
)
}
},
},
]),
data: [],
},
pageData: {
total: 5,
pageSize: 15,
current: 1,
},
};
},
created() {
this.getTableList();
},
computed: {
departmentid() {
return this.$store.state.user.userInfo;
{
label: "排序",
width: 100,
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>
);
},
},
{
label: "操作",
width: 380,
render: (h, scope) => {
return (
<div>
<el-button
type="text"
size="mini"
icon="el-icon-video-pause"
onClick={() => {
this.resetPassword(scope.row.id);
}}
>
重置
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-edit"
onClick={() => {
this.handleEdit(scope.row);
}}
>
修改
</el-button>
<el-button
type="text"
size="mini"
icon="el-icon-delete"
style="color:#F56C6C"
onClick={() => {
this.handleDelete(scope.row.id, scope.row.name);
}}
>
删除
</el-button>
</div>
);
},
},
]),
data: [],
},
};
},
},
methods: {
handleAdd() {
this.$refs.dialogForm.add();
this.$refs.dialogForm.title = "添加";
created () {
this.getTableList();
},
getTableList() {
this.loading = true;
this.queryParam = {
organizationId: this.departmentid.organizationId,
departmentId: this.departmentid.departmentId,
};
getUserList(this.queryParam).then((res) => {
if (res.status === 1) {
this.loading = false;
this.tableData.data = res.content;
this.tableData.data = judgeSort(this.tableData.data);
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
computed: {
departmentid () {
return this.$store.state.user.userInfo;
},
},
methods: {
handleAdd () {
this.$refs.dialogForm.adds();
this.$refs.dialogForm.title = "添加";
},
getTableList () {
this.loading = true;
this.queryParam = {
organizationId: this.departmentid.organizationId,
departmentId: this.departmentid.departmentId,
};
getUserList(this.queryParam).then((res) => {
console.log("人员列表", res);
if (res.status === 1) {
this.loading = false;
this.tableData.data = res.content;
this.tableData.data = judgeSort(this.tableData.data);
} else {
this.$message.error({ message: res.message, showClose: true });
}
});
},
// 重置用户密码
resetPassword(data) {
const ids = []
if (data instanceof Array) {
data.forEach((item) => {
ids.push(item.id)
})
} else {
ids.push(data)
}
if (ids.length === 0) {
this.$message({
message: '请选择需要重置密码的用户!',
showClose: true
})
return
}
this.$confirm(
`<div class="customer-message-wrapper">
// 重置用户密码
resetPassword (data) {
const ids = []
if (data instanceof Array) {
data.forEach((item) => {
ids.push(item.id)
})
} else {
ids.push(data)
}
if (ids.length === 0) {
this.$message({
message: '请选择需要重置密码的用户!',
showClose: true
})
return
}
this.$confirm(
`<div class="customer-message-wrapper">
<h5 class="title">确定要重置密码吗</h5>
<p class="result">执行后,数据将
<span >无法恢复</span>
</p>
</div>`,
'执行确认',
{
'执行确认',
{
dangerouslyUseHTMLString: true,
customClass: 'customer-delete',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
resetPassword(ids).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.getTableList()
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
})
.catch(() => { })
},
// 上移下移
moveUpward (index, row) {
realMove(row.dictid, "UP", this.tableData.data);
this.key++;
let id = findParents(this.tableData.data, row.dictid);
this.keyList = id;
},
moveDown (index, row) {
realMove(row.dictid, "DOWN", this.tableData.data);
this.key++;
let id = findParents(this.tableData.data, row.dictid);
this.keyList = id;
},
// 修改人员信息
handleEdit (row) {
this.$refs.dialogForm.edit(row);
this.$refs.dialogForm.title = "修改";
},
// 删除
handleDelete (id, content) {
this.$confirm(deleteDomStr(content), '执行确认', {
dangerouslyUseHTMLString: true,
customClass: 'customer-delete',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
resetPassword(ids).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
this.getTableList()
} else {
this.$message.error({ message: res.message, showClose: true })
}
})
})
.catch(() => {})
},
// 上移下移
moveUpward(index, row) {
realMove(row.dictid, "UP", this.tableData.data);
this.key++;
let id = findParents(this.tableData.data, row.dictid);
this.keyList = id;
},
moveDown(index, row) {
realMove(row.dictid, "DOWN", this.tableData.data);
this.key++;
let id = findParents(this.tableData.data, row.dictid);
this.keyList = id;
},
// 修改人员信息
handleEdit(row) {
this.$refs.dialogForm.edit(row);
this.$refs.dialogForm.title = "修改";
},
// 删除
handleDelete(id, content) {
this.$confirm(deleteDomStr(content), '执行确认', {
dangerouslyUseHTMLString: true,
customClass: 'customer-delete',
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteAction(`${api.users}/${id}`).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
} else {
this.$message.error({ message: res.message, showClose: true })
}
this.getTableList()
.then(() => {
deleteAction(`${api.users}/${id}`).then((res) => {
if (res.status === 1) {
this.$message.success({ message: res.message, showClose: true })
} else {
this.$message.error({ message: res.message, showClose: true })
}
this.getTableList()
})
})
})
.catch(() => {})
},
// 新增回显
reloadTableData() {
this.getTableList()
.catch(() => { })
},
// 新增回显
reloadTableData () {
this.getTableList()
},
},
},
};
};
</script>
<style scoped lang="scss">
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
.btnColRight {
margin-top: 20px;
}
@import "~@/styles/mixin.scss";
@import "~@/styles/public.scss";
@import "./index.scss";
</style>
......
......@@ -199,6 +199,6 @@ export default {
};
</script>
<style scoped lang="scss">
@import "~@/styles/public.scss";
// @import "~@/styles/public.scss";
@import "./index.scss";
</style>
......
......@@ -60,6 +60,9 @@ module.exports = {
// configureWebpack通过操作对象的形式,来修改默认的webpack配置
configureWebpack: {
name: name,
externals: [{
'./cptable': 'var cptable'
}],
resolve: {
alias: {
'@': resolve('src')
......