lynn 3 months ago
commit 464cb4a243

@ -19,7 +19,7 @@ export default {
watch: {
$route(to, from) {
const locationHash = window.location.hash
console.log("locationHash",locationHash)
this.$matomo.setCustomUrl(locationHash.replace(/#/g, ''))
this.$matomo.trackPageView(to.meta.title) //
}

@ -57,7 +57,7 @@ export default {
mounted() {
this.$nextTick(() => {
this.initChart()
this.bindEvents()
// this.bindEvents()
})
},
beforeDestroy() {
@ -110,9 +110,10 @@ export default {
},
series: [{
type: 'pie',
radius: ['50%', '70%'],
center: ['50%', '40%'], //
radius: ['40%', '65%'],
center: ['50%', '45%'],
avoidLabelOverlap: false,
minShowLabelAngle: 10,
itemStyle: {
borderRadius: 6,
borderColor: '#fff',
@ -120,22 +121,21 @@ export default {
},
label: {
show: true,
position: 'center',
formatter: () => `已用\n{value|${this.formattedUsedAmount}}\n{percent|${this.formattedUsedPercent}%}`,
rich: {
value: {
fontSize: 14,
fontWeight: 'bold',
lineHeight: 30
},
percent: {
position: 'outside',
fontSize: 12,
color: '#666'
}
color: '#333',
formatter: params => {
//
if (params.value === 0) return '';
const percent = this.totalAmount > 0 ? ((params.value / this.totalAmount) * 100).toFixed(2) : '0.00';
return `${params.name}\n${percent}%`;
}
},
labelLine: {
show: false
show: true,
length: 8,
length2: 5,
smooth: true
},
data: [
{
@ -158,35 +158,7 @@ export default {
this.chart.setOption(option)
},
bindEvents() {
//
this.chart.on('mouseover', params => {
if (params.data.name === '剩余金额') {
this.showRemaining = true
this.chart.setOption({
series: [{
label: {
formatter: () => `剩余\n{value|${this.formattedRemainingAmount}}\n{percent|${this.formattedRemainingPercent}%}`
}
}]
})
}
})
//
this.chart.on('mouseout', params => {
if (params.data.name === '剩余金额') {
this.showRemaining = false
this.chart.setOption({
series: [{
label: {
formatter: () => `已用\n{value|${this.formattedUsedAmount}}\n{percent|${this.formattedUsedPercent}%}`
}
}]
})
}
})
}
// bindEvents
}
}
</script>

@ -68,7 +68,7 @@ router.beforeEach(async(to, from, next) => {
// remove token and go to login page to re-login
await store.dispatch('user/resetToken')
Message.error(error || 'Has Error')
next(`/login?redirect=${to.path}`)
next(`/login?redirect=${to.fullPath}`)
NProgress.done()
}
}
@ -91,6 +91,17 @@ router.beforeEach(async(to, from, next) => {
} catch (e) {
next('/login')
}
}else if(to.query.auth_token && to.query.oaType==='contractSign' && to.query.contractId){
try {
await store.dispatch('user/loginskip', {
token: to.query.auth_token,
tp: 'inner'
})
next(to.fullPath?to.fullPath.slice(1): '/')
} catch (e) {
console.log("e",e)
next('/login')
}
} else {
// other pages that do not have permission to access are redirected to the login page.
next(`/login?redirect=${to.path}`)

@ -55,6 +55,7 @@
v-model="select.department"
placeholder="科室选择"
clearable
multiple
size="small"
style="width: 160px"
>

@ -42,7 +42,6 @@
</Button>
<Button
style="margin-left: 10px"
"
class="slot-btns-item"
size="small"
type="primary"

@ -56,16 +56,8 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>合同服务时间
</div>
<div class="xy-table-item-content">
<el-date-picker
v-model="form.time"
style="width: 300px;"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="dateRangePick"
/>
<el-date-picker v-model="form.time" style="width: 300px;" value-format="yyyy-MM-dd" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" @change="dateRangePick" />
</div>
</div>
</template>
@ -84,7 +76,8 @@
<div class="xy-table-item-label" style="width: 200px">保函金额
</div>
<div class="xy-table-item-content xy-table-item-price">
<el-input-number v-model="form.assurance_money" :controls="false" :precision="2" placeholder="请输入保函金额" style="width: 300px;" />
<el-input-number v-model="form.assurance_money" :controls="false" :precision="2" placeholder="请输入保函金额"
style="width: 300px;" />
</div>
</div>
</template>
@ -93,7 +86,8 @@
<div class="xy-table-item-label" style="width: 200px">保函有效期
</div>
<div class="xy-table-item-content">
<el-date-picker v-model="form.assurance_expire" value-format="yyyy-MM-dd" placeholder="请输入保函有效期" style="width: 300px;" />
<el-date-picker v-model="form.assurance_expire" value-format="yyyy-MM-dd" placeholder="请输入保函有效期"
style="width: 300px;" />
</div>
</div>
</template>
@ -104,13 +98,8 @@
<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
v-model="form.guaranteeMoney"
:precision="2"
:controls="false"
placeholder="请填写质保金"
style="width: 300px;"
/>
<el-input-number v-model="form.guaranteeMoney" :precision="2" :controls="false" placeholder="请填写质保金"
style="width: 300px;" />
</div>
</div>
</template>
@ -120,7 +109,8 @@
是否为延续类项目
</div>
<div class="xy-table-item-content">
<el-switch v-model="form.has_continue" active-text="" inactive-text="" :active-value="1" :inactive-value="0" />
<el-switch v-model="form.has_continue" active-text="" inactive-text="" :active-value="1"
:inactive-value="0" />
</div>
</div>
</template>
@ -142,15 +132,98 @@
<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
v-model="form.guaranteeYear"
:controls="false"
placeholder="请填写质保期"
style="width: 300px;"
/>
<el-input-number v-model="form.guaranteeYear" :controls="false" placeholder="请填写质保期"
style="width: 300px;" />
</div>
</div>
</template>
<template v-if="contract.is_contract===1" v-slot:other_tender_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.other_tender_name" placeholder="请填写其他投标单位名称"
style="width: 300px;" />
</div>
</div>
</template>
<template v-if="contract.is_contract===1 && contract.is_end===1" v-slot:project_end_time>
<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 v-model="form.project_end_time" style="width: 300px;" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" />
</div>
</div>
</template>
<template v-if="contract.is_contract===1 && contract.is_end===1" v-slot:is_acceptance>
<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 v-model="form.is_acceptance" placeholder="请选择">
<el-option
v-for="item in [{id:0,value:'否'},{id:1,value:'是'}]"
:key="item.id"
:label="item.value"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
</template>
<template v-if="contract.is_contract===1" v-slot:quotation_situation>
<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.quotation_situation" type="textarea" placeholder="第三方造价咨询单位出具的报告或标底/供应商提供的报价"
style="width: 300px;" />
</div>
</div>
</template>
<template v-if="contract.is_contract===1" v-slot:audit_situation>
<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.audit_situation" type="textarea" placeholder="外部财政局或审计局审计/内部自行委托的第三方审计/未审计。"
style="width: 300px;" />
</div>
</div>
</template>
<template v-if="contract.is_contract===1 && contract.is_end===1" v-slot:change_visa_amount>
<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-number v-model="form.change_visa_amount" :controls="false" placeholder="请填写变更签证(增加内容的补充合同)金额"
style="width: 300px;" />
</div>
</div>
</template>
<template v-if="contract.is_contract===1" v-slot:payment_content>
<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.payment_content" type="textarea" placeholder="合同内的支付条款"
style="width: 300px;" />
</div>
</div>
</template>
<template v-if="contract.contract_type !== 160" v-slot:extraFormBottom>
<div class="base-info add-plan" style="margin-top: 20px;margin-bottom: 20px">
<div class="base-info-title">付款计划</div>
@ -158,27 +231,15 @@
<Button type="primary" style="margin-left: 20px;" @click="isShowAddManyPlan = true">批量添加</Button>
</div>
<xy-table
:list="signList"
:table-item="signTable"
:show-index="false"
:height="240"
<xy-table :list="signList" :table-item="signTable" :show-index="false" :height="240"
@delete="deleteContractSign"
@editor="(row)=>{$refs['detailContractSign'].planId = row.id;$refs['detailContractSign'].isShow = true}"
/>
@editor="(row)=>{$refs['detailContractSign'].planId = row.id;$refs['detailContractSign'].isShow = true}" />
</template>
</xy-dialog>
<!-- 新增计划-->
<xy-dialog
:is-show.sync="isShowAddPlan"
type="form"
title="新增计划"
:form="planForm"
:rules="planRules"
:width="48"
@submit="submit"
>
<xy-dialog :is-show.sync="isShowAddPlan" type="form" title="新增计划" :form="planForm" :rules="planRules" :width="48"
@submit="submit">
<template v-slot:date>
<div class="xy-table-item">
<div class="xy-table-item-label">
@ -224,11 +285,7 @@
</template>
</xy-dialog>
<Modal
v-model="isShowAddManyPlan"
title="计划任务"
@on-ok="manyCreate"
>
<Modal v-model="isShowAddManyPlan" title="计划任务" @on-ok="manyCreate">
<div class="many-plan">
<div class="many-plan-item">
@ -238,17 +295,20 @@
<div class="many-plan-item">
<p>开始日期</p>
<el-date-picker v-model="manySetting.startMonth" size="mini" value-format="yyyy-MM-dd" @change="planMonthLists" />
<el-date-picker v-model="manySetting.startMonth" size="mini" value-format="yyyy-MM-dd"
@change="planMonthLists" />
</div>
<div class="many-plan-item">
<p>付款月份数</p>
<el-input-number v-model="manySetting.lastMonth" :controls="false" size="mini" :precision="0" :min="1" :max="12" @change="planMonthLists" />
<el-input-number v-model="manySetting.lastMonth" :controls="false" size="mini" :precision="0" :min="1"
:max="12" @change="planMonthLists" />
</div>
<div class="many-plan-item">
<p>付款日期</p>
<el-input-number v-model="manySetting.day" :controls="false" size="mini" :precision="0" :min="1" :max="31" @change="planMonthLists" />
<el-input-number v-model="manySetting.day" :controls="false" size="mini" :precision="0" :min="1" :max="31"
@change="planMonthLists" />
</div>
<div class="many-plan-item">
@ -269,7 +329,9 @@
</template>
<script>
import { MessageBox } from 'element-ui'
import {
MessageBox
} from 'element-ui'
import {
addContractSign,
getContractSign,
@ -306,14 +368,17 @@ export default {
startMonth: ''
},
manyForm: [],
manyTable: [
{
manyTable: [{
prop: 'date',
label: '付款日期',
width: 160,
customFn: row => {
return (
<el-date-picker style='width: 130px;' vModel={row.date} size='mini' value-format='yyyy-MM-dd'></el-date-picker>
return ( <el-date-picker style = 'width: 130px;'
vModel = {
row.date
}
size = 'mini'
value-format = 'yyyy-MM-dd' > </el-date-picker>
)
}
},
@ -322,23 +387,34 @@ export default {
label: '金额',
width: 180,
customFn: row => {
return (
<el-input-number size='mini' vModel={row.money} precision={2} controls={false}></el-input-number>
return ( <el-input-number size = 'mini'
vModel = {
row.money
}
precision = {
2
}
controls = {
false
} > </el-input-number>
)
}
},
{
prop: 'operate',
label: '操作',
customFn: (row, { $index }) => {
return (
<Button type='error'
customFn: (row, {
$index
}) => {
return ( <Button type = 'error'
size = 'small'
on={{
on = {
{
'click': _ => {
this.manyForm.splice($index, 1)
}
}}>移除</Button>
}
} > 移除 </Button>
)
}
}
@ -356,18 +432,45 @@ export default {
date: '',
is_assurance: false,
assurance_money: '',
assurance_expire: ''
assurance_expire: '',
other_tender_name:'',
project_end_time:'',
is_acceptance:'',
quotation_situation:'',
audit_situation:'',
change_visa_amount:'',
payment_content:''
},
rules: {
number: [{ required: true, message: '必填' }],
date: [{ required: true, message: '必填' }],
supply: [{ required: true, message: '必填' }],
carryDepartment: [{ required: true, message: '必填' }],
money: [
{ required: true, message: '必填' },
{ pattern: /^\d+(\.\d+)?$/, message: '必须为数字' }
number: [{
required: true,
message: '必填'
}],
date: [{
required: true,
message: '必填'
}],
supply: [{
required: true,
message: '必填'
}],
carryDepartment: [{
required: true,
message: '必填'
}],
money: [{
required: true,
message: '必填'
},
{
pattern: /^\d+(\.\d+)?$/,
message: '必须为数字'
}
],
time: [{ required: true, message: '必选' }],
time: [{
required: true,
message: '必选'
}],
guaranteeMoney: [],
guaranteeYear: []
},
@ -436,8 +539,7 @@ export default {
}
}
},
computed: {
},
computed: {},
watch: {
async contractId() {
await this.getContractSignList()
@ -460,13 +562,15 @@ export default {
//
sign() {
{/* if (this.signList.length == 0) {
{
/* if (this.signList.length == 0) {
Message({
type: 'error',
message: '该项目未设置付款计划,请设置付款计划后保存'
})
return false
} */}
} */
}
const signMoneyTotal = this.signList.reduce((pre, cur) => (pre + Number(cur.money || 0)), 0)
if (signMoneyTotal !== Number(this.form.money)) {
@ -492,7 +596,14 @@ export default {
date: this.form.date,
is_assurance: this.form.is_assurance,
assurance_money: this.form.assurance_money,
assurance_expire: this.form.assurance_expire
assurance_expire: this.form.assurance_expire,
other_tender_name:this.form.other_tender_name,
project_end_time:this.form.project_end_time,
is_acceptance:this.form.is_acceptance,
quotation_situation:this.form.quotation_situation,
audit_situation:this.form.audit_situation,
change_visa_amount:this.form.change_visa_amount,
payment_content:this.form.payment_content
}).then(res => {
this.isShow = false
Message({
@ -500,9 +611,27 @@ export default {
message: '操作成功'
})
this.$emit('signSuccess')
this.handleOperationSuccess()
})
},
//
handleOperationSuccess() {
// 1.
const message = {
type: 'operationCompleted', //
data: {
status: 'success',
result: '合同签署成功',
}
};
// 2.
//
// *
parent.postMessage(message, 'http://192.168.60.18:8001');
// http://192.168.60.99:8080
},
async getContractSignList() {
const res = await getContractSign({
contract_id: this.contractId,
@ -530,8 +659,14 @@ export default {
this.form.assurance_money = res.assurance_money
//
if (res.contract_type !== 160) {
this.rules.guaranteeMoney = [{ required: true, message: '必填' }]
this.rules.guaranteeYear = [{ required: true, message: '必填' }]
this.rules.guaranteeMoney = [{
required: true,
message: '必填'
}]
this.rules.guaranteeYear = [{
required: true,
message: '必填'
}]
} else {
this.rules.guaranteeMoney = []
this.rules.guaranteeYear = []
@ -598,7 +733,10 @@ export default {
const url =
`${process.env.VUE_APP_OUT_URL}/admin/flow/view/${this.contract.join_last_flow_id}`
// ?oatoken=${res.oatoken}&get_raw=1
const paras = { oatoken: resToken.oatoken, get_raw: 1 }
const paras = {
oatoken: resToken.oatoken,
get_raw: 1
}
const res = await httpCurl(paras, true, '/Api/flowDetail', 'GET', url)
console.log(res)
this.form.money = Number(res.flow['合同金额(元)'])
@ -655,12 +793,14 @@ export default {
display: flex;
margin-bottom: 20px;
&>p {
flex-basis: 30%;
flex-shrink: 0;
}
}
}
.base-info {
&-title {

@ -1569,6 +1569,12 @@ export default {
}
}).catch(error => {
})
// oa
if(this.$route.query.oaType==='contractSign'){
let contractId = this.$route.query.contractId
this.$refs['contractSign'].isShow = true
this.$refs['contractSign'].contractId = contractId
}
this.getPurchaseType()
this.getContracts()
this.getDepartment(-1)

@ -2,7 +2,7 @@
<div>
<el-drawer
size="1050px"
size="1250px"
title="预算统计"
:visible.sync="drawer"
direction="rtl">
@ -80,27 +80,7 @@ export default {
align: 'left',
fixed: this.$store.getters.device === 'mobile'?false:'left'
},
{
prop: 'type_detail.value',
label: '预算类型',
width: 120,
},
{
prop: 'year',
label: '所属年份',
width: 160
},
{
prop: 'plan_department.name',
label: "相关科室",
width: 180
},
{
prop: 'content',
label: '描述',
align: 'left',
minWidth: 300
},
{
prop: 'money',
width: 180,
@ -138,6 +118,27 @@ export default {
return ( <div><el-progress percentage={perShow}> </el-progress></div>)
}
},
{
prop: 'type_detail.value',
label: '预算类型',
width: 120,
},
{
prop: 'year',
label: '所属年份',
width: 160
},
{
prop: 'plan_department.name',
label: "相关科室",
width: 180
},
{
prop: 'content',
label: '描述',
align: 'left',
minWidth: 300
},
]
}
},
@ -168,7 +169,7 @@ export default {
this.list =
mergeTableRow({
data: res.list.data,
mergeColNames: ["pid_info_name",'selection','index'], //
mergeColNames: ["pid_info_name",'index'], //
firstMergeColNames: ["pid_info_name"], // firstMerge
firstMerge: 'pid_info_name' //
})
@ -177,24 +178,24 @@ export default {
},
selected (selections, selected) {
if (selected['pid_info_name-span']?.rowspan > 1) {
if (this.selections.find(i => i.id === selected.id)) {
let len = selected['pid_info_name-span'].rowspan
let idx = this.selections.indexOf(selected)
this.selections.splice(idx,len)
} else {
let len = selected['pid_info_name-span'].rowspan
let idx = this.list.indexOf(selected)
this.selections.push(...this.list.slice(idx,idx+len))
}
} else {
// if (selected['pid_info_name-span']?.rowspan > 1) {
// if (this.selections.find(i => i.id === selected.id)) {
// let len = selected['pid_info_name-span'].rowspan
// let idx = this.selections.indexOf(selected)
// this.selections.splice(idx,len)
// } else {
// let len = selected['pid_info_name-span'].rowspan
// let idx = this.list.indexOf(selected)
// this.selections.push(...this.list.slice(idx,idx+len))
// }
// } else {
if (this.selections.find(i => i.id === selected.id)) {
let idx = this.selections.indexOf(this.selections.find(i => i.id === selected.id))
this.selections.splice(idx,1)
} else {
this.selections.push(selected)
}
}
// }
},
selectAll (selections) {

@ -22,7 +22,7 @@
</el-tabs>
</div>
<div class="table-tree1" v-if="activeName==='todo'">
<el-table :data="list" border class="v-table" style="width: 100%; margin-bottom: 20px;height:220px">
<el-table :data="list" border class="v-table" style="width: 100%; margin-bottom: 20px;height:260px">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="type" width="100" label="类型" align="center" :formatter="typeFormatter" />
<el-table-column prop="content" label="内容" align="left" show-overflow-tooltip />
@ -58,7 +58,7 @@
</div>
</div>
<div v-if="isShowNoPay && activeName==='todolist'">
<xy-table :cell-style="nopayCellStyle" :height="270" :list="nopay" :table-item="nopayTable">
<xy-table :cell-style="nopayCellStyle" :height="300" :list="nopay" :table-item="nopayTable">
<template v-slot:btns />
</xy-table>
</div>
@ -105,8 +105,8 @@
<div class="progress-card-item">
<MyProgress
ref="MyProgress"
width="145px"
height="145px"
width="300px"
height="165px"
title="执行率"
:chart-data="[{value:statistic.progress.use_money_total,name:'已用金额'},{value:statistic.progress.money_total_2 ? statistic.progress.money_total_2 : statistic.progress.money_total_1,name:'合计金额'}]"
/>
@ -145,7 +145,7 @@
</el-row>
<div v-for="(sitem, index) in typeList">
<template v-if="sitem[0]&&sitem[1]">
<el-col v-if="sitem[0]" :span="12">
<el-col v-if="sitem[0]" :span="12" style="padding-right:10px">
<el-card class="box-card">
<div slot="header" class="box-card-header">
<SvgIcon style="color: #2D8cF0;width: 24px;height: 24px;" icon-class="caidan" />
@ -178,15 +178,15 @@
<div class="progress-card-item">
<MyProgress
ref="MyProgress1"
width="145px"
height="145px"
width="300px"
height="165px"
title="执行率"
:chart-data="[{value:parseFloat(sitem[0].use_money_total),name:'已用金额'},{value:parseFloat(sitem[0].money_total_2) ? parseFloat(sitem[0].money_total_2) : parseFloat(sitem[0].money_total_1),name:'合计金额'}]"
/>
</div>
</div>
</div>
<xy-table :height="380" :list="sitem[0].departments" :table-item="departmentTable">
<xy-table :height="560" :list="sitem[0].departments" :table-item="departmentTable">
<template v-slot:btns>
<el-table-column :width="80" fixed="right" label="操作" header-align="center" align="center">
<template slot-scope="scope">
@ -201,7 +201,7 @@
</el-card>
</el-col>
<el-col v-if="sitem[1]" :span="12">
<el-col v-if="sitem[1]" :span="12" style="padding-left:10px">
<el-card class="box-card">
<div slot="header" class="box-card-header">
<SvgIcon style="color: #2D8cF0;width: 24px;height: 24px;" icon-class="caidan" />
@ -234,15 +234,15 @@
<div class="progress-card-item">
<MyProgress
ref="MyProgress2"
width="145px"
height="145px"
width="300px"
height="165px"
title="执行率"
:chart-data="[{value:parseFloat(sitem[1].use_money_total),name:'已用金额'},{value:parseFloat(sitem[1].money_total_2) ? parseFloat(sitem[1].money_total_2) : parseFloat(sitem[1].money_total_1),name:'合计金额'}]"
/>
</div>
</div>
</div>
<xy-table :height="380" :list="sitem[1].departments" :table-item="departmentTable">
<xy-table :height="253" :list="sitem[1].departments" :table-item="departmentTable">
<template v-slot:btns>
<el-table-column
:width="80"
@ -260,6 +260,33 @@
</el-table-column>
</template>
</xy-table>
<div>
<div slot="header" class="box-card-header" style="padding-bottom:11px">
<SvgIcon style="color: #2D8cF0;width: 24px;height: 24px;" icon-class="caidan" />
<span style="padding-left:10px;">{{ sitem[2].type_text }}</span>
<i class="el-icon-more" style="margin-left: auto; font-size: 20px" />
</div>
<xy-table :height="254" :list="sitem[2].departments" :table-item="departmentTable">
<template v-slot:btns>
<el-table-column
:width="80"
fixed="right"
label="操作"
header-align="center"
align="center"
>
<template slot-scope="scope">
<router-link
:to="`/statisticalReport/budgetProgress?departmentId=${scope.row.department_id}&type=${sitem[2].type}`"
>查看
</router-link>
</template>
</el-table-column>
</template>
</xy-table>
</div>
</el-card>
</el-col>
</template>
@ -1320,7 +1347,7 @@ export default {
this.statistic = res
if (res.typeList) {
var arr = []
for (var i = 0; i < res.typeList.length; i = i + 2) {
for (var i = 0; i < res.typeList.length; i = i + 3) {
if (res.typeList[i]) {
res.typeList[i].per = this.getPer(res.typeList[i])
// arr.push(res.typeList[i])
@ -1329,7 +1356,11 @@ export default {
res.typeList[i + 1].per = this.getPer(res.typeList[i + 1])
// arr.push(res.typeList[i + 1])
}
arr.push([res.typeList[i], res.typeList[i + 1]])
if (res.typeList[i + 2]) {
res.typeList[i + 2].per = this.getPer(res.typeList[i + 2])
// arr.push(res.typeList[i + 1])
}
arr.push([res.typeList[i], res.typeList[i + 1],res.typeList[i + 2]])
}
this.typeList = arr
}
@ -1337,6 +1368,7 @@ export default {
this.statistic.departmentList = res.departmentList?.sort((a, b) => a.plan_department.sortnumber - b.plan_department.sortnumber)
}
console.log("this.statistic.typeList",this.typeList)
// this.split = Array.from({ length: Math.ceil(this.typeList/2) },() => 0.5)
},
getPer(row) {
@ -1532,15 +1564,17 @@ export default {
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
height:280px;
height:310px;
margin-top:10px;
&-item {
min-width: 120px;
margin: 10px;
// margin: 10px;
margin-bottom: 10px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
flex-basis: 50%;
&__label {
font-size: 15px;
@ -1626,7 +1660,7 @@ export default {
.table-tree1 {
margin-top: 10px;
height:280px;
height:310px;
}
.v-text {

@ -108,6 +108,7 @@ export default {
watch: {
$route: {
handler: function(route) {
console.log("route12",route)
this.redirect = route.query && route.query.redirect
},
immediate: true
@ -139,6 +140,28 @@ export default {
this.loading = false
})
}
// oa
// var url = "http://192.168.60.99:8003/admin/#/contract/contractList?oaType=contractSign&contractId="+
// out_contract_id+'&auth_token='+"{{$oatoken}}"
console.log("query.auth_token",query)
console.log("query.auth_token",query.auth_token)
console.log("oa跳转来的",this.redirect)
if(query.auth_token && query.oaType==='contractSign' && query.contractId){
console.log("oa跳转来的",this.redirect)
this.loading = true
this.$store.dispatch('user/loginskip', {
token: query.auth_token,
tp: 'inner'
}).then(() => {
this.$router.push({
path: this.redirect || '/'
})
this.loading = false
}).catch((error) => {
console.log(error)
this.loading = false
})
}
},
methods: {
showPwd() {

Loading…
Cancel
Save