新增合同页面

master
xy 2 years ago
parent 43f887fcfd
commit be35664b8a

2
.gitignore vendored

@ -17,3 +17,5 @@ tests/**/coverage/
*.ntvs*
*.njsproj
*.sln
!/.env.production
!/.env.development

@ -125,6 +125,7 @@
/>
</el-form-item>
<template v-if="!isLedger">
<el-form-item prop="is_contract" label="是否需要签订合同">
<el-switch
v-model="form.is_contract"
@ -304,6 +305,55 @@
@on-close="closeTag(i)">{{ i.name.slice(0,17) }}</Tag>
</div>
</el-form-item>
</template>
<template v-else>
<el-form-item prop="is_contract" label="是否需要签订合同">
<el-switch
disabled
:value="true"
active-text="是"
inactive-text="否"
/>
</el-form-item>
<el-form-item prop="contract_type" label="是否需要签订合同">
<el-select style="width: 100%" v-model="form.contract_type">
<el-option v-for="(item,index) in contractTypes" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="supply" label="承包商\供应商">
<el-input style="100%;" placeholder="请填写承包商\供应商" v-model="form.supply" />
</el-form-item>
<el-form-item prop="money" label="合同金额(元)">
<InputNumber
style="width: 100%"
:min="0"
:step="10000"
:precision="2"
:active-change="false"
v-model="form.money"
:formatter="
(value) => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
"
:parser="(value) => value.replace(/\$\s?|(,*)/g, '')"
></InputNumber>
</el-form-item>
<el-form-item
prop="is_framework"
label="是否新生成框架协议"
v-show="isShowIsFramework"
>
<el-switch
active-text="是"
inactive-text="否"
:active-value="1"
:inactive-value="0"
/>
</el-form-item>
</template>
</el-form>
<div style="text-align: center">
@ -665,7 +715,7 @@
shape="circle"
@click="
$router.push({
path: '/contract/contract/contractList',
path: isLedger ? '/contract/contract/contractLedger' : '/contract/contract/contractList',
query: {
keyword: form.name,
},
@ -734,6 +784,11 @@ export default {
{ label: "货物", value: 2 },
{ label: "工程", value: 3 },
], //
contractTypes: [
{ label: "收入类", value: 1 },
{ label: "支出类", value: 2 },
{ label: "技术协议", value: 3 },
],
form: {
type: "",
is_plan: 1,
@ -778,182 +833,182 @@ export default {
label: "已办结",
},
],
rules: {
name: [
{
required: true,
message: "必填",
trigger: "blur",
},
{
validator: async (rule, value, callback) => {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
const { msg } = await checkContractName({ name: value });
if (msg === "未重名") {
callback();
} else {
callback(new Error(msg));
}
}
},
trigger: "blur",
},
],
supply: [
{
validator: (rule, value, callback) => {
if (this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
type: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
purchase_type_id: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
purchase_way_id: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
money: [
{
validator: (rule, value, callback) => {
if (this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
if (/^\d+(\.\d+)?$/.test(value)) {
callback();
} else {
callback(new Error("必须为数字"));
}
}
} else {
callback();
}
},
trigger: "blur",
},
],
plan_money: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
if (/^\d+(\.\d+)?$/.test(value)) {
callback();
} else {
callback(new Error("必须为数字"));
}
}
} else {
callback();
}
},
trigger: "blur",
},
],
money_way_id: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
contract_plan_links: [
{
validator: (rule, value, callback) => {
if (this.form.is_plan) {
if (this.form.contract_plan_links.length === 0) {
return callback(new Error("必选"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
contract_to_contracts: [
{
validator: (rule, value, callback) => {
if (this.form.use_framework_buy) {
if (this.form.contract_to_contracts.length === 0) {
return callback(new Error("必选"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
},
// rules: {
// name: [
// {
// required: true,
// message: "",
// trigger: "blur",
// },
// {
// validator: async (rule, value, callback) => {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// const { msg } = await checkContractName({ name: value });
// if (msg === "") {
// callback();
// } else {
// callback(new Error(msg));
// }
// }
// },
// trigger: "blur",
// },
// ],
// supply: [
// {
// validator: (rule, value, callback) => {
// if (this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// type: [
// {
// validator: (rule, value, callback) => {
// if (!this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// purchase_type_id: [
// {
// validator: (rule, value, callback) => {
// if (!this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// purchase_way_id: [
// {
// validator: (rule, value, callback) => {
// if (!this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// money: [
// {
// validator: (rule, value, callback) => {
// if (this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// if (/^\d+(\.\d+)?$/.test(value)) {
// callback();
// } else {
// callback(new Error(""));
// }
// }
// } else {
// callback();
// }
// },
// trigger: "blur",
// },
// ],
// plan_money: [
// {
// validator: (rule, value, callback) => {
// if (!this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// if (/^\d+(\.\d+)?$/.test(value)) {
// callback();
// } else {
// callback(new Error(""));
// }
// }
// } else {
// callback();
// }
// },
// trigger: "blur",
// },
// ],
// money_way_id: [
// {
// validator: (rule, value, callback) => {
// if (!this.form.is_simple) {
// if (!this.hasValue(value)) {
// callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// contract_plan_links: [
// {
// validator: (rule, value, callback) => {
// if (this.form.is_plan) {
// if (this.form.contract_plan_links.length === 0) {
// return callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// contract_to_contracts: [
// {
// validator: (rule, value, callback) => {
// if (this.form.use_framework_buy) {
// if (this.form.contract_to_contracts.length === 0) {
// return callback(new Error(""));
// } else {
// callback();
// }
// } else {
// callback();
// }
// },
// trigger: "change",
// },
// ],
// },
plans: [],
planSelect: {
name: "",
@ -1211,7 +1266,28 @@ export default {
},
resetForm() {
this.form = {
this.form = this.isLedger ? {
name: "",
contract_type: 1,
number: "",
supply: "",
money: 0,
start_date: "",
end_date: "",
guarantee_money: "",
guarantee_year: "",
date: this.$moment().format('YYYY-MM-DD'),
is_contract: 1,
is_framework: "",
purchase_status: 3,
invite_status: 3,
files: [],
contract_plan_links: this.planSelections.map((i) => ({
plan_id: i.id,
use_money: i._inputMoney,
new_money: i.money,
})),
} : {
type: "",
is_plan: 1,
purchase_type_id: "",
@ -1247,22 +1323,12 @@ export default {
this.form.contract_to_contracts.splice(this.form.contract_to_contracts.findIndex(j => j.to_contract_id === i.id),1)
this.$refs['contractToContractsTable']?.toggleRowSelection(this.$refs['contractToContractsTable']?.getSelection().find(j => i.id === j.id),true)
},
// selectionChange(selection) {
// this.selections = Array.from(
// new Set(
// selection
// )
// );
// },
// delSelections(val) {
// this.selections.map((item, index) => {
// if (item.id === val.id) {
// this.selections.splice(index, 1)
// }
// })
// },
},
computed: {
isLedger () {
return this.$route.query.isLedger;
},
isShowIsFramework() {
let temp1 = this.form.purchase_type_id;
let temp2 = this.form.use_framework_buy;
@ -1285,6 +1351,236 @@ export default {
contractToContractsSelections () {
let temp = this.form.contract_to_contracts;
return this.$refs["contractToContractsTable"]?.getSelection() || []
},
rules() {
return this.isLedger ? {
name: [
{
required: true,
message: "必填",
trigger: "blur",
},
{
validator: async (rule, value, callback) => {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
const { msg } = await checkContractName({ name: value });
if (msg === "未重名") {
callback();
} else {
callback(new Error(msg));
}
}
},
trigger: "blur",
},
],
supply: [
{
validator: (rule, value, callback) => {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
},
trigger: "change",
},
],
money: [
{
validator: (rule, value, callback) => {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
if (/^\d+(\.\d+)?$/.test(value)) {
callback();
} else {
callback(new Error("必须为数字"));
}
}
},
trigger: "blur",
}
]
} : {
name: [
{
required: true,
message: "必填",
trigger: "blur",
},
{
validator: async (rule, value, callback) => {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
const { msg } = await checkContractName({ name: value });
if (msg === "未重名") {
callback();
} else {
callback(new Error(msg));
}
}
},
trigger: "blur",
},
],
supply: [
{
validator: (rule, value, callback) => {
if (this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
type: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
purchase_type_id: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
purchase_way_id: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
money: [
{
validator: (rule, value, callback) => {
if (this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
if (/^\d+(\.\d+)?$/.test(value)) {
callback();
} else {
callback(new Error("必须为数字"));
}
}
} else {
callback();
}
},
trigger: "blur",
},
],
plan_money: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
if (/^\d+(\.\d+)?$/.test(value)) {
callback();
} else {
callback(new Error("必须为数字"));
}
}
} else {
callback();
}
},
trigger: "blur",
},
],
money_way_id: [
{
validator: (rule, value, callback) => {
if (!this.form.is_simple) {
if (!this.hasValue(value)) {
callback(new Error("必填"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
contract_plan_links: [
{
validator: (rule, value, callback) => {
if (this.form.is_plan) {
if (this.form.contract_plan_links.length === 0) {
return callback(new Error("必选"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
contract_to_contracts: [
{
validator: (rule, value, callback) => {
if (this.form.use_framework_buy) {
if (this.form.contract_to_contracts.length === 0) {
return callback(new Error("必选"));
} else {
callback();
}
} else {
callback();
}
},
trigger: "change",
},
],
}
}
},
created() {
@ -1318,6 +1614,13 @@ export default {
}
});
},
beforeRouteEnter(to, from, next) {
next(vm => {
const { contractId } = to.query
vm.contractId = contractId;
if (contractId) vm.setType('edit');
})
}
};
</script>

@ -214,7 +214,12 @@
<Button
style="margin-left: 10px"
type="primary"
@click="$refs['addContractLedger'].setType('add'),$refs['addContractLedger'].show()"
@click="$router.push({
path: '/contract/contractEdit',
query: {
isLedger: 1
}
})"
>新增</Button
>

@ -251,7 +251,12 @@
<Button
style="margin-left: 10px"
type="primary"
@click="new RegExp(/contractLedger/g).test($route.path) ? ($refs['addContractLedger'].setType('add'),$refs['addContractLedger'].show()) : $router.push('/contract/contractEdit')"
@click="new RegExp(/contractLedger/g).test($route.path) ? $router.push({
path: '/contract/contractEdit',
query: {
isLedger: 1
}
}) : $router.push('/contract/contractEdit')"
>新增</Button
>
<Button style="margin-left: 10px" type="primary" @click="getContracts"
@ -973,6 +978,7 @@
:table-item="planTableSearch"
:height="310"
style="margin-top: 10px"
:tree-props="{ children: 'notChildren', hasChildren: 'hasChildren' }"
ref="singlePlanTable"
>
<template v-slot:btns> </template>

@ -200,7 +200,7 @@ export default {
fixed: "left",
},
{
title: "z执行情况",
title: "执行情况",
minWidth: 160,
fixed: "right",
render: (h, { row }) => {

Loading…
Cancel
Save