我的申请 能力申请 开发

This commit is contained in:
a0049873 2022-07-13 16:30:37 +08:00
parent e832b3e1d5
commit d551b833d3
7 changed files with 733 additions and 792 deletions

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-03-29 16:45:25 * @Date: 2022-03-29 16:45:25
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-11 18:10:24 * @LastEditTime: 2022-07-13 14:47:47
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!DOCTYPE html> <!DOCTYPE html>
@ -49,7 +49,7 @@
window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797'; window.SITE_CONFIG['backUrl'] = 'http://15.2.21.238:9797';
window.SITE_CONFIG['previewUrl'] = 'http://15.2.21.238:9796/'; window.SITE_CONFIG['previewUrl'] = 'http://15.2.21.238:9796/';
window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/'; window.SITE_CONFIG['frontUrl'] = 'http://15.2.21.238:9796/document/#/devModelFile/';
window.SITE_CONFIG['apiURL'] = 'http://15.2.21.239:8888/renren-admin'; window.SITE_CONFIG['apiURL'] = 'http://15.2.21.238:8888/renren-admin';
window.SITE_CONFIG['POI_URL'] = 'http://15.2.21.238:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address'; window.SITE_CONFIG['POI_URL'] = 'http://15.2.21.238:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address';
// 穿透版本 // 穿透版本
// window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797'; // window.SITE_CONFIG['backUrl'] = 'http://124.222.94.39:9797';

View File

