Merge remote-tracking branch 'websoft/master'
This commit is contained in:
@@ -1883,6 +1883,12 @@
|
||||
<span>自动生成结算单</span>
|
||||
<el-radio-group v-model="settlementRuleForm.autoGenerate" :disabled="dialogReadonly">
|
||||
<el-radio :label="1">开启</el-radio>
|
||||
<el-tooltip
|
||||
content="开启时,系统根据配置规则归集运单,定时生成结算单"
|
||||
placement="top"
|
||||
>
|
||||
<el-icon class="settlement-switch-tip"><QuestionFilled /></el-icon>
|
||||
</el-tooltip>
|
||||
<el-radio :label="0">关闭</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
@@ -14453,6 +14459,13 @@ export default {
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.settlement-switch-tip {
|
||||
margin: 0 4px;
|
||||
color: #a8abb2;
|
||||
cursor: help;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
&__module-form {
|
||||
width: 100%;
|
||||
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
</section>
|
||||
|
||||
<section class="change-section">
|
||||
<div class="dialog-section-title">合同文件</div>
|
||||
<div class="attachment-head">
|
||||
<div class="section-head">
|
||||
<div class="dialog-section-title">合同文件</div>
|
||||
<el-button type="primary" :disabled="!contractFileRows.length" @click="handleContractFileBatchDownload">批量下载</el-button>
|
||||
</div>
|
||||
<el-table :data="contractFileRows" border class="change-table" @selection-change="selectedContractFiles = $event"><el-table-column type="selection" width="55" /><el-table-column type="index" label="序号" width="70" /><el-table-column label="文件名" min-width="240"><template #default="{ row }"><el-link type="primary" @click="previewAttachment(row, contractFileRows)">{{ row.originalName || row.name }}</el-link></template></el-table-column><el-table-column label="文件大小" width="120"><template #default="{ row }">{{ formatFileSize(row.size) }}</template></el-table-column><el-table-column prop="uploadUserName" label="上传人" width="140" /><el-table-column prop="uploadTime" label="上传时间" width="170" /><el-table-column label="操作" width="100"><template #default="{ $index }"><el-link type="danger" @click="removeContractFile($index)">删除</el-link></template></el-table-column></el-table>
|
||||
@@ -52,7 +52,16 @@
|
||||
<el-tab-pane label="预结算配置" name="pre" />
|
||||
<el-tab-pane label="正式结算配置" name="formal" />
|
||||
</el-tabs>
|
||||
<div class="settlement-switch"><span>自动生成结算单</span><el-radio-group v-model="settlementRule.autoGenerate"><el-radio :label="1">开启</el-radio><el-radio :label="0">关闭</el-radio></el-radio-group></div>
|
||||
<div class="settlement-switch">
|
||||
<span>自动生成结算单</span>
|
||||
<el-radio-group v-model="settlementRule.autoGenerate">
|
||||
<el-radio :label="1">开启</el-radio>
|
||||
<el-tooltip content="开启时,系统根据配置规则归集运单,定时生成结算单" placement="top">
|
||||
<el-icon class="settlement-switch-tip"><QuestionFilled /></el-icon>
|
||||
</el-tooltip>
|
||||
<el-radio :label="0">关闭</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<el-form v-if="settlementRule.autoGenerate === 1" :model="settlementRule" label-position="right" label-width="auto" class="settlement-form">
|
||||
<el-form-item label="账单起始日期" required><el-date-picker v-model="settlementRule.billStartDate" type="date" placeholder="请选择账单起始日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" /></el-form-item>
|
||||
<el-form-item label="结算类型" required><el-select v-model="settlementRule.settlementType" placeholder="请选择结算类型" @change="handleSettlementTypeChange"><el-option v-for="item in settlementTypeOptions" :key="item" :label="item" :value="item" /></el-select></el-form-item>
|
||||
@@ -206,11 +215,13 @@ export default {
|
||||
.change-table { margin: 16px 0; }
|
||||
.ratio-tip { margin-bottom: 8px; color: #f56c6c; }
|
||||
.unit { margin-left: 8px; }
|
||||
.attachment-head { display: flex; align-items: center; justify-content: flex-end; margin-bottom: 12px; }
|
||||
.attachment-upload { display: flex; justify-content: flex-start; margin-top: 12px; }
|
||||
.attachment-upload .vehicle-attachment-upload { width: auto; }
|
||||
.attachment-upload .el-upload { display: inline-flex; }
|
||||
.settlement-switch { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
|
||||
// 问号提示图标紧靠「开启」一侧:清掉开启 radio 自带的右间距,图标与「关闭」之间留大间距
|
||||
.settlement-switch :deep(.el-radio:first-child) { margin-right: 0; }
|
||||
.settlement-switch-tip { margin: 0 32px 0 8px; color: #a8abb2; cursor: help; font-size: 14px; }
|
||||
.settlement-form { display: grid; grid-template-columns: repeat(3, minmax(240px, 1fr)); gap: 8px 28px; }
|
||||
.change-reason-section { margin: 20px 0; }
|
||||
.page-footer {
|
||||
|
||||
@@ -163,6 +163,17 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属组织" prop="organizationName">
|
||||
<el-cascader
|
||||
v-model="organizationCascaderValue"
|
||||
:options="organizationOptions"
|
||||
:props="organizationCascaderProps"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
@visible-change="visible => visible && loadOrganizationOptions()"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="甲方" prop="partyA">
|
||||
<el-select
|
||||
v-model="form.partyA"
|
||||
@@ -197,6 +208,15 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="签订日期" prop="signDate">
|
||||
<el-date-picker
|
||||
v-model="form.signDate"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择签订日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同期限" prop="startDate">
|
||||
<div class="contract-manage-form__date-range">
|
||||
<el-date-picker
|
||||
@@ -216,28 +236,29 @@
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属组织" prop="organizationName">
|
||||
<el-cascader
|
||||
v-model="organizationCascaderValue"
|
||||
:options="organizationOptions"
|
||||
:props="organizationCascaderProps"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
@visible-change="visible => visible && loadOrganizationOptions()"
|
||||
/>
|
||||
<el-form-item label="回款账期">
|
||||
<el-input
|
||||
v-model="form.paymentDays"
|
||||
placeholder="请输入"
|
||||
@input="value => integerInput('paymentDays', value)"
|
||||
><template #suffix>天</template></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="经办人">
|
||||
<el-input v-model="form.handlerUserName" disabled />
|
||||
<el-form-item label="开票周期">
|
||||
<el-input
|
||||
v-model="form.invoiceCycle"
|
||||
placeholder="请输入"
|
||||
@input="value => positiveIntegerInput('invoiceCycle', value)"
|
||||
><template #suffix>天</template></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="签订日期" prop="signDate">
|
||||
<el-date-picker
|
||||
v-model="form.signDate"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择签订日期"
|
||||
/>
|
||||
<el-form-item label="结算币种" prop="settlementCurrency">
|
||||
<el-select v-model="form.settlementCurrency" placeholder="请选择结算币种" clearable>
|
||||
<el-option
|
||||
v-for="item in settlementCurrencyOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同格式" prop="contractFormat">
|
||||
<el-select v-model="form.contractFormat" placeholder="请选择合同格式">
|
||||
@@ -249,28 +270,18 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否需要加盖法人章" prop="legalSealFlag">
|
||||
<el-select v-model="form.legalSealFlag" placeholder="请选择">
|
||||
<el-option label="否" :value="0" />
|
||||
<el-option label="是" :value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="一式">
|
||||
<el-input
|
||||
v-model="form.copyCount"
|
||||
placeholder="请输入"
|
||||
@input="value => integerInput('copyCount', value)"
|
||||
><template #suffix>份</template></el-input
|
||||
><template #suffix>份</template></el-input
|
||||
>
|
||||
</el-form-item>
|
||||
<el-form-item label="结算币种" prop="settlementCurrency">
|
||||
<el-select v-model="form.settlementCurrency" placeholder="请选择结算币种" clearable>
|
||||
<el-option
|
||||
v-for="item in settlementCurrencyOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-form-item label="是否需要加盖法人章" prop="legalSealFlag">
|
||||
<el-select v-model="form.legalSealFlag" placeholder="请选择">
|
||||
<el-option label="否" :value="0" />
|
||||
<el-option label="是" :value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="结算方式" prop="settlementMode">
|
||||
@@ -283,19 +294,8 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="开票周期">
|
||||
<el-input
|
||||
v-model="form.invoiceCycle"
|
||||
placeholder="请输入"
|
||||
@input="value => positiveIntegerInput('invoiceCycle', value)"
|
||||
><template #suffix>天</template></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="回款账期">
|
||||
<el-input
|
||||
v-model="form.paymentDays"
|
||||
placeholder="请输入"
|
||||
@input="value => integerInput('paymentDays', value)"
|
||||
><template #suffix>天</template></el-input>
|
||||
<el-form-item label="经办人">
|
||||
<el-input v-model="form.handlerUserName" disabled />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label="备注" prop="remark" class="contract-manage-form__remark">
|
||||
@@ -356,6 +356,12 @@
|
||||
<span>自动生成结算单</span>
|
||||
<el-radio-group v-model="settlementRuleForm.autoGenerate">
|
||||
<el-radio :label="1">开启</el-radio>
|
||||
<el-tooltip
|
||||
content="开启时,系统根据配置规则归集运单,定时生成结算单"
|
||||
placement="top"
|
||||
>
|
||||
<el-icon class="settlement-switch-tip"><QuestionFilled /></el-icon>
|
||||
</el-tooltip>
|
||||
<el-radio :label="0">关闭</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
@@ -431,7 +437,7 @@
|
||||
<el-icon style="margin-left: 4px; color: #909399; cursor: pointer"><el-icon-question-filled /></el-icon>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<el-button type="primary" plain @click="addPaymentRatio">添加</el-button>
|
||||
<el-button type="primary" @click="addPaymentRatio">添加</el-button>
|
||||
</div>
|
||||
<el-table :data="paymentRatioRows" border>
|
||||
<el-table-column type="index" label="序号" width="80" align="center" />
|
||||
@@ -1170,8 +1176,8 @@ const AttachmentSection = defineComponent({
|
||||
class: 'contract-manage-form__section contract-manage-form__section--panel',
|
||||
},
|
||||
[
|
||||
h('div', { class: 'dialog-section-title' }, this.title),
|
||||
h('div', { class: 'contract-manage-form__attachment-head' }, [
|
||||
h('div', { class: 'dialog-section-title' }, this.title),
|
||||
h(
|
||||
ElButton,
|
||||
{ type: 'primary', disabled: !this.rows.length, onClick: this.batchDownload },
|
||||
@@ -1270,6 +1276,8 @@ export default {
|
||||
selectedProjectId: '',
|
||||
settlementCurrencyOptions: [],
|
||||
settlementModeDictOptions: [],
|
||||
contractFormatDictOptions: [],
|
||||
contractCategoryDictOptions: [],
|
||||
contractPartyAOptions: [],
|
||||
contractPartyBOptions: [],
|
||||
contractPartyLoading: false,
|
||||
@@ -1358,7 +1366,9 @@ export default {
|
||||
return this.selectionList.map(item => item.id).join(',');
|
||||
},
|
||||
contractCategoryOptions() {
|
||||
return this.columnOptions('contractCategory');
|
||||
return this.contractCategoryDictOptions.length
|
||||
? this.contractCategoryDictOptions
|
||||
: this.columnOptions('contractCategory');
|
||||
},
|
||||
signTypeOptions() {
|
||||
return this.columnOptions('signType');
|
||||
@@ -1372,7 +1382,9 @@ export default {
|
||||
: this.columnOptions('settlementMode');
|
||||
},
|
||||
contractFormatOptions() {
|
||||
return this.columnOptions('contractFormat');
|
||||
return this.contractFormatDictOptions.length
|
||||
? this.contractFormatDictOptions
|
||||
: this.columnOptions('contractFormat');
|
||||
},
|
||||
organizationCascaderProps() {
|
||||
return {
|
||||
@@ -1822,7 +1834,9 @@ export default {
|
||||
Promise.all([
|
||||
getSystemDictionary({ code: 'currency_type' }),
|
||||
getBizDictionary({ code: 'settle_method' }),
|
||||
]).then(([currencyRes, methodRes]) => {
|
||||
getBizDictionary({ code: 'contractFormat' }),
|
||||
getBizDictionary({ code: 'contractCategory' }),
|
||||
]).then(([currencyRes, methodRes, formatRes, categoryRes]) => {
|
||||
const records = response => {
|
||||
const data = response?.data?.data || response?.data || [];
|
||||
return Array.isArray(data) ? data : data.records || [];
|
||||
@@ -1835,10 +1849,26 @@ export default {
|
||||
label: item.dictValue,
|
||||
value: item.dictKey,
|
||||
}));
|
||||
this.contractFormatDictOptions = records(formatRes).map(item => ({
|
||||
label: item.dictValue,
|
||||
value: item.dictKey,
|
||||
}));
|
||||
this.contractCategoryDictOptions = records(categoryRes).map(item => ({
|
||||
label: item.dictValue,
|
||||
value: item.dictKey,
|
||||
}));
|
||||
['settlementMode'].forEach(prop => {
|
||||
const column = this.findColumn(this.tableOption.column, prop);
|
||||
if (column) column.dicData = this.settlementModeDictOptions;
|
||||
});
|
||||
const formatColumn = this.findColumn(this.tableOption.column, 'contractFormat');
|
||||
if (formatColumn && this.contractFormatDictOptions.length) {
|
||||
formatColumn.dicData = this.contractFormatDictOptions;
|
||||
}
|
||||
const categoryColumn = this.findColumn(this.tableOption.column, 'contractCategory');
|
||||
if (categoryColumn && this.contractCategoryDictOptions.length) {
|
||||
categoryColumn.dicData = this.contractCategoryDictOptions;
|
||||
}
|
||||
});
|
||||
},
|
||||
syncCurrentProjectOption() {
|
||||
@@ -2428,7 +2458,8 @@ export default {
|
||||
prop === 'approvalStatus' ||
|
||||
prop === 'contractCategory' ||
|
||||
prop === 'signType' ||
|
||||
prop === 'effectiveType'
|
||||
prop === 'effectiveType' ||
|
||||
prop === 'contractFormat'
|
||||
) {
|
||||
return this.displayStatus(this.detailRow, prop);
|
||||
}
|
||||
@@ -2733,6 +2764,13 @@ export default {
|
||||
align-items: center;
|
||||
gap: 20px;
|
||||
margin-bottom: 16px;
|
||||
|
||||
.settlement-switch-tip {
|
||||
margin: 0 4px;
|
||||
color: #a8abb2;
|
||||
cursor: help;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
&__settlement-grid {
|
||||
@@ -2819,8 +2857,13 @@ export default {
|
||||
:deep(.contract-manage-form__attachment-head) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 16px;
|
||||
|
||||
// 标题与「批量下载」按钮同排、垂直居中,消除标题自身下边距
|
||||
.dialog-section-title {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.contract-manage-form__attachment-upload) {
|
||||
|
||||
Reference in New Issue
Block a user