-
新建导入新建导入
批量删除
@@ -84,7 +85,11 @@
>
查看编辑编辑删除
@@ -173,13 +178,14 @@
/>
-
-
+
+
@@ -1133,5 +1247,41 @@ const confirmImport = async () => {
:deep(.el-table .el-date-editor) {
width: 100%;
}
+
+ &__footer {
+ position: fixed;
+ z-index: 20;
+ right: 0;
+ bottom: 0;
+ left: 230px;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ min-height: 64px;
+ box-sizing: border-box;
+ padding: 12px 24px;
+ background: #fff;
+ border-top: 1px solid #eff1f7;
+ box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
+
+ // 统一 12px 间距,与全站底部操作栏(去 gap,由相邻按钮 margin 提供)一致
+ .el-button + .el-button {
+ margin-left: 12px;
+ }
+ }
+
+ &--page {
+ min-height: calc(100vh - 120px);
+ padding: 12px 24px 96px;
+ background: #fff;
+ }
+}
+
+:global(.avue--collapse .waybill-import-create__footer) {
+ left: 60px;
+}
+
+:global(.avue-layout--horizontal .waybill-import-create__footer) {
+ left: 0;
}
diff --git a/src/views/business/contract-manage.vue b/src/views/business/contract-manage.vue
index 750472b..75f5c71 100644
--- a/src/views/business/contract-manage.vue
+++ b/src/views/business/contract-manage.vue
@@ -907,6 +907,27 @@ const defaultForm = () => ({
feeGenerationMode: 'system',
remark: '',
});
+// 复制新增:仅保留可编辑字段与明细,剔除主键、编号、审批与流程信息
+const createCopiedDetail = (detail = {}) => {
+ const form = defaultForm();
+ Object.keys(form).forEach(prop => {
+ if (Object.prototype.hasOwnProperty.call(detail, prop)) form[prop] = detail[prop];
+ });
+ return {
+ ...form,
+ contractNo: '',
+ feeGenerationMode: detail.feeGenerationMode || '',
+ billingEnabled: detail.billingEnabled,
+ contractFileJson: detail.contractFileJson || '',
+ attachmentsJson: detail.attachmentsJson || '',
+ billingPlanJson: detail.billingPlanJson || '',
+ paymentRatioJson: detail.paymentRatioJson || '',
+ settlementRuleJson: detail.settlementRuleJson || '',
+ preSettlementConfigJson: detail.preSettlementConfigJson || '',
+ formalSettlementConfigJson: detail.formalSettlementConfigJson || '',
+ changeRecordJson: '',
+ };
+};
const parseArray = value => {
if (Array.isArray(value)) return value;
if (!value) return [];
@@ -1458,11 +1479,7 @@ export default {
);
},
canCopy(row) {
- return (
- this.hasPermission(`${this.config.permission}_copy`) &&
- !row.readonly &&
- typeof this.api.copy === 'function'
- );
+ return this.hasPermission(`${this.config.permission}_copy`) && !row.readonly;
},
editLabel(row) {
return this.config.editLabelStatusMap?.[row.approvalStatus] || '编辑';
@@ -1559,6 +1576,11 @@ export default {
initFormPage() {
this.resetFormState();
if (this.formMode === 'add') {
+ const copyId = this.$route.query.copyId;
+ if (copyId) {
+ this.api.getDetail(copyId).then(res => this.applyCopyDetail(res.data?.data || {}));
+ return;
+ }
this.loadContractPartyOptions();
return;
}
@@ -1624,6 +1646,12 @@ export default {
this.syncCurrentOrganizationOption();
this.loadContractPartyOptions();
},
+ applyCopyDetail(detail) {
+ this.applyDetail(createCopiedDetail(detail));
+ this.form.handlerUserName =
+ this.userInfo?.realName || this.userInfo?.userName || this.userInfo?.account || '';
+ this.$nextTick(() => this.$refs.contractForm?.clearValidate());
+ },
closeForm() {
this.$router.$avueRouter?.closeTag?.();
this.$router.push('/business/contract-manage');
@@ -1796,10 +1824,15 @@ export default {
if (this.contractPartyLoading) return;
const requestId = ++this.contractPartyRequestId;
this.contractPartyLoading = true;
- getCustomerArchiveList(1, 9999, { status: 1, approvalStatus: 'approved' })
- .then(res => {
+ const queryParams = { status: 1, approvalStatus: 'approved' };
+ Promise.all([
+ getCustomerArchiveList(1, 9999, queryParams),
+ getCustomerArchiveList(1, 9999, { ...queryParams, accessType: 'temporary' }),
+ ])
+ .then(responses => {
if (requestId !== this.contractPartyRequestId) return;
- const names = extractRecords(res)
+ const names = responses
+ .flatMap(extractRecords)
.map(item => item.fullName || item.shortName || item.customerName || item.customerCode)
.map(name => String(name || '').trim())
.filter(Boolean);
@@ -2336,12 +2369,10 @@ export default {
});
},
handleCopy(row) {
- this.$confirm('确定复制该合同?', '提示', { type: 'warning' })
- .then(() => this.api.copy(row.id))
- .then(() => {
- this.$message.success('复制成功');
- this.onLoad(this.page, this.query);
- });
+ this.$router.push({
+ path: '/business/contract-manage/form',
+ query: { mode: 'add', copyId: row.id, name: '新增合同管理' },
+ });
},
openFlow(row, loaded = false) {
const processInstanceId = row.processInstanceId || row.processInstanceID || row.procInstId;
diff --git a/src/views/business/waybill-import-form.vue b/src/views/business/waybill-import-form.vue
new file mode 100644
index 0000000..e2c978d
--- /dev/null
+++ b/src/views/business/waybill-import-form.vue
@@ -0,0 +1,38 @@
+
+
+ 新建导入
+
+
+
+
+
+
+
diff --git a/src/views/payment/payment-application-form.vue b/src/views/payment/payment-application-form.vue
index d924b07..13cee87 100644
--- a/src/views/payment/payment-application-form.vue
+++ b/src/views/payment/payment-application-form.vue
@@ -447,9 +447,6 @@
-
- 确定
-
-
- 确定
-
+ >
+