@ -14,6 +14,13 @@ export function getTabilityapplication(params) {
params, params,
}) })
} }
export function getByApplyFlag(params) {
return request({
url: '/processForm/tabilityapplication/getByApplyFlag/' + params,
method: 'get',
// params,
})
}
// //
export function getSgcList(params) { export function getSgcList(params) {

View File

@ -5,44 +5,54 @@
<span class="btn" @click="falg = !falg" v-show="!falg">展开</span> <span class="btn" @click="falg = !falg" v-show="!falg">展开</span>
<span class="btn" @click="falg = !falg" v-show="falg">收起</span> <span class="btn" @click="falg = !falg" v-show="falg">收起</span>
</div> </div>
<div v-for="(item, index) in dataForm" :key="index" class="ability-to-apply-for-content"> <div
v-for="(item, index) in dataForm"
:key="index"
class="ability-to-apply-for-content"
>
<div class="dep-name"> <div class="dep-name">
<span></span> <span></span>
{{ item.deptName }} {{ item.deptName }}
</div> </div>
<template v-for="val in item.arr" :key="val.resourceId"> <template v-for="val in item.arr" :key="val.resourceId">
<div class="item"> <div class="item">
<div class="tx" :class=" <div
val.type == '基础设施' class="tx"
? 'sxt' :class="
: val.componentType == '智能算法' val.type == '基础设施'
? 'sxt'
: val.componentType == '智能算法'
? 'znsf' ? 'znsf'
: val.componentType == '图层服务' : val.componentType == '图层服务'
? 'tcfw' ? 'tcfw'
: val.componentType == '开发组件' : val.componentType == '开发组件'
? 'kfzj' ? 'kfzj'
: val.componentType == '业务组件' : val.componentType == '业务组件'
? 'ywzj' ? 'ywzj'
: '' : ''
"></div> "
></div>
<div class="text"> <div class="text">
<div class="name"> <div class="name">
<span @click=" <span
showItem(val.resourceId, val.type, val.delFlag, val.note1) @click="
" style="cursor: pointer"> showItem(val.resourceId, val.type, val.delFlag, val.note1)
"
style="cursor: pointer"
>
{{ val.resourceName }} {{ val.resourceName }}
</span> </span>
<span>{{ val.type }}</span> <span>{{ val.type }}</span>
</div> </div>
<div class="description"> <div class="description">
{{ {{
val.description || val.description ||
(val.note1 && (val.note1 &&
JSON.parse(val.note1)[0].channelName + JSON.parse(val.note1)[0].channelName +
'等' + '等' +
JSON.parse(val.note1).length + JSON.parse(val.note1).length +
'个摄像头') || '个摄像头') ||
'--' '--'
}} }}
</div> </div>
</div> </div>
@ -51,8 +61,17 @@
</template> </template>
</div> </div>
</div> </div>
<a-modal v-model:visible="videoVisible" title="已申请摄像头列表" @ok="videoVisible = false"> <a-modal
<a-table :columns="columns" :data-source="xVideoList" bordered :pagination="{ defaultPageSize: 6 }"> v-model:visible="videoVisible"
title="已申请摄像头列表"
@ok="videoVisible = false"
>
<a-table
:columns="columns"
:data-source="xVideoList"
bordered
:pagination="{ defaultPageSize: 6 }"
>
<template #bodyCell="{ column, text }"> <template #bodyCell="{ column, text }">
<!-- <template> <!-- <template>
<a>{{ text }}</a> <a>{{ text }}</a>
@ -63,201 +82,201 @@
</template> </template>
<script setup> <script setup>
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { ref, defineProps } from 'vue' import { ref, defineProps } from 'vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
const router = useRouter() const router = useRouter()
const props = defineProps({ const props = defineProps({
dataList: { type: Array, default: null }, dataList: { type: Array, default: null },
})
const falg = ref(false)
let dataForm = ref([])
const videoVisible = ref(false)
const xVideoList = ref([])
const columns = ref([
{
title: '摄像头名称',
dataIndex: 'name',
},
])
// eslint-disable-next-line vue/no-setup-props-destructure
dataForm.value = props.dataList
console.log(dataForm.value)
// const router = useRouter()
// const arr =
// router.currentRoute.value.query.name instanceof Array
// ? router.currentRoute.value.query.name
// : [router.currentRoute.value.query.name]
// const dataResourceId = router.currentRoute.value.query.resourceId
// const depList = ref({
// Name: [],
// depID: [],
// })
//
const removeFunction = (data) => {
dataForm.value.map((val) => {
if (val.arr.length > 1) {
val.arr = val.arr.filter((item) => item.id !== data.id)
} else {
message.error('至少需要提交一条能力申请!')
}
}) })
dataForm.value = dataForm.value.filter((val) => val.arr.length !== 0) const falg = ref(false)
} let dataForm = ref([])
// const videoVisible = ref(false)
const showItem = (id, type, delFlag, note1) => { const xVideoList = ref([])
if (type == '基础设施') {
let arr = JSON.parse(note1) const columns = ref([
xVideoList.value = [] {
arr.map((val) => { title: '摄像头名称',
xVideoList.value.push({ name: val.channelName, key: val.channelId }) dataIndex: 'name',
},
])
// eslint-disable-next-line vue/no-setup-props-destructure
dataForm.value = props.dataList
console.log(dataForm.value)
// const router = useRouter()
// const arr =
// router.currentRoute.value.query.name instanceof Array
// ? router.currentRoute.value.query.name
// : [router.currentRoute.value.query.name]
// const dataResourceId = router.currentRoute.value.query.resourceId
// const depList = ref({
// Name: [],
// depID: [],
// })
//
const removeFunction = (data) => {
dataForm.value.map((val) => {
if (val.arr.length > 1) {
val.arr = val.arr.filter((item) => item.id !== data.id)
} else {
message.error('至少需要提交一条能力申请!')
}
}) })
videoVisible.value = true dataForm.value = dataForm.value.filter((val) => val.arr.length !== 0)
} else { }
if (delFlag == 0) { //
window.sessionStorage.setItem('type', JSON.stringify('PurchaseVehicle')) const showItem = (id, type, delFlag, note1) => {
mybus.emit('tabsChange', { flag: id }) if (type == '基础设施') {
router.push({ let arr = JSON.parse(note1)
path: '/details', xVideoList.value = []
query: { arr.map((val) => {
id: id, xVideoList.value.push({ name: val.channelName, key: val.channelId })
},
}) })
videoVisible.value = true
} else {
if (delFlag == 0) {
window.sessionStorage.setItem('type', JSON.stringify('PurchaseVehicle'))
mybus.emit('tabsChange', { flag: id })
router.push({
path: '/details',
query: {
id: id,
},
})
}
} }
} }
}
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.ability-to-apply-for { .ability-to-apply-for {
height: 2.9rem; height: 2.9rem;
overflow: hidden; overflow: hidden;
.title { .title {
font-size: 0.16rem; font-size: 0.16rem;
color: #212121; color: #212121;
border-bottom: 0.01rem #dddee1 solid; border-bottom: 0.01rem #dddee1 solid;
padding-bottom: 0.1rem;
margin-bottom: 0.2rem;
display: flex;
justify-content: space-between;
}
.ability-to-apply-for-content {
padding-right: 0.5rem;
position: relative;
.dep-name {
color: #0558e1;
font-size: 0.22rem;
display: flex;
align-items: center;
line-height: 0.22rem;
margin-bottom: 0.2rem;
span {
display: inline-block;
width: 0.05rem;
height: 0.05rem;
background: #0558e1;
border-radius: 0.05rem;
margin-right: 0.05rem;
}
}
.item {
padding-bottom: 0.1rem; padding-bottom: 0.1rem;
margin-bottom: 0.1rem;
border-bottom: 1px solid #dddee1;
display: flex;
align-items: center;
.text {
margin-left: 0.2rem;
width: 8.8rem;
}
}
.name {
margin-bottom: 0.2rem; margin-bottom: 0.2rem;
display: flex;
justify-content: space-between;
}
span:first-child { .ability-to-apply-for-content {
display: inline-block; padding-right: 0.5rem;
margin-right: 0.08rem; position: relative;
font-size: 0.18rem;
color: #000000; .dep-name {
color: #0558e1;
font-size: 0.22rem;
display: flex;
align-items: center;
line-height: 0.22rem;
margin-bottom: 0.2rem;
span {
display: inline-block;
width: 0.05rem;
height: 0.05rem;
background: #0558e1;
border-radius: 0.05rem;
margin-right: 0.05rem;
}
} }
span:last-child { .item {
display: inline-block; padding-bottom: 0.1rem;
padding: 0 0.05rem; margin-bottom: 0.1rem;
background: #00b8e6; border-bottom: 1px solid #dddee1;
color: #fff; display: flex;
align-items: center;
.text {
margin-left: 0.2rem;
width: 8.8rem;
}
} }
}
.description { .name {
width: 8.8rem; margin-bottom: 0.2rem;
color: rgba(0, 0, 0, 0.45);
}
.remove { span:first-child {
margin-left: 0.1rem; display: inline-block;
width: 0.32rem; margin-right: 0.08rem;
height: 0.32rem; font-size: 0.18rem;
background: url('~@/assets/home/remove.png') no-repeat; color: #000000;
background-size: cover; }
cursor: pointer;
}
.remove:hover { span:last-child {
background: url('~@/assets/home/remove-hover.png') no-repeat; display: inline-block;
background-size: cover; padding: 0 0.05rem;
background: #00b8e6;
color: #fff;
}
}
.description {
width: 8.8rem;
color: rgba(0, 0, 0, 0.45);
}
.remove {
margin-left: 0.1rem;
width: 0.32rem;
height: 0.32rem;
background: url('~@/assets/home/remove.png') no-repeat;
background-size: cover;
cursor: pointer;
}
.remove:hover {
background: url('~@/assets/home/remove-hover.png') no-repeat;
background-size: cover;
}
} }
} }
}
.all { .all {
height: unset; height: unset;
min-height: 2.9rem; min-height: 2.9rem;
} }
.btn { .btn {
cursor: pointer; cursor: pointer;
} }
.tx { .tx {
display: inline-block; display: inline-block;
width: 0.8rem; width: 0.8rem;
height: 0.8rem; height: 0.8rem;
margin-left: 0.1rem; margin-left: 0.1rem;
} }
.sxt { .sxt {
background: url('~@/assets/home/sxt_square.png') no-repeat; background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.znsf { .znsf {
background: url('~@/assets/home/znsf_square.png') no-repeat; background: url('~@/assets/home/znsf_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.tcfw { .tcfw {
background: url('~@/assets/home/tcfw_square.png') no-repeat; background: url('~@/assets/home/tcfw_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.kfzj { .kfzj {
background: url('~@/assets/home/kfzj_square.png') no-repeat; background: url('~@/assets/home/kfzj_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
.ywzj { .ywzj {
background: url('~@/assets/home/ywzj_square.png') no-repeat; background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%; background-size: 100%;
} }
</style> </style>

View File

@ -305,6 +305,7 @@
unit: '', unit: '',
system: [], system: [],
enclosure: '', // enclosure: '', //
enclosureName: '', //
}) })
const dataList = ref([]) const dataList = ref([])
getUser().then((res) => { getUser().then((res) => {
@ -538,6 +539,7 @@
if (info.file.status === 'done') { if (info.file.status === 'done') {
message.success(`${info.file.name} 上传成功`) message.success(`${info.file.name} 上传成功`)
formName.enclosure = info.file.response.data formName.enclosure = info.file.response.data
formName.enclosureName = info.file.name
} else if (info.file.status === 'error') { } else if (info.file.status === 'error') {
message.error(`${info.file.name} 上传失败`) message.error(`${info.file.name} 上传失败`)
} }

View File

@ -0,0 +1,322 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-13 15:56:51
* @Description:我的申请 能力申请 查看详情
-->
<template>
<div class="top">
<div class="title">基本信息</div>
<div class="main">
<div>
<p class="item">
<span>申请标题{{ props.refObj.title }}</span>
<span>申请单号{{ props.refObj.applyNumber || '--' }}</span>
<span>应用系统{{ props.refObj.applicationSystem }}</span>
</p>
<p class="item">
<span>申请人信息{{ props.refObj.user }}</span>
<span>电话{{ props.refObj.phone }}</span>
<span>单位{{ props.refObj.unit }}</span>
</p>
<p>
<span>应用场景{{ props.refObj.applicationScene.join('') }}</span>
</p>
<p>
<span>应用背景{{ props.refObj.applicationBackground }}</span>
</p>
<p>
<span>期望效果{{ props.refObj.effectWish }}</span>
</p>
<p v-if="props.refObj.enclosure">
<span>
申请单附件
<span class="enclosure">
{{ props.refObj.enclosureName || '--' }}
<span class="btn">预览</span>
</span>
</span>
</p>
</div>
</div>
</div>
<div class="bottom">
<div class="title">申请能力</div>
<div class="main">
<div class="item" v-for="(item, index) in showArr" :key="item + index">
<div class="deptName">
<span class="img"></span>
<span>{{ item.name }}</span>
</div>
<div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div class="box" v-if="item.list.length > 0">
<div class="ability" v-for="val in item.list" :key="val.id">
<div
class="left"
:class="
val.type == '应用资源'
? 'yyzy'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '智能算法'
? 'znsf'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '图层服务'
? 'tcfw'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '开发组件'
? 'kfzj'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '业务组件'
? 'ywzj'
: 'yyzy'
"
></div>
<div class="right">
<div class="ability-top">
<div class="name">
{{ val.name }}
<span class="type">
{{
val.type == '应用资源'
? '应用资源'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '智能算法'
? '智能算法'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '图层服务'
? '图层服务'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '开发组件'
? '开发组件'
: val.infoList.filter(
(val2) => val2.attrType == '组件类型'
)[0].attrValue == '业务组件'
? '业务组件'
: '--'
}}
</span>
</div>
<div class="btn">技术文档</div>
</div>
<div class="ability-bottom">
<div class="dec">资源描述{{ val.description }}</div>
<div class="result">申请结果{{ val.content || '--' }}</div>
</div>
</div>
</div>
</div>
<div class="box" v-if="item.list2.length > 0">
<div class="ability" v-for="val in item.list2" :key="val.channelId">
<div class="left sxt"></div>
<div class="right">
<div class="ability-top">
<div class="name">
{{ val.channelName }}
<span class="type">基础设施</span>
</div>
</div>
<div class="ability-bottom">
<div class="dec">位置{{ val.nodeName }}</div>
<!-- <div class="result">申请结果{{ val.content || '--' }}</div> -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, defineProps } from 'vue'
const props = defineProps({
refObj: { type: Object, default: null },
})
const showArr = ref([])
console.log(props.refObj, '=====================================')
if (props.refObj.resourceApplication) {
showArr.value = []
for (const key in props.refObj.resourceApplication) {
if (props.refObj.resourceApplication[key].length > 0) {
let obj = { name: '', instanceId: '', list: [], list2: [] }
obj.name = key
props.refObj.resourceApplication[key].map((item) => {
obj.instanceId = item.instanceId
if (item.resources.length > 0) {
item.resources.map((val) => {
obj.list.push(val)
})
} else {
item.camera.map((val) => {
obj.list2.push(val)
})
}
})
showArr.value.push(obj)
}
}
}
</script>
<style lang="less" scoped>
.title {
font-size: 0.18rem;
color: #000;
font-weight: bold;
margin-bottom: 0.2rem;
padding-left: 0.1rem;
border-left: 0.06rem #0058e1 solid;
}
.top {
margin-bottom: 0.1rem;
.main {
background: #eee;
padding: 0.2rem 0.2rem 0.1rem;
p {
display: flex;
justify-content: space-between;
& > span {
width: 100%;
}
.enclosure {
width: 95%;
padding: 0.05rem 0.1rem;
background: #ddd;
display: flex;
justify-content: space-between;
margin-top: 0.05rem;
}
.btn:hover {
color: #0058e1;
cursor: pointer;
}
}
.item {
span {
width: 2.5rem;
}
}
}
}
.bottom {
.main {
.item {
border-top: 1px #eee solid;
.deptName {
color: #0058e1;
font-size: 0.16rem;
margin-top: 0.1rem;
display: flex;
align-items: center;
.img {
width: 0.05rem;
height: 0.05rem;
border-radius: 0.05rem;
background: #0058e1;
margin-right: 0.1rem;
}
}
.oddNumbers {
margin: 0.1rem 0 0 0.15rem;
}
.box {
margin-left: 0.1rem;
.ability {
height: 1.3rem;
display: flex;
border-bottom: 1px #eee solid;
padding: 0.1rem 0;
.left {
display: inline-block;
width: 1.1rem;
height: 1.1rem;
margin-left: 0.1rem;
background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%;
}
.sxt {
background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%;
}
.yyzy {
background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%;
}
.znsf {
background: url('~@/assets/home/znsf_square.png') no-repeat;
background-size: 100%;
}
.tcfw {
background: url('~@/assets/home/tcfw_square.png') no-repeat;
background-size: 100%;
}
.kfzj {
background: url('~@/assets/home/kfzj_square.png') no-repeat;
background-size: 100%;
}
.ywzj {
background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%;
}
.btn {
cursor: pointer;
color: #0087ff;
align-self: flex-end;
padding: 5px 10px;
border: 1px #0087ff solid;
border-radius: 0.2rem;
}
.right {
flex: 1;
margin-left: 0.15rem;
.ability-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.name {
.type {
background: #0087ff;
color: #fff;
padding: 2px 10px;
border-radius: 10px;
margin-left: 0.1rem;
}
}
}
.ability-bottom {
margin-top: 0.15rem;
// display: flex;
// justify-content: space-between;
.dec {
width: 7rem;
height: 0.44rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.result:hover {
color: #0058e1;
cursor: pointer;
}
}
}
}
}
}
}
}
</style>

View File

@ -1,506 +1,21 @@
<template> <template>
<div class="form-container"> <div class="form-container">
<!-- <div class="title">基础信息</div> --> <AbilityApplication :refObj="refObj"></AbilityApplication>
<!-- <a-form <!-- <div class="title">流程图</div>
v-if="props.processDefinitionName == '能力申请流程'"
ref="formRef"
:model="formName"
name="basic"
:label-col="{ style: { width: '106px' } }"
:wrapper-col="{ style: { width: '230px' } }"
labelAlign="left"
autocomplete="off"
>
<div class="base-info">
<a-form-item
label="申请人"
name="user"
:rules="[{ required: true, message: '请输入申请人' }]"
>
<a-input
disabled="true"
placeholder="请输入申请人"
v-model:value="formName.user"
/>
</a-form-item>
<a-form-item
style="margin: 0 22px"
label="申请人电话"
name="phone"
:rules="[
{
required: true,
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
},
]"
>
<a-input
disabled="true"
placeholder="请输入申请人电话"
v-model:value="formName.phone"
/>
</a-form-item>
<a-form-item
label="申请单位"
name="unit"
:rules="[{ required: true, message: '请输入申请单位' }]"
>
<a-input
disabled="true"
placeholder="请输入申请单位"
v-model:value="formName.unit"
/>
</a-form-item>
</div>
<div class="title">更多申请信息</div>
<a-form-item
style="margin-bottom: 10px"
label="申请应用"
name="system"
:rules="[{ required: true, message: '请输入申请应用' }]"
>
<a-input
disabled="true"
style="width: 350px; background-color: #f5f5f5"
v-model:value="formName.system"
/>
</a-form-item>
<a-form-item
style="margin-bottom: 10px"
label="应用场景"
name="scene"
:rules="[{ required: true, message: '请输入应用场景' }]"
>
<a-textarea
style="
width: 500px;
height: 150px;
font-size: 16px;
line-height: 24px;
color: #333;
border: 1px solid #e0e0e0;
resize: none;
border-radius: 6px;
padding: 10px;
"
disabled="true"
v-model:value="formName.scene"
/>
</a-form-item>
<a-form-item
style="margin-bottom: 10px"
label="申请依据"
name="basis"
:rules="[{ required: true, message: '请输入申请依据' }]"
>
<a-textarea
style="
width: 500px;
height: 150px;
font-size: 16px;
line-height: 24px;
color: #333;
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 10px;
resize: none;
"
disabled="true"
v-model:value="formName.basis"
/>
</a-form-item>
<a-form-item
v-if="formName.enclosure"
style="color: #666; font-size: 16px"
label="附件下载"
>
<button
style="
width: 100px;
height: 30px;
margin-right: 10px;
background: rgb(237, 244, 252);
color: rgb(0, 135, 255);
font-size: 14px;
border-radius: 6px;
border: 1px solid rgb(187, 211, 239);
padding: 0px;
text-align: center;
cursor: pointer;
"
@click="downloadFile(formName.enclosure, '申请附件')"
>
下载
</button>
</a-form-item>
</a-form>
<a-form
v-if="props.processDefinitionName == '能力需求申请'"
ref="formRef"
:model="formName"
name="basic"
:label-col="{ style: { width: '106px' } }"
:wrapper-col="{ style: { width: '230px' } }"
labelAlign="left"
autocomplete="off"
>
<div class="base-info">
<a-form-item
label="申请人"
name="applyUserName"
:rules="[{ required: true, message: '请输入申请人' }]"
>
<a-input
disabled="true"
placeholder="请输入申请人"
v-model:value="formName.applyUserName"
/>
</a-form-item>
<a-form-item
style="margin: 0 22px"
label="申请人电话"
name="applyUserPhone"
:rules="[
{
required: true,
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
},
]"
>
<a-input
disabled="true"
placeholder="请输入申请人电话"
v-model:value="formName.applyUserPhone"
/>
</a-form-item>
<a-form-item
label="申请单位"
name="applyUserDeptName"
:rules="[{ required: true, message: '请输入申请单位' }]"
>
<a-input
disabled="true"
placeholder="请输入申请单位"
v-model:value="formName.applyUserDeptName"
/>
</a-form-item>
</div>
<div class="title">需求信息</div>
<a-form-item
style="margin-bottom: 10px"
label="需求标题"
name="demandSubject"
:rules="[{ required: true, message: '请输入需求标题' }]"
>
<a-input
disabled="true"
style="width: 350px"
v-model:value="formName.demandSubject"
/>
</a-form-item>
<a-form-item
style="margin-bottom: 10px"
label="需求类型"
name="请选择需求类型"
>
<a-select
disabled="true"
ref="select"
v-model:value="formName.detailsType"
@focus="focus"
style="width: 200px"
>
<a-select-option value="基础设施">基础设施</a-select-option>
<a-select-option value="数据资源">数据资源</a-select-option>
<a-select-option value="组件服务">组件服务</a-select-option>
<a-select-option value="应用资源">应用资源</a-select-option>
<a-select-option value="知识库">知识库</a-select-option>
</a-select>
</a-form-item>
<a-form-item
label="应用领域"
name="detailsField"
style="width: 350px"
:rules="[{ required: true, message: '请输入应用领域' }]"
>
<a-input
disabled="true"
placeholder="请输入应用领域"
v-model:value="formName.detailsField"
/>
</a-form-item>
<a-form-item
style="margin-bottom: 10px"
label="需求描述"
name="demandDetails"
:rules="[{ required: true, message: '请输入需求描述' }]"
>
<a-textarea
disabled="true"
style="
width: 500px;
height: 150px;
font-size: 16px;
line-height: 24px;
color: #333;
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 10px;
resize: none;
"
v-model:value="formName.demandDetails"
/>
</a-form-item>
<a-form-item
v-if="formName.enclosure"
style="color: #666; font-size: 16px"
label="附件下载"
>
<button
style="
width: 100px;
height: 30px;
margin-right: 10px;
background: rgb(237, 244, 252);
color: rgb(0, 135, 255);
font-size: 14px;
border-radius: 6px;
border: 1px solid rgb(187, 211, 239);
padding: 0px;
text-align: center;
cursor: pointer;
"
@click="downloadFile(formName.enclosure, '申请附件')"
>
下载
</button>
</a-form-item>
</a-form>
<a-form
v-if="props.processDefinitionName == '能力资源上架'"
ref="formRef"
:model="dataForm.data"
name="basic"
:label-col="{ style: { width: '106px', height: '50px' } }"
:wrapper-col="{ style: { width: '230px' } }"
labelAlign="left"
autocomplete="off"
>
<div v-if="shifoushizujian">
<a-form-item label="应用名称">
<a-input
v-model:value="dataForm.data.name"
disabled="true"
placeholder="应用名称"
></a-input>
</a-form-item>
<a-form-item label="应用描述">
<a-input
v-model:value="dataForm.data.description"
disabled="true"
placeholder="应用描述"
></a-input>
</a-form-item>
<a-form-item label="部门联系人">
<a-input
v-model:value="dataForm.data.deptContacts"
disabled="true"
placeholder="部门联系人"
></a-input>
</a-form-item>
<a-form-item label="共享类型">
<a-input
v-model:value="dataForm.data.shareType"
disabled="true"
placeholder="共享类型"
></a-input>
</a-form-item>
<a-form-item label="共享方式">
<a-input
v-model:value="dataForm.data.shareMode"
disabled="true"
placeholder="共享方式"
></a-input>
</a-form-item>
<a-form-item label="共享条件">
<a-input
v-model:value="dataForm.data.shareCondition"
disabled="true"
placeholder="共享方条件"
></a-input>
</a-form-item>
<a-form-item label="访问地址">
<a-input
v-model:value="dataForm.data.link"
disabled="true"
placeholder="访问地址"
></a-input>
</a-form-item>
</div>
<div v-if="!shifoushizujian">
<a-form-item label="组件名称" v-if="algorithmShow">
<a-input
v-model:value="dataForm.data.name"
disabled="true"
placeholder="组件名称"
></a-input>
</a-form-item>
<a-form-item label="算法名称" v-if="nameNotShow">
<a-input
v-model:value="dataForm.data.name"
disabled="true"
placeholder="算法名称"
></a-input>
</a-form-item>
<a-form-item label="应用描述" v-if="algorithmShow">
<a-input
v-model:value="dataForm.data.description"
disabled="true"
placeholder="应用描述"
></a-input>
</a-form-item>
<a-form-item label="算法描述" v-if="nameNotShow">
<a-input
v-model:value="dataForm.data.description"
disabled="true"
placeholder="算法描述"
></a-input>
</a-form-item>
<a-form-item label="部门联系人">
<a-input
v-model:value="dataForm.data.deptContacts"
disabled="true"
placeholder="部门联系人"
></a-input>
</a-form-item>
<a-form-item label="共享类型">
<a-input
v-model:value="dataForm.data.shareType"
disabled="true"
placeholder="共享类型"
></a-input>
</a-form-item>
<a-form-item label="共享方式">
<a-input
v-model="dataForm.data.shareMode"
disabled="true"
placeholder="共享方式"
></a-input>
</a-form-item>
<a-form-item label="共享条件">
<a-input
v-model:value="dataForm.data.shareCondition"
disabled="true"
placeholder="共享方条件"
></a-input>
</a-form-item>
<a-form-item label="服务接口">
<a-input
v-model:value="dataForm.data.apiUrl"
disabled="true"
placeholder="服务接口"
></a-input>
</a-form-item>
<a-form-item label="接口请求方式">
<a-input
v-model:value="dataForm.data.apiMethodType"
disabled="true"
placeholder="接口请求方式"
></a-input>
</a-form-item>
</div>
<div class="yingyongzujian">
<a-form-item
v-for="item in dataForm.data.infoList"
:key="item.index"
:label="item.attrType"
disabled="true"
>
<a-input
v-model:value="item.attrValue"
:placeholder="item.attrType"
disabled="true"
></a-input>
</a-form-item>
<a-form-item
v-if="dataForm.data.enclosure"
style="color: #666; font-size: 16px"
label="附件下载"
>
<button
style="
width: 100px;
height: 30px;
margin-right: 10px;
background: rgb(237, 244, 252);
color: rgb(0, 135, 255);
font-size: 14px;
border-radius: 6px;
border: 1px solid rgb(187, 211, 239);
padding: 0px;
text-align: center;
cursor: pointer;
"
@click="downloadFile(dataForm.data.enclosure, '申请附件')"
>
下载
</button>
</a-form-item>
</div>
</a-form>
<a-form
v-if="props.processDefinitionName == '能力资源下架'"
ref="formRef"
:model="dataForm.data"
name="basic"
:label-col="{ style: { width: '106px', height: '50px' } }"
:wrapper-col="{ style: { width: '230px' } }"
labelAlign="left"
autocomplete="off"
>
<div>
<a-form-item label="申请人">
<a-input
v-model:value="dataForm.data.undercarriageUserName"
disabled="true"
placeholder="申请人"
></a-input>
</a-form-item>
<a-form-item label="下架原因">
<a-input
v-model:value="dataForm.data.undercarriageReason"
disabled="true"
placeholder="下架原因"
></a-input>
</a-form-item>
</div>
</a-form> -->
<div class="title">流程图</div>
<div> <div>
<img :src="getResourceURL()" alt="" /> <img :src="getResourceURL()" alt="" />
</div> -->
<div>
<div class="title">审批详情</div>
<template v-for="item in dataSource.data" :key="item">
<div class="oddNumbers">子单号:{{ item[0] }}</div>
<a-table :dataSource="item[1]" :columns="columns" />
</template>
</div> </div>
<div class="title">流转详情</div>
<a-table :dataSource="dataSource.data" :columns="columns" />
</div> </div>
</template> </template>
<script setup> <script setup>
import AbilityApplication from './AbilityApplication.vue'
import { onMounted, reactive, defineProps, ref } from 'vue' import { onMounted, reactive, defineProps, ref } from 'vue'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
// import { baseURL } from '@/config' // import { baseURL } from '@/config'
@ -513,6 +28,29 @@
getTaskVariables, getTaskVariables,
} from '@/api/personalCenter' } from '@/api/personalCenter'
import { selectOneDel } from '@/api/home' import { selectOneDel } from '@/api/home'
const props = defineProps({
processDefinitionName: { type: String, default: null },
businessKey: { type: String, default: null },
processInstanceId: { type: String, default: null },
resourceId: { type: String, default: null },
refObj: { type: Object, default: null },
})
const refObj = ref({})
// eslint-disable-next-line vue/no-setup-props-destructure
refObj.value = props.refObj
//
const dataSource = reactive({ data: [] })
// console.log(props.refObj, '---------------------------------------')
if (props.refObj.resourceApplication) {
dataSource.data = []
for (const key in props.refObj.resourceApplication) {
if (props.refObj.resourceApplication[key].length > 0) {
props.refObj.resourceApplication[key].map((item) => {
dataSource.data.push([item.instanceId, item.taskHandleDetailInfo])
})
}
}
}
const downloadFile = (path, name) => { const downloadFile = (path, name) => {
const xhr = new XMLHttpRequest() const xhr = new XMLHttpRequest()
xhr.open('get', path) xhr.open('get', path)
@ -539,7 +77,6 @@
} }
} }
} }
// //
const formName = reactive({ const formName = reactive({
user: '', user: '',
@ -555,8 +92,6 @@
let nameNotShow = ref('') let nameNotShow = ref('')
let algorithmShow = ref('') let algorithmShow = ref('')
const dataForm = reactive({ data: {} }) const dataForm = reactive({ data: {} })
//
const dataSource = reactive({ data: [] })
const columns = [ const columns = [
{ {
title: '任务名称', title: '任务名称',
@ -589,13 +124,6 @@
key: 'durationInSeconds', key: 'durationInSeconds',
}, },
] ]
const props = defineProps({
processDefinitionName: { type: String, default: null },
businessKey: { type: String, default: null },
processInstanceId: { type: String, default: null },
resourceId: { type: String, default: null },
})
const getInfo = () => { const getInfo = () => {
console.log(props.processInstanceId, '============================') console.log(props.processInstanceId, '============================')
if (props.processDefinitionName == '能力申请') { if (props.processDefinitionName == '能力申请') {
@ -678,8 +206,8 @@
} }
onMounted(() => { onMounted(() => {
getInfo() // getInfo()
getLiuZhuanInfo() // getLiuZhuanInfo()
}) })
const getResourceURL = () => { const getResourceURL = () => {
@ -695,38 +223,27 @@
<style scoped lang="less"> <style scoped lang="less">
.form-container { .form-container {
height: 6rem;
overflow-y: scroll;
padding: 20px 20px 30px 20px; padding: 20px 20px 30px 20px;
.title { .title {
font-size: 20px; font-size: 18px;
color: #000; color: #000;
font-weight: bold; font-weight: bold;
margin-bottom: 20px; margin-bottom: 20px;
padding-left: 10px;
margin-top: 10px;
border-left: 6px #0058e1 solid;
} }
} }
.base-info { :deep(.ant-table-thead) > tr > .ant-table-cell {
display: flex; background: #0087ff;
color: #fff;
border: none;
text-align: center;
font-size: 16px;
} }
.yingyongzujian :deep(.ant-form-item-label > label) { .oddNumbers {
white-space: normal; margin-bottom: 0.05rem;
}
:deep(.ant-form-item-label) {
label {
color: #666;
font-size: 16px;
&::after {
content: '';
}
}
}
:deep(.ant-form-item-required) {
&::before {
font-size: 8px;
margin-right: 10px;
}
}
:deep(.ant-input) {
border: 1px solid #e0e0e0;
border-radius: 6px;
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="on-the-right-side-of-the-list"> <div class="on-the-right-side-of-the-list">
<div class="title">我的申请</div> <div class="title">我的申请</div>
<div class="sousuokuang"> <!-- <div class="sousuokuang">
<a-input-search <a-input-search
v-model:value="name" v-model:value="name"
placeholder="请输入关键词" placeholder="请输入关键词"
@ -17,10 +17,20 @@
> >
重置 重置
</a-button> </a-button>
</div> </div> -->
<div class="tab"> <div class="tab">
<span>排序</span> <span>类型</span>
<div
:class="typeIndex == index ? 'tabclass' : ' '"
@click="changeType(item, index)"
v-for="(item, index) in typeList"
:key="index"
>
{{ item }}
</div>
</div>
<!-- <div class="tab">
<span>筛选</span>
<div <div
:class="tabIndex == index ? 'tabclass' : ' '" :class="tabIndex == index ? 'tabclass' : ' '"
@click="tabqiehuan(item, index)" @click="tabqiehuan(item, index)"
@ -37,7 +47,7 @@
{{ item }} {{ item }}
</template> </template>
</div> </div>
</div> </div> -->
<div v-if="contentList.data.length > 0"> <div v-if="contentList.data.length > 0">
<div class="content"> <div class="content">
<div <div
@ -45,37 +55,46 @@
v-for="item in contentList.data" v-for="item in contentList.data"
:key="item.index" :key="item.index"
> >
<div class="content-body-title">
<span>申请单号{{ item.applyNumber || '--' }}</span>
<div></div>
</div>
<a-tooltip> <a-tooltip>
<template #title>{{ item.name }}</template> <template #title>
{{ item.cameraList ? item.system : item.title }}
</template>
<div class="content-body-title"> <div class="content-body-title">
<span <span
v-if="item.name === '申请摄像头列表' && item.ended" v-if="item.cameraList && item.ended"
@click="showVideoList(item)" @click="showVideoList(item)"
> >
名称{{ item.name }} 名称{{ item.cameraList ? item.system : item.title }}
</span>
<span v-else>
名称{{ item.cameraList ? item.system : item.title }}
</span> </span>
<span v-else>名称{{ item.name }}</span>
<div></div> <div></div>
</div> </div>
</a-tooltip> </a-tooltip>
<div class="content-body-content"> <!-- <div class="content-body-content">
<p class="content-body-content-son"> <p class="content-body-content-son">
流程类型{{ item.processDefinitionName }} 流程类型{{ item.processDefinitionName }}
</p> </p>
</div> </div> -->
<div class="content-body-content"> <div class="content-body-content">
<p class="content-body-content-son"> <p class="content-body-content-son">
审核结果{{ 审核结果{{
item.ended ? '审核完成' : item.backToFirst ? '被终止' : '审核中' // item.ended ? '' : item.backToFirst ? '' : ''
item.approveStatus
}} }}
</p> </p>
</div> </div>
<div class="content-body-content" v-if="item.currentTaskList"> <!-- <div class="content-body-content" v-if="item.currentTaskList">
<p class="content-body-content-son" v-if="!item.backToFirst"> <p class="content-body-content-son" v-if="!item.backToFirst">
当前节点{{ item.currentTaskList[0].taskName }} 当前节点{{ item.currentTaskList[0].taskName }}
</p> </p>
</div> </div> -->
<div v-else> <div>
<p <p
class="content-body-content-son" class="content-body-content-son"
v-if="item.name === '申请摄像头列表'" v-if="item.name === '申请摄像头列表'"
@ -111,36 +130,42 @@
复制 复制
</a-button> </a-button>
</p> </p>
<p class="content-body-content-son" v-else> <template v-else>
<span>申请结果{{ item.comment || '暂无' }}</span> <p
<a-button class="content-body-content-son"
type="primary" v-if="item.approveStatus == '通过'"
size="small"
@click="copyComment(item.comment)"
> >
复制 <span>申请结果{{ item.comment || '暂无' }}</span>
</a-button> <a-button
</p> v-if="item.comment"
type="primary"
size="small"
@click="copyComment(item.comment)"
>
复制
</a-button>
</p>
</template>
</div> </div>
<!-- <div class="content-body-title"></div> <!-- <div class="content-body-title"></div>
<div class="content-body-content"> <div class="content-body-content">
<p class="content-body-content-son"></p> <p class="content-body-content-son"></p>
<div></div> <div></div>
</div> --> </div> -->
<div class="content-body-bottom" v-if="item.currentTaskList"> <!-- <div class="content-body-bottom" v-if="item.currentTaskList">
<div>申请日期{{ item.currentTaskList[0].createTime }}</div> <div>申请日期{{ item.currentTaskList[0].createTime }}</div>
<div>审批人{{ item.currentTaskList[0].assigneeName }}</div> <div>审批人{{ item.currentTaskList[0].assigneeName }}</div>
</div> </div>
<div class="content-body-bottom" v-else> <div class="content-body-bottom" v-else>
<div>申请日期{{ item.startTime }}</div> <div>申请日期{{ item.startTime }}</div>
<div></div> <div></div>
</div> </div> -->
<div class="button-box"> <div class="button-box">
<div class="button" @click="showDetail(item)">查看流程</div> <div class="button" @click="showDetail(item)">查看详情</div>
<!-- <div class="button" @click="showAdd(item)" v-if="item.backToFirst"> <!-- <div class="button" @click="showAdd(item)" v-if="item.backToFirst">
修改 修改
</div> --> </div> -->
<div <!-- <div
v-if=" v-if="
!( !(
(item.processDefinitionName == '能力需求申请' || (item.processDefinitionName == '能力需求申请' ||
@ -164,7 +189,7 @@
" "
> >
查看详情 查看详情
</div> </div> -->
<!-- <div <!-- <div
class="button button-state" class="button button-state"
:class="{ :class="{
@ -225,6 +250,7 @@
size="small" size="small"
pageSize="4" pageSize="4"
:total="total" :total="total"
:current="page"
@change="handleCurrentChange" @change="handleCurrentChange"
@showSizeChange="handlePageSizeChange" @showSizeChange="handlePageSizeChange"
:showSizeChanger="false" :showSizeChanger="false"
@ -233,8 +259,9 @@
</div> </div>
<a-empty v-else /> <a-empty v-else />
<a-modal <a-modal
bodyStyle="padding:0.1rem 0"
v-model:visible="detailsVisible" v-model:visible="detailsVisible"
title="申请流程" title="申请详情"
style="width: 900px" style="width: 900px"
:footer="null" :footer="null"
destroyOnClose="true" destroyOnClose="true"
@ -245,6 +272,7 @@
:businessKey="businessKey" :businessKey="businessKey"
:processInstanceId="processInstanceId" :processInstanceId="processInstanceId"
:resourceId="resourceId" :resourceId="resourceId"
:refObj="refObj"
></apply-details> ></apply-details>
</a-modal> </a-modal>
<a-modal <a-modal
@ -282,6 +310,8 @@
import { import {
getMyProcessInstancePage, getMyProcessInstancePage,
getTaskHandleDetailInfo, getTaskHandleDetailInfo,
getTabilityapplication,
getByApplyFlag,
// getProcDefBizRoute, // getProcDefBizRoute,
} from '@/api/personalCenter' } from '@/api/personalCenter'
import { import {
@ -294,11 +324,20 @@
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import ApplyDetails from '@/views/personalCenter/components/ApplyDetails' import ApplyDetails from '@/views/personalCenter/components/ApplyDetails'
const router = useRouter() const router = useRouter()
let typeList = ref([
'能力申请',
'能力评价',
'能力上架',
'能力下架',
'能力需求',
'需求评论',
])
let tabList = ref(['全部', '审核中', '审核完成']) let tabList = ref(['全部', '审核中', '审核完成'])
const contentList = reactive({ data: [] }) const contentList = reactive({ data: [] })
// const contentListClone = reactive({ data: [] }) // const contentListClone = reactive({ data: [] })
// let contentListLength = contentList.length // let contentListLength = contentList.length
let tabIndex = ref(0) let tabIndex = ref(0)
let typeIndex = ref(0)
const videoVisible = ref(false) const videoVisible = ref(false)
const columns = ref([ const columns = ref([
{ {
@ -328,6 +367,12 @@
break break
} }
} }
//
const changeType = (item, index) => {
console.log(item, index)
typeIndex.value = index
getApplyList()
}
let name = ref('') let name = ref('')
const detailsVisible = ref(false) const detailsVisible = ref(false)
const businessKey = ref('') const businessKey = ref('')
@ -339,14 +384,18 @@
const delObj = ref({}) const delObj = ref({})
const taskId = ref('') const taskId = ref('')
const backUrl = ref(window.SITE_CONFIG.apiURL + '/') const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const refObj = ref({})
const showDetail = (item) => { const showDetail = (item) => {
console.log('showDetail', item) console.log('showDetail', item)
// getProcDefBizRoute(item.processDefinitionId) // getProcDefBizRoute(item.processDefinitionId)
detailsVisible.value = true getByApplyFlag(item.applyFlag).then((res) => {
processDefinitionName.value = item.processDefinitionName refObj.value = res.data.data
businessKey.value = item.businessKey detailsVisible.value = true
processInstanceId.value = item.processInstanceId processDefinitionName.value = item.processDefinitionName
resourceId.value = item.resourceId businessKey.value = item.businessKey
processInstanceId.value = item.instanceId
resourceId.value = item.resourceId
})
} }
const showVideoList = (item) => { const showVideoList = (item) => {
console.log('显示列表', item) console.log('显示列表', item)
@ -446,7 +495,7 @@
} }
}) })
} }
initNum() // initNum()
const total = ref('') const total = ref('')
const page = ref('1') const page = ref('1')
const ended = ref('') const ended = ref('')
@ -460,41 +509,64 @@
getApplyList(name.value) getApplyList(name.value)
} }
const getApplyList = () => { const getApplyList = () => {
contentList.data = []
total.value = 0
const params = { const params = {
page: page.value, page: page.value,
limit: 4, limit: 4,
ended: ended.value, // ended: ended.value,
name: name.value, // name: name.value,
} }
console.log('==============>', ended.value) if (typeIndex.value == 0) {
getMyProcessInstancePage(params).then((res) => { getTabilityapplication(params).then((res) => {
initNum(name.value) console.log('获取我的申请===============>', res.data.data)
console.log(res.data.data.list) contentList.data = res.data.data.list
contentList.data = res.data.data.list total.value = res.data.data.total
total.value = res.data.data.total })
if (contentList.data && contentList.data.length > 0) { } else if (typeIndex.value !== 1) {
contentList.data.map((item) => { switch (typeIndex.value) {
const param = { case 2:
page: 1, params.processDefinitionKey = 'resourcemountapply'
limit: 4, break
processInstanceId: item.processInstanceId, case 3:
} params.processDefinitionKey = 'resourcundercarriageapply'
getTaskHandleDetailInfo(qs.stringify(param)).then((res) => { break
console.log('申请结果', res.data.data, res.data.data[0].comment) case 4:
const result = res.data.data params.processDefinitionKey = 'abilitydemandapply'
if (result && result.length > 2) { break
item.comment = case 5:
result[0].comment.length > result[1].comment.length params.processDefinitionKey = 'comment_review'
? result[0].comment break
: result[1].comment
} else {
item.comment = result[0].comment
}
})
return item
})
} }
}) getMyProcessInstancePage(params).then((res) => {
// initNum(name.value)
console.log(res.data.data.list)
contentList.data = res.data.data.list
total.value = res.data.data.total
if (contentList.data && contentList.data.length > 0) {
contentList.data.map((item) => {
const param = {
page: 1,
limit: 4,
processInstanceId: item.processInstanceId,
}
getTaskHandleDetailInfo(qs.stringify(param)).then((res) => {
console.log('申请结果', res.data.data, res.data.data[0].comment)
const result = res.data.data
if (result && result.length > 2) {
item.comment =
result[0].comment.length > result[1].comment.length
? result[0].comment
: result[1].comment
} else {
item.comment = result[0].comment
}
})
return item
})
}
})
}
} }
const handleCurrentChange = (val) => { const handleCurrentChange = (val) => {
page.value = val page.value = val
@ -611,8 +683,10 @@
font-size: 14px; font-size: 14px;
color: #999999; color: #999999;
div { div {
width: 70px; // width: 70px;
padding: 5px 10px;
height: 24px; height: 24px;
line-height: 14px;
border: 1px solid #cccccc; border: 1px solid #cccccc;
border-radius: 12px; border-radius: 12px;
margin-left: 10px; margin-left: 10px;