master
xy 2 years ago
parent 6424645507
commit 58f407fa5c

@ -38,7 +38,7 @@
]),
menuComputed(){
let key = /\/(\w+)/g.exec(this.$route.path)[0]
console.log(key)
//console.log(key)
return this.sidebar_menu_map.get(key) || []
// if(/^\/contract/.test(this.$route.path)){
// return this.permission_routes

@ -74,6 +74,13 @@
<!-- >-->
<!-- </div>-->
<!-- </template>-->
<template v-else-if="$route.path === '/oaOld'">
<div
style="width: 100%; height: 100%; padding-top: 50px; overflow-x: hidden"
>
<iframe ref="oldIframe" style="width: 100%;" :src="oldOaUrl">你的浏览器不支持该iframe</iframe>
</div>
</template>
<template v-else-if="$route.path === '/old'">
<div
style="width: 100%; height: 100%; padding-top: 50px; overflow-x: hidden"
@ -125,6 +132,7 @@ export default {
gdzcUrl: `${process.env.VUE_APP_OUT_GDZC}/member/oss_login?id=${this.$store.state.user.userId}&username=${this.$store.state.user.username}`,
oldUrl: `${process.env.VUE_APP_OUT_OLD}/login/oss_login?auth_token=${this.$store.getters.oa_token}`,
goodsUrl: `${process.env.VUE_APP_OUT_GOODS}/admin/oss-login?id=${this.$store.state.user.userId}&username=${this.$store.state.user.username}`,
oldOaUrl: `${process.env.VUE_APP_OLD_OA}/login/oss_login?auth_token=${this.$store.getters.oa_token}`
};
},
computed: {
@ -206,6 +214,13 @@ export default {
dom.onload = null;
})
next()
},
created() {
let gdzcIframe = document.createElement('iframe');
gdzcIframe.src = `${process.env.VUE_APP_OUT_GDZC}/member/oss_login?id=${this.$store.state.user.userId}&username=${this.$store.state.user.username}`
gdzcIframe.onload = () => {
gdzcIframe = null;
}
}
};
</script>

