Merge remote-tracking branch 'websoft/master'
This commit is contained in:
@@ -18,14 +18,6 @@
|
||||
@on-load="onLoad"
|
||||
>
|
||||
<template #menu-left>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
v-if="canMajorProjectSupplement"
|
||||
@click="openProjectDialog('majorSupplement')"
|
||||
>
|
||||
重大项目补录
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@@ -34,6 +26,14 @@
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
v-if="canMajorProjectSupplement"
|
||||
@click="openProjectDialog('majorSupplement')"
|
||||
>
|
||||
重大项目补录
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
@@ -120,7 +120,12 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div v-if="isChangeDialog"></div>
|
||||
<el-form-item v-if="isChangeDialog" label="变更编号" prop="changeNo">
|
||||
<el-input v-model="form.changeNo" disabled placeholder="系统自动生成" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isChangeDialog" label="变更日期" prop="changeDate">
|
||||
<el-input v-model="form.changeDate" disabled placeholder="系统自动生成" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目类型" prop="projectType">
|
||||
<el-select
|
||||
v-model="form.projectType"
|
||||
@@ -138,7 +143,11 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编号" prop="projectCode">
|
||||
<el-input v-model="form.projectCode" disabled placeholder="系统自动生成" />
|
||||
<el-input
|
||||
v-model="form.projectCode"
|
||||
placeholder="请输入项目编号,不填自动生成"
|
||||
:disabled="dialogType === 'edit'"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
@@ -156,7 +165,7 @@
|
||||
:disabled="isBasicInfoReadonly"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="业务部门" prop="businessDeptId">
|
||||
<el-form-item label="业务部门" prop="businessDeptId" class="project-apply-form__item--full">
|
||||
<el-tree-select
|
||||
v-model="form.businessDeptId"
|
||||
:data="businessDeptTreeOptions"
|
||||
@@ -201,7 +210,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目由来说明" prop="sourceRemark">
|
||||
<el-form-item label="项目由来说明" prop="sourceRemark" class="project-apply-form__item--full">
|
||||
<el-input v-model="form.sourceRemark" maxlength="300" :disabled="isBasicInfoReadonly" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
@@ -790,6 +799,8 @@ const emptyForm = () => ({
|
||||
projectSource: '商务洽谈',
|
||||
sourceRemark: '',
|
||||
changeType: '',
|
||||
changeNo: '',
|
||||
changeDate: '',
|
||||
customerNames: '',
|
||||
carrierNames: '',
|
||||
fundLimit: '',
|
||||
@@ -947,7 +958,6 @@ export default {
|
||||
{ max: 50, message: '项目名称不能超过50个字符', trigger: 'blur' },
|
||||
],
|
||||
projectShortName: [
|
||||
{ required: true, message: '请输入项目简称', trigger: 'blur' },
|
||||
{ max: 20, message: '项目简称不能超过20个字符', trigger: 'blur' },
|
||||
],
|
||||
businessDeptId: [{ required: true, message: '请选择业务部门', trigger: 'change' }],
|
||||
@@ -1193,9 +1203,12 @@ export default {
|
||||
}
|
||||
this.api.getDetail(id).then(res => {
|
||||
const detail = res.data.data || {};
|
||||
const isChange = type === 'change';
|
||||
this.applyProjectDetail({
|
||||
...detail,
|
||||
changeType: type === 'change' ? this.resolveChangeType(detail) : detail.changeType,
|
||||
changeType: isChange ? this.resolveChangeType(detail) : detail.changeType,
|
||||
changeNo: isChange ? this.generateChangeNo(detail) : '',
|
||||
changeDate: isChange ? this.$dayjs().format('YYYY-MM-DD') : '',
|
||||
});
|
||||
});
|
||||
},
|
||||
@@ -1786,6 +1799,10 @@ export default {
|
||||
},
|
||||
];
|
||||
},
|
||||
generateChangeNo(detail) {
|
||||
const base = detail && detail.projectCode ? detail.projectCode : 'XM';
|
||||
return `${base}-BG${this.$dayjs().format('YYYYMMDD')}`;
|
||||
},
|
||||
handleBusinessDeptChange(value) {
|
||||
const dept = this.deptOptions.find(item => item.value === value);
|
||||
this.form.businessDeptName = dept ? dept.rawLabel : '';
|
||||
@@ -1803,7 +1820,7 @@ export default {
|
||||
loadDeptOptions() {
|
||||
getDeptTree().then(res => {
|
||||
const deptTree = res.data.data || [];
|
||||
const businessDeptTree = ['add', 'edit'].includes(this.dialogType)
|
||||
const businessDeptTree = ['add', 'edit', 'majorSupplement'].includes(this.dialogType)
|
||||
? this.excludeExternalOrganization(deptTree)
|
||||
: deptTree;
|
||||
const undertakeDeptTree =
|
||||
@@ -2172,6 +2189,15 @@ export default {
|
||||
min-width: 0 !important;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
// 占满整行的表单项(业务部门 / 项目由来说明)
|
||||
:deep(.project-apply-form__item--full) {
|
||||
grid-column: 1 / -1;
|
||||
|
||||
.el-form-item__content {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__picker-icon {
|
||||
|
||||
@@ -806,10 +806,33 @@ export default {
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
<style lang="scss">
|
||||
// 弹窗字段 label 允许多行(列宽不足时换行)
|
||||
.temporary-credit-limit-dialog .el-form-item__label {
|
||||
white-space: normal;
|
||||
line-height: 1.2;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
// 多行 label 时,必填星号与第一行首字严格对齐(不被 form-item align-items:center 拉到中间)
|
||||
.temporary-credit-limit-dialog {
|
||||
.el-form-item {
|
||||
align-items: flex-start; // 改:取消上下居中,星号不再被拉到 label 块中央
|
||||
}
|
||||
|
||||
.el-form-item__label {
|
||||
height: auto !important;
|
||||
line-height: 18px;
|
||||
padding-top: 7px; // 视觉补偿:让单行 label 仍接近 input 中线
|
||||
}
|
||||
|
||||
// 强制必填星号垂直居中于行盒,与第一行汉字字符中心同基线(关键)
|
||||
.el-form-item.is-required .el-form-item__label::before {
|
||||
display: inline-block;
|
||||
line-height: 18px;
|
||||
height: 18px;
|
||||
vertical-align: middle; // 关键:相对 baseline 上移,与汉字字符中心对齐
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.temporary-credit-limit-dialog .business-crud-page__detail-content .el-descriptions__label {
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
:close-on-press-escape="false"
|
||||
>
|
||||
<div class="category-detail">
|
||||
<div class="category-line">评分类目:{{ currentCategory.categoryName }}</div>
|
||||
<!-- <div class="category-line">评分类目:{{ currentCategory.categoryName }}</div>-->
|
||||
<section-card title="评分项目">
|
||||
<template #extra>
|
||||
<el-button
|
||||
|
||||
@@ -1111,12 +1111,12 @@
|
||||
ref="scoreForm"
|
||||
:model="currentScore"
|
||||
label-position="right"
|
||||
label-width="150"
|
||||
label-width="88"
|
||||
:disabled="readonly"
|
||||
class="score-detail-form"
|
||||
>
|
||||
<el-row :gutter="42">
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="评定日期" required>
|
||||
<el-date-picker
|
||||
v-model="currentScore.scoreDate"
|
||||
@@ -1125,7 +1125,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="拟申请总资金使用额度(万元)" required>
|
||||
<el-input
|
||||
v-model="currentScore.applyCreditLimit"
|
||||
@@ -1134,23 +1134,23 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="最终得分">
|
||||
<el-input :model-value="formatScoreValue(currentScore.finalScore)" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="最大资金使用额度(万元)">
|
||||
<el-input :model-value="formatScoreValue(currentScore.maxCreditLimit)" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="信用等级">
|
||||
<el-input :model-value="formatScoreValue(currentScore.creditLevel)" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="临时申请额度">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="临时申请额度(万元)">
|
||||
<el-input
|
||||
v-model="currentScore.tempApplyCreditLimit"
|
||||
maxlength="18"
|
||||
@@ -1158,7 +1158,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="临时额度申请使用期限">
|
||||
<div class="score-detail-form__range">
|
||||
<el-date-picker
|
||||
@@ -1175,12 +1175,7 @@
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="currentScore.remark" maxlength="200" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="评分量化表" required>
|
||||
<el-select
|
||||
v-model="currentScore.quantificationId"
|
||||
@@ -1199,6 +1194,11 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注">
|
||||
<el-input v-model="currentScore.remark" maxlength="200" :rows="2" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
@@ -1323,7 +1323,17 @@
|
||||
{{ row.originalName || row.name || '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="附件描述" prop="description" min-width="220" />
|
||||
<el-table-column label="附件描述" min-width="220">
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
v-if="!readonly"
|
||||
v-model="row.description"
|
||||
placeholder="请输入附件描述"
|
||||
maxlength="200"
|
||||
/>
|
||||
<span v-else>{{ row.description || '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="文件大小" min-width="120" align="center">
|
||||
<template #default="{ row }">
|
||||
<span>{{ formatAttachmentSize(row.size) || '-' }}</span>
|
||||
@@ -4657,6 +4667,23 @@ export default {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
// 必填星号 * 与首行文字垂直居中
|
||||
// Element Plus 的 .el-form-item__label 默认 inline-flex + flex-start,
|
||||
// 多行 label 时 :before 与文字行盒高度不一致导致错位。
|
||||
// 通过 padding 把内容下沉到 label 中线,让 * 视觉中心落在第一行文字中心。
|
||||
:deep(.el-form-item.is-required .el-form-item__label) {
|
||||
align-items: flex-start;
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
|
||||
:deep(.el-form-item.is-required .el-form-item__label::before) {
|
||||
display: inline-block;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
:deep(.el-form-item__content > .el-input),
|
||||
:deep(.el-form-item__content > .el-select),
|
||||
:deep(.el-form-item__content > .el-cascader),
|
||||
@@ -4824,13 +4851,15 @@ export default {
|
||||
:deep(.el-form-item__label) {
|
||||
color: #70757a;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
white-space: normal;
|
||||
word-break: break-all;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
:deep(.el-input),
|
||||
:deep(.el-select),
|
||||
:deep(.el-date-editor) {
|
||||
width: 100%;
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user