出差报销

master
xy 2 years ago
parent 6b53abe37b
commit 55d5446aa9

@ -192,6 +192,7 @@ export default {
}} }}
> >
<el-table-column <el-table-column
label=" "
fixed='left' fixed='left'
align='center' align='center'
width='60' width='60'

@ -34,6 +34,11 @@
个人信息 个人信息
</el-dropdown-item> </el-dropdown-item>
</router-link> </router-link>
<router-link to="/install" target="_blank">
<el-dropdown-item>
软件安装
</el-dropdown-item>
</router-link>
<el-dropdown-item v-if="!$store.state.app.isInElectron" class="user-logout" divided @click.native="logout"> <el-dropdown-item v-if="!$store.state.app.isInElectron" class="user-logout" divided @click.native="logout">
<span style="display: block">退出</span> <span style="display: block">退出</span>
</el-dropdown-item> </el-dropdown-item>
@ -151,6 +156,7 @@ export default {
} }
}, },
methods: { methods: {
async logout() { async logout() {
if (this.$store.state.app.isInElectron) { if (this.$store.state.app.isInElectron) {
return return

@ -71,6 +71,11 @@ export const constantRoutes = [{
], ],
hidden: true, hidden: true,
}, },
{
path: "/install",
component: () => import("@/views/install"),
hidden: true
}
] ]
/** /**

@ -0,0 +1,611 @@
<template>
<div>
<!-- 付款登记-->
<xy-dialog
title="付款登记"
:is-show.sync="isShowPaymentRegistration"
type="form"
class="payment-registration"
:form="paymentRegistrationForm"
:rules="paymentRegistrationRules"
@submit="submit"
ref="paymentRegistration"
>
<template v-slot:extraFormTop>
<div class="payment-registration-row">
<div class="payment-registration-row-title">出差名称</div>
<div class="payment-registration-row-content">
{{ contract.title }}
</div>
</div>
</template>
<template v-slot:applyMoney>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red; font-weight: 600; padding-right: 4px"
>*</span
>申请付款金额
</div>
<div class="xy-table-item-content xy-table-item-price">
<el-input
clearable
placeholder="请填写付款金额"
v-model="paymentRegistrationForm.applyMoney"
style="width: 150px"
/>
</div>
</div>
</template>
<template v-slot:audit_money>
<div class="xy-table-item">
<div class="xy-table-item-label">审计金额</div>
<div class="xy-table-item-content xy-table-item-price">
<el-input
clearable
placeholder="请填写审计金额"
v-model="form.audit_money"
style="width: 150px"
/>
</div>
</div>
</template>
<template v-slot:deductionMoney>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red; font-weight: 600; padding-right: 4px"
>*</span
>本期扣款金额
</div>
<div class="xy-table-item-content xy-table-item-price">
<el-input
clearable
placeholder="请填写扣款金额"
v-model="paymentRegistrationForm.deductionMoney"
style="width: 150px"
/>
</div>
</div>
</template>
<template v-slot:remark>
<div class="xy-table-item">
<div class="xy-table-item-label">备注</div>
<div class="xy-table-item-content">
<el-input
type="textarea"
clearable
placeholder="备注"
v-model="paymentRegistrationForm.remark"
style="width: 300px"
/>
</div>
</div>
</template>
<template v-slot:type>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red; font-weight: 600; padding-right: 4px"
>*</span
>款项类型
</div>
<div class="xy-table-item-content">
<el-select
placeholder="选择款项类型或直接录入其他类型"
v-model="paymentRegistrationForm.type"
style="width: 150px"
filterable
allow-create
clearable
>
<el-option
v-for="item in paymentType"
:key="item"
:label="item"
:value="item"
>
</el-option>
</el-select>
</div>
</div>
</template>
<template v-slot:isLast>
<div class="xy-table-item">
<div class="xy-table-item-label" style="width: 200px">
<span style="color: red; font-weight: 600; padding-right: 4px"
>*</span
>是否为最后一笔
</div>
<div class="xy-table-item-content">
<el-switch v-model="paymentRegistrationForm.isLast" />
<!-- @change="toggleSelection"-->
</div>
</div>
</template>
<template #files v-if="paymentRegistrationForm.type === '结算款'">
<div class="xy-table-item">
<div class="xy-table-item-label">
附件
</div>
<div class="xy-table-item-content">
<el-upload
style="width: 300px"
ref="upload"
multiple
:on-success="successHandle"
:before-upload="uploadBefore"
accept=".rar,.zip,.doc,.docx,.pdf,.jpg,.png,.gif,.mp4,.xls,.xlsx"
:action="action"
:file-list="fileList"
:auto-upload="false"
:on-remove="removeHande"
:limit="10"
>
<el-button slot="trigger" size="small" type="primary"
>选取文件</el-button
>
<el-button
style="margin-left: 10px"
size="small"
type="success"
@click="$refs['upload'].submit()"
>开始上传</el-button
>
<div slot="tip" class="el-upload__tip">
支持文件格式.rar .zip .doc .docx .pdf .jpg .png .gif .mp4 .xls
.xlsx
<br />单个文件不能超过20M
</div>
</el-upload>
</div>
</div>
</template>
<template v-slot:extraFormBottom>
<div style="display: flex;align-items: center;">
<el-select
placeholder="科室选择"
clearable
size="small"
v-model="plansSelect.plan_department_id"
style="width: 160px"
>
<el-option
v-for="item in departments"
:label="item.name"
:value="item.id"
:key="item.id"
>
</el-option>
</el-select>
<el-cascader
:options="planTypes"
:props="{
checkStrictly: false,
label: 'name',
value: 'id',
}"
:value="plansSelect.type"
clearable
size="small"
style="width: 160px;margin-left: 6px;"
@change="(e) => (plansSelect.type = e[e.length - 1] || '')"
/>
<Input style="margin-left: 6px;" search enter-button=" " placeholder="搜索预算计划.." v-model="plansSelect.name" @on-search="getBudgets" />
</div>
<xy-table
:list="plans"
:show-index="false"
:table-item="planTable"
:height="310"
style="margin-top: 10px"
ref="planTable"
@select="selectPlan"
>
<template v-slot:btns>
<el-table-column label="使用金额(元)" header-align="center">
<template slot-scope="scope">
<Input
:value="scope.row.useMoney"
@input="(e) => (scope.row.useMoney = e)"
/>
</template>
</el-table-column>
</template>
</xy-table>
<div style="display: flex; justify-content: flex-end">
<Page :total="planTotal" show-elevator @on-change="pageChange" />
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {getparameter, getparameterTree} from "@/api/system/dictionary";
import { getFundLog, addFundLog } from "@/api/paymentRegistration/fundLog";
import { getBudget } from "@/api/budget/budget";
import { detailContract, editorContract } from "@/api/contract/contract";
import { Message } from "element-ui";
import {deepCopy, parseTime} from "@/utils";
import {getOatoken} from "@/api/oatoken";
import {listdeptNoAuth} from "@/api/system/department";
import { save } from "@/api/away";
export default {
data() {
return {
departments: [],
plansSelect: {
page: 1,
page_size: 10,
name: '',
plan_department_id: "",
type: ""
},
flowIds: [
{
flow_id: 14,
name: "供应品验收",
},
{
flow_id: 57,
name: "固定资产验收"
}
],
fileList: [],
action: process.env.VUE_APP_UPLOAD_API,
searchContent: "",
planTotal: 0,
pageIndex: 1,
//
plans: [],
planTypes: [],
contract: {},
payment: [], //
payTable: [
{
label: "申请金额",
prop: "apply_money",
sortable: false,
width: 160,
align: "right",
},
{
label: "已付金额",
prop: "act_money",
sortable: false,
width: 160,
align: "right",
},
{
label: "时间",
prop: "created_at",
sortable: false,
width: 120,
formatter: (t1, t2, value) => {
return parseTime(new Date(value), "{y}-{m}-{d}");
},
},
],
paymentType: ["进度款", "结算款", "质保金"],
isShowPaymentRegistration: false,
paymentRegistrationForm: {
applyMoney: "",
plan: [],
remark: "",
files: []
},
form: {
audit_money: 0,
},
paymentRegistrationRules: {
applyMoney: [
{
required: true,
message: "必填",
},
{
pattern: /^\d+(\.\d+)?$/,
message: "必须为数字",
},
]
},
planTable: [
{
sortable: false,
width: 46,
type: "selection",
},
{
label: "分类",
prop: "type_detail.value",
},
{
label: "名称",
prop: "name",
align: "left",
},
{
label: "计划金额",
prop: "money",
align: "right",
},
],
};
},
methods: {
//
successHandle(response, file, fileList) {
this.fileList = fileList;
},
removeHande(file, fileList) {
this.fileList = fileList;
},
uploadBefore(file) {
console.log(file);
if ((file.size / 1000) > (20 * 1024)) {
this.$message({
type: "warning",
message: "上传图片大小超过2M",
});
return false;
}
},
async getPlanTypes() {
const res = await getparameterTree({
id: 3
});
const dataHandler = (data) => {
data.forEach(i => {
if (i.hasOwnProperty('detail')) {
i.children = i.detail.map(j => {
j.name = j.value
return j;
})
} else {
dataHandler(i['children'])
}
})
return data;
}
this.planTypes = dataHandler(res?.children) || []
},
//
pageChange(e) {
this.pageIndex = e;
this.getBudgets();
},
//
totalApplyMoney() {
let total = 0.0;
this.payment.map((item) => {
total += Number(item.apply_money);
});
return total.toFixed(2);
},
//
totalMoney() {
let total = 0.0;
this.payment.map((item) => {
total += Number(item.act_money);
});
return total.toFixed(2);
},
//
actNumsTotal() {
let total = 0;
this.payment.map((item) => {
if (Number(item.act_money)) {
total++;
}
});
return total;
},
//
percentPay() {
let total = this.totalMoney();
return ((total / this.contract.money) * 100 || 0).toFixed(2) || 0;
},
//
async getContract(info) {
this.contract = await info;
const res = await getFundLog({
away_id: this.contract.id,
fund_type: 2
})
this.payment = res.data;
this.paymentRegistrationForm.plan = [];
this.payment = [];
this.fileList = []
},
submit() {
let data = {
fund_type: 2,
away_id: this.contract.id,
apply_money: this.paymentRegistrationForm.applyMoney,
//discount_money: this.paymentRegistrationForm.deductionMoney,
remark: this.paymentRegistrationForm.remark,
contract_plan_act_links: this.paymentRegistrationForm.plan,
};
addFundLog(data).then((res) => {
save({
...this.contract,
financial_status: 2
})
//
// editorContract({
// id: this.contract.id,
// audit_money: this.form.audit_money,
// }).then((r) => {
// this.$emit("paid", {
// name: this.contract?.name,
// type: this.contract?.type,
// number: this.contract?.number,
// id: this.contract?.id,
// reason: this.paymentRegistrationForm.remark,
// yizhifucishu: this.actNumsTotal(),
// yizhifujine: this.totalMoney(),
// zongjia: this.contract?.money,
// zhifucishu: this.contract?.sign_plan?.length || 0,
// total: data.apply_money,
// out_pay_id: res,
// });
// this.isShowPaymentRegistration = false;
// Message({
// type: "success",
// message: "",
// });
// });
this.$refs["paymentRegistration"].reset();
this.$emit('refresh')
this.$message.success("操作成功");
this.isShowPaymentRegistration = false;
});
},
//
//
async getBudgets() {
let res = await getBudget({
top_pid: 1,
...this.plansSelect
});
this.plans = res.list.data;
this.planTotal = res.list.total;
// this.toggleSelection(this.paymentRegistrationForm.plan.map(item => {
// return item.plan_id
// }))
setTimeout(() => {
this.$nextTick(() => this.$refs["planTable"].doLayout())
},500)
},
planPageChange(e) {
this.plansSelect.page = e
this.getBudgets();
},
selectPlan(sel, row) {
if (sel) {
this.paymentRegistrationForm.plan = sel.map((item) => {
return {
plan_id: item.id,
use_money: item.useMoney,
new_money: item.money,
};
});
} else {
this.paymentRegistrationForm.plan = [];
}
},
toggleSelection(e) {
if (!e) {
return;
}
let plans = this.paymentRegistrationForm.plan.map((item) => {
return item.plan_id;
});
if (plans) {
this.plans
.filter((plan) => {
return plans.includes(plan.id);
})
.map((row) => {
this.$nextTick(() => {
this.$refs["planTable"].toggleRowSelection(row);
});
});
} else {
this.$refs["planTable"].clearSelection();
}
},
//
getDepartment() {
listdeptNoAuth().then((res) => {
this.departments = res;
});
},
},
computed: {
priceFormat() {
return function (price) {
return Number(price)
.toFixed(2)
.replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
};
},
nameFormat () {
return function(index) {
if (index == 2) {
return '报销'
}
if (index == 3) {
return '其他支出'
}
return '合同'
}
}
},
watch: {
isShowPaymentRegistration(newVal) {
if (newVal) {
this.getBudgets();
}
},
},
mounted() {
this.getPlanTypes();
},
created() {
this.getDepartment()
}
};
</script>
<style scoped lang="scss">
.payment-registration {
&-row {
display: flex;
padding: 6px 0;
&-title {
padding: 0 10px;
}
&-content {
}
}
}
.xy-table-item-label {
width: 200px;
}
.xy-table-item-price {
position: relative;
&::after {
z-index: 1;
position: absolute;
right: 0;
top: 0;
content: "(元)";
}
::v-deep .el-input__clear {
position: relative;
right: 30px;
z-index: 2;
}
}
</style>

@ -138,20 +138,12 @@
<template v-else #default="{ row }"> <template v-else #default="{ row }">
<template v-if="row.FLOWSTATUS.expense.getStatus() === 3"> <template v-if="row.FLOWSTATUS.expense.getStatus() === 3">
<Button <Button
v-if="row.FLOWSTATUS.financial.getStatus() === 2" v-if="row.FLOWSTATUS.financial.getStatus() !== 2"
style="margin: 2px;" style="margin: 2px;"
size="small" size="small"
type="primary" type="primary"
@click="examineAway(row,1)" @click="$refs['examineAway'].getContract(row);$refs['examineAway'].isShowPaymentRegistration=true;"
ghost ghost
>审核取消
</Button>
<Button
v-else
style="margin: 2px;"
size="small"
type="primary"
@click="examineAway(row,2)"
>审核确认 >审核确认
</Button> </Button>
</template> </template>
@ -197,16 +189,19 @@
</div> </div>
</div> </div>
<addAway ref="addAway" @refresh="getList"></addAway> <addAway ref="addAway" @refresh="getList"></addAway>
<examineAway ref="examineAway" @refresh="getList"></examineAway>
</div> </div>
</template> </template>
<script> <script>
import examineAway from "@/views/away/component/examineAway.vue";
import addAway from "@/views/away/component/addAway.vue" import addAway from "@/views/away/component/addAway.vue"
import { index, destroy, save } from "@/api/away"; import { index, destroy, save } from "@/api/away";
export default { export default {
components: { components: {
addAway addAway,
examineAway
}, },
data() { data() {
return { return {
@ -389,6 +384,9 @@ export default {
} }
}, },
methods: { methods: {
showExamineAway () {
},
async toOaDetail (tbname,row) { async toOaDetail (tbname,row) {
let url = `${process.env.VUE_APP_OUT_URL}/flow/view/` let url = `${process.env.VUE_APP_OUT_URL}/flow/view/`
switch (tbname) { switch (tbname) {
@ -573,7 +571,7 @@ export default {
this.getList() this.getList()
}) })
}) })
} },
}, },
computed: { computed: {
isAuthEdit () { isAuthEdit () {

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<Modal v-model="isShow" title="中标公告上传" @on-ok="submit"> <Modal v-model="isShow" title="中标/比价结果" @on-ok="submit">
<el-upload <el-upload
style="width: 300px" style="width: 300px"
ref="upload" ref="upload"

@ -127,9 +127,10 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>资金渠道 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>资金渠道
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select multiple clearable placeholder="请选择资金渠道" v-model="detail.fundingChannels" style="width: 300px;"> <el-input readonly placeholder="请填写采购预算价" :value="detail.money_way_detail instanceof Array ? detail.money_way_detail.map(i => i.value).toString() : ''" style="width: 300px;" />
<el-option v-for="item in moneyWay" :value="item.id" :label="item.value"></el-option> <!-- <el-select multiple clearable disabled placeholder="请选择资金渠道" v-model="detail.fundingChannels" style="width: 300px;">-->
</el-select> <!-- <el-option v-for="item in moneyWay" :value="item.id" :label="item.value"></el-option>-->
<!-- </el-select>-->
</div> </div>
</div> </div>
</template> </template>
@ -771,6 +772,7 @@ import { resetSelect } from '@/utils'
is_framework:res.is_framework, is_framework:res.is_framework,
use_framework_buy: res.use_framework_buy, use_framework_buy: res.use_framework_buy,
contract_to_contracts: res.contract_to_contracts, contract_to_contracts: res.contract_to_contracts,
money_way_detail: res.money_way_detail,
plan: res.plans.map(item => { plan: res.plans.map(item => {
return { return {
label: item.name, label: item.name,

@ -551,6 +551,7 @@ export default {
zhifucishu: this.contract?.sign_plan?.length || 0, zhifucishu: this.contract?.sign_plan?.length || 0,
total: data.apply_money, total: data.apply_money,
out_pay_id: res, out_pay_id: res,
applyMoney: data.apply_money
}); });
this.isShowPaymentRegistration = false; this.isShowPaymentRegistration = false;
Message({ Message({

@ -303,6 +303,7 @@
multiple multiple
size="small" size="small"
clearable clearable
disabled
placeholder="请选择资金渠道" placeholder="请选择资金渠道"
:value=" :value="
form.money_way_id form.money_way_id
@ -1338,12 +1339,27 @@ export default {
}, },
// //
async getMoneyWay() { async getMoneyWay() {
this.moneyWay = this.moneyWay = [];
( const res = await getparameterTree({
await getparameter({ id: 3
number: "money_way", });
}) const dataHandler = (data) => {
)?.detail || []; data.forEach(i => {
if (i.hasOwnProperty('detail')) {
this.moneyWay.push(...i.detail)
} else {
dataHandler(i['children'])
}
})
}
dataHandler(res?.children)
console.log("this.moneyWay",this.moneyWay)
// this.moneyWay =
// (
// await getparameter({
// number: "money_way",
// })
// )?.detail || [];
}, },
// //
async getPurchaseWay() { async getPurchaseWay() {
@ -1449,6 +1465,7 @@ export default {
return; return;
} }
} }
this.form.money_way_id = Array.from(new Set(selections.map(i => i.type))).toString();
this.form.contract_plan_links = selections.map((i) => ({ this.form.contract_plan_links = selections.map((i) => ({
plan_id: i.id, plan_id: i.id,
use_money: i._inputMoney, use_money: i._inputMoney,

@ -586,6 +586,7 @@
签订修改 签订修改
</Button> </Button>
</template> </template>
<Button class="slot-btns-item" size="small" type="primary" @click="printFlow(scope.row)"></Button>
</div> </div>
</Poptip> </Poptip>
</div> </div>
@ -2181,6 +2182,22 @@ export default {
}; };
}, },
methods: { methods: {
printFlow (row) {
let id;
if (row.purchase_last_flow_id) {
id = row.purchase_last_flow_id;
} else if (row.join_last_flow_id) {
id = row.join_last_flow_id
} else if (row.other_flow_id) {
id = row.other_flow_id
} else {}
if (!id) {
this.$message.warning("未找到流程");
return
}
window.open(`${process.env.VUE_APP_OUT_URL}/flow/print-relate-flow?id=${id}&except_self=0&auth_token=${this.$store.getters.oa_token}`,"_blank")
},
showIsFramework () { showIsFramework () {
this.$nextTick(() => { this.$nextTick(() => {
if (this.$refs['methodInput'].selected.label === '直接发包' && this.form.use_framework_buy) { if (this.$refs['methodInput'].selected.label === '直接发包' && this.form.use_framework_buy) {
@ -2204,7 +2221,7 @@ export default {
url += row.other_flow_id url += row.other_flow_id
break; break;
default: default:
url = `${process.env.VUE_APP_OUT_URL}/admin/flow/list/todo` url = `${process.env.VUE_APP_OUT_URL}/flow/list/todo`
} }
window.open( window.open(
url, url,
@ -2411,7 +2428,8 @@ export default {
"658a70750b3cf": row?.yizhifujine, "658a70750b3cf": row?.yizhifujine,
"658a7036916f6": row?.zongjia, "658a7036916f6": row?.zongjia,
"658a7059b6531": row?.zhifucishu, "658a7059b6531": row?.zhifucishu,
total: row?.total total: row?.total,
"658a6fafb27ac": row?.applyMoney
//"\\":row.supply //"\\":row.supply
}; };
let url = `${process.env.VUE_APP_OUT_OLD}/flow/create/18?auth_token=${this.$store.getters.oa_token}&out_pay_id=${ let url = `${process.env.VUE_APP_OUT_OLD}/flow/create/18?auth_token=${this.$store.getters.oa_token}&out_pay_id=${

@ -164,6 +164,7 @@ import { fundlogFlow,httpCurl } from "@/api/out";
import { getFundLog, delFundLog } from "@/api/paymentRegistration/fundLog"; import { getFundLog, delFundLog } from "@/api/paymentRegistration/fundLog";
import { parseTime } from "@/utils"; import { parseTime } from "@/utils";
import { Message } from "element-ui"; import { Message } from "element-ui";
import { show } from "@/api/away"
import printRegistration from "./components/printRegistration"; import printRegistration from "./components/printRegistration";
import detailPaymentRegistration from "./components/detailPaymentRegistration"; import detailPaymentRegistration from "./components/detailPaymentRegistration";
@ -196,6 +197,9 @@ export default {
prop: "contract.name", prop: "contract.name",
align: "left", align: "left",
fixed: "left", fixed: "left",
customFn: row => {
return (<span>{ row.contract_id ? row.contract.name : row.away.title }</span>)
}
}, },
{ {
label: "付款申请金额(元)", label: "付款申请金额(元)",
@ -267,9 +271,9 @@ export default {
label: "次数", label: "次数",
prop: "pay_count", prop: "pay_count",
width: 95, width: 95,
formatter: (cell, data, value) => { customFn: row => {
return value + 1; return (<span>{ row.contract_id ? row.pay_count : row.pay_count_away }</span>)
}, }
}, },
{ {
label: "是否为最后一笔", label: "是否为最后一笔",
@ -334,11 +338,9 @@ export default {
let payments = []; let payments = [];
const actNumsTotal = () => { const actNumsTotal = () => {
let total = 0; let total = 0;
payments.map((item) => { payments.reduce((pre,cur) => {
if (Number(item.act_money)) { return Number(cur.act_money) ? ++pre : pre;
total++; },0);
}
});
return total; return total;
}; };
const totalMoney = () => { const totalMoney = () => {
@ -348,7 +350,13 @@ export default {
}); });
return total.toFixed(2); return total.toFixed(2);
}; };
const contract = await detailContract({ id: row.contract_id }); let contract;
if (row.contract_id) {
contract = await detailContract({ id: row.contract_id });
} else {
contract = await show({ id: row.away_id });
}
payments = payments =
( (
await getFundLog({ await getFundLog({
@ -363,7 +371,6 @@ export default {
]); ]);
let baseInfo = { let baseInfo = {
"flow_title": row.name || "", "flow_title": row.name || "",
title: contract?.name,
xiangmuleibie: typeMap.get( xiangmuleibie: typeMap.get(
[ [
{ {
@ -382,7 +389,6 @@ export default {
return item.value === contract.type; return item.value === contract.type;
})?.label })?.label
), ),
things: contract?.name,
"658a6f87c4a75": contract?.number, "658a6f87c4a75": contract?.number,
out_pay_id: row?.id, out_pay_id: row?.id,
"658a70251f0f4": row?.remark, "658a70251f0f4": row?.remark,
@ -390,7 +396,7 @@ export default {
"658a70750b3cf": totalMoney(), "658a70750b3cf": totalMoney(),
"658a7036916f6": contract?.money, "658a7036916f6": contract?.money,
"658a7059b6531": payments.length, "658a7059b6531": payments.length,
total: row?.apply_money, "658a6fafb27ac": row?.apply_money,
//"\\":row.supply //"\\":row.supply
}; };
let url = `${process.env.VUE_APP_OUT_OLD}/flow/create/18?auth_token=${this.$store.getters.oa_token}&out_pay_id=${ let url = `${process.env.VUE_APP_OUT_OLD}/flow/create/18?auth_token=${this.$store.getters.oa_token}&out_pay_id=${

@ -200,7 +200,37 @@
</div> </div>
</template> </template>
<template v-slot:extraFormBottom> <template v-slot:extraFormBottom>
<Input search enter-button=" " placeholder="搜索预算计划.." v-model="plansSelect.name" @on-search="getBudgets" /> <div style="display: flex;align-items: center;">
<el-select
placeholder="科室选择"
clearable
size="small"
v-model="plansSelect.plan_department_id"
style="width: 160px"
>
<el-option
v-for="item in departments"
:label="item.name"
:value="item.id"
:key="item.id"
>
</el-option>
</el-select>
<el-cascader
:options="planTypes"
:props="{
checkStrictly: false,
label: 'name',
value: 'id',
}"
:value="plansSelect.type"
clearable
size="small"
style="width: 160px;margin-left: 6px;"
@change="(e) => (plansSelect.type = e[e.length - 1] || '')"
/>
<Input style="margin-left: 6px;" search enter-button=" " placeholder="搜索预算计划.." v-model="plansSelect.name" @on-search="getBudgets" />
</div>
<div class="contract-add-plan" style="min-width: 300px;"> <div class="contract-add-plan" style="min-width: 300px;">
<template v-if="paymentRegistrationForm.plan.length > 0"> <template v-if="paymentRegistrationForm.plan.length > 0">
<template v-for="item in paymentRegistrationForm.plan"> <template v-for="item in paymentRegistrationForm.plan">
@ -249,10 +279,12 @@ import {
parseTime, parseTime,
moneyFormatter, deepCopy moneyFormatter, deepCopy
} from "@/utils"; } from "@/utils";
import {listdeptNoAuth} from "@/api/system/department";
export default { export default {
data() { data() {
return { return {
departments: [],
flowIds: [ flowIds: [
{ {
flow_id: 14, flow_id: 14,
@ -678,7 +710,13 @@ import {
} catch (e) { } catch (e) {
this.flowIds = copy this.flowIds = copy
} }
} },
//
getDepartment() {
listdeptNoAuth().then((res) => {
this.departments = res;
});
},
}, },
computed: { computed: {
moneyFormat() { moneyFormat() {
@ -698,6 +736,7 @@ import {
} }
}, },
async mounted() { async mounted() {
this.getDepartment()
//await this.getBudgets() //await this.getBudgets()
await this.getPlanTypes() await this.getPlanTypes()
await this.getAssetsFlowIds() await this.getAssetsFlowIds()

@ -255,6 +255,9 @@ export default {
prop: "contract.name", prop: "contract.name",
fixed: "left", fixed: "left",
align: "left", align: "left",
customFn: row => {
return (<span>{ row.contract_id ? row.contract.name : row.away.title }</span>)
}
}, },
{ {
label: "付款申请金额(元)", label: "付款申请金额(元)",
@ -328,9 +331,9 @@ export default {
label: "次数", label: "次数",
prop: "pay_count", prop: "pay_count",
width: 95, width: 95,
formatter: (cell, data, value) => { customFn: row => {
return value + 1; return (<span>{ row.contract_id ? row.pay_count : row.pay_count_away }</span>)
}, }
}, },
{ {
label: "最后一笔", label: "最后一笔",

@ -0,0 +1,37 @@
<template>
<div style="padding: 40px;">
<el-card header="安装列表">
<el-table :show-header="false" :data="list" size="small">
<el-table-column type="index"></el-table-column>
<el-table-column prop="name">
<template #default="{ row }">
<el-link type="primary">{{ row.name }}</el-link>
</template>
</el-table-column>
<el-table-column prop="support"></el-table-column>
<el-table-column prop="created_at"></el-table-column>
</el-table>
</el-card>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{
name: "123.exe",
support: "wind10+",
created_at: this.$moment().format("YYYY-MM-DD")
}
]
}
},
methods: {},
computed: {},
}
</script>
<style scoped lang="scss">
</style>
Loading…
Cancel
Save