Merge remote-tracking branch 'origin/master'

This commit is contained in:
zhangkaihuai
2024-07-10 16:53:48 +08:00
21 changed files with 216 additions and 123 deletions

View File

@@ -344,7 +344,7 @@ const deleteSingleFile = (row, type) => {
if (type === 1) {
singleFile.value = null
} else {
props.otherFileList.splice(props.otherFileList.findIndex((item) => item.id === row.fileId), 1);
props.otherFileList.splice(props.otherFileList.findIndex((item) => item.fileId === row.fileId), 1);
}
}
});

View File

@@ -1,7 +1,6 @@
<template>
<el-dialog custom-class="custom-dialog" class="border" :border="false" closeFree width="1000px" style="height: 676px"
:title="title" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="true"
:destroy-on-close="true">
<el-dialog custom-class="custom-dialog" class="border" :border="false" width="1000px" style="height: 676px"
:title="title" :show-close="false" :visible.sync="visible" v-model="visible" append-to-body :close-on-click-modal="true" >
<div class="picker">
<div class="candidate" v-loading="loading">
<el-input v-model="filterText" @change="getList()"
@@ -10,7 +9,6 @@
<el-button @click="getList()">搜索</el-button>
</template>
</el-input>
<fvCheckbox style="margin-left: 10px" :options="checkOptions" v-model="checkList" @change="checkBoxChange"/>
<!-- 人员选择 -->
<el-empty :image-size="100" description="似乎没有数据" v-show="dataList.length === 0"/>
@@ -68,10 +66,10 @@ const checkOptions = ref([
label: isExpand.value,
value: '1'
},
{
label: '父子联动',
value: '2'
},
// {
// label: '父子联动',
// value: '2'
// },
])
const props = defineProps({
value: {
@@ -107,13 +105,13 @@ const defaultProps = {
children: "children",
disabled: "disabled",
};
const emit = defineEmits();
const emit = defineEmits(['update:modelValue'])
const _value = computed({
get() {
return props.value;
},
set(val) {
emit("input", val);
set(value) {
emit('update:modelValue', value)
}
});
@@ -157,14 +155,8 @@ const filterNode = (value, data) => {
const show = () => {
//用于弹开部门选择
visible.value = true;
// console.log('_value.value', _value.value, selectList.value)
// if(selectList.value.length==0){
// selectList.value=[]
// defaultChecked.value =[]
// }else {
selectList.value = _value.value
defaultChecked.value = _value.value.map(item => item.value)
// }
getList()
};

View File

@@ -152,7 +152,7 @@ const handleDelete = (row) => {
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
_value.value.splice(_value.value.findIndex((item) => item.id === row.fileId), 1);
_value.value.splice(_value.value.findIndex((item) => item.fileId === row.fileId), 1);
}
});
}

View File

@@ -181,7 +181,7 @@
</div>
</el-form>
<div class="oper-page-btn" v-if="data.state==='5'">
<div class="oper-page-btn" v-perm="['annual:plan:approve']" v-if="data.state==='5'">
<el-button type="danger" @click="handleRejectPlan">驳回年度计划</el-button>
<el-button color="#DED0B2" @click="handleAgreePlan">通过年度计划</el-button>
</div>
@@ -272,6 +272,9 @@ const handleRejectPlan = async () => {
type: res.code === 1000 ? 'success' : 'error'
})
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
router.push({
name: 'Summary'
})
}
const handleAgreePlan = async () => {
const params = {
@@ -287,13 +290,16 @@ const handleAgreePlan = async () => {
type: res.code === 1000 ? 'success' : 'error'
})
tagsViewStore.delVisitedViews(router.currentRoute.value.path)
router.push({
name: 'Summary'
})
}
const filterDict = (data, value) => {
if (data === undefined || value === undefined) return;
let label = ''
let result = []
if (JSON.parse(value) instanceof Array) {
JSON.parse(value).forEach(item1 => {
if (value instanceof Array) {
value.forEach(item1 => {
data.find(item => {
if (item.value == item1) {
result.push(item.label)

View File

@@ -126,7 +126,7 @@ const handleSearch = () => {
}
const handleReset=()=>{
attachment.fileName=''
attachment.tag=''
attachment.tag=null
emit('search', {})
}
const handleUpload = () => {

View File

@@ -323,9 +323,9 @@ watchEffect(() => {
cursor: not-allowed;
}
.is-active {
color: #BEA266;
}
.is-end {
color: #67c23a;
}
.is-end {
color: #BEA266;
}
</style>

View File

@@ -1,4 +1,5 @@
<template>
<span class="sys-name">科技创新项目管理平台</span>
<div class="toggle" @click="toggleClick">
<component :is="siderbarStore.getSiderBarStatus() ? 'Fold' : 'Expand'" class="icon"></component>
</div>
@@ -13,6 +14,10 @@ const toggleClick = () => {
</script>
<style lang="scss" scoped>
.sys-name {
padding-left: 10px;
font-weight: bold;
}
.toggle{
line-height: 65px;
border-top-left-radius: 10px;

View File

@@ -17,7 +17,9 @@
</a>
</div>
<div v-else>
<svg-icon :name="item.icon"/>
<el-icon>
<svg-icon :name="item.icon" class="menu-item-icon"/>
</el-icon>
<span>{{ item.title }}</span>
</div>
</template>
@@ -60,3 +62,10 @@ const checkMenuItem = (item) => {
</script>
<!-- <style lang="scss" scoped>
.menu-item-icon {
width: 18px !important;
height: 18px !important;
margin-left: 0;
}
</style> -->

View File

@@ -145,6 +145,56 @@ const router = createRouter({
breadcrumb: false
}
},
// 项目详情
{
path: '/project/management/implementation/implementation/detail',
name: 'Implementation/detail',
component: () => import('@/views/project-management/implementation/detail.vue'),
meta: {
title: '项目详情',
breadcrumb: false
}
},
// 需求征集详情
{
path: '/project/demand/requirement/requirement/detail',
name: 'Requirement/detail',
component: () => import('@/views/project-demand/requirement/detail.vue'),
meta: {
title: '需求征集-详情',
breadcrumb: false
}
},
// 需求汇总详情
{
path: '/project/demand/summary/summary/detail',
name: 'Summary/detail',
component: () => import('@/views/project-demand/summary/detail.vue'),
meta: {
title: '需求汇总-详情',
breadcrumb: false
}
},
// 专项资金详情
{
path: '/special/fund/fund/detail',
name: 'Fund/detail',
component: () => import('@/views/special-fund/detail.vue'),
meta: {
title: '专项资金-详情',
breadcrumb: false
}
},
// 费用分摊详情
{
path: '/expense/management/expense/share/share/detail',
name: 'Share/detail',
component: () => import('@/views/expense-management/share/detail.vue'),
meta: {
title: '费用分摊-详情',
breadcrumb: false
}
},
]
},
{

View File

@@ -31,7 +31,9 @@ const searchConfig = reactive([
props: {
placeholder: '请选择时间',
clearable: true,
valueFormat: 'YYYY-MM-DD HH:mm:ss',
type:'month',
format: 'YYYY-MM',
valueFormat:'YYYY-MM',
},
colProps: {}
},

View File

@@ -4,9 +4,12 @@
<el-row>
<el-col :span="8">
<el-form-item label="年度计划名称" prop="annualPlanName">
<!-- <el-input v-model="formData.annualPlanName" placeholder="请输入年度计划名称" clearable>-->
<!-- </el-input>-->
<span>{{ formData.annualPlanName }}</span>
<div v-if="isEdit">
<el-input v-model="formData.annualPlanName" placeholder="请输入年度计划名称" clearable>
</el-input>
<el-button color="#DED0B2" style="margin-left: 10px" @click="editName">提交</el-button>
</div>
<span v-else>{{ formData.annualPlanName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
@@ -18,13 +21,16 @@
</el-form>
<div class="query-btn">
<el-button color="#DED0B2" style="float: right;margin: 0 10px 10px 0" @click="exportTable">导出</el-button>
<el-button color="#DED0B2" v-perm="['annual:plan:edit']" style="float: right;margin: 0 10px 10px 0"
@click="editBtn">编辑
</el-button>
</div>
<el-table ref="table" :data="formData.projectList" border :header-cell-style="{background:'#f5f7fa'}">
<el-table-column label="四川省国有资产经营投资管理有限责任公司科技创新项目年度计划表" align="center">
<template #default="scope">
<el-table-column type="index" label="序号" align="center" width="60"/>
<el-table-column prop="projectName" label="项目名称" align="center"/>
<el-table-column prop="time" label="起始时间" align="center" min-width="120px">
<el-table-column prop="projectName" label="项目名称" align="center" width="100"/>
<el-table-column prop="time" label="起始时间" align="center" width="100">
<template #default="scope">
{{ scope.row.startTime + ' 至 ' + scope.row.endTime }}
</template>
@@ -37,7 +43,7 @@
<div v-else>--</div>
</template>
</el-table-column>
<el-table-column prop="departmentName" label="承办部门" align="center"/>
<el-table-column prop="departmentName" label="承办部门" align="center" width="90"/>
<el-table-column prop="investmentType" label="出资类型" align="center">
<template #default="scope">
<div v-if="scope.row.investmentType !== null">
@@ -46,7 +52,7 @@
<div v-else>--</div>
</template>
</el-table-column>
<el-table-column prop="projectImpact" label="项目影响" align="center">
<el-table-column prop="projectImpact" label="项目影响" align="center" width="90">
<template #default="scope">
<div v-if="scope.row.projectImpact !== null">
<Tag dictType="project_impact" :value="scope.row.projectImpact"/>
@@ -54,7 +60,7 @@
<div v-else>--</div>
</template>
</el-table-column>
<el-table-column prop="businessSegment" label="所属业务板块" align="center">
<el-table-column prop="businessSegment" label="所属业务板块" align="center" width="110">
<template #default="scope">
<div v-if="scope.row.businessSegment !== null">
<Tag dictType="business_segment" :value="scope.row.businessSegment"/>
@@ -65,10 +71,7 @@
<el-table-column prop="resultForm" label="预期成果形式" align="center" min-width="100px">
<template #default="scope">
<div v-if="scope.row.resultForm !== null">
<el-tag effect="plain">{{
filterDict(cacheStore.getDict('result_form'), scope.row.resultForm)
}}
</el-tag>
<Tag style="margin-top: 3px" dictType="result_form" v-for="item in scope.row.resultForm" :value="item"/>
</div>
<div v-else>--</div>
</template>
@@ -97,6 +100,17 @@
<div v-else>--</div>
</template>
</el-table-column>
<el-table-column prop="prospectiveIntellectualProperty" label="预期知识产权" align="center" width="190">
<template #default="scope">
<div style="text-align: left">
发明专利{{ scope.row.inventionPatent ? scope.row.inventionPatent : 0 }}<br>
实用新型专利{{ scope.row.newPatent ? scope.row.newPatent : 0 }}<br>
软件著作权{{ scope.row.softwareCopyright ? scope.row.softwareCopyright : 0 }}<br>
著作权{{ scope.row.copyright ? scope.row.copyright : 0 }}<br>
其他{{ scope.row.other ? scope.row.other : 0 }}
</div>
</template>
</el-table-column>
<el-table-column prop="intellectualProperty" label="知识产权状况" align="center">
<template #default="scope">
<div v-if="scope.row.intellectualProperty !== null">
@@ -124,7 +138,7 @@
<script setup>
import {toThousands} from '@/utils/changePrice.js'
import {ElNotification} from "element-plus";
import {getPlan} from "@/api/project-demand/summary";
import {getPlan, editPlan} from "@/api/project-demand/summary";
import {useCacheStore} from '@/stores/cache.js'
import {exportExcel} from "@/utils/export-excel";
@@ -133,6 +147,7 @@ const loading = ref(false)
const formData = ref({})
const table = ref()
const route = useRoute()
const isEdit = ref(false)
const exportTable = () => {
const $e = table.value.$el
let $table = $e.querySelector('.el-table__fixed')
@@ -141,12 +156,31 @@ const exportTable = () => {
}
exportExcel($table, (5 + (Object.keys(formData.value.projectList[0]).length - 5) * 5), "四川省国有资产经营投资管理有限责任公司科技创新项目年度计划表", 2)
}
const editName = () => {
let param = {
annualPlanId: route.query.annualPlanId,
annualPlanName: formData.value.annualPlanName
}
editPlan(param).then(res => {
ElNotification({
title: '提示',
message: res.msg,
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
isEdit.value = false
}
})
}
const editBtn = () => {
isEdit.value = true
}
const filterDict = (data, value) => {
if (data === undefined || value === undefined) return;
let label = ''
let result = []
if (JSON.parse(value) instanceof Array) {
JSON.parse(value).forEach(item1 => {
if (value instanceof Array) {
value.forEach(item1 => {
data.find(item => {
if (item.value == item1) {
result.push(item.label)

View File

@@ -1,6 +1,7 @@
<template>
<baseTitle title="年度计划"></baseTitle>
<!-- <fvSearchForm :searchConfig="searchConfig" @search="search"></fvSearchForm>-->
<fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick"></fvTable>
<fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick" ></fvTable>
</template>
<script setup lang="jsx">

View File

@@ -104,6 +104,7 @@
<el-button color="#DED0B2" v-else @click="handleResubmit">重新提交</el-button>
<el-button @click="handleBack">返回</el-button>
</div>
<company-picker :multiple="true" ref="companyRef" title="请选择征集公司" @ok="selected"
v-model:value="selectedCompanyList"/>
</div>
@@ -128,7 +129,6 @@ import {getSubCompOpt} from '@/api/user/user.js'
import {useTagsView} from '@/stores/tagsview.js'
import {getFundOption} from "@/api/special-fund";
import CompanyPicker from "@/components/DetailComponent/CompanyPicker.vue";
import {matterTree} from "@/utils/matterTree";
import {useCacheStore} from '@/stores/cache.js'
@@ -408,22 +408,30 @@ const handleResubmit = () => {
}
})
}
const matterTree = (array,data, id) => {
if (id) {
data.forEach(item => {
if (item.value == id) {
let obj={
label:item.label,
value:item.value
}
array.push(obj);
}
if (item.children && item.children.length > 0) {
matterTree(array,item.children,id)
}
})
return array;
}
}
const getCompanyOptionItem = (val) => {
let newObj = {}
let newArray = []
if (val !== undefined) {
val.forEach(item => {
matterTree(companyNameArray.value, companyOption.value, item)
})
companyNameArray.value.forEach(companyItem => {
newObj = {
label: companyItem
}
newArray.push(newObj)
})
}
return newArray;
return companyNameArray.value;
}
const getDetailInfo = async () => {
getFormInfo(route.query.id).then(res => {
@@ -457,7 +465,7 @@ const handleDelete = (row) => {
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
formData.value.fileList.splice(formData.value.fileList.findIndex((item) => item.id === row.fileId), 1);
formData.value.fileList.splice(formData.value.fileList.findIndex((item) => item.fileId === row.fileId), 1);
// showTable.value = formData.value.fileList.length !== 0;
}
});

View File

@@ -415,14 +415,6 @@ const handleSubmit = debounce(async (instance) => {
if (formData.value.singleFile !== undefined) {
formData.value.singleFile = getFileParam(formData.value.singleFile)
}
formData.value.resultForm=JSON.stringify(formData.value.resultForm)
let params = {
...formData.value,
deploymentId: deploymentId.value,
fileList: otherFiles,
requirementId: route.query.id ? route.query.id : '-1'
}
console.log('params', params)
if (!attachment.value.isSingleFile) {
attachment.value.validate()
ElNotification({
@@ -432,8 +424,17 @@ const handleSubmit = debounce(async (instance) => {
})
return;
} else {
// formData.value.resultForm=JSON.stringify(formData.value.resultForm)
attachment.value.clearValidate()
}
let params = {
...formData.value,
deploymentId: deploymentId.value,
fileList: otherFiles,
requirementId: route.query.id ? route.query.id : '-1'
}
console.log('params', params)
let res = await requirementReported(params)
ElNotification({
title: '提示',
@@ -464,17 +465,17 @@ const handleResubmit = debounce(() => {
})
return;
} else {
// formData.value.resultForm=JSON.stringify(formData.value.resultForm)
attachment.value.clearValidate()
}
if (formData.value.isSpecialFund && formData.value.specialFund === null) {
formData.value.specialFund = getFundName(formData.value.specialFundId)
}
formData.value.resultForm=JSON.stringify(formData.value.resultForm)
let params = {
...formData.value,
deploymentId: deploymentId.value,
fileList: otherFiles,
requirementId: route.query.requirementId ? route.query.requirementId : '-1'
requirementId: route.query.id ? route.query.id : '-1'
}
// console.log('重新提交params', params, formData.value.specialFund, formData.value.specialFundId)
resubmitReported(params).then(res => {
@@ -502,7 +503,7 @@ const getDetailInfo = async () => {
})
if (res.code === 1000) {
res.data.formData.specialFundId = res.data.formData.specialFundId === 0 ? null : res.data.formData.specialFundId
res.data.formData.resultForm = JSON.parse(res.data.formData.resultForm)
// res.data.formData.resultForm = JSON.parse(res.data.formData.resultForm)
formData.value = res.data.formData
loading.value = false
}

View File

@@ -146,6 +146,7 @@ const auths = {
edit: ['mosr:collect:resubmit'],
detail: ['mosr:collect:info'],
report: ['mosr:collect:reported'],
planAdd: ['annual:plan:add'],
}
const tableConfig = reactive({
columns: [
@@ -269,7 +270,7 @@ const tableConfig = reactive({
params: {},
btns: [
{name: '新增上报', key: 'add', color: '#DED0B2', auth: auths.report},
{name: '创建年度计划', key: 'export', color: '#DED0B2', auth: ''},
{name: '创建年度计划', key: 'export', color: '#DED0B2', auth: auths.planAdd},
// {name: '经费预算生成', key: 'preMonty', auth: ''},
]
})
@@ -298,7 +299,6 @@ const selectionChange = (data) => {
projectSelectList.value = data
}
const handleExport = () => {
console.log('projectSelectList.value', projectSelectList.value)
let projectIds = []
projectSelectList.value.map(item => {
projectIds.push(item.projectId)
@@ -309,7 +309,12 @@ const handleExport = () => {
}
addPlan(params).then(res => {
if (res.code === 1000) {
router.push({
name: 'Plan/detail',
query: {
annualPlanId: res.data
}
})
}
})
}
@@ -337,7 +342,7 @@ const handleEdit = (row) => {
router.push({
name: 'Summary/edit',
query: {
requirementId: row.requirementId,
id: row.requirementId,
projectId: row.projectId
}
})

View File

@@ -1,6 +1,20 @@
<template>
<view style="overflow-y: scroll">
<baseTitle title="基础信息"></baseTitle>
<el-form :model="basicData">
<el-row>
<el-col :span="8">
<el-form-item prop="requirementName" label="征集名称" label-width="122">
<span>{{basicData.requirementName}}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="projectName" label="项目名称" label-width="130">
<span>{{basicData.projectName}}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<fvForm :schema="schema" @getInstance="(e)=>baseForm = e"></fvForm>
<fvSearchForm :searchConfig="searchConfig" @search="search"></fvSearchForm>
<fvTable ref="tableIns" :tableConfig="tableConfig" @headBtnClick="headBtnClick" @selectionChange="selectionChange">
@@ -20,37 +34,9 @@ import {searchUpdateLedgerData,exportExcel} from "@/api/project-manage";
const router = useRouter()
const route = useRoute()
const formArray = ref([
{
label: '征集名称',
prop: 'requirementName',
colProps: {
span: 12
}
},
{
label: '项目名称',
prop: 'projectName',
colProps: {
span: 12
}
}
])
const basicData=ref({})
const tableData = ref({})
const formDataArray = ref([
{
label: '征集名称',
prop: 'requirementName',
colProps: {
span: 8
}
},
{
label: '项目名称',
prop: 'projectName',
colProps: {
span: 8
}
},
{
label: '项目负责人',
prop: 'projectChargePersonName',
@@ -102,13 +88,8 @@ const formDataArray = ref([
}
}
])
const tableData = ref({})
const schema = computed(() => {
// if (JSON.stringify(tableData.value) !== '{}') {
return formDataArray.value
// } else {
// return formArray.value
// }
})
const baseForm = ref()
const tableIns = ref()
@@ -259,8 +240,7 @@ const handleUpdateTable = () => {
const getBaseInfo = async () => {
try {
const {code, data} = await getBaseInfoApi(route.query.id)
baseForm.value.setValues(data)
await init()
basicData.value=data
} catch {
}
}
@@ -279,6 +259,7 @@ const init = async () => {
// }
}
getBaseInfo()
init()
const headBtnClick = (key) => {
switch (key) {
case 'add':

View File

@@ -3,12 +3,12 @@
<el-form :model="tableForm" ref="form">
<el-row>
<el-col :span="24">
<el-form-item prop="projectName" label="项目名称">
<el-form-item prop="projectName" label="项目名称" label-width="150">
<span>{{ tableForm.projectName }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="projectChargePerson" label="项目负责人">
<el-form-item prop="projectChargePerson" label="项目负责人" label-width="150">
<el-button color="#DED0B2" @click="showPersonnelPicker" style="margin-right: 10px">
{{ tableForm.projectChargePersonName ? '更改' : '请选择项目负责人' }}
</el-button>
@@ -16,7 +16,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="startTime" label="项目开始时间">
<el-form-item prop="startTime" label="项目开始时间" label-width="150">
<el-date-picker
v-model="tableForm.startTime"
type="date"
@@ -42,13 +42,13 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="projectDevelopmentWay" label="项目开展方式" style="width: 100%">
<el-form-item prop="projectDevelopmentWay" label="项目开展方式" style="width: 100%" label-width="150">
<el-input v-model="tableForm.projectDevelopmentWay" placeholder="请输入项目开展方式" clearable>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="projectBudgetDescription" label="项目预算" style="width: 100%">
<el-form-item prop="projectBudgetDescription" label="项目预算" style="width: 100%" label-width="150">
<el-input v-model="tableForm.projectBudgetDescription" placeholder="请输入项目预算" clearable>
</el-input>
</el-form-item>

View File

@@ -139,7 +139,7 @@ const handleDelete = (row) => {
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
fileList.value.splice(fileList.value.findIndex((item) => item.id === row.fileId), 1);
fileList.value.splice(fileList.value.findIndex((item) => item.fileId === row.fileId), 1);
}
});
}

View File

@@ -323,9 +323,9 @@ watchEffect(() => {
cursor: not-allowed;
}
.is-active {
color: #BEA266;
}
.is-end {
color: #67c23a;
}
.is-end {
color: #BEA266;
}
</style>

View File

@@ -135,8 +135,8 @@ const handleDelete = (row) => {
type: res.code === 1000 ? 'success' : 'error'
})
if (res.code === 1000) {
formData.value.files.splice(formData.value.files.findIndex((item) => item.id === row.fileId), 1);
showTable.value = formData.value.files.length !== 0;
formData.value.files.splice(formData.value.files.findIndex((item) => item.fileId === row.fileId), 1);
// showTable.value = formData.value.files.length !== 0;
}
});
}

View File

@@ -123,10 +123,10 @@ const tableConfig = reactive({
let btn = []
let buttons = new Set(Array.from(row.buttons))
if (buttons.has("details")) {
btn.push({label: '详情', prem: ['mosr:collect:info'], func: () => handleDetail(row), type: 'primary'})
btn.push({label: '详情', prem: ['special:fund:info'], func: () => handleDetail(row), type: 'primary'})
}
if (buttons.has("edit")) {
btn.push({label: '编辑', prem: ['mosr:collect:resubmit'], func: () => handleEdit(row), type: 'primary'})
btn.push({label: '编辑', prem: ['special:fund:edit'], func: () => handleEdit(row), type: 'primary'})
}
return (
<div style={{width: '100%'}}>
@@ -145,7 +145,6 @@ const tableConfig = reactive({
{
buttons.has("delete") ?
<popover-delete name={row.name} type={'专项资金'} btnType={'danger'}
perm={['mosr:requirement:del']}
onDelete={() => handleDelete(row)}/>
: ''
}
@@ -157,7 +156,7 @@ const tableConfig = reactive({
api: '/workflow/mosr/special/fund',
params: {},
btns: [
{name: '新增', key: 'add', color: '#DED0B2', auth: ''},
{name: '新增', key: 'add', color: '#DED0B2', auth: ['special:fund:add']},
// {name: '导出', key: '_export', color: '#DED0B2', auth: ''},
]
})