新增合同页面

master
xy 2 years ago
parent 43f887fcfd
commit be35664b8a

2
.gitignore vendored

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

@ -125,6 +125,7 @@
/> />
</el-form-item> </el-form-item>
<template v-if="!isLedger">
<el-form-item prop="is_contract" label="是否需要签订合同"> <el-form-item prop="is_contract" label="是否需要签订合同">
<el-switch <el-switch
v-model="form.is_contract" v-model="form.is_contract"
@ -304,6 +305,55 @@
@on-close="closeTag(i)">{{ i.name.slice(0,17) }}</Tag> @on-close="closeTag(i)">{{ i.name.slice(0,17) }}</Tag>
</div> </div>
</el-form-item> </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> </el-form>
<div style="text-align: center"> <div style="text-align: center">
@ -665,7 +715,7 @@
shape="circle" shape="circle"
@click=" @click="
$router.push({ $router.push({
path: '/contract/contract/contractList', path: isLedger ? '/contract/contract/contractLedger' : '/contract/contract/contractList',
query: { query: {
keyword: form.name, keyword: form.name,
}, },
@ -734,6 +784,11 @@ export default {
{ label: "货物", value: 2 }, { label: "货物", value: 2 },
{ label: "工程", value: 3 }, { label: "工程", value: 3 },
], // ], //
contractTypes: [
{ label: "收入类", value: 1 },
{ label: "支出类", value: 2 },
{ label: "技术协议", value: 3 },
],
form: { form: {
type: "", type: "",
is_plan: 1, is_plan: 1,
@ -778,182 +833,182 @@ export default {
label: "已办结", label: "已办结",
}, },
], ],
rules: { // rules: {
name: [ // name: [
{ // {
required: true, // required: true,
message: "必填", // message: "",
trigger: "blur", // trigger: "blur",
}, // },
{ // {
validator: async (rule, value, callback) => { // validator: async (rule, value, callback) => {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
const { msg } = await checkContractName({ name: value }); // const { msg } = await checkContractName({ name: value });
if (msg === "未重名") { // if (msg === "") {
callback(); // callback();
} else { // } else {
callback(new Error(msg)); // callback(new Error(msg));
} // }
} // }
}, // },
trigger: "blur", // trigger: "blur",
}, // },
], // ],
supply: [ // supply: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (this.form.is_simple) { // if (this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
type: [ // type: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (!this.form.is_simple) { // if (!this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
purchase_type_id: [ // purchase_type_id: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (!this.form.is_simple) { // if (!this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
purchase_way_id: [ // purchase_way_id: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (!this.form.is_simple) { // if (!this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
money: [ // money: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (this.form.is_simple) { // if (this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
if (/^\d+(\.\d+)?$/.test(value)) { // if (/^\d+(\.\d+)?$/.test(value)) {
callback(); // callback();
} else { // } else {
callback(new Error("必须为数字")); // callback(new Error(""));
} // }
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "blur", // trigger: "blur",
}, // },
], // ],
plan_money: [ // plan_money: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (!this.form.is_simple) { // if (!this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
if (/^\d+(\.\d+)?$/.test(value)) { // if (/^\d+(\.\d+)?$/.test(value)) {
callback(); // callback();
} else { // } else {
callback(new Error("必须为数字")); // callback(new Error(""));
} // }
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "blur", // trigger: "blur",
}, // },
], // ],
money_way_id: [ // money_way_id: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (!this.form.is_simple) { // if (!this.form.is_simple) {
if (!this.hasValue(value)) { // if (!this.hasValue(value)) {
callback(new Error("必填")); // callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
contract_plan_links: [ // contract_plan_links: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (this.form.is_plan) { // if (this.form.is_plan) {
if (this.form.contract_plan_links.length === 0) { // if (this.form.contract_plan_links.length === 0) {
return callback(new Error("必选")); // return callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
contract_to_contracts: [ // contract_to_contracts: [
{ // {
validator: (rule, value, callback) => { // validator: (rule, value, callback) => {
if (this.form.use_framework_buy) { // if (this.form.use_framework_buy) {
if (this.form.contract_to_contracts.length === 0) { // if (this.form.contract_to_contracts.length === 0) {
return callback(new Error("必选")); // return callback(new Error(""));
} else { // } else {
callback(); // callback();
} // }
} else { // } else {
callback(); // callback();
} // }
}, // },
trigger: "change", // trigger: "change",
}, // },
], // ],
}, // },
plans: [], plans: [],
planSelect: { planSelect: {
name: "", name: "",
@ -1211,7 +1266,28 @@ export default {
}, },
resetForm() { 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: "", type: "",
is_plan: 1, is_plan: 1,
purchase_type_id: "", 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.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) 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: { computed: {
isLedger () {
return this.$route.query.isLedger;
},
isShowIsFramework() { isShowIsFramework() {
let temp1 = this.form.purchase_type_id; let temp1 = this.form.purchase_type_id;
let temp2 = this.form.use_framework_buy; let temp2 = this.form.use_framework_buy;
@ -1285,6 +1351,236 @@ export default {
contractToContractsSelections () { contractToContractsSelections () {
let temp = this.form.contract_to_contracts; let temp = this.form.contract_to_contracts;
return this.$refs["contractToContractsTable"]?.getSelection() || [] 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() { 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> </script>

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

@ -251,7 +251,12 @@
<Button <Button
style="margin-left: 10px" style="margin-left: 10px"
type="primary" 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
> >
<Button style="margin-left: 10px" type="primary" @click="getContracts" <Button style="margin-left: 10px" type="primary" @click="getContracts"
@ -973,6 +978,7 @@
:table-item="planTableSearch" :table-item="planTableSearch"
:height="310" :height="310"
style="margin-top: 10px" style="margin-top: 10px"
:tree-props="{ children: 'notChildren', hasChildren: 'hasChildren' }"
ref="singlePlanTable" ref="singlePlanTable"
> >
<template v-slot:btns> </template> <template v-slot:btns> </template>

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

Loading…
Cancel
Save