Merge remote-tracking branch 'origin/branch20211008'
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
window._CONFIG = {};
|
window._CONFIG = {};
|
||||||
window._CONFIG["domianURL"] = "/jero-boot"; // 路由转发 devServer
|
window._CONFIG["domianURL"] = "/jero-boot"; // 路由转发 devServer
|
||||||
window._CONFIG["domianWebSocketURL"] = "http://localhost:21824/jero-boot";
|
window._CONFIG["domianWebSocketURL"] = "http://localhost:8080/jero-boot";
|
||||||
// 单点登录地址
|
// 单点登录地址
|
||||||
window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/download";
|
window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/download";
|
||||||
window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe";
|
window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe";
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ const queryDepartTreeList = (params)=>getAction('/sys/sysDepart/queryTreeList',p
|
|||||||
const queryIdTree = (params)=>getAction('/sys/sysDepart/queryIdTree',params)
|
const queryIdTree = (params)=>getAction('/sys/sysDepart/queryIdTree',params)
|
||||||
const queryParentName = (params)=>getAction('/sys/sysDepart/queryParentName',params)
|
const queryParentName = (params)=>getAction('/sys/sysDepart/queryParentName',params)
|
||||||
const searchByKeywords = (params)=>getAction('/sys/sysDepart/searchBy',params)
|
const searchByKeywords = (params)=>getAction('/sys/sysDepart/searchBy',params)
|
||||||
const deleteByDepartId = (params)=>deleteAction('/sys/sysDepart/delete',params)
|
const deleteByDepartId = (params)=>getAction('/sys/sysDepart/delete',params)
|
||||||
|
|
||||||
//二级部门管理
|
//二级部门管理
|
||||||
const queryDepartPermission = (params)=>getAction('/sys/permission/queryDepartPermission',params)
|
const queryDepartPermission = (params)=>getAction('/sys/permission/queryDepartPermission',params)
|
||||||
|
|||||||
@@ -74,6 +74,8 @@ const homePageDataStatistics = (param) => getAction('/home/dataStatistics', para
|
|||||||
const sysReminders = (param) => postAction('/reminders/edit', param)
|
const sysReminders = (param) => postAction('/reminders/edit', param)
|
||||||
// 检测企业审核是否通过
|
// 检测企业审核是否通过
|
||||||
const checkCompanyAduit = (param) => getAction('/payMailContract/payMailContract/check', param)
|
const checkCompanyAduit = (param) => getAction('/payMailContract/payMailContract/check', param)
|
||||||
|
// 获取全部部门
|
||||||
|
const getAllDepartTreeList = (param) => getAction('/sys/sysDepart/queryTreeAllList', param)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
getWorkingGroupById,
|
getWorkingGroupById,
|
||||||
@@ -112,5 +114,6 @@ export {
|
|||||||
homePageStatistics,
|
homePageStatistics,
|
||||||
homePageDataStatistics,
|
homePageDataStatistics,
|
||||||
sysReminders,
|
sysReminders,
|
||||||
checkCompanyAduit
|
checkCompanyAduit,
|
||||||
|
getAllDepartTreeList
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,43 +10,59 @@
|
|||||||
<section class="base-info">
|
<section class="base-info">
|
||||||
<h3 class="title">基本信息</h3>
|
<h3 class="title">基本信息</h3>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>项目负责人:</label>
|
<label>项目负责人:</label>
|
||||||
<span><j-ellipsis :value="basicInfo.principalName" :length="20"></j-ellipsis></span>
|
<span><j-ellipsis :value="basicInfo.principalName" :length="20"></j-ellipsis></span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>应收金额:</label>
|
<label>应收金额:</label>
|
||||||
<span><j-ellipsis :value="basicInfo.receivableAmount" :length="20"></j-ellipsis></span>
|
<span><j-ellipsis :value="basicInfo.receivableAmount" :length="20"></j-ellipsis></span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col class="detail-item">
|
||||||
<label>备注:</label>
|
<label>备注:</label>
|
||||||
<span><j-ellipsis :value="basicInfo.remarks" :length="20"></j-ellipsis></span>
|
<span><j-ellipsis :value="basicInfo.remarks" :length="20"></j-ellipsis></span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<a-row :gutter="24" v-if="basicInfo.files">
|
||||||
|
<a-col>
|
||||||
|
<label>资料:</label>
|
||||||
|
<span><preview-file :file-id="basicInfo.files"></preview-file></span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
<!-- 来款方式为合同的显示-->
|
<!-- 来款方式为合同的显示-->
|
||||||
<a-row :gutter="24" v-if="!!basicInfo.contractNum">
|
<a-row :gutter="24" v-if="!!basicInfo.contractNum">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>{{createIncomeType(basicInfo.projectType)}}:</label>
|
<label>{{ createIncomeType(basicInfo.projectType) }}:</label>
|
||||||
<span>{{ basicInfo.chargeWay_dictText }}</span>
|
<span>{{ basicInfo.chargeWay_dictText }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>合同编号:</label>
|
<label>合同编号:</label>
|
||||||
<span class="contract-num" @click="toContractDetail">{{ basicInfo.contractNum }}</span>
|
<span class="contract-num" @click="toContractDetail">{{ basicInfo.contractNum }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<a-row :gutter="24" v-if="basicInfo.chargeWay === 3">
|
||||||
|
<a-col :span="12" class="detail-item">
|
||||||
|
<label>收费通知号:</label>
|
||||||
|
<span><j-ellipsis :value="basicInfo.chargeNoticeNo" :length="20"></j-ellipsis></span>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="12" class="detail-item">
|
||||||
|
<label>收费通知:</label>
|
||||||
|
<span><preview-file :file-id="basicInfo.chargeNoticeId"></preview-file></span>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
</section>
|
</section>
|
||||||
<!-- 基本信息end-->
|
<!-- 基本信息end-->
|
||||||
<!-- 企业信息begin-->
|
<!-- 企业信息begin-->
|
||||||
<section class="enterprise-info">
|
<section class="enterprise-info">
|
||||||
<h3 class="title">企业信息</h3>
|
<h3 class="title">企业信息</h3>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>来款企业:</label>
|
<label>来款企业:</label>
|
||||||
<span><j-ellipsis :value="basicInfo.companyName" :length="20"></j-ellipsis></span>
|
<span><j-ellipsis :value="basicInfo.companyName" :length="20"></j-ellipsis></span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业联系人:</label>
|
<label>企业联系人:</label>
|
||||||
<span>{{ basicInfo.name }}</span>
|
<span>{{ basicInfo.name }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -56,47 +72,47 @@
|
|||||||
<label>企业联系人性别:</label>
|
<label>企业联系人性别:</label>
|
||||||
<span>{{ basicInfo.gender_dictText }}</span>
|
<span>{{ basicInfo.gender_dictText }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业联系人职务:</label>
|
<label>企业联系人职务:</label>
|
||||||
<span>{{ basicInfo.post }}</span>
|
<span>{{ basicInfo.post }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业联系人电话:</label>
|
<label>企业联系人电话:</label>
|
||||||
<span>{{ basicInfo.phone }}</span>
|
<span>{{ basicInfo.phone }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业联系人邮箱:</label>
|
<label>企业联系人邮箱:</label>
|
||||||
<span>{{ basicInfo.email }}</span>
|
<span>{{ basicInfo.email }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业联系人邮编:</label>
|
<label>企业联系人邮编:</label>
|
||||||
<span>{{ basicInfo.postalCodeContacts }}</span>
|
<span>{{ basicInfo.postalCodeContacts }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业联系人地址:</label>
|
<label>企业联系人地址:</label>
|
||||||
<span><j-ellipsis :value="basicInfo.contactAddress" :length="20"></j-ellipsis></span>
|
<span><j-ellipsis :value="basicInfo.contactAddress" :length="20"></j-ellipsis></span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>是否需要发票:</label>
|
<label>是否需要发票:</label>
|
||||||
<span>{{ basicInfo.needInvoice_dictText }}</span>
|
<span>{{ basicInfo.needInvoice_dictText }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>是否打包:</label>
|
<label>是否打包:</label>
|
||||||
<span>{{ basicInfo.pack_dictText }}</span>
|
<span>{{ basicInfo.pack_dictText }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业邮编:</label>
|
<label>企业邮编:</label>
|
||||||
<span>{{ basicInfo.postalCodeCompany }}</span>
|
<span>{{ basicInfo.postalCodeCompany }}</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12" class="detail-item">
|
||||||
<label>企业地址:</label>
|
<label>企业地址:</label>
|
||||||
<span><j-ellipsis :value="basicInfo.companyAddress" :length="20"></j-ellipsis></span>
|
<span><j-ellipsis :value="basicInfo.companyAddress" :length="20"></j-ellipsis></span>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -142,8 +158,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {queryCommonProjectById} from '@api/incomePaymentsApi'
|
import { queryCommonProjectById } from '@api/incomePaymentsApi'
|
||||||
import JEllipsis from '@comp/jero/JEllipsis'
|
import JEllipsis from '@comp/jero/JEllipsis'
|
||||||
|
import PreviewFile from './jero/PreviewFile'
|
||||||
// import {getAction} from "@api/manage";
|
// import {getAction} from "@api/manage";
|
||||||
const paymentInfoList = [
|
const paymentInfoList = [
|
||||||
{
|
{
|
||||||
@@ -160,7 +177,7 @@ const paymentInfoList = [
|
|||||||
id: 1003,
|
id: 1003,
|
||||||
year: '2021',
|
year: '2021',
|
||||||
money: '200'
|
money: '200'
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
const logisticsInfoList = [
|
const logisticsInfoList = [
|
||||||
{
|
{
|
||||||
@@ -180,49 +197,49 @@ const columns = [
|
|||||||
{
|
{
|
||||||
title: '开票人',
|
title: '开票人',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'createBy',
|
dataIndex: 'createBy'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '日期',
|
title: '日期',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'billDate',
|
dataIndex: 'billDate'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '金额(元)',
|
title: '金额(元)',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'invoiceAmount',
|
dataIndex: 'invoiceAmount'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '票号',
|
title: '票号',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'billNo',
|
dataIndex: 'billNo'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '项目',
|
title: '项目',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'chargeCompanyName',
|
dataIndex: 'projectName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '邮寄人',
|
title: '邮寄人',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'contactName',
|
dataIndex: 'contactName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '快递',
|
title: '快递',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'sendMethod',
|
dataIndex: 'sendMethod'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '快递单号',
|
title: '快递单号',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'postNo',
|
dataIndex: 'postNo'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: '',
|
dataIndex: '',
|
||||||
scopedSlots: {customRender: 'action'}
|
scopedSlots: { customRender: 'action' }
|
||||||
},
|
}
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
name: 'ProjectDetailModal',
|
name: 'ProjectDetailModal',
|
||||||
@@ -252,12 +269,13 @@ export default {
|
|||||||
// 到账信息
|
// 到账信息
|
||||||
paymentInfoList,
|
paymentInfoList,
|
||||||
// 开票邮寄信息
|
// 开票邮寄信息
|
||||||
logisticsInfoList,
|
logisticsInfoList
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {},
|
computed: {},
|
||||||
components: {
|
components: {
|
||||||
JEllipsis
|
JEllipsis,
|
||||||
|
PreviewFile
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open(record) {
|
open(record) {
|
||||||
@@ -269,7 +287,7 @@ export default {
|
|||||||
this.currentProjectId = record.id
|
this.currentProjectId = record.id
|
||||||
}
|
}
|
||||||
// 通过id查询项目详情
|
// 通过id查询项目详情
|
||||||
queryCommonProjectById({id: this.currentProjectId}).then(res => {
|
queryCommonProjectById({ id: this.currentProjectId }).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
console.log(res.result, 'res.result')
|
console.log(res.result, 'res.result')
|
||||||
// 项目信息
|
// 项目信息
|
||||||
@@ -301,7 +319,7 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return `${item.person}于${item.time}开票,金额为:${item.money}元,票号:${item.piaoNo},项目:${porjectItem}`
|
return `${ item.person }于${ item.time }开票,金额为:${ item.money }元,票号:${ item.piaoNo },项目:${ porjectItem }`
|
||||||
},
|
},
|
||||||
/*
|
/*
|
||||||
* 查看物流
|
* 查看物流
|
||||||
@@ -313,13 +331,13 @@ export default {
|
|||||||
* 去合同详情 传入合同id
|
* 去合同详情 传入合同id
|
||||||
* */
|
* */
|
||||||
toContractDetail() {
|
toContractDetail() {
|
||||||
if(this.basicInfo.contractId){
|
if (this.basicInfo.contractId) {
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path: '/contractManagement/RevenueContractDetail', query: {
|
path: '/contractManagement/RevenueContractDetail', query: {
|
||||||
revenueId: this.basicInfo.contractId
|
revenueId: this.basicInfo.contractId
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}else {
|
} else {
|
||||||
this.$message.warn('该项目未与合同关联')
|
this.$message.warn('该项目未与合同关联')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -328,9 +346,9 @@ export default {
|
|||||||
* */
|
* */
|
||||||
createIncomeType(val) {
|
createIncomeType(val) {
|
||||||
if (val === 1 || val === 2 || val === 4) {
|
if (val === 1 || val === 2 || val === 4) {
|
||||||
return '来款方式'
|
return '来款方式'
|
||||||
}else {
|
} else {
|
||||||
return '缴费方式'
|
return '缴费方式'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -352,6 +370,19 @@ label {
|
|||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.detail-item {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
label {
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
word-break: break-all;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.contract-num {
|
.contract-num {
|
||||||
color: #42b983;
|
color: #42b983;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ export default {
|
|||||||
},
|
},
|
||||||
close() {
|
close() {
|
||||||
this.visible = false
|
this.visible = false
|
||||||
|
this.selectedCompany = {}
|
||||||
},
|
},
|
||||||
onSelectChange(selectedRowKeys, selectionRows) {
|
onSelectChange(selectedRowKeys, selectionRows) {
|
||||||
this.selectedCompany = selectionRows[0]
|
this.selectedCompany = selectionRows[0]
|
||||||
|
|||||||
@@ -91,7 +91,6 @@ export default {
|
|||||||
*/
|
*/
|
||||||
addCompanyOk(value) {
|
addCompanyOk(value) {
|
||||||
let { id, companyName } = value
|
let { id, companyName } = value
|
||||||
console.log({ id, companyName })
|
|
||||||
this.$emit('change', { id, companyName })
|
this.$emit('change', { id, companyName })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ export default {
|
|||||||
* 新建联系人
|
* 新建联系人
|
||||||
*/
|
*/
|
||||||
addContacts() {
|
addContacts() {
|
||||||
if (this.selectedCompany && Object.keys(this.selectedCompany).length > 0) {
|
if (this.selectedCompany && Object.keys(this.selectedCompany).length > 0 && this.selectedCompany.id) {
|
||||||
// 传入是否调用无权限接口的参数 去判断
|
// 传入是否调用无权限接口的参数 去判断
|
||||||
this.$refs.contactForm.add(this.isLimit)
|
this.$refs.contactForm.add(this.isLimit)
|
||||||
this.$refs.contactForm.title = '新增'
|
this.$refs.contactForm.title = '新增'
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<!-- 父组件的文件id如果是异步获取的 需要加上v-if判断-->
|
<!-- 父组件的文件id如果是异步获取的 需要加上v-if判断-->
|
||||||
<div style="display: inline-block">
|
<div style="display: inline-block">
|
||||||
<span v-for="(item) of fileList" :key="item.id">{{ item.name +' ' }}
|
<div v-for="(item) of fileList" :key="item.id">{{ item.name +' ' }}
|
||||||
<span class="m-l-4 color-blue" @click="handleDownLoad(item)">下载</span> <span class="m-l-4 color-blue" @click="handlePreview(item)">查看</span>
|
<span class="m-l-4 color-blue" @click="handleDownLoad(item)">下载</span> <span class="m-l-4 color-blue" @click="handlePreview(item)">查看</span>
|
||||||
</span>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,8 @@
|
|||||||
<script>
|
<script>
|
||||||
|
|
||||||
import { putAction } from '@/api/manage'
|
import { putAction } from '@/api/manage'
|
||||||
|
import { getRSAPublicKey } from '@api/login'
|
||||||
|
import { JSEncrypt } from 'jsencrypt'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'UserPassword',
|
name: 'UserPassword',
|
||||||
@@ -72,21 +74,24 @@ export default {
|
|||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: '请输入新密码!' },
|
{ required: true, message: '请输入新密码!' },
|
||||||
{
|
{
|
||||||
pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
|
//原正则,3种组合时不会提示 /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/
|
||||||
message: '密码由8位数字、大小写字母和特殊符号组成!'
|
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
|
||||||
|
message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
|
||||||
},
|
},
|
||||||
{ validator: this.validateToNextPassword }
|
{ validator: this.validateToNextPassword }
|
||||||
]
|
],
|
||||||
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
confirmpassword: {
|
confirmpassword: {
|
||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: '请确认新密码!' },
|
{ required: true, message: '请确认新密码!' },
|
||||||
{
|
{
|
||||||
pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
|
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
|
||||||
message: '密码由8位数字、大小写字母和特殊符号组成!'
|
message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
|
||||||
},
|
},
|
||||||
{ validator: this.validateToNextPassword }
|
{ validator: this.handlePasswordCheck }
|
||||||
]
|
],
|
||||||
|
validateTrigger: 'blur'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
confirmDirty: false,
|
confirmDirty: false,
|
||||||
@@ -101,7 +106,8 @@ export default {
|
|||||||
|
|
||||||
form: this.$form.createForm(this),
|
form: this.$form.createForm(this),
|
||||||
url: 'sys/user/updatePassword',
|
url: 'sys/user/updatePassword',
|
||||||
username: ''
|
username: '',
|
||||||
|
rsaPublicKey: '' // 公钥
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -111,10 +117,16 @@ export default {
|
|||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
this.username = uname
|
this.username = uname
|
||||||
|
this.getPublicKey()
|
||||||
this.form.resetFields()
|
this.form.resetFields()
|
||||||
this.visible = true
|
this.visible = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getPublicKey() {
|
||||||
|
getRSAPublicKey().then(res => {
|
||||||
|
this.rsaPublicKey = res.result
|
||||||
|
})
|
||||||
|
},
|
||||||
handleCancel() {
|
handleCancel() {
|
||||||
this.close()
|
this.close()
|
||||||
},
|
},
|
||||||
@@ -130,7 +142,14 @@ export default {
|
|||||||
this.form.validateFields((err, values) => {
|
this.form.validateFields((err, values) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
that.confirmLoading = true
|
that.confirmLoading = true
|
||||||
let params = Object.assign({ username: this.username }, values)
|
let params = {}
|
||||||
|
params.username = this.username
|
||||||
|
params.rsaPublicKey = this.rsaPublicKey
|
||||||
|
let encrypt = new JSEncrypt()
|
||||||
|
encrypt.setPublicKey(params.rsaPublicKey)
|
||||||
|
params.oldpassword = encrypt.encrypt(values.oldpassword)
|
||||||
|
params.password = encrypt.encrypt(values.password)
|
||||||
|
params.confirmpassword = encrypt.encrypt(values.confirmpassword)
|
||||||
console.log('修改密码提交数据', params)
|
console.log('修改密码提交数据', params)
|
||||||
putAction(this.url, params).then((res) => {
|
putAction(this.url, params).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
@@ -153,6 +172,13 @@ export default {
|
|||||||
}
|
}
|
||||||
callback()
|
callback()
|
||||||
},
|
},
|
||||||
|
handlePasswordCheck(rule, value, callback) {
|
||||||
|
let password = this.form.getFieldValue('password')
|
||||||
|
if (value && password && value.trim() !== password.trim()) {
|
||||||
|
callback(new Error('两次密码不一致'))
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
},
|
||||||
compareToFirstPassword(rule, value, callback) {
|
compareToFirstPassword(rule, value, callback) {
|
||||||
const form = this.form
|
const form = this.form
|
||||||
if (value && value !== form.getFieldValue('password')) {
|
if (value && value !== form.getFieldValue('password')) {
|
||||||
|
|||||||
@@ -322,7 +322,7 @@ export const JeroListMixin = {
|
|||||||
}
|
}
|
||||||
this.loadData()
|
this.loadData()
|
||||||
} else {
|
} else {
|
||||||
const messageArr = info.file.response.message.split('</br>')
|
const messageArr = info.file.response.message.split('<br/>')
|
||||||
let htmlDom = []
|
let htmlDom = []
|
||||||
messageArr.map(tt => {
|
messageArr.map(tt => {
|
||||||
if (tt) {
|
if (tt) {
|
||||||
|
|||||||
@@ -9,10 +9,12 @@ export function isEmail(s) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 电话号码 座机
|
* 电话号码 座机
|
||||||
|
* 原正则:/^([0-9]{3,4}-)[0-9]{7,8}$/
|
||||||
|
* 现正则:15位数字、横杠
|
||||||
* @param {*} s
|
* @param {*} s
|
||||||
*/
|
*/
|
||||||
export function isPhone(s) {
|
export function isPhone(s) {
|
||||||
return /^([0-9]{3,4}-)[0-9]{7,8}$/.test(s)
|
return /^([0-9-]{0,15})$/.test(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import {phoneReg, isEmail, chineseReg} from '@/utils/validate'
|
|||||||
|
|
||||||
// 手机校验的错误信息提示
|
// 手机校验的错误信息提示
|
||||||
const phoneErrMsg = {
|
const phoneErrMsg = {
|
||||||
err1: '请输入手机号',
|
err1: '请输入手机号码',
|
||||||
err2: '请输入正确格式的手机号'
|
err2: '请输入正确格式的手机号码'
|
||||||
}
|
}
|
||||||
// 邮箱校验错误提示信息
|
// 邮箱校验错误提示信息
|
||||||
const emailErrMsg = {
|
const emailErrMsg = {
|
||||||
@@ -13,7 +13,7 @@ const emailErrMsg = {
|
|||||||
}
|
}
|
||||||
// 用户名校验信息提示
|
// 用户名校验信息提示
|
||||||
const usernameErrMsg = {
|
const usernameErrMsg = {
|
||||||
err1: '请输入用户名'
|
err1: '请输入用户账号'
|
||||||
}
|
}
|
||||||
// 角色编码校验信息提示
|
// 角色编码校验信息提示
|
||||||
const roleCodeErrMsg = {
|
const roleCodeErrMsg = {
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
<a-input placeholder="请输入公司电话"
|
<a-input placeholder="请输入公司电话"
|
||||||
v-decorator="['companyPhone', validatorRules.companyPhone]"
|
v-decorator="['companyPhone', validatorRules.companyPhone]"
|
||||||
:maxLength='15'
|
:maxLength='15'
|
||||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
@change="e => e.target.value = (e.target.value.replace(/[^0-9-]/g, '')).trim()"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|||||||
@@ -199,9 +199,9 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
add(limit) {
|
add(limit) {
|
||||||
// true 是调用无权限接口
|
// true 是调用无权限接口
|
||||||
if(limit){
|
if (limit) {
|
||||||
this.url.add = '/company/payContactsManagement/addMeeting'
|
this.url.add = '/company/payContactsManagement/addMeeting'
|
||||||
}else {
|
} else {
|
||||||
this.url.add = '/company/payContactsManagement/add'
|
this.url.add = '/company/payContactsManagement/add'
|
||||||
}
|
}
|
||||||
this.edit({})
|
this.edit({})
|
||||||
@@ -305,33 +305,39 @@ export default {
|
|||||||
* @param callback
|
* @param callback
|
||||||
*/
|
*/
|
||||||
checkName(rules, value, callback) {
|
checkName(rules, value, callback) {
|
||||||
if (value) {
|
let company = this.form.getFieldValue('company')
|
||||||
// 是否编辑
|
if (!value) {
|
||||||
if (this.model.id) {
|
callback('请输入姓名')
|
||||||
// 编辑前后姓名是否一致,一致则不进行验重
|
|
||||||
if (value === this.model.name) {
|
|
||||||
callback()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.selectedCompanyId = this.model.company.id
|
|
||||||
}
|
|
||||||
if (this.isCompanyDisabled) {
|
|
||||||
this.selectedCompanyId = this.selectedCompany.id
|
|
||||||
}
|
|
||||||
let param = {
|
|
||||||
companyId: this.selectedCompanyId,
|
|
||||||
name: value
|
|
||||||
}
|
|
||||||
queryContactByName(param).then(res => {
|
|
||||||
if (res.success) {
|
|
||||||
callback()
|
|
||||||
} else {
|
|
||||||
callback(res.message)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
callback('请输入姓名')
|
if (!company.id) {
|
||||||
|
callback('请先选择企业再输入姓名')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 是否编辑
|
||||||
|
if (this.model.id) {
|
||||||
|
// 编辑前后姓名是否一致,一致则不进行验重
|
||||||
|
if (value === this.model.name) {
|
||||||
|
callback()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.selectedCompanyId = this.model.company.id
|
||||||
|
}
|
||||||
|
if (this.isCompanyDisabled) {
|
||||||
|
this.selectedCompanyId = this.selectedCompany.id
|
||||||
|
}
|
||||||
|
let param = {
|
||||||
|
companyId: this.selectedCompanyId,
|
||||||
|
name: value
|
||||||
|
}
|
||||||
|
queryContactByName(param).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
callback()
|
||||||
|
} else {
|
||||||
|
callback(res.message)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 手机号校验
|
* 手机号校验
|
||||||
@@ -340,31 +346,34 @@ export default {
|
|||||||
* @param callback
|
* @param callback
|
||||||
*/
|
*/
|
||||||
checkPhone(rules, value, callback) {
|
checkPhone(rules, value, callback) {
|
||||||
if (phoneReg(value)) {
|
if (value) {
|
||||||
// 是否编辑
|
if (phoneReg(value)) {
|
||||||
if (this.model.id) {
|
// 是否编辑
|
||||||
// 编辑前后手机号是否一致,一致则不进行验重
|
if (this.model.id) {
|
||||||
if (value === this.model.phone) {
|
// 编辑前后手机号是否一致,一致则不进行验重
|
||||||
callback()
|
if (value === this.model.phone) {
|
||||||
return
|
callback()
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
const param = {
|
||||||
const param = {
|
confusionCode: 'pay_contacts_management_phone',
|
||||||
confusionCode: 'pay_contacts_management_phone',
|
fieldVal: value,
|
||||||
fieldVal: value,
|
encrypt: 1
|
||||||
encrypt: 1
|
|
||||||
}
|
|
||||||
// 唯一性校验
|
|
||||||
duplicateCheck(param).then(res => {
|
|
||||||
if (res.success) {
|
|
||||||
callback()
|
|
||||||
} else {
|
|
||||||
callback('手机号已存在')
|
|
||||||
}
|
}
|
||||||
})
|
// 唯一性校验
|
||||||
return
|
duplicateCheck(param).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
callback()
|
||||||
|
} else {
|
||||||
|
callback('手机号已存在')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback('请输入正确的手机号')
|
||||||
}
|
}
|
||||||
callback('请输入正确手机号')
|
callback('请输入手机号')
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 邮箱校验
|
* 邮箱校验
|
||||||
@@ -373,11 +382,14 @@ export default {
|
|||||||
* @param callback
|
* @param callback
|
||||||
*/
|
*/
|
||||||
checkMail(rules, value, callback) {
|
checkMail(rules, value, callback) {
|
||||||
if (isEmail(value)) {
|
if (value) {
|
||||||
callback()
|
if (isEmail(value)) {
|
||||||
} else {
|
callback()
|
||||||
callback('请输入正确邮箱')
|
} else {
|
||||||
|
callback('请输入正确的邮箱')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
callback('请输入邮箱')
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 邮政编码校验
|
* 邮政编码校验
|
||||||
@@ -386,11 +398,14 @@ export default {
|
|||||||
* @param callback
|
* @param callback
|
||||||
*/
|
*/
|
||||||
checkPostcode(rules, value, callback) {
|
checkPostcode(rules, value, callback) {
|
||||||
if (postcode(value)) {
|
if (value) {
|
||||||
callback()
|
if (postcode(value)) {
|
||||||
} else {
|
callback()
|
||||||
callback('请输入正确格式的邮编')
|
} else {
|
||||||
|
callback('请输入正确格式的邮政编码')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
callback('请输入邮政编码')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
:visible="visible"
|
:visible="visible"
|
||||||
:confirmLoading="confirmLoading"
|
:confirmLoading="confirmLoading"
|
||||||
switchFullscreen
|
switchFullscreen
|
||||||
|
@ok="handleOk"
|
||||||
|
@cancel="handleCancel"
|
||||||
cancelText="关闭">
|
cancelText="关闭">
|
||||||
<a-spin :spinning="confirmLoading">
|
<a-spin :spinning="confirmLoading">
|
||||||
<a-form :form="form">
|
<a-form :form="form">
|
||||||
@@ -79,6 +81,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleOk() {
|
handleOk() {
|
||||||
|
console.log(this.confirmLoading)
|
||||||
// 触发表单验证
|
// 触发表单验证
|
||||||
if (this.confirmLoading) {
|
if (this.confirmLoading) {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -794,13 +794,14 @@ export default {
|
|||||||
this.$refs.selectProjectModule.departChange(this.departId)
|
this.$refs.selectProjectModule.departChange(this.departId)
|
||||||
// 打开弹窗
|
// 打开弹窗
|
||||||
this.$refs.selectProjectModule.open()
|
this.$refs.selectProjectModule.open()
|
||||||
|
}).catch((err) => {
|
||||||
|
this.$message.warn(err)
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
// 工作组项目
|
// 工作组项目
|
||||||
case 2:
|
case 2:
|
||||||
this.$refs.selectWorkingGroupProjectModule.filters = {
|
this.$refs.selectWorkingGroupProjectModule.filters = {
|
||||||
companyId: this.selectedCompany.id,
|
companyId: this.selectedCompany.id,
|
||||||
|
|
||||||
contractId: this.contractId
|
contractId: this.contractId
|
||||||
}
|
}
|
||||||
this.$refs.selectWorkingGroupProjectModule.open()
|
this.$refs.selectWorkingGroupProjectModule.open()
|
||||||
@@ -829,9 +830,13 @@ export default {
|
|||||||
let param = {
|
let param = {
|
||||||
id: this.model.principalId
|
id: this.model.principalId
|
||||||
}
|
}
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve, reject) => {
|
||||||
queryUserByDepartId(param).then(res => {
|
queryUserByDepartId(param).then(res => {
|
||||||
resolve(res.result[0].departIds)
|
if (res.success) {
|
||||||
|
resolve(res.result[0].departIds)
|
||||||
|
} else {
|
||||||
|
reject(res.message)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ import JYearDate from '../../../../components/jero/JYearDate'
|
|||||||
import GeneralProjectModule from '../../../projectManagement/modules/GeneralProjectModule'
|
import GeneralProjectModule from '../../../projectManagement/modules/GeneralProjectModule'
|
||||||
import StatusSlot from '../../../../components/tools/StatusSlot'
|
import StatusSlot from '../../../../components/tools/StatusSlot'
|
||||||
import { associatedProject, queryUserByDepartId } from '../../../../api/incomePaymentsApi'
|
import { associatedProject, queryUserByDepartId } from '../../../../api/incomePaymentsApi'
|
||||||
import { queryDepartTreeList } from '../../../../api/api'
|
import { getAllDepartTreeList } from '../../../../api/incomePaymentsApi'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SelectProjectModule',
|
name: 'SelectProjectModule',
|
||||||
@@ -262,7 +262,7 @@ export default {
|
|||||||
* 获取科室(部门)数据
|
* 获取科室(部门)数据
|
||||||
*/
|
*/
|
||||||
loadDepartTreeData() {
|
loadDepartTreeData() {
|
||||||
queryDepartTreeList().then((res) => {
|
getAllDepartTreeList().then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.treeDepartData = []
|
this.treeDepartData = []
|
||||||
let treeList = res.result
|
let treeList = res.result
|
||||||
|
|||||||
@@ -109,11 +109,11 @@ export default {
|
|||||||
validatorRules: {
|
validatorRules: {
|
||||||
company: {
|
company: {
|
||||||
rules: [{ required: true, message: '请选择企业' }],
|
rules: [{ required: true, message: '请选择企业' }],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'change'
|
||||||
},
|
},
|
||||||
contacts: {
|
contacts: {
|
||||||
rules: [{ required: true, message: '请选择联系人' }],
|
rules: [{ required: true, message: '请选择联系人' }],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'change'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
|
|||||||
@@ -103,7 +103,8 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
edit: 'payMailContract/payMailContract/edit'
|
edit: 'payMailContract/payMailContract/edit',
|
||||||
|
mail: 'payMailContract/payMailContract/mile'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -145,7 +146,13 @@ export default {
|
|||||||
that.confirmLoading = true
|
that.confirmLoading = true
|
||||||
const formData = Object.assign(this.model, values)
|
const formData = Object.assign(this.model, values)
|
||||||
console.log('表单提交数据', formData)
|
console.log('表单提交数据', formData)
|
||||||
httpAction(this.url.edit, formData, 'post').then((res) => {
|
let url = ''
|
||||||
|
if (this.title === '邮寄') {
|
||||||
|
url = this.url.mail
|
||||||
|
} else {
|
||||||
|
url = this.url.edit
|
||||||
|
}
|
||||||
|
httpAction(url, formData, 'post').then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
that.$message.success(res.message)
|
that.$message.success(res.message)
|
||||||
that.$emit('ok')
|
that.$emit('ok')
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
<div class="table-page-search-wrapper">
|
<div class="table-page-search-wrapper">
|
||||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
|
|
||||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item label="模板CODE">
|
<a-form-item label="模板CODE">
|
||||||
<a-input placeholder="请输入模板CODE" v-model="queryParam.templateCode"></a-input>
|
<a-input placeholder="请输入模板CODE" v-model="queryParam.templateCode"></a-input>
|
||||||
@@ -37,7 +36,7 @@
|
|||||||
|
|
||||||
<!-- 操作按钮区域 -->
|
<!-- 操作按钮区域 -->
|
||||||
<div class="table-operator">
|
<div class="table-operator">
|
||||||
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
|
<!-- <a-button @click="handleAdd" type="primary" icon="plus" v-has="'template:add'">新增</a-button>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- table区域-begin -->
|
<!-- table区域-begin -->
|
||||||
@@ -72,7 +71,7 @@
|
|||||||
|
|
||||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
<a @click="handleEdit(record)" v-has="'template:list'">编辑</a>
|
<a @click="handleEdit(record)" v-has="'template:list'">编辑</a>
|
||||||
<a @click="handleDelete(record.id)">删除</a>
|
<!-- <a @click="handleDelete(record.id)" v-has="'template:delete'">删除</a>-->
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
</a-table>
|
</a-table>
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ export default {
|
|||||||
dataIndex: 'startTime',
|
dataIndex: 'startTime',
|
||||||
width: 160,
|
width: 160,
|
||||||
customRender: (text, record) => (
|
customRender: (text, record) => (
|
||||||
<j-ellipsis value={ record.startTime + record.endTime } length={ 20 }></j-ellipsis>)
|
<j-ellipsis value={ record.startTime + '~' + record.endTime } length={ 20 }></j-ellipsis>)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '召开地点',
|
title: '召开地点',
|
||||||
@@ -244,7 +244,7 @@ export default {
|
|||||||
],
|
],
|
||||||
url: {
|
url: {
|
||||||
list: '/meeting/workGroupMeeting/page',
|
list: '/meeting/workGroupMeeting/page',
|
||||||
delete: '//meeting/workGroupMeeting/delete',
|
delete: '/meeting/workGroupMeeting/delete',
|
||||||
deleteBatch: '/meeting/workGroupMeeting/deleteBatch',
|
deleteBatch: '/meeting/workGroupMeeting/deleteBatch',
|
||||||
exportXlsUrl: '/meeting/workGroupMeeting/exportXls',
|
exportXlsUrl: '/meeting/workGroupMeeting/exportXls',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ export default {
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'startTime',
|
dataIndex: 'startTime',
|
||||||
width: 160,
|
width: 160,
|
||||||
customRender: (text, record) => (<j-ellipsis value={record.startTime + record.endTime} length={20}></j-ellipsis>)
|
customRender: (text, record) => (<j-ellipsis value={record.startTime + '~' + record.endTime} length={20}></j-ellipsis>)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '召开地点',
|
title: '召开地点',
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ name: 'OtherMeeting',
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'startTime',
|
dataIndex: 'startTime',
|
||||||
width: 160,
|
width: 160,
|
||||||
customRender: (text, record) => (<j-ellipsis value={record.startTime + record.endTime} length={20}></j-ellipsis>)
|
customRender: (text, record) => (<j-ellipsis value={record.startTime + '~' + record.endTime} length={20}></j-ellipsis>)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '召开地点',
|
title: '召开地点',
|
||||||
|
|||||||
@@ -92,13 +92,14 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
<span slot="action" class="action-span-cell" slot-scope="text, record">
|
||||||
<template v-if="record.showOperate">
|
<a @click="goFilesMaintenance(record)" v-has="'workingGroupProject:fileMaintenance'">文件维护</a>
|
||||||
<a @click="goFilesMaintenance(record)" v-has="'workingGroupProject:fileMaintenance'">文件维护</a>
|
<a @click="goConferenceMaintenance(record)" v-has="'workingGroupProject:meetingMaintenance'">会议维护</a>
|
||||||
<a @click="goConferenceMaintenance(record)" v-has="'workingGroupProject:meetingMaintenance'">会议维护</a>
|
<a @click="copyWorkGroup(record.id)" v-has="'workingGroupProject:copy'"
|
||||||
<a @click="copyWorkGroup(record.id)" v-has="'workingGroupProject:copy'" v-if="record.canOperate">复制</a>
|
v-if="record.checkoutOperation === 1">复制</a>
|
||||||
<a @click="handleEdit(record)" v-has="'workingGroupProject:edit'" v-if="record.canOperate">编辑</a>
|
<a @click="handleEdit(record)" v-has="'workingGroupProject:edit'"
|
||||||
<a @click="handleDelete(record.id)" v-has="'workingGroupProject:delete'" v-if="record.canOperate">删除</a>
|
v-if="record.checkoutOperation === 1">编辑</a>
|
||||||
</template>
|
<a @click="handleDelete(record.id)" v-has="'workingGroupProject:delete'"
|
||||||
|
v-if="record.checkoutOperation === 1">删除</a>
|
||||||
</span>
|
</span>
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
@@ -173,6 +174,12 @@ export default {
|
|||||||
scopedSlots: { customRender: 'action' }
|
scopedSlots: { customRender: 'action' }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
queryParam: {
|
||||||
|
year: new Date().getFullYear().toString()
|
||||||
|
},
|
||||||
|
lastQueryParam: {
|
||||||
|
year: new Date().getFullYear().toString()
|
||||||
|
},
|
||||||
operateData: [] // 进行操作权限校验时使用的数据
|
operateData: [] // 进行操作权限校验时使用的数据
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -206,36 +213,36 @@ export default {
|
|||||||
}
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
// 判断登录用户是否为负责人B
|
// 判断登录用户是否为负责人B 2021-10-13:修改为后端在列表字段返回checkoutOperation字段控制,1--可操作,2--不可操作
|
||||||
if (this.dataSource.length > 0) {
|
// if (this.dataSource.length > 0) {
|
||||||
for (let index = 0; index < this.dataSource.length; index++) {
|
// for (let index = 0; index < this.dataSource.length; index++) {
|
||||||
this.checkWorkingGroupPrincipal(index).then((res) => {
|
// this.checkWorkingGroupPrincipal(index).then((res) => {
|
||||||
res.showOperate = true
|
// res.showOperate = true
|
||||||
this.$set(this.dataSource, index, res)
|
// this.$set(this.dataSource, index, res)
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 判断登录用户是否为负责人B
|
* 判断登录用户是否为负责人B
|
||||||
*/
|
*/
|
||||||
checkWorkingGroupPrincipal(index) {
|
// checkWorkingGroupPrincipal(index) {
|
||||||
let item = this.dataSource[index]
|
// let item = this.dataSource[index]
|
||||||
// (负责人B不可操作)
|
// // (负责人B不可操作)
|
||||||
return new Promise(resolve => {
|
// return new Promise(resolve => {
|
||||||
checkoutWorkingGroupPrincipal({ id: item.id }).then(res => {
|
// checkoutWorkingGroupPrincipal({ id: item.id }).then(res => {
|
||||||
// 不可操作则置否
|
// // 不可操作则置否
|
||||||
if (res.success) {
|
// if (res.success) {
|
||||||
item.canOperate = true
|
// item.canOperate = true
|
||||||
} else {
|
// } else {
|
||||||
item.canOperate = false
|
// item.canOperate = false
|
||||||
}
|
// }
|
||||||
}).finally(() => {
|
// }).finally(() => {
|
||||||
resolve(item)
|
// resolve(item)
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
},
|
// },
|
||||||
/**
|
/**
|
||||||
* 文件维护
|
* 文件维护
|
||||||
* @param record
|
* @param record
|
||||||
@@ -246,7 +253,7 @@ export default {
|
|||||||
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
|
path: '/projectManagement/WorkingGroupProjectDataMaintenance',
|
||||||
query: {
|
query: {
|
||||||
workingGroupId: record.id,
|
workingGroupId: record.id,
|
||||||
canOperate: record.canOperate
|
canOperate: record.checkoutOperation === 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -260,7 +267,7 @@ export default {
|
|||||||
query: {
|
query: {
|
||||||
workingGroupProject: record.workingGroupProject,
|
workingGroupProject: record.workingGroupProject,
|
||||||
workingGroupProjectId: record.id,
|
workingGroupProjectId: record.id,
|
||||||
canOperate: record.canOperate
|
canOperate: record.checkoutOperation === 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -289,9 +296,18 @@ export default {
|
|||||||
query: {
|
query: {
|
||||||
workingGroupProject: record.workingGroupProject,
|
workingGroupProject: record.workingGroupProject,
|
||||||
workingGroupProjectId: record.id,
|
workingGroupProjectId: record.id,
|
||||||
canOperate: record.canOperate
|
canOperate: record.checkoutOperation === 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
searchReset() {
|
||||||
|
this.lastQueryParam = {
|
||||||
|
year: new Date().getFullYear().toString()
|
||||||
|
}
|
||||||
|
this.queryParam = {
|
||||||
|
year: new Date().getFullYear().toString()
|
||||||
|
}
|
||||||
|
this.loadData(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<a-form-item label="来款项目" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
<a-form-item label="来款项目" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
|
||||||
<a-input placeholder="请输入来款项目"
|
<a-input placeholder="请输入来款项目"
|
||||||
v-decorator="['chargeProject',validatorRules.chargeProject]"
|
v-decorator="['chargeProject',validatorRules.chargeProject]"
|
||||||
:maxLength='100'
|
:maxLength='50'
|
||||||
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
<a-row>
|
<a-row>
|
||||||
<a-col :xl="12" :sm="24">
|
<a-col :xl="12" :sm="24">
|
||||||
<a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-row>
|
<a-row :gutter="10">
|
||||||
<a-col :span="20">
|
<a-col :span="20">
|
||||||
<a-input placeholder="请输入应收金额"
|
<a-input placeholder="请输入应收金额"
|
||||||
v-decorator="['receivableAmount',validatorRules.receivableAmount]"
|
v-decorator="['receivableAmount',validatorRules.receivableAmount]"
|
||||||
@@ -185,6 +185,8 @@ import CompanySelect from '@comp/company/CompanySelect'
|
|||||||
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
||||||
import SelectContacts from '@comp/company/SelectContacts'
|
import SelectContacts from '@comp/company/SelectContacts'
|
||||||
import { addZero } from '../../../utils/util'
|
import { addZero } from '../../../utils/util'
|
||||||
|
import Vue from 'vue'
|
||||||
|
import { USER_INFO } from '../../../store/mutation-types'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'GeneralProjectModule',
|
name: 'GeneralProjectModule',
|
||||||
@@ -261,7 +263,7 @@ export default {
|
|||||||
},
|
},
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
chargeProject: {
|
chargeProject: {
|
||||||
rules: [{ required: true, message: '请输入项目名称' }],
|
rules: [{ required: true, message: '请输入来款项目' }],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
year: {
|
year: {
|
||||||
@@ -344,6 +346,7 @@ export default {
|
|||||||
companyName: record.chargeCompanyTemporaryName
|
companyName: record.chargeCompanyTemporaryName
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否存在从收入合同传入的签订联系人id
|
// 是否存在从收入合同传入的签订联系人id
|
||||||
console.log(record, this.signedContactId)
|
console.log(record, this.signedContactId)
|
||||||
record.contactsId = this.signedContactId || record.contactsTemporaryId || undefined
|
record.contactsId = this.signedContactId || record.contactsTemporaryId || undefined
|
||||||
@@ -361,6 +364,13 @@ export default {
|
|||||||
id: this.model.mailContactsTemporaryId,
|
id: this.model.mailContactsTemporaryId,
|
||||||
name: this.model.mailContactsTemporaryName
|
name: this.model.mailContactsTemporaryName
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// 新增默认运行年份为当年
|
||||||
|
this.model.year = new Date().getFullYear().toString()
|
||||||
|
// 新增默认负责人为当前用户
|
||||||
|
this.model.principalId = Vue.ls.get(USER_INFO).id
|
||||||
|
// 新增默认来款方式为无
|
||||||
|
this.model.chargeWay = 1
|
||||||
}
|
}
|
||||||
this.chargeWayType = record.chargeWay
|
this.chargeWayType = record.chargeWay
|
||||||
this.visible = true
|
this.visible = true
|
||||||
@@ -453,7 +463,7 @@ export default {
|
|||||||
callback()
|
callback()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
callback('请选择企业')
|
callback('请选择来款企业')
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 在新增成功后重新获取联系人列表
|
* 在新增成功后重新获取联系人列表
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
@cancel="handleCancel"
|
@cancel="handleCancel"
|
||||||
cancelText="关闭">
|
cancelText="关闭">
|
||||||
<a-spin :spinning="confirmLoading">
|
<a-spin :spinning="confirmLoading">
|
||||||
<a-form :form="form" v-if="memberList.length > 0">
|
<a-form :form="form" v-if="memberList[0].children.length > 0">
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span="2"></a-col>
|
<a-col :span="2"></a-col>
|
||||||
<a-col :span="20">
|
<a-col :span="20">
|
||||||
@@ -66,7 +66,7 @@ export default {
|
|||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch:{
|
watch: {
|
||||||
visible(val) {
|
visible(val) {
|
||||||
if (val) {
|
if (val) {
|
||||||
this.initData()
|
this.initData()
|
||||||
@@ -87,7 +87,10 @@ export default {
|
|||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 17 }
|
sm: { span: 17 }
|
||||||
},
|
},
|
||||||
memberList: [], // 成员树
|
memberList: [{
|
||||||
|
name: '全选',
|
||||||
|
children: []
|
||||||
|
}], // 成员树
|
||||||
checkedKeys: [], // 已选中的成员数组
|
checkedKeys: [], // 已选中的成员数组
|
||||||
replaceFields: {
|
replaceFields: {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
@@ -97,7 +100,7 @@ export default {
|
|||||||
},
|
},
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
memberName: {
|
memberName: {
|
||||||
rules: [{ required: true, message: '请选择成员单位'}],
|
rules: [{ required: true, message: '请选择成员单位' }],
|
||||||
validateTrigger: 'change'
|
validateTrigger: 'change'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -120,7 +123,7 @@ export default {
|
|||||||
}
|
}
|
||||||
distributeMemberList(param).then(res => {
|
distributeMemberList(param).then(res => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.memberList = res.result
|
this.memberList[0].children = res.result
|
||||||
} else {
|
} else {
|
||||||
this.$message.warn(res.message)
|
this.$message.warn(res.message)
|
||||||
}
|
}
|
||||||
@@ -141,14 +144,17 @@ export default {
|
|||||||
close() {
|
close() {
|
||||||
this.$emit('update:visible', false)
|
this.$emit('update:visible', false)
|
||||||
this.$emit('close')
|
this.$emit('close')
|
||||||
this.memberList = []
|
this.memberList = [{
|
||||||
|
name: '全选',
|
||||||
|
children: []
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
handleOk() {
|
handleOk() {
|
||||||
if (this.confirmLoading) {
|
if (this.confirmLoading) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.confirmLoading = true
|
this.confirmLoading = true
|
||||||
if (this.memberList.length === 0) {
|
if (this.memberList[0].children.length === 0) {
|
||||||
this.$message.warn('当前工作组暂无成员,无法分发文件')
|
this.$message.warn('当前工作组暂无成员,无法分发文件')
|
||||||
this.confirmLoading = false
|
this.confirmLoading = false
|
||||||
return
|
return
|
||||||
@@ -158,16 +164,20 @@ export default {
|
|||||||
this.confirmLoading = false
|
this.confirmLoading = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let str = this.checkedKeys.join(',').toString()
|
let str = ''
|
||||||
console.log(str)
|
if (this.checkedKeys[0] === '0-0') {
|
||||||
this.form.setFieldsValue({memberName: str})
|
str = this.checkedKeys.slice(1).join(',').toString()
|
||||||
|
} else {
|
||||||
|
str = this.checkedKeys.join(',').toString()
|
||||||
|
}
|
||||||
|
this.form.setFieldsValue({ memberName: str })
|
||||||
this.form.validateFields((err) => {
|
this.form.validateFields((err) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
this.confirmLoading = true
|
this.confirmLoading = true
|
||||||
if (this.isBatch) {
|
if (this.isBatch) {
|
||||||
// 批量分发
|
// 批量分发
|
||||||
const formData = {
|
const formData = {
|
||||||
contactsIds: this.checkedKeys.join(','),
|
contactsIds: str,
|
||||||
dataIds: this.recordId,
|
dataIds: this.recordId,
|
||||||
projectId: this.projectId,
|
projectId: this.projectId,
|
||||||
projectType: this.projectType
|
projectType: this.projectType
|
||||||
|
|||||||
@@ -98,8 +98,15 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="12" :sm="24" v-if="chargeWayType === 3">
|
<a-col :xl="12" :sm="24" v-if="chargeWayType === 3">
|
||||||
<a-form-item label="收费通知号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="收费通知号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-radio-group v-decorator="['chargeNoticeNo',validatorRules.chargeNoticeNo]"
|
<a-radio-group
|
||||||
@change="handleChargeNoticeChange" :options="chargeNoticeList">
|
class="charge-notice-no"
|
||||||
|
v-decorator="['chargeNoticeNo',validatorRules.chargeNoticeNo]"
|
||||||
|
@change="handleChargeNoticeChange">
|
||||||
|
<a-radio v-for="item in chargeNoticeList" :key="item.value" :value="item.value">
|
||||||
|
<a-tooltip :title="item.label">
|
||||||
|
{{ item.label }}
|
||||||
|
</a-tooltip>
|
||||||
|
</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -271,19 +278,19 @@ export default {
|
|||||||
model: {},
|
model: {},
|
||||||
labelCol: {
|
labelCol: {
|
||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 6 }
|
sm: { span: 8 }
|
||||||
},
|
},
|
||||||
wrapperCol: {
|
wrapperCol: {
|
||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 18 }
|
sm: { span: 16 }
|
||||||
},
|
},
|
||||||
remarksLabelCol: {
|
remarksLabelCol: {
|
||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 3 }
|
sm: { span: 4 }
|
||||||
},
|
},
|
||||||
remarksWrapperCol: {
|
remarksWrapperCol: {
|
||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 21 }
|
sm: { span: 20 }
|
||||||
},
|
},
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
workingGroupId: {
|
workingGroupId: {
|
||||||
@@ -641,6 +648,27 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped lang="less">
|
||||||
|
.charge-notice-no {
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
/deep/ .ant-radio-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
span.ant-radio + * {
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
span {
|
||||||
|
vertical-align: bottom;
|
||||||
|
display: inline-block;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
import IconImg from '@/assets/imgs/icon/icon_statistical_report.png'
|
import IconImg from '@/assets/imgs/icon/icon_statistical_report.png'
|
||||||
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
||||||
import { JeroListMixin } from '../../mixins/JeroListMixin'
|
import { JeroListMixin } from '../../mixins/JeroListMixin'
|
||||||
import { queryDepartTreeList } from '../../api/api'
|
import { getAllDepartTreeList } from '../../api/incomePaymentsApi'
|
||||||
import SelectPrincipal from '../../components/company/SelectPrincipal'
|
import SelectPrincipal from '../../components/company/SelectPrincipal'
|
||||||
import JYearDate from '../../components/jero/JYearDate'
|
import JYearDate from '../../components/jero/JYearDate'
|
||||||
import { getAction } from '../../api/manage'
|
import { getAction } from '../../api/manage'
|
||||||
@@ -318,7 +318,7 @@ export default {
|
|||||||
* 获取科室(部门)数据
|
* 获取科室(部门)数据
|
||||||
*/
|
*/
|
||||||
loadDepartTreeData() {
|
loadDepartTreeData() {
|
||||||
queryDepartTreeList().then((res) => {
|
getAllDepartTreeList().then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.treeDepartData = []
|
this.treeDepartData = []
|
||||||
let treeList = res.result
|
let treeList = res.result
|
||||||
|
|||||||
+2
-2
@@ -121,7 +121,7 @@ import PageHeaderTitle from '../../../components/layouts/PageHeaderTitle'
|
|||||||
import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
||||||
import JYearDate from '../../../components/jero/JYearDate'
|
import JYearDate from '../../../components/jero/JYearDate'
|
||||||
import SelectPrincipal from '../../../components/company/SelectPrincipal'
|
import SelectPrincipal from '../../../components/company/SelectPrincipal'
|
||||||
import { queryDepartTreeList } from '../../../api/api'
|
import { getAllDepartTreeList } from '../../../api/incomePaymentsApi'
|
||||||
import { getAction } from '@api/manage'
|
import { getAction } from '@api/manage'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -256,7 +256,7 @@ export default {
|
|||||||
* 获取科室(部门)数据
|
* 获取科室(部门)数据
|
||||||
*/
|
*/
|
||||||
loadDepartTreeData() {
|
loadDepartTreeData() {
|
||||||
queryDepartTreeList().then((res) => {
|
getAllDepartTreeList().then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.treeDepartData = []
|
this.treeDepartData = []
|
||||||
let treeList = res.result
|
let treeList = res.result
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
|||||||
import JYearDate from '../../../components/jero/JYearDate'
|
import JYearDate from '../../../components/jero/JYearDate'
|
||||||
import { getAction } from '@api/manage'
|
import { getAction } from '@api/manage'
|
||||||
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
import SelectPrincipal from '@comp/company/SelectPrincipal'
|
||||||
import { queryDepartTreeList } from '@api/api'
|
import { getAllDepartTreeList } from '../../../api/incomePaymentsApi'
|
||||||
import ProjectDetailModal from '../../../components/ProjectDetailModal'
|
import ProjectDetailModal from '../../../components/ProjectDetailModal'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -284,7 +284,7 @@ export default {
|
|||||||
* 获取科室(部门)数据
|
* 获取科室(部门)数据
|
||||||
*/
|
*/
|
||||||
loadDepartTreeData() {
|
loadDepartTreeData() {
|
||||||
queryDepartTreeList().then((res) => {
|
getAllDepartTreeList().then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.treeDepartData = []
|
this.treeDepartData = []
|
||||||
let treeList = res.result
|
let treeList = res.result
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
<a-row style="margin-left: 14px" class="table-operator">
|
<a-row style="margin-left: 14px" class="table-operator">
|
||||||
<a-button @click="handleAdd(1)" type="primary" v-has="'sys:depart:add'">新增</a-button>
|
<a-button @click="handleAdd(1)" type="primary" v-has="'sys:depart:add'">新增</a-button>
|
||||||
<a-button @click="handleAdd(2)" type="primary" v-has="'sys:depart:addLowerLevel'">添加下级</a-button>
|
<a-button @click="handleAdd(2)" type="primary" v-has="'sys:depart:addLowerLevel'">添加下级</a-button>
|
||||||
<a-button type="primary" icon="download" @click="handleExportXls('部门信息')" v-has="'sys:depart:export'">导出</a-button>
|
<a-button type="primary" icon="download" @click="handleExportXls('部门信息')" v-has="'sys:depart:export'">导出
|
||||||
|
</a-button>
|
||||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
|
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
|
||||||
:action="importExcelUrl" @change="handleImportExcel" v-has="'sys:depart:import'">
|
:action="importExcelUrl" @change="handleImportExcel" v-has="'sys:depart:import'">
|
||||||
<a-button type="primary" icon="import">导入</a-button>
|
<a-button type="primary" icon="import">导入</a-button>
|
||||||
@@ -23,7 +24,7 @@
|
|||||||
<a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">取消选择</a>
|
<a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">取消选择</a>
|
||||||
</div>
|
</div>
|
||||||
</a-alert>
|
</a-alert>
|
||||||
<a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="请输入部门名称"/>
|
<a-input-search @search="onSearch" allowClear style="width:100%;margin-top: 10px" placeholder="请输入部门名称"/>
|
||||||
<!-- 树-->
|
<!-- 树-->
|
||||||
<a-col :md="10" :sm="24">
|
<a-col :md="10" :sm="24">
|
||||||
<template>
|
<template>
|
||||||
@@ -47,7 +48,7 @@
|
|||||||
<a-menu slot="overlay">
|
<a-menu slot="overlay">
|
||||||
<a-menu-item @click="handleAdd(3)" key="1" v-has="'sys:depart:add'">添加</a-menu-item>
|
<a-menu-item @click="handleAdd(3)" key="1" v-has="'sys:depart:add'">添加</a-menu-item>
|
||||||
<a-menu-item @click="handleDelete" key="2" v-has="'sys:depart:del'">删除</a-menu-item>
|
<a-menu-item @click="handleDelete" key="2" v-has="'sys:depart:del'">删除</a-menu-item>
|
||||||
<a-menu-item @click="closeDrop" key="3">取消</a-menu-item>
|
<!-- <a-menu-item @click="closeDrop" key="3">取消</a-menu-item>-->
|
||||||
</a-menu>
|
</a-menu>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
</template>
|
</template>
|
||||||
@@ -73,7 +74,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
|
<!---- author:os_chengtgen -- date:20190827 -- for:切换父子勾选模式 =======------>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :md="14" :sm="24" style="background: #fff;padding: 24px;">
|
<a-col :md="14" :sm="24" style="background: #fff;padding: 0 24px 24px 24px;">
|
||||||
<a-tabs defaultActiveKey="1" @change="callback">
|
<a-tabs defaultActiveKey="1" @change="callback">
|
||||||
<a-tab-pane tab="基本信息" key="1">
|
<a-tab-pane tab="基本信息" key="1">
|
||||||
<a-card :bordered="false" v-if="selectedKeys.length>0">
|
<a-card :bordered="false" v-if="selectedKeys.length>0">
|
||||||
@@ -103,28 +104,28 @@
|
|||||||
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
|
@change="event => event.target.value = event.target.value.trim()" :maxLength="50"
|
||||||
v-decorator="['orgCode', validatorRules.orgCode ]"/>
|
v-decorator="['orgCode', validatorRules.orgCode ]"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- <a-form-item-->
|
<!-- <a-form-item-->
|
||||||
<!-- :labelCol="labelCol"-->
|
<!-- :labelCol="labelCol"-->
|
||||||
<!-- :wrapperCol="wrapperCol"-->
|
<!-- :wrapperCol="wrapperCol"-->
|
||||||
<!-- label="机构类型">-->
|
<!-- label="机构类型">-->
|
||||||
<!-- <template v-if="orgCategoryDisabled">-->
|
<!-- <template v-if="orgCategoryDisabled">-->
|
||||||
<!-- <a-radio-group v-decorator="['orgCategory',validatorRules.orgCategory]" placeholder="请选择机构类型">-->
|
<!-- <a-radio-group v-decorator="['orgCategory',validatorRules.orgCategory]" placeholder="请选择机构类型">-->
|
||||||
<!-- <a-radio value="1">-->
|
<!-- <a-radio value="1">-->
|
||||||
<!-- 公司-->
|
<!-- 公司-->
|
||||||
<!-- </a-radio>-->
|
<!-- </a-radio>-->
|
||||||
<!-- </a-radio-group>-->
|
<!-- </a-radio-group>-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- <template v-else>-->
|
<!-- <template v-else>-->
|
||||||
<!-- <a-radio-group v-decorator="['orgCategory',validatorRules.orgCategory]" placeholder="请选择机构类型">-->
|
<!-- <a-radio-group v-decorator="['orgCategory',validatorRules.orgCategory]" placeholder="请选择机构类型">-->
|
||||||
<!-- <a-radio value="2">-->
|
<!-- <a-radio value="2">-->
|
||||||
<!-- 部门-->
|
<!-- 部门-->
|
||||||
<!-- </a-radio>-->
|
<!-- </a-radio>-->
|
||||||
<!-- <a-radio value="3">-->
|
<!-- <a-radio value="3">-->
|
||||||
<!-- 岗位-->
|
<!-- 岗位-->
|
||||||
<!-- </a-radio>-->
|
<!-- </a-radio>-->
|
||||||
<!-- </a-radio-group>-->
|
<!-- </a-radio-group>-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
<!-- </a-form-item>-->
|
<!-- </a-form-item>-->
|
||||||
<a-form-item
|
<a-form-item
|
||||||
:labelCol="labelCol"
|
:labelCol="labelCol"
|
||||||
:wrapperCol="wrapperCol"
|
:wrapperCol="wrapperCol"
|
||||||
@@ -154,7 +155,7 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
<div class="anty-form-btn">
|
<div class="anty-form-btn">
|
||||||
<a-button @click="emptyCurrForm" class="reset-button" htmlType="button" icon="sync">重置</a-button>
|
<a-button @click="emptyCurrForm" class="reset-button" htmlType="button" icon="sync">重置</a-button>
|
||||||
<a-button @click="submitCurrForm" :disabled="disabledStatus" type="primary" htmlType="button"
|
<a-button @click="submitCurrForm" :disabled="disabledStatus" type="primary" htmlType="button"
|
||||||
icon="form">保存
|
icon="form">保存
|
||||||
</a-button>
|
</a-button>
|
||||||
@@ -189,6 +190,7 @@ import { JeroListMixin } from '@/mixins/JeroListMixin'
|
|||||||
import { checkDepartName } from '@/utils/validateOnly'
|
import { checkDepartName } from '@/utils/validateOnly'
|
||||||
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
||||||
import IconImg from '@/assets/imgs/icon/icon_system.png'
|
import IconImg from '@/assets/imgs/icon/icon_system.png'
|
||||||
|
import { downloadFile } from '../../api/manage'
|
||||||
// 表头
|
// 表头
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
@@ -414,6 +416,21 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* 导出
|
||||||
|
* @param fileName
|
||||||
|
*/
|
||||||
|
handleExportXls(fileName) {
|
||||||
|
if (!fileName || typeof fileName != 'string') {
|
||||||
|
fileName = '导出文件'
|
||||||
|
}
|
||||||
|
let param = this.getQueryParams()
|
||||||
|
if (this.checkedKeys && this.checkedKeys.length > 0) {
|
||||||
|
param['selections'] = this.checkedKeys.join(',')
|
||||||
|
}
|
||||||
|
console.log('导出参数', param)
|
||||||
|
downloadFile(this.url.exportXlsUrl, fileName + '.xls', param)
|
||||||
|
},
|
||||||
nodeModalOk() {
|
nodeModalOk() {
|
||||||
this.loadTree()
|
this.loadTree()
|
||||||
},
|
},
|
||||||
@@ -655,6 +672,11 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
@import '~@assets/less/common.less';
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
/deep/ .ant-card-body {
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
.ant-card-body .table-operator {
|
.ant-card-body .table-operator {
|
||||||
margin: 15px;
|
margin: 15px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
<a-row :gutter="12">
|
<a-row :gutter="12">
|
||||||
<a-col :md="7" :sm="8">
|
<a-col :md="7" :sm="8">
|
||||||
<a-form-item label="字典名称" :labelCol="{span: 6}" :wrapperCol="{span: 14, offset: 1}">
|
<a-form-item label="字典名称" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
|
||||||
<a-input placeholder="请输入字典名称" v-model="queryParam.dictName"></a-input>
|
<a-input placeholder="请输入字典名称" v-model="queryParam.dictName"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :md="7" :sm="8">
|
<a-col :md="7" :sm="8">
|
||||||
<a-form-item label="字典编号" :labelCol="{span: 6}" :wrapperCol="{span: 14, offset: 1}">
|
<a-form-item label="字典编号" :labelCol="{span: 6}" :wrapperCol="{span: 14}">
|
||||||
<a-input placeholder="请输入字典编号" v-model="queryParam.dictCode"></a-input>
|
<a-input placeholder="请输入字典编号" v-model="queryParam.dictCode"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|||||||
@@ -14,12 +14,12 @@
|
|||||||
<div class="table-page-search-wrapper">
|
<div class="table-page-search-wrapper">
|
||||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :xl="8" :lg="8" :md="8" :sm="24">
|
<a-col :xl="9" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item label="搜索日志">
|
<a-form-item label="搜索日志">
|
||||||
<a-input placeholder="请输入搜索关键词" v-model="queryParam.keyWord"></a-input>
|
<a-input placeholder="请输入搜索关键词" v-model="queryParam.keyWord"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="8" :lg="8" :md="8" :sm="24">
|
<a-col :xl="9" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-range-picker
|
<a-range-picker
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -31,13 +31,13 @@
|
|||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="8" :lg="8" :md="8" :sm="24" v-if="tabKey === '2' ">
|
<a-col :xl="9" :lg="8" :md="8" :sm="24" v-if="tabKey === '2' ">
|
||||||
<a-form-item label="操作类型" style="left: 10px">
|
<a-form-item label="操作类型" style="left: 10px">
|
||||||
<j-dict-select-tag v-model="queryParam.operateType" placeholder="请选择操作类型" dictCode="operate_type"/>
|
<j-dict-select-tag v-model="queryParam.operateType" placeholder="请选择操作类型" dictCode="operate_type"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
<a-col :xl="4" :lg="8" :md="8" :sm="24">
|
||||||
<a-button type="primary" style="left: 10px" @click="searchQuery" icon="search" v-has="'sys:log:search'">查询</a-button>
|
<a-button type="primary" style="left: 10px" @click="searchQuery" icon="search" v-has="'sys:log:search'">查询</a-button>
|
||||||
<a-button class="reset-button" @click="searchReset" icon="reload"
|
<a-button class="reset-button" @click="searchReset" icon="reload"
|
||||||
style="margin-left: 8px;left: 10px">重置</a-button>
|
style="margin-left: 8px;left: 10px">重置</a-button>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
</a-form>
|
</a-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="table-operator">
|
<div class="table-operator">
|
||||||
<a-button type="danger" @click="batchDel" icon="delete" v-has="'sys:log:batchDelete'"
|
<a-button type="danger" @click="batchDel" icon="delete" v-has="'sys:log:batchDelete'"
|
||||||
style="margin-left: 8px;left: 10px">批量删除
|
style="margin-left: 8px;left: 10px">批量删除
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -81,8 +81,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {filterObj} from '@/utils/util'
|
import { filterObj } from '@/utils/util'
|
||||||
import {JeroListMixin} from '@/mixins/JeroListMixin'
|
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||||
import JEllipsis from '@/components/jero/JEllipsis'
|
import JEllipsis from '@/components/jero/JEllipsis'
|
||||||
import IconImg from '@/assets/imgs/icon/icon_system.png'
|
import IconImg from '@/assets/imgs/icon/icon_system.png'
|
||||||
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
import PageHeaderTitle from '../../components/layouts/PageHeaderTitle'
|
||||||
@@ -131,14 +131,14 @@ export default {
|
|||||||
title: '日志内容',
|
title: '日志内容',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'logContent',
|
dataIndex: 'logContent',
|
||||||
scopedSlots: {customRender: 'logContent'},
|
scopedSlots: { customRender: 'logContent' },
|
||||||
sorter: true
|
sorter: true
|
||||||
}, {
|
}, {
|
||||||
title: '创建时间',
|
title: '创建时间',
|
||||||
dataIndex: 'createTime',
|
dataIndex: 'createTime',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
sorter: true
|
sorter: true
|
||||||
},
|
}
|
||||||
// {
|
// {
|
||||||
// title: '操作人ID',
|
// title: '操作人ID',
|
||||||
// dataIndex: 'userid',
|
// dataIndex: 'userid',
|
||||||
@@ -166,18 +166,18 @@ export default {
|
|||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
labelCol: {
|
labelCol: {
|
||||||
xs: {span: 1},
|
xs: { span: 1 },
|
||||||
sm: {span: 2}
|
sm: { span: 2 }
|
||||||
},
|
},
|
||||||
wrapperCol: {
|
wrapperCol: {
|
||||||
xs: {span: 10},
|
xs: { span: 10 },
|
||||||
sm: {span: 16}
|
sm: { span: 16 }
|
||||||
},
|
},
|
||||||
url: {
|
url: {
|
||||||
list: '/sys/log/page',
|
list: '/sys/log/page',
|
||||||
deleteBatch:'/sys/log/deleteBatch',
|
deleteBatch: '/sys/log/deleteBatch'
|
||||||
},
|
},
|
||||||
newColumns: [],
|
newColumns: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -185,7 +185,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getQueryParams() {
|
getQueryParams() {
|
||||||
var param = Object.assign({}, this.lastQueryParam, this.isorter, {logType: this.tabKey})
|
var param = Object.assign({}, this.lastQueryParam, this.isorter, { logType: this.tabKey })
|
||||||
param.field = this.getQueryField()
|
param.field = this.getQueryField()
|
||||||
param.pageNo = this.ipagination.current
|
param.pageNo = this.ipagination.current
|
||||||
param.pageSize = this.ipagination.pageSize
|
param.pageSize = this.ipagination.pageSize
|
||||||
@@ -238,4 +238,8 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
@import '~@assets/less/common.less';
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
|
/deep/ .ant-card-body {
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -39,28 +39,28 @@
|
|||||||
<span slot="action" slot-scope="text, record" class="action-span-cell">
|
<span slot="action" slot-scope="text, record" class="action-span-cell">
|
||||||
<a @click="handleEdit(record)">编辑</a>
|
<a @click="handleEdit(record)">编辑</a>
|
||||||
|
|
||||||
<!-- <a-dropdown>-->
|
<a-dropdown>
|
||||||
<!-- <a class="ant-dropdown-link">-->
|
<a class="ant-dropdown-link">
|
||||||
<!-- 更多 <a-icon type="down"/>-->
|
更多 <a-icon type="down"/>
|
||||||
<!-- </a>-->
|
</a>
|
||||||
<!-- <a-menu slot="overlay">-->
|
<a-menu slot="overlay">
|
||||||
<!-- <a-menu-item>-->
|
<a-menu-item>
|
||||||
<!-- <a href="javascript:;" @click="handleDetail(record)">详情</a>-->
|
<a href="javascript:;" @click="handleDetail(record)">详情</a>
|
||||||
<!-- </a-menu-item>-->
|
</a-menu-item>
|
||||||
<!-- <a-menu-item>-->
|
<a-menu-item>
|
||||||
<!-- <a href="javascript:;" @click="handleAddSub(record)">添加下级</a>-->
|
<a href="javascript:;" @click="handleAddSub(record)">添加下级</a>
|
||||||
<!-- </a-menu-item>-->
|
</a-menu-item>
|
||||||
<!-- <a-menu-item>-->
|
<a-menu-item>
|
||||||
<!-- <a href="javascript:;" @click="handleDataRule(record)">数据规则</a>-->
|
<a href="javascript:;" @click="handleDataRule(record)">数据规则</a>
|
||||||
<!-- </a-menu-item>-->
|
</a-menu-item>
|
||||||
|
|
||||||
<!-- <a-menu-item>-->
|
<a-menu-item>
|
||||||
<!--<!– <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">–>-->
|
<!-- <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">-->
|
||||||
<!-- <!– </a-popconfirm>–>-->
|
<!-- </a-popconfirm>-->
|
||||||
<!-- <a @click="handleDelete(record.id)">删除</a>-->
|
<a @click="handleDelete(record.id)">删除</a>
|
||||||
<!-- </a-menu-item>-->
|
</a-menu-item>
|
||||||
<!-- </a-menu>-->
|
</a-menu>
|
||||||
<!-- </a-dropdown>-->
|
</a-dropdown>
|
||||||
</span>
|
</span>
|
||||||
<!-- 字符串超长截取省略号显示 -->
|
<!-- 字符串超长截取省略号显示 -->
|
||||||
<span slot="url" slot-scope="text">
|
<span slot="url" slot-scope="text">
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item class="btn-form">
|
<a-form-item class="btn-form">
|
||||||
<a-button type="primary" class="btn-form-save" @click="handleOk">保存</a-button>
|
<a-button type="primary" class="btn-form-save" @click="handleOk" v-has="'system:dept:save'">保存</a-button>
|
||||||
<a-button class="btn-form-cancel" @click="handleCancel">取消</a-button>
|
<a-button class="btn-form-cancel" @click="handleCancel">取消</a-button>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
|
|||||||
@@ -7,19 +7,19 @@
|
|||||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
|
|
||||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
<a-col :xl="8" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item label="用户账号">
|
<a-form-item label="用户账号">
|
||||||
<a-input placeholder="请输入用户账号" v-model="queryParam.username"></a-input>
|
<a-input placeholder="请输入用户账号" v-model="queryParam.username"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
<a-col :xl="8" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item label="用户姓名">
|
<a-form-item label="用户姓名">
|
||||||
<a-input placeholder="请输入用户姓名" v-model="queryParam.realname"></a-input>
|
<a-input placeholder="请输入用户姓名" v-model="queryParam.realname"></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
<a-col :xl="8" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item
|
<a-form-item
|
||||||
label="角色类型"
|
label="角色类型"
|
||||||
:labelCol="labelCol"
|
:labelCol="labelCol"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
<a-col :xl="8" :lg="8" :md="8" :sm="24">
|
||||||
<a-form-item
|
<a-form-item
|
||||||
label="组织机构"
|
label="组织机构"
|
||||||
:labelCol="labelCol"
|
:labelCol="labelCol"
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
:labelCol="labelCol"
|
:labelCol="labelCol"
|
||||||
:wrapperCol="wrapperCol"
|
:wrapperCol="wrapperCol"
|
||||||
label="电话">
|
label="电话">
|
||||||
<a-input placeholder="请输入电话" @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator="['mobile',validatorRules.mobile]" />
|
<a-input placeholder="请输入电话" @change="e => e.target.value = (e.target.value.replace(/[^0-9-]/g, '')).trim()" :maxLength="15" v-decorator="['mobile',validatorRules.mobile]" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- <a-form-item-->
|
<!-- <a-form-item-->
|
||||||
<!-- :labelCol="labelCol"-->
|
<!-- :labelCol="labelCol"-->
|
||||||
@@ -97,6 +97,7 @@ import { queryIdTree } from '@/api/api'
|
|||||||
import pick from 'lodash.pick'
|
import pick from 'lodash.pick'
|
||||||
import ATextarea from 'ant-design-vue/es/input/TextArea'
|
import ATextarea from 'ant-design-vue/es/input/TextArea'
|
||||||
import {checkDepartName} from '@/utils/validateOnly'
|
import {checkDepartName} from '@/utils/validateOnly'
|
||||||
|
import { isPhone } from '../../../utils/validate'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SysDepartModal',
|
name: 'SysDepartModal',
|
||||||
@@ -225,10 +226,10 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
validateMobile(rule, value, callback) {
|
validateMobile(rule, value, callback) {
|
||||||
if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)) {
|
if (!value || isPhone(value)) {
|
||||||
callback()
|
callback()
|
||||||
} else {
|
} else {
|
||||||
callback('您的手机号码格式不正确!')
|
callback('您的电话格式不正确!')
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
:wrapperCol="wrapperCol"
|
:wrapperCol="wrapperCol"
|
||||||
label="排序值">
|
label="排序值">
|
||||||
<a-input-number :min="1" :max="99999" v-decorator="['sortOrder',{'initialValue':1}]"/>
|
<a-input-number :min="1" :max="99999" v-decorator="['sortOrder',{'initialValue':1}]"/>
|
||||||
值越小越靠前,支持小数
|
值越小越靠前
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<!-- <a-form-item-->
|
<!-- <a-form-item-->
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
confirmLoading: false,
|
confirmLoading: false,
|
||||||
form: this.$form.createForm(this),
|
form: this.$form.createForm(this),
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
dictName: { rules: [{ required: true, message: '请输入字典名称!' }], validateTrigger: 'blur' },
|
dictName: { rules: [{ required: true, message: '请输入字典名称' }], validateTrigger: 'blur' },
|
||||||
dictCode: {
|
dictCode: {
|
||||||
rules: [{ required: true,validator: this.validateDictCode },
|
rules: [{ required: true,validator: this.validateDictCode },
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ export default {
|
|||||||
validatorRules: {
|
validatorRules: {
|
||||||
roleName: {
|
roleName: {
|
||||||
rules: [
|
rules: [
|
||||||
{required: true, message: '请输入角色名称!'},
|
{required: true, message: '请输入角色名称'},
|
||||||
{min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur'}
|
{min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur'}
|
||||||
],
|
],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item label="用户账号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<a-input placeholder="请输入用户账号" @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator.trim="[ 'username', validatorRules.username]"
|
<a-input placeholder="请输入用户账号" @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator.trim="[ 'username', validatorRules.username]"
|
||||||
:readOnly="!!model.id" :disabled="disableSubmit" />
|
:readOnly="!!model.id" :disabled="disableSubmit || disabledEdit" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<template v-if="!model.id">
|
<template v-if="!model.id">
|
||||||
@@ -227,7 +227,7 @@ export default {
|
|||||||
password: {
|
password: {
|
||||||
rules: [{
|
rules: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: '请输入密码'
|
message: '请输入登录密码'
|
||||||
}, {
|
}, {
|
||||||
validator: this.validateToNextPassword,
|
validator: this.validateToNextPassword,
|
||||||
}],
|
}],
|
||||||
@@ -235,13 +235,13 @@ export default {
|
|||||||
},
|
},
|
||||||
confirmpassword: {
|
confirmpassword: {
|
||||||
rules: [{
|
rules: [{
|
||||||
required: true, message: '请输入确认密码!',
|
required: true, message: '请输入确认密码',
|
||||||
}, {
|
}, {
|
||||||
validator: this.compareToFirstPassword,
|
validator: this.compareToFirstPassword,
|
||||||
}],
|
}],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
realname: {rules: [{required: true, message: '请输入用户名称!'}], validateTrigger: 'blur'},
|
realname: {rules: [{required: true, message: '请输入用户姓名'}], validateTrigger: 'blur'},
|
||||||
phone: {rules: [{required: true,validator: this.validatePhone}], validateTrigger: 'blur'},
|
phone: {rules: [{required: true,validator: this.validatePhone}], validateTrigger: 'blur'},
|
||||||
email: {
|
email: {
|
||||||
rules: [{
|
rules: [{
|
||||||
@@ -286,7 +286,8 @@ export default {
|
|||||||
tenantList: [],
|
tenantList: [],
|
||||||
currentTenant: [],
|
currentTenant: [],
|
||||||
// 公钥
|
// 公钥
|
||||||
rsaPublicKey:''
|
rsaPublicKey:'',
|
||||||
|
disabledEdit: false, // 用户账号是否可编辑
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -357,7 +358,6 @@ export default {
|
|||||||
this.edit({activitiSync: '1'})
|
this.edit({activitiSync: '1'})
|
||||||
},
|
},
|
||||||
edit(record) {
|
edit(record) {
|
||||||
|
|
||||||
this.resetScreenSize() // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
|
this.resetScreenSize() // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
|
||||||
// 加载组织机构数据
|
// 加载组织机构数据
|
||||||
this.loadDepartTreeData()
|
this.loadDepartTreeData()
|
||||||
@@ -381,6 +381,11 @@ export default {
|
|||||||
that.userId = record.id
|
that.userId = record.id
|
||||||
that.visible = true
|
that.visible = true
|
||||||
that.model = Object.assign({}, record)
|
that.model = Object.assign({}, record)
|
||||||
|
if (that.model.id) {
|
||||||
|
that.disabledEdit = true
|
||||||
|
} else {
|
||||||
|
that.disabledEdit = false
|
||||||
|
}
|
||||||
// 组织机构修改成了单选,此处不需要了
|
// 组织机构修改成了单选,此处不需要了
|
||||||
if(record.departIds !== '' && record.id){
|
if(record.departIds !== '' && record.id){
|
||||||
// 部门是数组的时候以逗号拼接
|
// 部门是数组的时候以逗号拼接
|
||||||
@@ -576,7 +581,7 @@ export default {
|
|||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
if (!passwordReg(value)) {
|
if (!passwordReg(value)) {
|
||||||
callback('密码长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类')
|
callback('密码由8位及以上数字、大小写字母和特殊符号组成!')
|
||||||
}
|
}
|
||||||
if (value && this.confirmDirty) {
|
if (value && this.confirmDirty) {
|
||||||
form.validateFields(['confirm'], {force: true})
|
form.validateFields(['confirm'], {force: true})
|
||||||
@@ -585,6 +590,9 @@ export default {
|
|||||||
},
|
},
|
||||||
compareToFirstPassword(rule, value, callback) {
|
compareToFirstPassword(rule, value, callback) {
|
||||||
const form = this.form
|
const form = this.form
|
||||||
|
if (value && !passwordReg(value)) {
|
||||||
|
callback('密码由8位及以上数字、大小写字母和特殊符号组成!')
|
||||||
|
}
|
||||||
if (value && value !== form.getFieldValue('password')) {
|
if (value && value !== form.getFieldValue('password')) {
|
||||||
callback('两次输入的密码不一样!')
|
callback('两次输入的密码不一样!')
|
||||||
} else {
|
} else {
|
||||||
@@ -614,7 +622,7 @@ export default {
|
|||||||
if(res.success){
|
if(res.success){
|
||||||
callback()
|
callback()
|
||||||
}else {
|
}else {
|
||||||
callback(res.code === 500 ? '用户已存在': res)
|
callback(res.code === 500 ? '用户账号已存在': res)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -82,10 +82,10 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onTreeNodeSelect(id){
|
onTreeNodeSelect(id){
|
||||||
if(id && id.length>0){
|
// if(id && id.length>0){
|
||||||
this.selectedKeys = id
|
// this.selectedKeys = id
|
||||||
}
|
// }
|
||||||
this.$refs.datarule.show(this.selectedKeys[0],this.roleId)
|
// this.$refs.datarule.show(this.selectedKeys[0],this.roleId)
|
||||||
},
|
},
|
||||||
onCheck (o) {
|
onCheck (o) {
|
||||||
if(this.checkStrictly){
|
if(this.checkStrictly){
|
||||||
|
|||||||
@@ -13,14 +13,14 @@
|
|||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span='22'>
|
<a-col :span='22'>
|
||||||
<a-form-item
|
<a-form-item
|
||||||
label="用户名"
|
label="账号"
|
||||||
:labelCol="{span: 5}"
|
:labelCol="{span: 5}"
|
||||||
:wrapperCol="{span: 19}"
|
:wrapperCol="{span: 19}"
|
||||||
>
|
>
|
||||||
<a-input
|
<a-input
|
||||||
type="text"
|
type="text"
|
||||||
v-decorator="['username',validatorRules.username]"
|
v-decorator="['username',validatorRules.username]"
|
||||||
placeholder="请输入用户名">
|
placeholder="请输入账号">
|
||||||
</a-input>
|
</a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
<a-row>
|
<a-row>
|
||||||
<a-col :span='22'>
|
<a-col :span='22'>
|
||||||
<a-form-item
|
<a-form-item
|
||||||
label="手机"
|
label="手机号"
|
||||||
:labelCol="{span: 5}"
|
:labelCol="{span: 5}"
|
||||||
:wrapperCol="{span: 19}"
|
:wrapperCol="{span: 19}"
|
||||||
>
|
>
|
||||||
@@ -129,33 +129,36 @@ export default {
|
|||||||
validatorRules: {
|
validatorRules: {
|
||||||
username: {
|
username: {
|
||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: '请输入用户名!' }],
|
{ required: true, message: '请输入账号!' }],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
phone: {
|
phone: {
|
||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: '请输入手机号码!' },
|
{ required: true, message: '请输入手机号!' },
|
||||||
{ validator: this.validatePhone }
|
{ validator: this.validatePhone }
|
||||||
],
|
],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
verifyCode: {
|
verifyCode: {
|
||||||
rules: [{ required: true, message: '请输入短信验证码!' }],
|
rules: [{ required: true, message: '请输入验证码!' }],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
password: {
|
password: {
|
||||||
rules: [
|
rules: [
|
||||||
|
{ required: true, message: '请输入新密码!' },
|
||||||
{
|
{
|
||||||
required: true,
|
pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
|
||||||
pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,}$/,
|
message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
|
||||||
message: '密码由8位数字、大小写字母和特殊符号组成!!'
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
},
|
},
|
||||||
confirmPassword: {
|
confirmPassword: {
|
||||||
rules: [
|
rules: [
|
||||||
{ required: true, message: '密码不能为空!' },
|
{ required: true, message: '请确认新密码!' },
|
||||||
|
{ pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/,
|
||||||
|
message: '密码由8位及以上数字、大小写字母和特殊符号组成!'
|
||||||
|
},
|
||||||
{ validator: this.handlePasswordCheck }
|
{ validator: this.handlePasswordCheck }
|
||||||
],
|
],
|
||||||
validateTrigger: 'blur'
|
validateTrigger: 'blur'
|
||||||
@@ -236,15 +239,21 @@ export default {
|
|||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
let that = this
|
let that = this
|
||||||
let phone = that.form.getFieldValue('phone')
|
let phone = that.form.getFieldValue('phone')
|
||||||
|
let username = that.form.getFieldValue('username')
|
||||||
if (!phone) {
|
if (!phone) {
|
||||||
this.cmsFailed('手机号不能为空!')
|
this.cmsFailed('手机号不能为空!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (!username) {
|
||||||
|
this.cmsFailed('用户名不能为空!')
|
||||||
|
return
|
||||||
|
}
|
||||||
this.form.validateFields(['phone'], { force: true }, (err) => {
|
this.form.validateFields(['phone'], { force: true }, (err) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
const hide = this.$message.loading('验证码发送中..', 0)
|
const hide = this.$message.loading('验证码发送中..', 0)
|
||||||
let smsParams = {
|
let smsParams = {
|
||||||
phone: phone
|
phone: phone,
|
||||||
|
userName: username
|
||||||
}
|
}
|
||||||
getAction('/sys/sendVerificationCode', smsParams).then(res => {
|
getAction('/sys/sendVerificationCode', smsParams).then(res => {
|
||||||
if (!res.success) {
|
if (!res.success) {
|
||||||
|
|||||||
Reference in New Issue
Block a user