update 国内标准体系联调、车型项目库详情、用户新增编辑开启工号字段
This commit is contained in:
@@ -1,11 +1,14 @@
|
|||||||
import { postAction } from './manage.js'
|
import { getAction, postAction } from './manage.js'
|
||||||
|
|
||||||
// 车型项目库-新增
|
// 车型项目库-新增
|
||||||
const addVehicleItemLibrary = (params) => postAction('/projectLibrary/lawsProjectLibrary/add', params)
|
const addVehicleItemLibrary = (params) => postAction('/projectLibrary/lawsProjectLibrary/add', params)
|
||||||
// 车型项目库-编辑
|
// 车型项目库-编辑
|
||||||
const editVehicleItemLibrary = (params) => postAction('/projectLibrary/lawsProjectLibrary/edit', params)
|
const editVehicleItemLibrary = (params) => postAction('/projectLibrary/lawsProjectLibrary/edit', params)
|
||||||
|
// 车型项目库-通过id获取详情
|
||||||
|
const queryByIdVehicleItemLibrary = (params) => getAction('/projectLibrary/lawsProjectLibrary/queryById', params)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
addVehicleItemLibrary,
|
addVehicleItemLibrary,
|
||||||
editVehicleItemLibrary
|
editVehicleItemLibrary,
|
||||||
|
queryByIdVehicleItemLibrary
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,15 +13,17 @@ const collectionDomesticStandard = (params) => postAction('', params)
|
|||||||
// 国内标准法规-分享
|
// 国内标准法规-分享
|
||||||
const shareDomesticStandard = (params) => postAction('', params)
|
const shareDomesticStandard = (params) => postAction('', params)
|
||||||
// 国内标准-体系新增
|
// 国内标准-体系新增
|
||||||
const addDomesticSystemTree = (params) => postAction('', params)
|
const addDomesticSystemTree = (params) => postAction('/laws/standard/lawsTreeNode/domestic/add', params)
|
||||||
// 国内标准-体系编辑
|
// 国内标准-体系编辑
|
||||||
const editDomesticSystemTree = (params) => postAction('', params)
|
const editDomesticSystemTree = (params) => postAction('/laws/standard/lawsTreeNode/domestic/edit', params)
|
||||||
// 国内标准-体系删除
|
// 国内标准-体系删除
|
||||||
const deleteDomesticSystemTree = (params) => postAction('', params)
|
const deleteDomesticSystemTree = (params) => postAction('/laws/standard/lawsTreeNode/domestic/delete', params)
|
||||||
// 国内标准-配置标准
|
// 国内标准-配置标准
|
||||||
const configDomesticStandard = (params) => postAction('', params)
|
const configDomesticStandard = (params) => postAction('', params)
|
||||||
// 国内标准-移出标准
|
// 国内标准-移出标准
|
||||||
const removeDomesticStandard = (params) => postAction('', params)
|
const removeDomesticStandard = (params) => postAction('', params)
|
||||||
|
// 国内标准-获取体系树
|
||||||
|
const getDomesticStandardTree = (params) => getAction('/laws/standard/lawsTreeNode/domestic', params)
|
||||||
|
|
||||||
// 海外标准-获取查询条件
|
// 海外标准-获取查询条件
|
||||||
const getOverseasStandardSearchForm = (params) => getAction('/laws/standard/overseas/getQueryCondition', params)
|
const getOverseasStandardSearchForm = (params) => getAction('/laws/standard/overseas/getQueryCondition', params)
|
||||||
@@ -45,6 +47,7 @@ export {
|
|||||||
deleteDomesticSystemTree,
|
deleteDomesticSystemTree,
|
||||||
configDomesticStandard,
|
configDomesticStandard,
|
||||||
removeDomesticStandard,
|
removeDomesticStandard,
|
||||||
|
getDomesticStandardTree,
|
||||||
|
|
||||||
// 海外标准
|
// 海外标准
|
||||||
getOverseasStandardSearchForm,
|
getOverseasStandardSearchForm,
|
||||||
|
|||||||
+156
-132
@@ -1,4 +1,7 @@
|
|||||||
@primary-color: #D52C26;
|
@primary-color: #D52C26;
|
||||||
|
/* 页面不出全局滚动条的高度,如果在vue文件使用,就只能在style里引入common.less */
|
||||||
|
/*59px是用户信息那块,52px是标签,24px是上下的留白*/
|
||||||
|
@page-content-h: calc(100vh - 59px - 52px - 24px);
|
||||||
|
|
||||||
/*列表上方操作按钮区域*/
|
/*列表上方操作按钮区域*/
|
||||||
/*.ant-card-body .table-operator {
|
/*.ant-card-body .table-operator {
|
||||||
@@ -393,7 +396,7 @@
|
|||||||
|
|
||||||
/*页面左右布局*/
|
/*页面左右布局*/
|
||||||
.page-left-right-layout {
|
.page-left-right-layout {
|
||||||
height: 85vh;
|
height: @page-content-h;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
.ant-card-body {
|
.ant-card-body {
|
||||||
@@ -432,11 +435,6 @@
|
|||||||
color: #86909c;
|
color: #86909c;
|
||||||
}
|
}
|
||||||
|
|
||||||
//子节点前面文件图标的颜色
|
|
||||||
.ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop {
|
|
||||||
color: #1D2129;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-tree-title {
|
.ant-tree-title {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@@ -527,145 +525,171 @@
|
|||||||
/*详情样式start*/
|
/*详情样式start*/
|
||||||
.detail-page {
|
.detail-page {
|
||||||
padding: 24px;
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-title {
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
||||||
|
color: #1D2129;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part {
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid #E5E6EB;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-title {
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(245, 245, 245, 0.6);
|
||||||
|
border-radius: 8px 8px 0 0;
|
||||||
|
opacity: 1;
|
||||||
|
border-bottom: 1px solid #E5E6EB;
|
||||||
|
padding: 0 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-title > span {
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
||||||
|
font-weight: 550;
|
||||||
|
color: #1D2129;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-title-operate-box {
|
||||||
|
.ant-btn > .anticon + span {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn > .iconfont + span {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-btn > .iconfont {
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-form {
|
||||||
|
padding: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-form-item {
|
||||||
|
width: calc((100% - 32px) / 3);
|
||||||
|
display: flex;
|
||||||
|
margin: 0 16px 16px 0;
|
||||||
|
|
||||||
|
label {
|
||||||
|
width: 40%;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #86909C;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-all;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
color: #1D2129;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-form-item:nth-child(3n) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .detail-page-part-form-item {
|
||||||
|
width: calc((100% - 32px) / 3);
|
||||||
|
display: flex;
|
||||||
|
margin: 0 16px 16px 0;
|
||||||
|
|
||||||
|
label {
|
||||||
|
width: 40%;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #86909C;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-all;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
color: #1D2129;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .detail-page-part-form-item:nth-child(3n) {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-process-manuscript {
|
||||||
|
padding: 20px;
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
padding: 20px 0;
|
||||||
|
border-bottom: 1px solid #E5E6EB;
|
||||||
|
}
|
||||||
|
|
||||||
&-title {
|
&-title {
|
||||||
font-size: 20px;
|
font-size: 16px;
|
||||||
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
color: #1D2129;
|
color: #86909C;
|
||||||
font-weight: 600;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-part {
|
|
||||||
border-radius: 8px;
|
|
||||||
border: 1px solid #E5E6EB;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-part-title {
|
|
||||||
height: 56px;
|
|
||||||
background: rgba(245, 245, 245, 0.6);
|
|
||||||
border-radius: 8px 8px 0 0;
|
|
||||||
opacity: 1;
|
|
||||||
border-bottom: 1px solid #E5E6EB;
|
|
||||||
padding: 0 20px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
margin-bottom: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-part-title > span {
|
&-file {
|
||||||
font-size: 16px;
|
|
||||||
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
|
||||||
font-weight: 550;
|
|
||||||
color: #1D2129;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-part-title-operate-box {
|
|
||||||
.ant-btn > .anticon + span {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-btn > .iconfont + span {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-btn > .iconfont {
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-part-form {
|
|
||||||
padding: 20px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
&-item {
|
margin-bottom: 12px;
|
||||||
width: calc((100% - 32px) / 3);
|
|
||||||
display: flex;
|
|
||||||
margin: 0 16px 16px 0;
|
|
||||||
|
|
||||||
label {
|
|
||||||
width: 40%;
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #86909C;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
white-space: pre-wrap;
|
|
||||||
word-break: break-all;
|
|
||||||
font-size: 16px;
|
|
||||||
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
|
||||||
color: #1D2129;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&-item:nth-child(3n) {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&-process-manuscript {
|
&-file:last-child {
|
||||||
padding: 20px;
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
&-item {
|
&-file-info {
|
||||||
padding: 20px 0;
|
display: flex;
|
||||||
border-bottom: 1px solid #E5E6EB;
|
align-items: center;
|
||||||
|
color: @primary-color;
|
||||||
|
cursor: pointer;
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-file-info > .anticon {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-file-name {
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
flex: 1;
|
||||||
|
width: 0;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-file-operate {
|
||||||
|
.ant-btn > .anticon + span, .ant-btn > .iconfont + span {
|
||||||
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&-title {
|
.ant-btn:first-child {
|
||||||
font-size: 16px;
|
margin-left: 15px;
|
||||||
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
|
||||||
color: #86909C;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-file {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-file:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-file-info {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
color: @primary-color;
|
|
||||||
cursor: pointer;
|
|
||||||
flex: 1;
|
|
||||||
width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-file-info > .anticon {
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-file-name {
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
flex: 1;
|
|
||||||
width: 0;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
&-file-operate {
|
|
||||||
.ant-btn > .anticon + span, .ant-btn > .iconfont + span {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-btn:first-child {
|
|
||||||
margin-left: 15px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
projectName: 'Project name', // 项目名称
|
projectName: 'Project name', // 项目名称
|
||||||
workOrderNumber: 'Work order number', // 工作令编号
|
workOrderNumber: 'Work order number', // 工作令编号
|
||||||
projectHealthStatus: 'Project health status', // 项目健康状态
|
projectHealthStatus: 'Project health', // 项目健康度
|
||||||
|
|
||||||
// 车型项目库
|
// 车型项目库
|
||||||
vehicleItemLibrary: {
|
vehicleItemLibrary: {
|
||||||
@@ -10,6 +10,14 @@ module.exports = {
|
|||||||
projectSource: 'Project source', // 项目来源
|
projectSource: 'Project source', // 项目来源
|
||||||
projectName: 'Project name', // 项目名称
|
projectName: 'Project name', // 项目名称
|
||||||
projectLeader: 'Project leader', // 项目负责人,
|
projectLeader: 'Project leader', // 项目负责人,
|
||||||
PMSDetails: 'PMS Details' // PMS详情
|
PMSDetails: 'PMS Details', // PMS详情
|
||||||
|
riskOverview: 'Risk overview', // 风险性总览
|
||||||
|
conform: 'Conform to', // 符合
|
||||||
|
inconformity: 'Inconformity', // 不符合
|
||||||
|
toBeVerified: 'To be verified', // 待验证
|
||||||
|
uninvolved: 'Not involve', // 不涉及
|
||||||
|
regulationsList: 'List of regulations', // 法规清单
|
||||||
|
standardNumberStandardName: 'Standard number/Standard name', // 标准号/标准名称
|
||||||
|
transfer: 'Transfer' // 调取
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,15 @@ module.exports = {
|
|||||||
PMSInfoSynchronization: 'PMS信息同步',
|
PMSInfoSynchronization: 'PMS信息同步',
|
||||||
projectSource: '项目来源',
|
projectSource: '项目来源',
|
||||||
projectLeader: '项目负责人',
|
projectLeader: '项目负责人',
|
||||||
PMSDetails: 'PMS详情'
|
PMSDetails: 'PMS详情',
|
||||||
|
noMatchItemDetails: '未符合项详情',
|
||||||
|
riskOverview: '风险性总览',
|
||||||
|
conform: '符合',
|
||||||
|
inconformity: '不符合',
|
||||||
|
toBeVerified: '待验证',
|
||||||
|
uninvolved: '不涉及',
|
||||||
|
regulationsList: '法规清单',
|
||||||
|
standardNumberStandardName: '标准号/标准名称',
|
||||||
|
transfer: '调取'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
<template>
|
||||||
|
<a-spin :spinning="loading">
|
||||||
|
<div class="detail-container">
|
||||||
|
<div class="page-title">
|
||||||
|
<i class="iconfont icon-chexiao" @click="handleBack" />
|
||||||
|
<span class="page-title-text">{{ title }}</span>
|
||||||
|
<div class="custom-operate">
|
||||||
|
<slot name="titleRightCustom"></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="detail-content" :style="{padding: contentPadding + 'px'}">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-spin>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'InternalDetailPage',
|
||||||
|
props: {
|
||||||
|
// 页面标题
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
|
// 是否需要自定义返回方法
|
||||||
|
needCustomBackFunc: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
// 内容的内边距,默认是24
|
||||||
|
contentPadding: {
|
||||||
|
type: Number,
|
||||||
|
required: false,
|
||||||
|
default: 24
|
||||||
|
},
|
||||||
|
loading: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleBack () {
|
||||||
|
if (this.needCustomBackFunc) {
|
||||||
|
this.$emit('back')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$router.go(-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
@import "~@/assets/less/common";
|
||||||
|
|
||||||
|
.detail-container {
|
||||||
|
height: @page-content-h;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-title {
|
||||||
|
height: 56px;
|
||||||
|
border-bottom: 1px solid #E5E6EB;
|
||||||
|
padding: 0 24px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-size: 24px;
|
||||||
|
color: @primary-color;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-text {
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1D2129;
|
||||||
|
flex: 1;
|
||||||
|
display: inline-block;
|
||||||
|
width: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-content {
|
||||||
|
height: calc(100% - 56px);
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -52,7 +52,9 @@ export default {
|
|||||||
dictCode: {
|
dictCode: {
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler () {
|
handler () {
|
||||||
this.initDictData()
|
if (this.dictCode) {
|
||||||
|
this.initDictData()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ export const TagsAttributeTypeEnums = {
|
|||||||
|
|
||||||
// 标准体系树节点类型
|
// 标准体系树节点类型
|
||||||
export const StandardSystemTreeNodeType = {
|
export const StandardSystemTreeNodeType = {
|
||||||
ROOT_NODE: { text: '根节点', value: '1' },
|
ROOT_NODE: { text: '根节点', value: 1 },
|
||||||
CHILD_NODE: { text: '子节点', value: '2' }
|
CHILD_NODE: { text: '子节点', value: 2 }
|
||||||
}
|
}
|
||||||
|
|
||||||
// 车型项目库-项目来源
|
// 车型项目库-项目来源
|
||||||
|
|||||||
@@ -424,6 +424,18 @@ export const JeroListMixin = {
|
|||||||
},
|
},
|
||||||
handleImportByFileId (fileId) {
|
handleImportByFileId (fileId) {
|
||||||
// TODO 完善通过文件id上传文件的方法
|
// TODO 完善通过文件id上传文件的方法
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 循环操作按钮的操作
|
||||||
|
* @param operation
|
||||||
|
* @param record
|
||||||
|
*/
|
||||||
|
operationClick (operation, record) {
|
||||||
|
if (operation.clickEvent === 'handleDelete') {
|
||||||
|
this.handleDelete(record.id)
|
||||||
|
} else {
|
||||||
|
this[operation.clickEvent](record)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="exception">
|
<div class="exception">
|
||||||
<div class="img">
|
<div class="img">
|
||||||
<img :src="config[type].img" alt=""/>
|
<img :src="config[type].img" alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1>{{ config[type].title }}</h1>
|
<h1>{{ config[type].title }}</h1>
|
||||||
@@ -38,51 +38,54 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.exception {
|
.exception {
|
||||||
min-height: 500px;
|
height: 100vh;
|
||||||
height: 80%;
|
display: flex;
|
||||||
align-items: center;
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.img > img {
|
||||||
|
height: 260px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-top: 24px;
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
||||||
|
color: #1D2129;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.desc {
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
color: #86909C;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.action {
|
||||||
|
margin-top: 32px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin-top: 150px;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile {
|
||||||
|
.exception {
|
||||||
|
margin-top: 30px;
|
||||||
|
|
||||||
.img {
|
.img {
|
||||||
display: inline-block;
|
padding-right: unset;
|
||||||
padding-right: 52px;
|
|
||||||
zoom: 1;
|
|
||||||
img {
|
img {
|
||||||
height: 360px;
|
height: 40%;
|
||||||
max-width: 430px;
|
max-width: 80%;
|
||||||
}
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
display: inline-block;
|
|
||||||
flex: auto;
|
|
||||||
h1 {
|
|
||||||
color: #434e59;
|
|
||||||
font-size: 72px;
|
|
||||||
font-weight: 600;
|
|
||||||
line-height: 72px;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
.desc {
|
|
||||||
color: rgba(0, 0, 0, .45);
|
|
||||||
font-size: 20px;
|
|
||||||
line-height: 28px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile {
|
|
||||||
.exception {
|
|
||||||
margin-top: 30px;
|
|
||||||
.img {
|
|
||||||
padding-right: unset;
|
|
||||||
|
|
||||||
img {
|
|
||||||
height: 40%;
|
|
||||||
max-width: 80%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
const noPermissionImage = require('../../assets/404.png')
|
||||||
const types = {
|
const types = {
|
||||||
403: {
|
403: {
|
||||||
img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg',
|
img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg',
|
||||||
@@ -5,9 +6,9 @@ const types = {
|
|||||||
desc: '抱歉,你无权访问该页面'
|
desc: '抱歉,你无权访问该页面'
|
||||||
},
|
},
|
||||||
404: {
|
404: {
|
||||||
img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg',
|
img: noPermissionImage,
|
||||||
title: '404',
|
title: '暂无权限',
|
||||||
desc: '抱歉,你访问的页面不存在或无权访问'
|
desc: '抱歉,您无权限访问此页面,请联系管理员'
|
||||||
},
|
},
|
||||||
500: {
|
500: {
|
||||||
img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg',
|
img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg',
|
||||||
|
|||||||
@@ -71,6 +71,15 @@
|
|||||||
:scroll="{x: '100%'}"
|
:scroll="{x: '100%'}"
|
||||||
@change="handleTableChange">
|
@change="handleTableChange">
|
||||||
|
|
||||||
|
<!-- 项目名称-->
|
||||||
|
<template v-slot:projectName="{text, record}">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||||
|
<div class="table-text can-click-table-text" v-if="text || text === 0" @click="handleDetail(record)">{{ text }}</div>
|
||||||
|
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
<template v-slot:operation="{text, record}">
|
<template v-slot:operation="{text, record}">
|
||||||
<a @click="operationClick(operationList[0],record)">{{ operationList[0].text }}</a>
|
<a @click="operationClick(operationList[0],record)">{{ operationList[0].text }}</a>
|
||||||
<a-divider type="vertical" />
|
<a-divider type="vertical" />
|
||||||
@@ -124,7 +133,8 @@ export default {
|
|||||||
dataIndex: 'projectName',
|
dataIndex: 'projectName',
|
||||||
title: this.$t('projectLibrary.projectName'),
|
title: this.$t('projectLibrary.projectName'),
|
||||||
sorter: true,
|
sorter: true,
|
||||||
width: 250
|
width: 250,
|
||||||
|
scopedSlots: { customRender: 'projectName' }
|
||||||
},
|
},
|
||||||
// 工作令编号
|
// 工作令编号
|
||||||
{
|
{
|
||||||
@@ -192,15 +202,13 @@ export default {
|
|||||||
handlePMSInfoSynchronization () {
|
handlePMSInfoSynchronization () {
|
||||||
|
|
||||||
},
|
},
|
||||||
operationClick (operation, record) {
|
handleDetail ({ id, projectName }) {
|
||||||
if (operation.clickEvent === 'handleDelete') {
|
this.$router.push({
|
||||||
this.handleDelete(record.id)
|
path: '/projectLibrary/VehicleItemLibraryDetail',
|
||||||
} else {
|
query: {
|
||||||
this[operation.clickEvent](record)
|
id, projectName
|
||||||
}
|
}
|
||||||
},
|
})
|
||||||
handleDetail () {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,217 @@
|
|||||||
|
<template>
|
||||||
|
<internal-detail-page :title="pageTitle" :loading="loading">
|
||||||
|
<template v-slot:titleRightCustom>
|
||||||
|
<a-button type="primary">{{ $t('projectLibrary.vehicleItemLibrary.noMatchItemDetails') }}</a-button>
|
||||||
|
</template>
|
||||||
|
<!--项目信息-->
|
||||||
|
<div class="project-form">
|
||||||
|
<!--项目来源-->
|
||||||
|
<div class="detail-page-part-form-item">
|
||||||
|
<label>{{ $t('projectLibrary.vehicleItemLibrary.projectSource') }}</label>
|
||||||
|
<span>{{ detailData.projectSource_dictText }}</span>
|
||||||
|
</div>
|
||||||
|
<!--项目名称-->
|
||||||
|
<div class="detail-page-part-form-item">
|
||||||
|
<label>{{ $t('projectLibrary.projectName') }}</label>
|
||||||
|
<span>{{ detailData.projectName }}</span>
|
||||||
|
</div>
|
||||||
|
<!--工作令编号-->
|
||||||
|
<div class="detail-page-part-form-item">
|
||||||
|
<label>{{ $t('projectLibrary.workOrderNumber') }}</label>
|
||||||
|
<span>{{ detailData.workNumber }}</span>
|
||||||
|
</div>
|
||||||
|
<!--项目负责人-->
|
||||||
|
<div class="detail-page-part-form-item">
|
||||||
|
<label>{{ $t('projectLibrary.vehicleItemLibrary.projectLeader') }}</label>
|
||||||
|
<span>{{ detailData.nameWorkNo }}</span>
|
||||||
|
</div>
|
||||||
|
<!--项目健康状态-->
|
||||||
|
<div class="detail-page-part-form-item">
|
||||||
|
<label>{{ $t('projectLibrary.projectHealthStatus') }}</label>
|
||||||
|
<span>{{ detailData.projectHealth_dictText }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--风险性总览-->
|
||||||
|
<a-table size="small" bordered :columns="riskOverviewColumns" :data-source="riskOverviewData"></a-table>
|
||||||
|
|
||||||
|
<!--法规清单-->
|
||||||
|
<div class="part-title">{{ $t('projectLibrary.vehicleItemLibrary.regulationsList') }}</div>
|
||||||
|
<!--查询区域-->
|
||||||
|
<div class="table-page-search-wrapper">
|
||||||
|
<a-form layout="inline">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<!--标准号/标准名称-->
|
||||||
|
<a-col :md="6" :sm="12">
|
||||||
|
<a-form-item :label="$t('projectLibrary.vehicleItemLibrary.standardNumberStandardName')">
|
||||||
|
<j-input :placeholder="$t('pleaseEnter') + $t('projectLibrary.vehicleItemLibrary.standardNumberStandardName')"
|
||||||
|
v-model="queryParam.projectName"></j-input>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :md="6" :sm="8">
|
||||||
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
|
<a-button type="primary" @click="searchReset" icon="reload" ghost>{{ $t('reset') }}</a-button>
|
||||||
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'vehicleItemLibrary:search'">
|
||||||
|
{{ $t('query') }}
|
||||||
|
</a-button>
|
||||||
|
</span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
<div class="table-operator">
|
||||||
|
<!-- 调取-->
|
||||||
|
<a-button type="primary" @click="handleTransfer" ghost v-has="'vehicleItemLibrary:add'">{{ $t('projectLibrary.vehicleItemLibrary.transfer') }}
|
||||||
|
</a-button>
|
||||||
|
<!-- 复制-->
|
||||||
|
<a-button type="primary" ghost @click="handleCopy" v-has="'vehicleItemLibrary:batchDel'">{{ $t('copy') }}</a-button>
|
||||||
|
<!-- 导出-->
|
||||||
|
<a-button icon="upload"
|
||||||
|
type="primary"
|
||||||
|
ghost
|
||||||
|
@click="handleExportXls($t('projectLibrary.vehicleItemLibrary.vehicleItemLibrary'))"
|
||||||
|
v-has="'vehicleItemLibrary:export'">
|
||||||
|
{{ $t('export') }}
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<j-table
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:can-drag="true"
|
||||||
|
rowKey="id"
|
||||||
|
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||||
|
:pagination="ipagination"
|
||||||
|
:scroll="{x: '100%'}"
|
||||||
|
@change="handleTableChange">
|
||||||
|
|
||||||
|
<template v-slot:operation="{text, record}">
|
||||||
|
<a @click="operationClick(operationList[0],record)">{{ operationList[0].text }}</a>
|
||||||
|
<a-divider type="vertical" />
|
||||||
|
<a-dropdown placement="bottomCenter">
|
||||||
|
<a-icon type="more" class="operate-icon-btn operate-icon-more" />
|
||||||
|
<a-menu slot="overlay">
|
||||||
|
<a-menu-item v-for="(operation, index) in operationList.slice(operateMaxNum)" :key="index">
|
||||||
|
<a @click="operationClick(operation,record)">
|
||||||
|
<div class="operate-btn">
|
||||||
|
<!-- 编辑图标-->
|
||||||
|
<i class="iconfont icon-bianji operate-btn-icon" v-if="operation.text === $t('edit')" />
|
||||||
|
<!-- 删除图标-->
|
||||||
|
<i class="iconfont icon-shanchu_ operate-btn-icon" v-if="operation.text === $t('delete')" />
|
||||||
|
{{ operation.text }}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</a-menu-item>
|
||||||
|
</a-menu>
|
||||||
|
</a-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</j-table>
|
||||||
|
</div>
|
||||||
|
</internal-detail-page>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import '@assets/less/common.less'
|
||||||
|
import InternalDetailPage from '../../../components/InternalDetailPage.vue'
|
||||||
|
import { queryByIdVehicleItemLibrary } from '../../../api/projectLibraryApi.js'
|
||||||
|
import { JeroListMixin } from '../../../mixins/JeroListMixin.js'
|
||||||
|
import JTable from '../../../components/jero/JTable.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'VehicleItemLibraryDetail',
|
||||||
|
components: { JTable, InternalDetailPage },
|
||||||
|
mixins: [JeroListMixin],
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
loading: false,
|
||||||
|
detailData: {}, // 项目详情数据
|
||||||
|
// 风险项总览表头
|
||||||
|
riskOverviewColumns: [
|
||||||
|
{
|
||||||
|
title: this.$route.query.projectName + this.$t('projectLibrary.vehicleItemLibrary.riskOverview'),
|
||||||
|
children: [
|
||||||
|
// 符合
|
||||||
|
{
|
||||||
|
title: this.$t('projectLibrary.vehicleItemLibrary.conform'),
|
||||||
|
dataIndex: 'conform',
|
||||||
|
align: 'center',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
// 不符合
|
||||||
|
{
|
||||||
|
title: this.$t('projectLibrary.vehicleItemLibrary.inconformity'),
|
||||||
|
dataIndex: 'inconformity',
|
||||||
|
align: 'center',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
// 待验证
|
||||||
|
{
|
||||||
|
title: this.$t('projectLibrary.vehicleItemLibrary.toBeVerified'),
|
||||||
|
dataIndex: 'toBeVerified',
|
||||||
|
align: 'center',
|
||||||
|
width: 200
|
||||||
|
},
|
||||||
|
// 不涉及
|
||||||
|
{
|
||||||
|
title: this.$t('projectLibrary.vehicleItemLibrary.uninvolved'),
|
||||||
|
dataIndex: 'uninvolved',
|
||||||
|
align: 'center',
|
||||||
|
width: 200
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
riskOverviewData: [] // 风险项总览数据
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
pageTitle () {
|
||||||
|
return `《${this.$route.query.projectName}》${this.$t('details')}`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.loadDetailData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
loadDetailData () {
|
||||||
|
this.loading = true
|
||||||
|
queryByIdVehicleItemLibrary({ id: this.$route.query.id }).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.detailData = Object.assign({}, res.result || {})
|
||||||
|
} else {
|
||||||
|
this.$message.warn(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleTransfer () {
|
||||||
|
|
||||||
|
},
|
||||||
|
handleCopy () {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.project-form {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-page-part-form-item {
|
||||||
|
label {
|
||||||
|
width: 7em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.part-title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #1D2129;
|
||||||
|
margin: 24px 0 15px 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
:title="title"
|
:title="title"
|
||||||
:width="width"
|
:width="width"
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
switchFullscreen
|
|
||||||
:maskClosable="false"
|
:maskClosable="false"
|
||||||
:confirmLoading="confirmLoading"
|
:confirmLoading="confirmLoading"
|
||||||
:ok-text="$t('preservation')"
|
:ok-text="$t('preservation')"
|
||||||
@@ -17,7 +16,7 @@
|
|||||||
<!--项目来源-->
|
<!--项目来源-->
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('projectLibrary.vehicleItemLibrary.projectSource')">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('projectLibrary.vehicleItemLibrary.projectSource')">
|
||||||
<j-dict-select-tag v-decorator="['projectSource', validatorRules.projectSource]" dictCode="project_source" disabled
|
<j-dict-select-tag v-decorator="['projectSource', validatorRules.projectSource]" dict-code="project_source" disabled
|
||||||
:placeholder="$t('pleaseSelect') + $t('projectLibrary.vehicleItemLibrary.projectSource')" />
|
:placeholder="$t('pleaseSelect') + $t('projectLibrary.vehicleItemLibrary.projectSource')" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -53,7 +52,7 @@
|
|||||||
<!--项目健康度-->
|
<!--项目健康度-->
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('projectLibrary.projectHealthStatus')">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('projectLibrary.projectHealthStatus')">
|
||||||
<j-dict-select-tag v-decorator="['projectHealth', validatorRules.projectHealth]" dictCode="project_health"
|
<j-dict-select-tag v-decorator="['projectHealth', validatorRules.projectHealth]" dict-code="project_health"
|
||||||
:placeholder="$t('pleaseSelect') + $t('projectLibrary.projectHealthStatus')" />
|
:placeholder="$t('pleaseSelect') + $t('projectLibrary.projectHealthStatus')" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|||||||
@@ -2,44 +2,51 @@
|
|||||||
<a-card :bordered="false" class="page-left-right-layout">
|
<a-card :bordered="false" class="page-left-right-layout">
|
||||||
<!-- 树部分-->
|
<!-- 树部分-->
|
||||||
<div class="page-left-box">
|
<div class="page-left-box">
|
||||||
<!-- $t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')-->
|
<a-spin :spinning="loading">
|
||||||
<a-input-search v-model="treeInput" :placeholder="$t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')"
|
<!-- $t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')-->
|
||||||
@search="handleTreeSearch" />
|
<a-input-search v-model="treeInput"
|
||||||
<a-tree :show-line="true" :show-icon="true" :tree-data="treeData" :selected-keys="selectedTreeKeys">
|
:placeholder="$t('standardRegulationLibrary.domesticStandard.treeSearchPlaceholder')"
|
||||||
<a-icon type="folder" slot="folder" class="tree-icon" />
|
@search="handleTreeSearch" />
|
||||||
|
<a-tree :show-line="true" :show-icon="true" :tree-data="treeData">
|
||||||
|
<a-icon type="folder" slot="folder" class="tree-icon" />
|
||||||
|
<a-icon type="file" slot="file" class="tree-icon" />
|
||||||
|
|
||||||
<template #custom="record">
|
<template #custom="record">
|
||||||
<div class="tree-operate-node"
|
<div class="tree-operate-node"
|
||||||
@mouseenter="handleTreeMouseover(record.key)"
|
@mouseenter="handleTreeMouseover(record.key)"
|
||||||
@mouseleave="handleTreeMouseout(record.key)"
|
@mouseleave="handleTreeMouseout(record.key)"
|
||||||
@click="handleSelectTreeNode(record)">
|
@click="handleSelectTreeNode(record)">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template #title>
|
<template #title>
|
||||||
{{ record.nodeName }}
|
{{ record.nodeName }}
|
||||||
|
</template>
|
||||||
|
<span class="tree-node-custom-title">{{ record.nodeName }}</span>
|
||||||
|
</a-tooltip>
|
||||||
|
<template v-if="record.key === mouseInNodeKey">
|
||||||
|
<!-- 新增-->
|
||||||
|
<a-button icon="plus"
|
||||||
|
class="tree-operate-node-btn"
|
||||||
|
@click.stop="handleAddTreeNode(record)"
|
||||||
|
v-has="'domesticStandard:tree:add'"></a-button>
|
||||||
|
<!-- 编辑,根节点不能编辑-->
|
||||||
|
<a-button class="tree-operate-node-btn"
|
||||||
|
@click.stop="handleEditTreeNode(record)"
|
||||||
|
v-has="'domesticStandard:tree:edit'"
|
||||||
|
v-if="record.nodeType !== StandardSystemTreeNodeType.ROOT_NODE.value">
|
||||||
|
<i class="iconfont icon-bianji" />
|
||||||
|
</a-button>
|
||||||
|
<!-- 删除,根节点不能删除-->
|
||||||
|
<a-button class="tree-operate-node-btn"
|
||||||
|
v-has="'domesticStandard:tree:delete'"
|
||||||
|
v-if="record.nodeType !== StandardSystemTreeNodeType.ROOT_NODE.value"
|
||||||
|
@click.stop="handleDelTreeNode(record)">
|
||||||
|
<i class="iconfont icon-shanchu_" />
|
||||||
|
</a-button>
|
||||||
</template>
|
</template>
|
||||||
<span class="tree-node-custom-title">{{ record.nodeName }}</span>
|
</div>
|
||||||
</a-tooltip>
|
</template>
|
||||||
<template v-if="record.key === mouseInNodeKey">
|
</a-tree>
|
||||||
<!-- 新增-->
|
</a-spin>
|
||||||
<a-button icon="plus"
|
|
||||||
class="tree-operate-node-btn"
|
|
||||||
@click.stop="handleAddTreeNode(record)"
|
|
||||||
v-has="'domesticStandard:tree:add'"></a-button>
|
|
||||||
<!-- 编辑-->
|
|
||||||
<a-button class="tree-operate-node-btn" @click.stop="handleEditTreeNode(record)" v-has="'domesticStandard:tree:edit'">
|
|
||||||
<i class="iconfont icon-bianji" />
|
|
||||||
</a-button>
|
|
||||||
<!-- 删除,根节点不能删除-->
|
|
||||||
<a-button class="tree-operate-node-btn"
|
|
||||||
v-has="'domesticStandard:tree:delete'"
|
|
||||||
v-if="record.nodeType !== StandardSystemTreeNodeType.ROOT_NODE.value"
|
|
||||||
@click.stop="handleDelTreeNode(record)">
|
|
||||||
<i class="iconfont icon-shanchu_" />
|
|
||||||
</a-button>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</a-tree>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格部分-->
|
<!-- 表格部分-->
|
||||||
<div class="page-right-box">
|
<div class="page-right-box">
|
||||||
@@ -178,41 +185,19 @@ import Search from '../../../components/customField/Search.vue'
|
|||||||
import JTable from '../../../components/jero/JTable.vue'
|
import JTable from '../../../components/jero/JTable.vue'
|
||||||
import DomesticStandardModal from './modules/DomesticStandardModal.vue'
|
import DomesticStandardModal from './modules/DomesticStandardModal.vue'
|
||||||
import {
|
import {
|
||||||
getDomesticStandardTableHeader,
|
|
||||||
getDomesticStandardSearchForm,
|
|
||||||
shareDomesticStandard,
|
|
||||||
deleteDomesticSystemTree,
|
|
||||||
configDomesticStandard,
|
configDomesticStandard,
|
||||||
removeDomesticStandard
|
deleteDomesticSystemTree,
|
||||||
|
getDomesticStandardSearchForm,
|
||||||
|
getDomesticStandardTableHeader,
|
||||||
|
getDomesticStandardTree,
|
||||||
|
removeDomesticStandard,
|
||||||
|
shareDomesticStandard
|
||||||
} from '../../../api/standardRegulationLibraryApi'
|
} from '../../../api/standardRegulationLibraryApi'
|
||||||
import { YesOrNoEnum, StandardSystemTreeNodeType, TagsTypeEnums } from '../../../enums/commonEnums'
|
import { StandardSystemTreeNodeType, TagsTypeEnums, YesOrNoEnum } from '../../../enums/commonEnums'
|
||||||
import UserSelectModal from '../../../components/selection/UserSelectModal.vue'
|
import UserSelectModal from '../../../components/selection/UserSelectModal.vue'
|
||||||
import DomesticSystemTreeModal from './modules/DomesticSystemTreeModal.vue'
|
import DomesticSystemTreeModal from './modules/DomesticSystemTreeModal.vue'
|
||||||
import StandardSelectionModal from '../../../components/selection/StandardSelectionModal.vue'
|
import StandardSelectionModal from '../../../components/selection/StandardSelectionModal.vue'
|
||||||
|
|
||||||
const apiTreeData = [
|
|
||||||
{
|
|
||||||
nodeName: 'parent 1',
|
|
||||||
key: '0-0',
|
|
||||||
nodeType: '1',
|
|
||||||
child: [
|
|
||||||
{
|
|
||||||
nodeName: '张晨成',
|
|
||||||
key: '0-0-0',
|
|
||||||
child: [
|
|
||||||
{ nodeName: 'leaf', key: '0-0-0-0' },
|
|
||||||
{ nodeName: 'leaf', key: '0-0-0-1' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
nodeName: 'parent 1-1',
|
|
||||||
key: '0-0-1',
|
|
||||||
child: [{ key: '0-0-1-0', nodeName: 'zcvc' }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DomesticStandardList',
|
name: 'DomesticStandardList',
|
||||||
components: { Search, JTable, DomesticStandardModal, UserSelectModal, DomesticSystemTreeModal, StandardSelectionModal },
|
components: { Search, JTable, DomesticStandardModal, UserSelectModal, DomesticSystemTreeModal, StandardSelectionModal },
|
||||||
@@ -280,7 +265,14 @@ export default {
|
|||||||
* 获取树数据
|
* 获取树数据
|
||||||
*/
|
*/
|
||||||
initTreeData () {
|
initTreeData () {
|
||||||
this.treeData = this.dealTreeData(apiTreeData)
|
getDomesticStandardTree().then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
const treeData = res.result || []
|
||||||
|
this.treeData = this.dealTreeData(treeData)
|
||||||
|
} else {
|
||||||
|
this.$message.warn(res.message)
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 处理树数据,加入自定义的节点插槽
|
* 处理树数据,加入自定义的节点插槽
|
||||||
@@ -289,11 +281,13 @@ export default {
|
|||||||
*/
|
*/
|
||||||
dealTreeData (treeData) {
|
dealTreeData (treeData) {
|
||||||
return treeData.map(item => {
|
return treeData.map(item => {
|
||||||
if (item.child && item.child.length > 0) {
|
if (item.children && item.children.length > 0) {
|
||||||
|
item.scopedSlots = { icon: 'folder', title: 'custom' }
|
||||||
|
item.children = this.dealTreeData(item.children)
|
||||||
|
} else if (item.nodeType === StandardSystemTreeNodeType.ROOT_NODE.value) {
|
||||||
item.scopedSlots = { icon: 'folder', title: 'custom' }
|
item.scopedSlots = { icon: 'folder', title: 'custom' }
|
||||||
item.children = this.dealTreeData(item.child)
|
|
||||||
} else {
|
} else {
|
||||||
item.scopedSlots = { title: 'custom' }
|
item.scopedSlots = { icon: 'file', title: 'custom' }
|
||||||
}
|
}
|
||||||
return item
|
return item
|
||||||
})
|
})
|
||||||
@@ -382,7 +376,7 @@ export default {
|
|||||||
* @param dataRef
|
* @param dataRef
|
||||||
*/
|
*/
|
||||||
handleAddTreeNode ({ dataRef }) {
|
handleAddTreeNode ({ dataRef }) {
|
||||||
this.$refs.treeModal.add({ parentId: dataRef.key })
|
this.$refs.treeModal.add({ parentId: dataRef.id, parentCode: dataRef.nodeCode })
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 编辑树节点
|
* 编辑树节点
|
||||||
@@ -400,7 +394,7 @@ export default {
|
|||||||
title: this.$t('confirmDeletion'),
|
title: this.$t('confirmDeletion'),
|
||||||
content: this.$t('areYouSure'),
|
content: this.$t('areYouSure'),
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
deleteDomesticSystemTree({ ids: dataRef.id }).then((res) => {
|
deleteDomesticSystemTree({ id: dataRef.id }).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$message.success(res.message)
|
this.$message.success(res.message)
|
||||||
this.modalFormOk()
|
this.modalFormOk()
|
||||||
@@ -537,4 +531,8 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/deep/ .ant-tree li span.ant-tree-switcher.ant-tree-switcher-noop {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+2
-1
@@ -13,7 +13,7 @@
|
|||||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.nodeName')"
|
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.nodeName')"
|
||||||
@change="event => event.target.value = event.target.value.trim()"
|
@change="event => event.target.value = event.target.value.trim()"
|
||||||
:maxLength="50"
|
:maxLength="50"
|
||||||
v-decorator="[ 'nodeName', validatorRules.nodeName]" />
|
v-decorator="['nodeName', validatorRules.nodeName]" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
|
|
||||||
@@ -69,6 +69,7 @@ export default {
|
|||||||
if (!err) {
|
if (!err) {
|
||||||
this.confirmLoading = true
|
this.confirmLoading = true
|
||||||
const formData = Object.assign(this.model, values)
|
const formData = Object.assign(this.model, values)
|
||||||
|
formData.nodeOrder = '0'
|
||||||
let submitFunc
|
let submitFunc
|
||||||
if (this.model.id) {
|
if (this.model.id) {
|
||||||
submitFunc = editDomesticSystemTree
|
submitFunc = editDomesticSystemTree
|
||||||
|
|||||||
@@ -23,32 +23,40 @@
|
|||||||
<a-form-model ref="form" :model="model" :rules="validatorRules">
|
<a-form-model ref="form" :model="model" :rules="validatorRules">
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.userAccount')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="username">
|
<a-form-model-item :label="$t('user.userAccount')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="username">
|
||||||
<a-input :placeholder="$t('pleaseEnter') + $t('user.userAccount')" :maxLength="50" v-model="model.username" :readOnly="!!model.id" :disabled="disableSubmit"/>
|
<a-input :placeholder="$t('pleaseEnter') + $t('user.userAccount')"
|
||||||
|
:maxLength="50"
|
||||||
|
v-model="model.username"
|
||||||
|
:readOnly="!!model.id"
|
||||||
|
:disabled="disableSubmit" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<template v-if="!model.id">
|
<template v-if="!model.id">
|
||||||
<a-form-model-item :label="$t('user.loginPassword')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="password" >
|
<a-form-model-item :label="$t('user.loginPassword')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="password">
|
||||||
<a-input-password type="password" :placeholder="$t('pleaseEnter') + $t('user.loginPassword')" :maxLength="20" v-model="model.password" />
|
<a-input-password type="password" :placeholder="$t('pleaseEnter') + $t('user.loginPassword')" :maxLength="20" v-model="model.password" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.confirmPassword')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmpassword" >
|
<a-form-model-item :label="$t('user.confirmPassword')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmpassword">
|
||||||
<a-input-password type="password" @blur="handleConfirmBlur" :maxLength="20" :placeholder="$t('user.reenterLoginPassword')" v-model="model.confirmpassword"/>
|
<a-input-password type="password"
|
||||||
|
@blur="handleConfirmBlur"
|
||||||
|
:maxLength="20"
|
||||||
|
:placeholder="$t('user.reenterLoginPassword')"
|
||||||
|
v-model="model.confirmpassword" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.userName')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="realname">
|
<a-form-model-item :label="$t('user.userName')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="realname">
|
||||||
<a-input :placeholder="$t('pleaseEnter') + $t('user.userName')" v-model="model.realname" :maxLength="50" :disabled="disableSubmit"/>
|
<a-input :placeholder="$t('pleaseEnter') + $t('user.userName')" v-model="model.realname" :maxLength="50" :disabled="disableSubmit" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<!--<a-form-model-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
<a-form-model-item label="工号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<!--<a-input placeholder="请输入工号" v-decorator.trim="[ 'workNo', validatorRules.workNo]" />-->
|
<a-input placeholder="请输入工号" v-model="model.workNo" />
|
||||||
<!--</a-form-model-item>-->
|
</a-form-model-item>
|
||||||
|
|
||||||
<!--<a-form-model-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
<!--<a-form-model-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||||
<!--<j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>-->
|
<!--<j-select-position placeholder="请选择职务" :multiple="false" v-decorator="['post', {}]"/>-->
|
||||||
<!--</a-form-model-item>-->
|
<!--</a-form-model-item>-->
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.roleAssignment')" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled" >
|
<a-form-model-item :label="$t('user.roleAssignment')" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">
|
||||||
<j-multi-select-tag
|
<j-multi-select-tag
|
||||||
:disabled="disableSubmit"
|
:disabled="disableSubmit"
|
||||||
v-model="model.selectedroles"
|
v-model="model.selectedroles"
|
||||||
@@ -65,7 +73,8 @@
|
|||||||
:multi="true"
|
:multi="true"
|
||||||
@back="backDepartInfo"
|
@back="backDepartInfo"
|
||||||
:backDepart="true"
|
:backDepart="true"
|
||||||
:treeOpera="true">></j-select-depart>
|
:treeOpera="true">>
|
||||||
|
</j-select-depart>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<!--租户分配
|
<!--租户分配
|
||||||
@@ -79,13 +88,13 @@
|
|||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.identity')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-model-item :label="$t('user.identity')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-radio-group v-model="model.userIdentity" @change="identityChange" :disabled="disableSubmit">
|
<a-radio-group v-model="model.userIdentity" @change="identityChange" :disabled="disableSubmit">
|
||||||
<a-radio :value="1">{{ $t('user.ordinaryUsers') }}</a-radio>
|
<a-radio :value="1">{{ $t('user.ordinaryUsers') }}</a-radio>
|
||||||
<a-radio :value="2">{{ $t('user.superior') }}</a-radio>
|
<a-radio :value="2">{{ $t('user.superior') }}</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item :label="$t('user.responsibleDepartment')" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow===true">
|
<a-form-model-item :label="$t('user.responsibleDepartment')" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow===true">
|
||||||
<j-multi-select-tag
|
<j-multi-select-tag
|
||||||
:disabled="disableSubmit"
|
:disabled="disableSubmit"
|
||||||
v-model="model.departIds"
|
v-model="model.departIds"
|
||||||
@@ -94,7 +103,7 @@
|
|||||||
</j-multi-select-tag>
|
</j-multi-select-tag>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
|
<!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
|
||||||
<a-form-model-item :label="$t('user.heads')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-model-item :label="$t('user.heads')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<j-image-upload class="avatar-uploader"
|
<j-image-upload class="avatar-uploader"
|
||||||
:text="$t('upload')"
|
:text="$t('upload')"
|
||||||
v-model="model.avatar"
|
v-model="model.avatar"
|
||||||
@@ -104,28 +113,33 @@
|
|||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.gender')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-model-item :label="$t('user.gender')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-select v-model="model.sex" :placeholder="$t('pleaseSelect') + $t('user.gender')" :getPopupContainer= "(target) => target.parentNode" :disabled="disableSubmit">
|
<a-select v-model="model.sex"
|
||||||
|
:placeholder="$t('pleaseSelect') + $t('user.gender')"
|
||||||
|
:getPopupContainer="(target) => target.parentNode"
|
||||||
|
:disabled="disableSubmit">
|
||||||
<a-select-option :value="1">{{ $t('user.male') }}</a-select-option>
|
<a-select-option :value="1">{{ $t('user.male') }}</a-select-option>
|
||||||
<a-select-option :value="2">{{ $t('user.female') }}</a-select-option>
|
<a-select-option :value="2">{{ $t('user.female') }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<a-form-model-item :label="$t('user.mailbox')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="email">
|
<a-form-model-item :label="$t('user.mailbox')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="email">
|
||||||
<a-input :placeholder="$t('pleaseEnter') + $t('user.mailbox')" v-model="model.email" :maxLength="50" :disabled="disableSubmit"/>
|
<a-input :placeholder="$t('pleaseEnter') + $t('user.mailbox')" v-model="model.email" :maxLength="50" :disabled="disableSubmit" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<a-form-model-item :label="$t('phoneNumber')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone">
|
<a-form-model-item :label="$t('phoneNumber')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone">
|
||||||
<a-input :placeholder="$t('pleaseEnter') + $t('phoneNumber')" :disabled="isDisabledAuth('user:form:phone') || disableSubmit" v-model="model.phone" />
|
<a-input :placeholder="$t('pleaseEnter') + $t('phoneNumber')"
|
||||||
|
:disabled="isDisabledAuth('user:form:phone') || disableSubmit"
|
||||||
|
v-model="model.phone" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
|
||||||
<!-- <a-form-model-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
<!-- <a-form-model-item label="工作流引擎" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||||
<!-- <j-dict-select-tag v-model="model.activitiSync" placeholder="请选择是否同步工作流引擎" :type="'radio'" dictCode="activiti_sync"/>-->
|
<!-- <j-dict-select-tag v-model="model.activitiSync" placeholder="请选择是否同步工作流引擎" :type="'radio'" dictCode="activiti_sync"/>-->
|
||||||
<!-- </a-form-model-item>-->
|
<!-- </a-form-model-item>-->
|
||||||
|
|
||||||
</a-form-model>
|
</a-form-model>
|
||||||
</a-spin>
|
</a-spin>
|
||||||
|
|
||||||
<div class="drawer-bootom-button" v-show="!disableSubmit">
|
<div class="drawer-bootom-button" v-show="!disableSubmit">
|
||||||
<a-popconfirm :title="$t('areYouWantDiscardEditing')" @confirm="handleCancel" :okText="$t('determine')" :cancelText="$t('cancel')">
|
<a-popconfirm :title="$t('areYouWantDiscardEditing')" @confirm="handleCancel" :okText="$t('determine')" :cancelText="$t('cancel')">
|
||||||
<a-button style="margin-right: .8rem">{{ $t('cancel') }}</a-button>
|
<a-button style="margin-right: .8rem">{{ $t('cancel') }}</a-button>
|
||||||
</a-popconfirm>
|
</a-popconfirm>
|
||||||
@@ -166,7 +180,11 @@ export default {
|
|||||||
validatorRules: {
|
validatorRules: {
|
||||||
username: [{ required: true, message: this.$t('pleaseEnter') + this.$t('user.userAccount') },
|
username: [{ required: true, message: this.$t('pleaseEnter') + this.$t('user.userAccount') },
|
||||||
{ validator: this.validateUsername }],
|
{ validator: this.validateUsername }],
|
||||||
password: [{ required: true, pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, message: this.$t('user.passwordConsists') },
|
password: [{
|
||||||
|
required: true,
|
||||||
|
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
|
||||||
|
message: this.$t('user.passwordConsists')
|
||||||
|
},
|
||||||
{ validator: this.validateToNextPassword, trigger: 'change' }],
|
{ validator: this.validateToNextPassword, trigger: 'change' }],
|
||||||
confirmpassword: [{ required: true, message: this.$t('user.reenterLoginPassword') },
|
confirmpassword: [{ required: true, message: this.$t('user.reenterLoginPassword') },
|
||||||
{ validator: this.compareToFirstPassword }],
|
{ validator: this.compareToFirstPassword }],
|
||||||
@@ -502,34 +520,35 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.avatar-uploader > .ant-upload {
|
.avatar-uploader > .ant-upload {
|
||||||
width:104px;
|
width: 104px;
|
||||||
height:104px;
|
height: 104px;
|
||||||
}
|
}
|
||||||
.ant-upload-select-picture-card i {
|
|
||||||
font-size: 49px;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-upload-select-picture-card .ant-upload-text {
|
.ant-upload-select-picture-card i {
|
||||||
margin-top: 8px;
|
font-size: 49px;
|
||||||
color: #666;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-tbody .ant-table-row td{
|
.ant-upload-select-picture-card .ant-upload-text {
|
||||||
padding-top:10px;
|
margin-top: 8px;
|
||||||
padding-bottom:10px;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drawer-bootom-button {
|
.ant-table-tbody .ant-table-row td {
|
||||||
position: absolute;
|
padding-top: 10px;
|
||||||
bottom: -8px;
|
padding-bottom: 10px;
|
||||||
width: 100%;
|
}
|
||||||
border-top: 1px solid #e8e8e8;
|
|
||||||
padding: 10px 16px;
|
.drawer-bootom-button {
|
||||||
text-align: right;
|
position: absolute;
|
||||||
left: 0;
|
bottom: -8px;
|
||||||
background: #fff;
|
width: 100%;
|
||||||
border-radius: 0 0 2px 2px;
|
border-top: 1px solid #e8e8e8;
|
||||||
}
|
padding: 10px 16px;
|
||||||
|
text-align: right;
|
||||||
|
left: 0;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 0 0 2px 2px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user