预算计划事前流程

master
xy 2 years ago
parent 999c98fb23
commit 5b37b75e21

@ -8,15 +8,15 @@
</lx-header> </lx-header>
<el-card> <el-card>
<el-form :model="form" :rules="rules" ref="form" label-width="120px"> <el-form :model="form" :rules="rules" ref="form" label-width="120px">
<el-form-item label="标题" prop="title"> <el-form-item label="出差事由" prop="title">
<el-input clearable placeholder="请输入标题" v-model="form.title" style="max-width: 300px;width: 100%;"></el-input> <el-input clearable placeholder="请输入标题" v-model="form.title" style="max-width: 300px;width: 100%;"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否用车" prop="use_car"> <!-- <el-form-item label="是否用车" prop="use_car">-->
<el-radio-group v-model="form.use_car"> <!-- <el-radio-group v-model="form.use_car">-->
<el-radio :label="1"></el-radio> <!-- <el-radio :label="1"></el-radio>-->
<el-radio :label="0"></el-radio> <!-- <el-radio :label="0"></el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="开始时间" prop="start_date"> <el-form-item label="开始时间" prop="start_date">
<el-date-picker value-format="yyyy-MM-dd" clearable placeholder="请选择开始时间" style="max-width: 300px;width: 100%;" v-model="form.start_date"></el-date-picker> <el-date-picker value-format="yyyy-MM-dd" clearable placeholder="请选择开始时间" style="max-width: 300px;width: 100%;" v-model="form.start_date"></el-date-picker>
</el-form-item> </el-form-item>
@ -27,12 +27,12 @@
style="max-width: 300px;width: 100%;" style="max-width: 300px;width: 100%;"
v-model="form.end_date"></el-date-picker> v-model="form.end_date"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="是否室内补助" prop="is_subsidize"> <!-- <el-form-item label="是否室内补助" prop="is_subsidize">-->
<el-radio-group v-model="form.is_subsidize"> <!-- <el-radio-group v-model="form.is_subsidize">-->
<el-radio :label="1"></el-radio> <!-- <el-radio :label="1"></el-radio>-->
<el-radio :label="0"></el-radio> <!-- <el-radio :label="0"></el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item align="center"> <el-form-item align="center">
<el-button type="warning" plain @click="reset"></el-button> <el-button type="warning" plain @click="reset"></el-button>
<el-button :loading="loading" type="primary" @click="submit"></el-button> <el-button :loading="loading" type="primary" @click="submit"></el-button>
@ -52,12 +52,12 @@ export default {
loading: false, loading: false,
form: { form: {
title: '', title: '',
use_car: 0, //use_car: 0,
start_date: '', start_date: '',
end_date: '', end_date: '',
is_subsidize: 0, //is_subsidize: 0,
use_car_status: 1, // use_car_status: 1,
subsidize_status: 1, // subsidize_status: 1,
expense_status: 1, expense_status: 1,
away_status: 1, away_status: 1,
}, },
@ -117,8 +117,8 @@ export default {
this.loading = true this.loading = true
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
this.form.use_car_status = this.form.use_car ? 1 : ""; // this.form.use_car_status = this.form.use_car ? 1 : "";
this.form.subsidize_status = this.form.is_subsidize ? 1 : ""; // this.form.subsidize_status = this.form.is_subsidize ? 1 : "";
save(this.form,true).then(res => { save(this.form,true).then(res => {
this.loading = false this.loading = false
this.$message({ this.$message({

@ -11,7 +11,7 @@
> >
<template v-slot:title> <template v-slot:title>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label">标题 </div> <div class="xy-table-item-label">出差事由 </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-input <el-input
v-model="form.title" v-model="form.title"
@ -22,28 +22,28 @@
</div> </div>
</div> </div>
</template> </template>
<template v-slot:use_car> <!-- <template v-slot:use_car>-->
<div class="xy-table-item"> <!-- <div class="xy-table-item">-->
<div class="xy-table-item-label">是否用车 </div> <!-- <div class="xy-table-item-label">是否用车 </div>-->
<div class="xy-table-item-content"> <!-- <div class="xy-table-item-content">-->
<el-radio-group style="width: 300px" v-model="form.use_car"> <!-- <el-radio-group style="width: 300px" v-model="form.use_car">-->
<el-radio :label="1"></el-radio> <!-- <el-radio :label="1"></el-radio>-->
<el-radio :label="0"></el-radio> <!-- <el-radio :label="0"></el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</template> <!-- </template>-->
<template v-slot:is_subsidize> <!-- <template v-slot:is_subsidize>-->
<div class="xy-table-item"> <!-- <div class="xy-table-item">-->
<div class="xy-table-item-label">是否室内补助 </div> <!-- <div class="xy-table-item-label">是否室内补助 </div>-->
<div class="xy-table-item-content"> <!-- <div class="xy-table-item-content">-->
<el-radio-group style="width: 300px" v-model="form.is_subsidize"> <!-- <el-radio-group style="width: 300px" v-model="form.is_subsidize">-->
<el-radio :label="1"></el-radio> <!-- <el-radio :label="1"></el-radio>-->
<el-radio :label="0"></el-radio> <!-- <el-radio :label="0"></el-radio>-->
</el-radio-group> <!-- </el-radio-group>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</template> <!-- </template>-->
<template v-slot:start_date> <template v-slot:start_date>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label">开始时间 </div> <div class="xy-table-item-label">开始时间 </div>
@ -136,12 +136,12 @@ export default {
form: { form: {
title: "", title: "",
use_car: "", //use_car: "",
is_subsidize: "", //is_subsidize: "",
start_date: "", start_date: "",
end_date: "", end_date: "",
use_car_status: "", //use_car_status: "",
subsidize_status: "", //subsidize_status: "",
expense_status: "", expense_status: "",
away_status: "", away_status: "",
financial_status: "", financial_status: "",

@ -240,7 +240,7 @@ export default {
]), ]),
table: [ table: [
{ {
label: "标题", label: "出差事由",
prop: "title", prop: "title",
width: 200, width: 200,
align: "left", align: "left",
@ -274,51 +274,51 @@ export default {
{ {
label: "流程状态", label: "流程状态",
multiHd: [ multiHd: [
{ // {
width: 100, // width: 100,
label: "用车", // label: "",
customFn:row => { // customFn:row => {
if (!row.use_car) { // if (!row.use_car) {
return ( // return (
<span style="color: rgb(140, 140, 140);">-</span> // <span style="color: rgb(140, 140, 140);">-</span>
) // )
} // }
return ( // return (
<div> // <div>
<span style={{ 'color': this.flowStatusColor.get(row.FLOWSTATUS.useCar.getStatus()) }}>{ this.flowStatus.get(row.FLOWSTATUS.useCar.getStatus()) || '待申请' }</span> // <span style={{ 'color': this.flowStatusColor.get(row.FLOWSTATUS.useCar.getStatus()) }}>{ this.flowStatus.get(row.FLOWSTATUS.useCar.getStatus()) || '' }</span>
<br/> // <br/>
{ // {
(row.FLOWSTATUS.useCar.getStatus() > 1) ? <a style="color: #333" on={{['click']:()=>{ // (row.FLOWSTATUS.useCar.getStatus() > 1) ? <a style="color: #333" on={{['click']:()=>{
this.toOaDetail('useCar',row,) // this.toOaDetail('useCar',row,)
}}}>查看</a> : '' // }}}></a> : ''
} // }
</div> // </div>
) // )
} // }
}, // },
{ // {
width: 100, // width: 100,
label: "市内补助", // label: "",
customFn:row => { // customFn:row => {
if (!row.is_subsidize) { // if (!row.is_subsidize) {
return ( // return (
<span style="color: rgb(140, 140, 140);">-</span> // <span style="color: rgb(140, 140, 140);">-</span>
) // )
} // }
return ( // return (
<div> // <div>
<span style={{ 'color': this.flowStatusColor.get(row.FLOWSTATUS.subsidize.getStatus()) }}>{ this.flowStatus.get(row.FLOWSTATUS.subsidize.getStatus()) || '待申请' }</span> // <span style={{ 'color': this.flowStatusColor.get(row.FLOWSTATUS.subsidize.getStatus()) }}>{ this.flowStatus.get(row.FLOWSTATUS.subsidize.getStatus()) || '' }</span>
<br/> // <br/>
{ // {
(row.FLOWSTATUS.subsidize.getStatus() > 1) ? <a style="color: #333" on={{['click']:()=>{ // (row.FLOWSTATUS.subsidize.getStatus() > 1) ? <a style="color: #333" on={{['click']:()=>{
this.toOaDetail('subsidize',row) // this.toOaDetail('subsidize',row)
}}}>查看</a> : '' // }}}></a> : ''
} // }
</div> // </div>
) // )
} // }
//
}, // },
{ {
width: 100, width: 100,
label: "出差审批", label: "出差审批",
@ -450,7 +450,7 @@ export default {
"6583dbec5d888": row.end_date, "6583dbec5d888": row.end_date,
"6583dc097b6e2": row.title, "6583dc097b6e2": row.title,
}; };
let url = `${process.env.VUE_APP_OUT_OLD}/flow/create/21?auth_token=${this.$store.getters.oa_token}&out_away_id=${ let url = `${process.env.VUE_APP_OUT_OLD}/flow/create/56?auth_token=${this.$store.getters.oa_token}&out_away_id=${
row.id row.id
}&default_json=${JSON.stringify(baseInfo)}`; }&default_json=${JSON.stringify(baseInfo)}`;
window.open( window.open(
@ -515,24 +515,27 @@ export default {
"expense": new Flow(), "expense": new Flow(),
"financial": new Flow() "financial": new Flow()
} }
if (item.use_car) { // if (item.use_car) {
flowStatus.useCar.setStatus(item.use_car_status) // flowStatus.useCar.setStatus(item.use_car_status)
if (item.use_car_status === 1) { // if (item.use_car_status === 1) {
flowStatus.useCar.setExecutable(true) // flowStatus.useCar.setExecutable(true)
} // }
} // }
if (item.is_subsidize) { // if (item.is_subsidize) {
flowStatus.subsidize.setStatus(item.subsidize_status) // flowStatus.subsidize.setStatus(item.subsidize_status)
if (item.subsidize_status === 1) { // if (item.subsidize_status === 1) {
flowStatus.subsidize.setExecutable(true) // flowStatus.subsidize.setExecutable(true)
} // }
} // }
flowStatus.away.setStatus(item.away_status) flowStatus.away.setStatus(item.away_status)
if (item.away_status === 1) { if (item.away_status === 1) {
flowStatus.away.setExecutable(true) flowStatus.away.setExecutable(true)
} }
flowStatus.expense.setStatus(item.expense_status) flowStatus.expense.setStatus(item.expense_status)
if ((!item.is_subsidize || item.subsidize_status === 3) && (!item.use_car || item.use_car_status === 3) && item.away_status === 3 && (!item.expense_status || item.expense_status === 1) && (this.$moment().diff(this.$moment(item.end_date),"days") <= 30 || item.can_expenses)) { // if ((!item.is_subsidize || item.subsidize_status === 3) && (!item.use_car || item.use_car_status === 3) && item.away_status === 3 && (!item.expense_status || item.expense_status === 1) && (this.$moment().diff(this.$moment(item.end_date),"days") <= 30 || item.can_expenses)) {
// flowStatus.expense.setExecutable(true)
// }
if (item.away_status === 3 && (!item.expense_status || item.expense_status === 1) && (this.$moment().diff(this.$moment(item.end_date),"days") <= 30 || item.can_expenses)) {
flowStatus.expense.setExecutable(true) flowStatus.expense.setExecutable(true)
} }

@ -355,6 +355,30 @@
</div> </div>
</div> </div>
</template> </template>
<template #flow_mod_id>
<div class="xy-table-item">
<div class="xy-table-item-label">
事前流程
</div>
<div class="xy-table-item-content">
<el-select
placeholder="事前流程"
clearable
size="small"
v-model="form.flow_mod_id"
style="width: 300px"
>
<el-option
v-for="item in flowIds"
:label="item.name"
:value="item.id"
:key="item.id"
>
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:department> <template v-slot:department>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
@ -516,6 +540,30 @@
</div> </div>
</div> </div>
</template> </template>
<template #flow_mod_id>
<div class="xy-table-item">
<div class="xy-table-item-label">
事前流程
</div>
<div class="xy-table-item-content">
<el-select
placeholder="事前流程"
clearable
size="small"
v-model="editorForm.flow_mod_id"
style="width: 300px"
>
<el-option
v-for="item in flowIds"
:label="item.name"
:value="item.id"
:key="item.id"
>
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:year> <template v-slot:year>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
@ -684,7 +732,7 @@ import {
} from "@/api/budget/budget"; } from "@/api/budget/budget";
import { listdeptNoAuth } from "@/api/system/department"; import { listdeptNoAuth } from "@/api/system/department";
import { Message } from "element-ui"; import { Message } from "element-ui";
import { parseTime, moneyFormatter, moneyRecovery } from "@/utils"; import {parseTime, moneyFormatter, moneyRecovery, deepCopy} from "@/utils";
import { getparameter, getparameterTree } from "@/api/system/dictionary"; import { getparameter, getparameterTree } from "@/api/system/dictionary";
import { mergeTableRow } from "@/utils/mergeTableRow"; import { mergeTableRow } from "@/utils/mergeTableRow";
@ -697,6 +745,45 @@ export default {
}, },
data() { data() {
return { return {
//
flowIds: [
{
id: 5,
name: "办公用品采购",
type: 1 //
},
{
id: 12,
name: "物资购置",
type: 1
},
{
id: 19,
name: "政府采购流转",
type: 2
},
{
id: 29,
name: "政府小额采购",
type: 2
},
{
id: 22,
name: "公务接待",
type: 1
},
{
id: 23,
name: "会议费用",
type: 1
},
{
id: 28,
name: "培训费",
type: 1
}
],
tableHeight: 0, tableHeight: 0,
isShowAdd: false, isShowAdd: false,
types: [], types: [],
@ -706,6 +793,7 @@ export default {
pid: "0", pid: "0",
name: "", name: "",
type: "", type: "",
flow_mod_id: "",
year: "", year: "",
department: "", department: "",
money: "", money: "",
@ -988,6 +1076,25 @@ export default {
this.departments = res; this.departments = res;
}); });
}, },
//
async getFlowIds () {
let copy = deepCopy(this.flowIds)
const res = await getparameter({
number: "flow_ids"
})
try {
this.flowIds = res?.detail?.map(i => {
let data = JSON.parse(i.remark)
return {
name: i.value,
...data
}
})
}catch (e) {
this.flowIds = copy
}
console.log(this.flowIds)
},
// //
getBudgets() { getBudgets() {
getBudget({ getBudget({
@ -1044,6 +1151,7 @@ export default {
plan_department_links: plan_department_links, plan_department_links: plan_department_links,
remark: this.form.remark, remark: this.form.remark,
pid: this.form.pid, pid: this.form.pid,
flow_mod_id: this.form.flow_mod_id
}).then((res) => { }).then((res) => {
Message({ Message({
message: "操作成功", message: "操作成功",
@ -1096,6 +1204,8 @@ export default {
remark: this.editorForm.remark, remark: this.editorForm.remark,
plan_department_id: this.editorForm.department, plan_department_id: this.editorForm.department,
plan_department_links: plan_department_links, plan_department_links: plan_department_links,
pid: this.editorForm.pid,
flow_mod_id: this.editorForm.flow_mod_id
}).then((res) => { }).then((res) => {
this.isShowEditor = false; this.isShowEditor = false;
Message({ Message({
@ -1121,6 +1231,7 @@ export default {
id: res.id, id: res.id,
name: res.name, name: res.name,
type: res.type, type: res.type,
flow_mod_id: res.flow_mod_id,
department: res.plan_department_id, department: res.plan_department_id,
money: moneyFormatter(res.money), money: moneyFormatter(res.money),
update_money: moneyFormatter(res.update_money), update_money: moneyFormatter(res.update_money),
@ -1143,6 +1254,7 @@ export default {
}, },
}, },
created() { created() {
this.getFlowIds();
this.table = this.tableItem; this.table = this.tableItem;
this.initLoad(); this.initLoad();

@ -1453,7 +1453,8 @@ export default {
use_money: i._inputMoney, use_money: i._inputMoney,
new_money: i.money, new_money: i.money,
})); }));
this.form.plan_price = selections.reduce((a, b) => a + Number(b._inputMoney), 0) this.form.plan_price = selections.reduce((a, b) => a + Number(b._inputMoney), 0);
this.form.flow_mod_id = selections[0]?.flow_mod_id;
this.step = 2; this.step = 2;
} else { } else {
this.$message({ this.$message({

@ -85,6 +85,9 @@ export default {
key: "created_at", key: "created_at",
width: 120, width: 120,
align: "center", align: "center",
render: (h, { row }) => {
return h("span", this.$moment(row.created_at).format("YYYY-MM-DD HH:mm:ss"));
},
}, },
{ {
title: "查看", title: "查看",

Loading…
Cancel
Save