|
@@ -1,16 +1,15 @@
|
|
|
<script>
|
|
|
import useColumns from "./columns";
|
|
|
-import { REFER } from "@/components/popover-select/api";
|
|
|
import {
|
|
|
EDIT,
|
|
|
ITEM,
|
|
|
TABLE,
|
|
|
ALTERATION,
|
|
|
} from "@/api/business/purchase/contract";
|
|
|
-import { tax, currency } from "@/components/popover-select-v2/fetch";
|
|
|
+import { tax } from "@/components/popover-select-v2/fetch";
|
|
|
|
|
|
export default {
|
|
|
- name: "EditDrawer",
|
|
|
+ name: "EditFormModel",
|
|
|
props: {
|
|
|
selectData: {
|
|
|
type: [Array],
|
|
@@ -20,6 +19,9 @@ export default {
|
|
|
type: Object,
|
|
|
require: true,
|
|
|
},
|
|
|
+ title: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
},
|
|
|
components: {
|
|
|
ElSuperForm: () => import("@/components/super-form/index.vue"),
|
|
@@ -39,10 +41,8 @@ export default {
|
|
|
const rules = this.$init.rules(TableColumns);
|
|
|
const params = this.$init.params([...TabColumns, ...TableColumns]);
|
|
|
return {
|
|
|
- title: "编 辑",
|
|
|
- width: "100%",
|
|
|
- visible: false,
|
|
|
loading: false,
|
|
|
+ loadingText: "",
|
|
|
rules: rules,
|
|
|
params: params,
|
|
|
tabName: tabName,
|
|
@@ -51,21 +51,9 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- disabled: {
|
|
|
+ id: {
|
|
|
get() {
|
|
|
- const {
|
|
|
- selectData,
|
|
|
- selectData: [{ status } = {}],
|
|
|
- } = this;
|
|
|
- if (selectData.length !== 1) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (selectData.length === 1 && status === "1") {
|
|
|
- return true;
|
|
|
- }
|
|
|
- if (selectData.length === 1 && status === "2") {
|
|
|
- return true;
|
|
|
- }
|
|
|
+ return this.$props.selectData[0].id;
|
|
|
},
|
|
|
set() {},
|
|
|
},
|
|
@@ -138,6 +126,7 @@ export default {
|
|
|
try {
|
|
|
// try
|
|
|
this.loading = true;
|
|
|
+ this.loadingText = "获取合同中";
|
|
|
const { code, data } = await ITEM(prop);
|
|
|
if (code === 200) {
|
|
|
this.params = data;
|
|
@@ -153,25 +142,11 @@ export default {
|
|
|
},
|
|
|
//
|
|
|
async open() {
|
|
|
- const { selectData } = this.$props;
|
|
|
- const [{ id }] = selectData;
|
|
|
- this.visible = true;
|
|
|
- await this.fetchItem(id);
|
|
|
+ await this.fetchItem(this.id);
|
|
|
},
|
|
|
//
|
|
|
async hide() {
|
|
|
- const {
|
|
|
- TabColumns,
|
|
|
- TableColumns,
|
|
|
- TabColumns: [
|
|
|
- {
|
|
|
- item: { key: tabName },
|
|
|
- },
|
|
|
- ],
|
|
|
- } = useColumns();
|
|
|
- this.visible = false;
|
|
|
- this.tabName = tabName;
|
|
|
- this.params = this.$init.params([...TabColumns, ...TableColumns]);
|
|
|
+ this.$emit("close");
|
|
|
},
|
|
|
//
|
|
|
async useRowAdd(prop) {
|
|
@@ -188,6 +163,7 @@ export default {
|
|
|
try {
|
|
|
// try
|
|
|
this.loading = true;
|
|
|
+ this.loadingText = "删除子表中";
|
|
|
const { code } = REMOVE(id, prop);
|
|
|
if (code === 200) {
|
|
|
this.fetchItem(contractId);
|
|
@@ -215,8 +191,10 @@ export default {
|
|
|
// try
|
|
|
this.loading = true;
|
|
|
if (contractId) {
|
|
|
+ this.loadingText = "更新子表中";
|
|
|
await EDIT(row, prop);
|
|
|
} else {
|
|
|
+ this.loadingText = "新增信息中";
|
|
|
await ADD({ ...row, contractId: id }, prop);
|
|
|
}
|
|
|
} catch (err) {
|
|
@@ -235,6 +213,7 @@ export default {
|
|
|
try {
|
|
|
// try
|
|
|
this.loading = true;
|
|
|
+ this.loadingText = "更新合同中";
|
|
|
const {
|
|
|
params,
|
|
|
params: { status },
|
|
@@ -243,7 +222,7 @@ export default {
|
|
|
const { msg, code } = await TASK(params);
|
|
|
if (code === 200) {
|
|
|
this.hide();
|
|
|
- this.$emit("success");
|
|
|
+ this.$emit("submit-success");
|
|
|
this.$notify.success(msg);
|
|
|
}
|
|
|
} catch (err) {
|
|
@@ -259,131 +238,117 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
},
|
|
|
- created() {},
|
|
|
+ created() {
|
|
|
+ this.open();
|
|
|
+ },
|
|
|
mounted() {},
|
|
|
destroyed() {},
|
|
|
};
|
|
|
</script>
|
|
|
<template>
|
|
|
- <el-button
|
|
|
- v-bind="$attrs"
|
|
|
- v-on="$listeners"
|
|
|
- :disabled="disabled"
|
|
|
- @click="open"
|
|
|
+ <div
|
|
|
+ v-loading="loading"
|
|
|
+ :element-loading-text="loadingText"
|
|
|
+ style="height: 100vh; display: flex; flex-direction: column"
|
|
|
>
|
|
|
- {{ title }}
|
|
|
- <el-drawer
|
|
|
- :size="width"
|
|
|
- :title="title"
|
|
|
- :visible.sync="visible"
|
|
|
- append-to-body
|
|
|
- :show-close="false"
|
|
|
- destroy-on-close
|
|
|
- @close="hide"
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 50px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 18px;
|
|
|
+ "
|
|
|
>
|
|
|
- <div
|
|
|
- slot="title"
|
|
|
- style="
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- "
|
|
|
+ <h4 class="m-0" style="font-weight: 500; flex: 1">{{ title }}</h4>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :size="$attrs.size"
|
|
|
+ :loading="loading"
|
|
|
+ @click="useSubmit('superForm')"
|
|
|
+ >确 认</el-button
|
|
|
>
|
|
|
- <h3 class="m-0">{{ title }}</h3>
|
|
|
- <div style="text-align: right">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
+ <el-button :size="$attrs.size" :loading="loading" @click="hide"
|
|
|
+ >取 消</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div v-if="params.code" style="flex: 1; overflow-y: auto">
|
|
|
+ <el-super-form
|
|
|
+ v-model="params"
|
|
|
+ :dict="dict"
|
|
|
+ :rules="rules"
|
|
|
+ :size="$attrs.size"
|
|
|
+ :columns="TableColumns"
|
|
|
+ ref="superForm"
|
|
|
+ label-width="auto"
|
|
|
+ label-position="right"
|
|
|
+ style="padding: 18px"
|
|
|
+ >
|
|
|
+ <template slot="paymentAgreement" slot-scope="scope">
|
|
|
+ <component
|
|
|
+ v-bind="scope.attr"
|
|
|
+ v-model="scope.row[scope.item.key]"
|
|
|
:size="$attrs.size"
|
|
|
- :loading="loading"
|
|
|
- @click="useSubmit('superForm')"
|
|
|
- >确 认</el-button
|
|
|
- >
|
|
|
- <el-button :size="$attrs.size" :loading="loading" @click="hide"
|
|
|
- >取 消</el-button
|
|
|
+ :source.sync="scope.row"
|
|
|
+ @change="changePaymentAgreement({ ...scope, selectData: $event })"
|
|
|
>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div
|
|
|
- v-loading="loading"
|
|
|
- style="height: 100%; display: flex; flex-direction: column"
|
|
|
+ </component> </template
|
|
|
+ ></el-super-form>
|
|
|
+ </div>
|
|
|
+ <el-tabs v-if="params.code" v-model="tabName" style="margin: 0 18px 18px">
|
|
|
+ <el-tab-pane
|
|
|
+ v-for="{ item, TableColumns: columns } in TabColumns"
|
|
|
+ :key="item.key"
|
|
|
+ :label="item.title"
|
|
|
+ :name="item.key"
|
|
|
+ lazy
|
|
|
>
|
|
|
- <el-super-form
|
|
|
- v-model="params"
|
|
|
- :dict="dict"
|
|
|
- :rules="rules"
|
|
|
- :size="$attrs.size"
|
|
|
- :columns="TableColumns"
|
|
|
- ref="superForm"
|
|
|
- label-width="auto"
|
|
|
- label-position="right"
|
|
|
- style="padding: 18px; flex: 1; overflow-y: auto"
|
|
|
- >
|
|
|
- <template slot="paymentAgreement" slot-scope="scope">
|
|
|
- <component
|
|
|
- v-bind="scope.attr"
|
|
|
- v-model="scope.row[scope.item.key]"
|
|
|
- :size="$attrs.size"
|
|
|
- :source.sync="scope.row"
|
|
|
- @change="changePaymentAgreement({ ...scope, selectData: $event })"
|
|
|
- >
|
|
|
- </component> </template
|
|
|
- ></el-super-form>
|
|
|
- <el-tabs v-model="tabName" style="margin: 0 18px 18px">
|
|
|
- <el-tab-pane
|
|
|
- v-for="{ item, TableColumns: columns } in TabColumns"
|
|
|
- :key="item.key"
|
|
|
- :label="item.title"
|
|
|
- :name="item.key"
|
|
|
- lazy
|
|
|
+ <div style="height: 25vh; display: flex">
|
|
|
+ <el-super-table
|
|
|
+ v-model="params[item.key]"
|
|
|
+ :dict="dict"
|
|
|
+ :ref="tabName"
|
|
|
+ :columns="columns"
|
|
|
+ :size="$attrs.size"
|
|
|
+ index
|
|
|
>
|
|
|
- <div style="height: 25vh; display: flex">
|
|
|
- <el-super-table
|
|
|
- v-model="params[item.key]"
|
|
|
- :dict="dict"
|
|
|
- :ref="tabName"
|
|
|
- :columns="columns"
|
|
|
+ <template slot="materialName" slot-scope="scope">
|
|
|
+ <component
|
|
|
+ v-bind="scope.attr"
|
|
|
+ v-model="scope.row[scope.item.key]"
|
|
|
:size="$attrs.size"
|
|
|
- index
|
|
|
+ :source.sync="scope.row"
|
|
|
+ @change="changeMaterialName(scope)"
|
|
|
>
|
|
|
- <template slot="materialName" slot-scope="scope">
|
|
|
- <component
|
|
|
- v-bind="scope.attr"
|
|
|
- v-model="scope.row[scope.item.key]"
|
|
|
- :size="$attrs.size"
|
|
|
- :source.sync="scope.row"
|
|
|
- @change="changeMaterialName(scope)"
|
|
|
- >
|
|
|
- </component>
|
|
|
- </template>
|
|
|
- <el-table-column fixed="right" label="操作" width="100">
|
|
|
- <template slot="header" slot-scope="scope">
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- :size="$attrs.size"
|
|
|
- @click="useRowAdd(tabName)"
|
|
|
- >增行
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- :size="$attrs.size"
|
|
|
- @click.native.prevent="useRowSubmit(tabName, scope)"
|
|
|
- >更新
|
|
|
- </el-button>
|
|
|
- <el-button
|
|
|
- type="text"
|
|
|
- :size="$attrs.size"
|
|
|
- @click.native.prevent="useRowRemove(tabName, scope)"
|
|
|
- >删行
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-super-table>
|
|
|
- </div>
|
|
|
- </el-tab-pane>
|
|
|
- </el-tabs>
|
|
|
- </div>
|
|
|
- </el-drawer>
|
|
|
- </el-button>
|
|
|
+ </component>
|
|
|
+ </template>
|
|
|
+ <el-table-column fixed="right" label="操作" width="100">
|
|
|
+ <template slot="header" slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ :size="$attrs.size"
|
|
|
+ @click="useRowAdd(tabName)"
|
|
|
+ >增行
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ :size="$attrs.size"
|
|
|
+ @click.native.prevent="useRowSubmit(tabName, scope)"
|
|
|
+ >更新
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ :size="$attrs.size"
|
|
|
+ @click.native.prevent="useRowRemove(tabName, scope)"
|
|
|
+ >删行
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-super-table>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </div>
|
|
|
</template>
|