@ -10,6 +10,7 @@ import {
} from '@/utils/auth' // get token from cookie
import getPageTitle from '@/utils/get-page-title'
import { loginOssV2 } from "@/api/user"
import { setToken, removeToken } from "@/utils/auth";
NProgress.configure({
showSpinner: false
@ -25,10 +26,12 @@ router.beforeEach(async (to, from, next) => {
document.title = getPageTitle(to.meta.title)
if (to.query.code) {
const { token } = await loginOssV2({
removeToken()
const res = await loginOssV2({
code: to.query.code
})
store.commit('user/SET_TOKEN',token)
setToken(res.access_token)
store.commit('user/SET_TOKEN',res.access_token)
const {
roles

@ -1,6 +1,6 @@
module.exports = {
title: '合同管理系统',
title: '江苏省苏州环境监测中心内控管理平台',
/**
* @type {boolean} true | false

@ -231,7 +231,7 @@ const actions = {
asyncRoutes.length=0;
generaMenu(asyncRoutes, loadMenuData)
console.log(asyncRoutes)
//console.log(asyncRoutes)
let accessedRoutes
if (roles.includes('admin')) {
accessedRoutes = asyncRoutes || []

@ -78,7 +78,7 @@
}
//
.el-table--striped .el-table__body tr.el-table__row--striped td {
background: #dcf3ff;
}
//.el-table--striped .el-table__body tr.el-table__row--striped td {
// background: #dcf3ff;
//}

@ -885,6 +885,7 @@ export default {
this.form.pid = "0";
this.form.pid_info = null;
this.isShowAdd = true;
this.form.remark = "";
this.getDepartment();
if (row != "") {
this.form.pid = row.id;

@ -0,0 +1,344 @@
<template>
<div>
<xy-dialog
ref="dialog"
:is-show.sync="isShow"
type="form"
:title="type === 'add' ? '新增合同' : '编辑合同'"
:form="form"
:rules="rules"
@submit="submit"
>
<template #extraFormTop>
<el-form-item size="small">
<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-switch
disabled
:value="true"
active-text="是"
inactive-text="否"
style="width: 300px"
/>
</div>
</div>
</el-form-item>
</template>
<template v-slot:name>
<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-input
v-model="form.name"
@change="checkName"
placeholder="请填写项目名称"
style="width: 300px"
/>
</div>
</div>
</template>
<template v-slot:number>
<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-input placeholder="请填写合同编号" v-model="form.number" style="width: 300px;" />
</div>
</div>
</template>
<template v-slot:supply>
<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-input placeholder="请填写承包商\供应商" v-model="form.supply" style="width: 300px;" />
</div>
</div>
</template>
<template v-slot:money>
<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-number :controls="false" :precision="2" placeholder="请填写合同金额" v-model="form.money" style="width: 300px;" />
</div>
</div>
</template>
<template v-slot:guarantee_money>
<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-number :precision="2" :controls="false" placeholder="请填写质保金" v-model="form.guarantee_money"
style="width: 300px;" />
</div>
</div>
</template>
<template v-slot:start_date>
<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-date-picker style="width: 300px;" value-format="yyyy-MM-dd" v-model="time" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
@change="e => {
(e[0] && e[1]) ?
(form.start_date = e[0],
form.end_date = e[1])
: (form.start_date = '',form.end_date = '')
}">
</el-date-picker>
</div>
</div>
</template>
<template v-slot:guarantee_year>
<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-year">
<el-input-number :controls="false" placeholder="请填写质保期" v-model="form.guarantee_year"
style="width: 300px;" />
</div>
</div>
</template>
<template v-slot:date>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;">*</span>
签订日期
</div>
<div class="xy-table-item-content">
<el-date-picker style="width: 300px;" value-format="yyyy-MM-dd" v-model="form.date" type="date">
</el-date-picker>
</div>
</div>
</template>
</xy-dialog>
</div>
</template>
<script>
import {
detailContract as show,
editorContract as save,
addContrant as store,
checkContractName
} from '@/api/contract/contract'
export default {
props: {
},
data() {
return {
isShow: false,
id: "",
type: "",
action: process.env.VUE_APP_UPLOAD_API,
file_ids: [],
time: [],
form: {
name: "",
number: "",
supply: "",
money: "",
start_date: "",
end_date: "",
guarantee_money: "",
guarantee_year: "",
date: this.$moment().format('YYYY-MM-DD'),
is_contract: 1,
purchase_status: 3,
join_status: 3,
invite_status: 3
},
rules: {
name: [
{
required: true,
message: "请填写合同名称",
},
],
number: [
{
required: true,
message: "请填写合同编号",
},
],
money: [
{
required: true,
message: "请填写合同金额",
},
],
guarantee_money: [
{
required: true,
message: "请填写保证金",
},
],
guarantee_year: [
{
required: true,
message: "请填写保证期",
},
],
date: [
{
required: true,
message: "请填写签订日期",
},
],
},
};
},
methods: {
show() {
this.isShow = true;
},
hidden() {
this.isShow = false;
},
init() {
for (let key in this.form) {
if (this.form[key] instanceof Array) {
this.form[key] = [];
} else {
this.form[key] = "";
}
}
this.$refs["dialog"].clearValidate();
},
setId(id) {
if (typeof id == "number") {
this.id = id;
} else {
console.error("error typeof id: " + typeof id);
}
},
getId() {
return this.id;
},
setType(type = "add") {
let types = ["add", "editor"];
if (types.includes(type)) {
this.type = type;
} else {
console.warn("Unknown type: " + type);
}
},
setForm(key = [], value = []) {
if (key instanceof Array) {
key.forEach((key, index) => {
this.form[key] = value[index] ?? "";
});
}
if (typeof key === "string") {
this.form[key] = value;
}
if (!key) {
this.init();
}
},
//
successHandle(response, file, fileList, key) {
this[key] = fileList;
},
removeHande(file, fileList, key) {
this[key] = fileList;
},
uploadBefore(file) {
console.log(file);
if (file.size / 1000 > 20 * 1024) {
this.$message({
type: "warning",
message: "上传图片大小超过20MB",
});
return false;
}
},
async getDetail() {
const res = await show({ id: this.id });
this.$integrateData(this.form, res);
if (this.form.start_date && this.form.end_date) this.time = [this.form.start_date,this.form.end_date]
},
submit() {
if (this.type === "add") {
if (this.form.hasOwnProperty("id")) {
delete this.form.id;
}
store(this.form).then((res) => {
this.$message({
type: "success",
message: "新增合同",
});
this.isShow = false;
this.$emit("refresh");
})
}
if (this.type === "editor") {
Object.defineProperty(this.form, "id", {
value: this.id,
enumerable: true,
configurable: true,
writable: true,
});
save(this.form).then((res) => {
this.$message({
type: "success",
message: "编辑合同",
});
this.isShow = false;
this.$emit("refresh");
});
}
},
//y
checkName(e) {
checkContractName({ name: e }).then((res) => {
console.log(res);
});
},
},
watch: {
isShow(val) {
if (val) {
if (this.type === "editor") {
this.getDetail();
}
} else {
this.id = "";
this.type = "";
this.init();
this.$refs["dialog"].clearValidate();
delete this.form.id;
}
},
},
};
</script>
<style scoped lang="scss">
::v-deep .el-input__inner {
text-align: left;
}
</style>

@ -10,6 +10,16 @@
</div>
</div>
</template>
<template #is_contract>
<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-switch disabled v-model="form.is_contract" active-text="" inactive-text="" :active-value="1" :inactive-value="0" style="width: 300px;" />
</div>
</div>
</template>
<template v-slot:number>
<div class="xy-table-item">
<div class="xy-table-item-label">
@ -236,6 +246,7 @@
return {
linTypes: [],
form: {
is_contract: 1,
number: '',
supply: '',
carryDepartment: '',
@ -478,6 +489,7 @@
this.form.assurance_expire = res.assurance_expire
this.form.assurance_money = res.assurance_money
this.form.contract_links = res.contract_links || []
this.form.is_contract = res.is_contract
console.log(this.form)
},
deleteContractSign(row) {
@ -514,10 +526,10 @@
async getOutContract() {
const res = await httpCurl({ tbname: 'hetong', out_contract_id: this.contract.id })
console.log(res)
this.form.number = "HT-"+res.flow?.serial
this.form.money = Number(res.flow_detail?.total)
this.form.supply = res.flow_detail?.yifang
this.form.carryDepartment = res.flow?.dept_name
if (res.flow.serial) this.form.number = "HT-"+res.flow?.serial
if (res.flow_detail.total) this.form.money = Number(res.flow_detail?.total)
if (res.flow_detail.yifang) this.form.supply = res.flow_detail?.yifang
if (res.flow.dept_name) this.form.carryDepartment = res.flow?.dept_name
},
//oa
// async getOaContractInfo() {

@ -14,6 +14,26 @@
</div>
</div>
</template>
<template v-slot:is_contract>
<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">
<div style="display: flex; width: 300px; align-items: center">
<el-switch
v-model="detail.is_contract"
active-text="是"
inactive-text="否"
:active-value="1"
:inactive-value="0"
/>
</div>
</div>
</div>
</template>
<template v-slot:is_simple>
<div class="xy-table-item">
<div class="xy-table-item-label">
@ -686,6 +706,7 @@ import { resetSelect } from '@/utils'
this.selections = []
this.detail = {
name: res.name,
is_contract: res.is_contract,
is_simple:res?.is_simple,
date: res.date,
req_status: res.req_status,
@ -696,7 +717,7 @@ import { resetSelect } from '@/utils'
type: res.type,
methods: res.purchase_type_id,
modality: res.purchase_way_id,
fundingChannels: res.money_way_id.split(',').map(item => {
fundingChannels: res.money_way_id?.split(',')?.map(item => {
return Number(item)
}),
price: res.plan_price,

@ -269,7 +269,7 @@
<Button
style="margin-left: 10px"
type="primary"
@click="isShowAdd = true"
@click="new RegExp(/contractLedger/g).test($route.path) ? ($refs['addContractLedger'].setType('add'),$refs['addContractLedger'].show()) : isShowAdd = true"
>新增</Button
>
<Button style="margin-left: 10px" type="primary" @click="getContracts"
@ -289,7 +289,7 @@
:list="list"
:show-summary="true"
:summary-method="summary"
:table-item="table"
:table-item="/contractLedger/g.test($route.path) ? ledgerTable : table"
@cellClick="showPaymentPlan"
@delete="(row) => deleteContract(row.id)"
@editor=""
@ -344,7 +344,7 @@
</template>
<template
v-if="scope.row.status === 1 && scope.row.join_status === 3"
v-if="scope.row.status === 1 && scope.row.join_status === 3 && !/contractLedger/g.test($route.path)"
>
<Button
class="slot-btns-item"
@ -498,8 +498,10 @@
size="small"
type="primary"
@click="
($refs['editor'].isShowEditor = true),
$refs['editor'].getDetail(scope.row.id)
(new RegExp(/contractLedger/g).test($route.path)) ?
($refs['addContractLedger'].setId(scope.row.id),$refs['addContractLedger'].setType('editor'),$refs['addContractLedger'].show()) :
($refs['editor'].isShowEditor = true,
$refs['editor'].getDetail(scope.row.id))
"
>编辑
</Button>
@ -562,6 +564,26 @@
</div>
</div>
</template>
<template v-slot:is_contract>
<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">
<div style="display: flex; width: 300px; align-items: center">
<el-switch
v-model="form.is_contract"
active-text="是"
inactive-text="否"
:active-value="1"
:inactive-value="0"
/>
</div>
</div>
</div>
</template>
<template v-slot:is_simple>
<div class="xy-table-item">
<div class="xy-table-item-label">
@ -919,12 +941,19 @@
<!-- 新增表 预算计划 -->
<xy-dialog
:is-show.sync="isShowPlan"
:width="820"
:width="840"
title="预算计划"
@on-ok="planSelect"
>
<template>
<div style="display: flex">
<div style="display: flex;width: 100%;">
<el-date-picker
v-model="planSearch.year"
type="year"
placeholder="年份"
value-format="yyyy"
style="width: 90px"
size="small"></el-date-picker>
<el-select
placeholder="科室选择"
clearable
@ -941,6 +970,7 @@
</el-option>
</el-select>
<Input
style="flex: 1;"
v-model="planSearch.name"
enter-button="搜 索"
placeholder="搜索预算计划.."
@ -1055,6 +1085,8 @@
<biddingUpload ref="biddingUpload" @refresh="getContracts"></biddingUpload>
<oaFiles ref="oaFiles"></oaFiles>
<addContractLedger ref="addContractLedger" @refresh="getContracts"></addContractLedger>
</div>
</template>
@ -1082,9 +1114,11 @@ import contractSign from "@/views/contract/components/contractSign";
import contractPaymentRegistration from "@/views/contract/components/contractPaymentRegistration";
import biddingUpload from "./components/biddingUpload.vue";
import oaFiles from './components/oaFiles.vue';
import addContractLedger from '@/views/contract/components/addContractLedger.vue'
let iframe;
export default {
components: {
addContractLedger,
editor,
detail,
paymentRegistration,
@ -1181,7 +1215,7 @@ export default {
};
return {
userList: ["liuxiangyu", "zhushulan", "admin", "jiangjiao"],
userList: ["ma_sm", "admin", "yu_l","wang_yx","li_f","chen_y"],
nowContract: {},
window: {
width: 0,
@ -1271,6 +1305,81 @@ export default {
list: [], //
total: 0,
//
ledgerTable: [
{
label: "项目名称",
width: 380,
prop: "name",
fixed: "left",
align: "left",
},
{
label: "合同编号",
width: 200,
prop: 'number',
align: 'center'
},
{
label: "合同签订价(元)",
width: 140,
prop: "money",
align: "right",
formatter: (cell, data, value) => {
return Number(value)
.toFixed(2)
.replace(/(\d)(?=(\d{3})+\.)/g, "$1,");
},
},
{
label: "供应商/服务商",
width: 220,
prop: "supply",
align: "left",
},
{
label: "业务科室",
width: 140,
prop: "department.name",
},
{
label: "经办人",
width: 140,
prop: "admin.name",
},
{
label: "合同服务日期",
width: 200,
customFn: (row) => {
if (row.start_date && row.end_date) {
return (
<div>
<span>
{row.start_date} ~ {row.end_date}
</span>
</div>
);
} else {
return <span></span>;
}
},
},
{
label: "签订日期",
width: 160,
prop: "date",
formatter: (cell, data, value) => {
if (value) return parseTime(new Date(value), "{y}-{m}-{d}");
},
},
{
label: "创建日期",
width: 160,
prop: "created_at",
formatter: (cell, data, value) => {
return parseTime(new Date(value), "{y}-{m}-{d}");
},
},
],
table: [
{
label: "项目名称",
@ -1374,30 +1483,11 @@ export default {
label: "采购业务审批流程",
width: 158,
prop: "purchase_status",
formatter: (cell, data, value) => {
if (cell.is_substitute || cell.is_simple) {
return "无";
}
switch (value) {
case 1:
return "待申请";
break;
case 2:
return "流转中";
break;
case 3:
return "已办结";
break;
default:
return "异常";
break;
}
},
customFn:row => {
if (row.is_substitute || row.is_simple || !row.is_contract) {
return (<span></span>);
}
const getDate = (value) => {
if (row.is_substitute || row.is_simple) {
return "无";
}
switch (value) {
case 1:
return "待申请";
@ -1428,36 +1518,14 @@ export default {
label: "招标审核流程",
width: 145,
prop: "invite_status",
formatter: (cell, data, value) => {
if (cell.is_substitute || cell.is_simple) {
return "无";
}
if (cell.purchase_way?.remark === "false") {
return "无";
customFn:row => {
if (row.is_substitute || row.is_simple || !row.is_contract) {
return (<span></span>);
}
switch (value) {
case 1:
return "待申请";
break;
case 2:
return "流转中";
break;
case 3:
return "已办结";
break;
default:
return "异常";
break;
if (row.purchase_way?.remark === "false") {
return (<span></span>);
}
},
customFn:row => {
const getDate = (value) => {
if (row.is_substitute || row.is_simple) {
return "无";
}
if (row.purchase_way?.remark === "false") {
return "无";
}
switch (value) {
case 1:
return "待申请";
@ -1494,30 +1562,11 @@ export default {
label: "合同审批流程",
width: 145,
prop: "join_status",
formatter: (cell, data, value) => {
if (cell.is_simple) {
return "无";
}
switch (value) {
case 1:
return "待申请";
break;
case 2:
return "流转中";
break;
case 3:
return "已办结";
break;
default:
return "异常";
break;
}
},
customFn:row => {
if (row.is_simple || !row.is_contract) {
return (<span></span>);
}
const getDate = (value) => {
if (row.is_simple) {
return "无";
}
switch (value) {
case 1:
return "待申请";
@ -1739,13 +1788,7 @@ export default {
planTableSearch: [
{
label: "分类",
prop: "type",
formatter: (cell, data, value) => {
let res = this.moneyWay.filter((item) => {
return item.id === value;
});
return res[0]?.value || "未知";
},
prop: "type_detail.value",
},
{
label: "年份",
@ -1800,12 +1843,6 @@ export default {
width: 80,
align: "center",
},
{
label: "隶属",
prop: "pid_info.name",
width: 180,
align: "left",
},
{
label: "名称",
prop: "name",
@ -1842,6 +1879,7 @@ export default {
isShowAdd: false,
form: {
name: "",
is_contract: 1,
is_simple: 0,
supply: "",
money: 0,
@ -1920,6 +1958,7 @@ export default {
planSearch: {
name: "",
plan_department_id: "",
year: ""
},
planTotal: 0,
plansPageIndex: 1,
@ -2005,7 +2044,7 @@ export default {
console.log(res)
if (res && res.flow?.id) {
window.open(
`http://hjjc-szemcold-test.ali251.langye.net/index.php?s=/flow/edit/id/${res.flow.id}&auth_token=${this.$store.getters.oa_token}`,
`${process.env.VUE_APP_OUT_OLD}/index.php?s=/flow/edit/id/${res.flow.id}&auth_token=${this.$store.getters.oa_token}`,
"bidding",
`top=${this.window.top},left=${this.window.left},width=${this.window.width},height=${this.window.height},location=0`
)
@ -2104,7 +2143,7 @@ export default {
},
cellStyle({ row, column, rowIndex, columnIndex }) {
if (column.property === "req_status") {
if (row.is_plan || row.is_substitute || row.is_simple) {
if (row.is_plan || row.is_substitute || row.is_simple || !row.is_contract) {
return {
color: "rgb(140,140,140)",
};
@ -2273,9 +2312,6 @@ export default {
//
async buyProcess(row) {
let zijinlaiyuanjuti = row.plans?.map(plan => {
return this.plans.find(p => p.id === plan.pid)?.name
})
this.setNowContract(row, "caigou");
let baseInfo = {
title: row?.name,
@ -2291,11 +2327,12 @@ export default {
if (index === 0) {
return cur?.value;
} else {
return prev + "," + cur?.value;
}
}, ""),
zijinlaiyuanjuti: zijinlaiyuanjuti.toString()
zijinlaiyuanjuti: row?.plans.reduce((pre,cur,index)=>(index === 0 ? cur?.name : pre+cur?.name+""),"")
};
console.log(baseInfo.zijinlaiyuanjuti)
// let res = await getOatoken()
let url = `${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/8&auth_token=${this.$store.getters.oa_token}&out_caigou_id=${
row.id
@ -2394,7 +2431,8 @@ export default {
page: this.plansPageIndex,
plan_department_id: this.planSearch.plan_department_id,
top_pid: '',
is_tree: 1
is_tree: 1,
year: this.planSearch.year
});
this.plans = res.list;
@ -2446,6 +2484,11 @@ export default {
},
//
async getContracts(is_export,noloading=false) {
if (/contractLedger/g.test(this.$route.path)) {
this.select.is_contract = 1
} else {
this.select.is_contract = ""
}
const res = await getContract({
page_size: this.select.pageSize,
page: this.select.pageIndex,

@ -154,7 +154,7 @@
</div>
</div>
</el-col>
<el-col :span="7">
<el-col :span="($store.state.user.department && $store.state.user.department.name === '中心领导') ? 7 : 8">
<el-card class="box-card" style="margin: 20px 0">
<div class="text item">
<pie-chart :chartData="rptChartData"></pie-chart>
@ -162,7 +162,7 @@
</el-card>
</el-col>
<el-col :span="1">
<el-col :span="1" v-if="$store.state.user.department && $store.state.user.department.name === '中心领导'">
<div style="display: flex;flex-direction: column;height: 310px;padding-top: 20px;">
<div class="show-static-btn" @click="$refs['budgetStatic'].show()">
统计查看

@ -109,7 +109,7 @@ export default {
minWidth: 120,
},
{
title: "下发时间",
title: "收件时间",
key: "created_at",
width: 180,
align: "center",

Loading…
Cancel
Save