Merge branch 'hi-ucs-dev' of http://124.222.94.39:3001/wuhongjian/hi-ucs into hi-ucs-dev

This commit is contained in:
guoyue 2022-07-13 17:47:44 +08:00
commit 3d223aaaf3
10 changed files with 824 additions and 800 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="wrapper">22222222222222</div> <div class="wrapper"></div>
</template> </template>
<script> <script>

View File

@ -3,14 +3,19 @@
<el-form :model="dataView"> <el-form :model="dataView">
<div v-for="(item, index) in dataView.children" :key="item"> <div v-for="(item, index) in dataView.children" :key="item">
<div class="dataTitle">{{ item.name }}</div> <div class="dataTitle">{{ item.name }}</div>
<div v-for="itemson in item.children" :key="itemson.name">
<div class="dataTitleSon">{{ itemson.name }}</div>
<div class="dataContent">
<el-form-item <el-form-item
v-for="itemson in item.children[0].children" v-for="itemsonson in itemson.children"
:key="itemson.name" :key="itemsonson.name"
:label="itemson.name" :label="itemsonson.name"
> >
<el-input v-model="itemson.note1"></el-input> <el-input v-model="itemsonson.note1"></el-input>
</el-form-item> </el-form-item>
</div> </div>
</div>
</div>
</el-form> </el-form>
</div> </div>
</template> </template>
@ -44,6 +49,54 @@ export default {
this.dataView = val.filter( this.dataView = val.filter(
(item) => item.name === this.dataForm.type + '一' (item) => item.name === this.dataForm.type + '一'
)[0] )[0]
console.log(this.dataView)
console.log(this.dataForm)
//
this.dataView.children[0].children[0].children[4].note1 =
this.dataForm.description
//
this.dataView.children[0].children[0].children[0].note1 =
this.dataForm.name
this.dataForm.infoList.map((item, index) => {
this.dataView.children.map((itemView, indexView) => {
// console.log('itemView', itemView)
itemView.children.map((itemViewSon, indexViewSon) => {
// console.log('itemViewSon', itemViewSon)
itemViewSon.children.map((itemSon, indexSon) => {
// console.log('itemSon', itemSon)
if (itemSon.name.indexOf('描述') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.description
} else if (itemSon.name.indexOf('名称') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.name
} else if (itemSon.name.indexOf('共享条件') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.shareCondition
} else if (itemSon.name.indexOf('共享方式') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.shareMode
} else if (itemSon.name.indexOf('共享类型') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.shareType
} else if (itemSon.name.indexOf('能力类型') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.type
} else if (itemSon.name === item.attrType) {
this.dataView.children[indexView].children[
indexViewSon
].children[indexSon].note1 = item.attrValue
}
})
})
})
})
} else { } else {
const componentType = this.dataForm.infoList.filter( const componentType = this.dataForm.infoList.filter(
(item) => item.attrType === '组件类型' (item) => item.attrType === '组件类型'
@ -93,6 +146,10 @@ export default {
this.dataView.children[indexView].children[0].children[ this.dataView.children[indexView].children[0].children[
indexSon indexSon
].note1 = this.dataForm.deptPhone ].note1 = this.dataForm.deptPhone
} else if (itemSon.name.indexOf('接口请求方式') != -1) {
this.dataView.children[indexView].children[0].children[
indexSon
].note1 = this.dataForm.apiMethodType
} else if (itemSon.name === item.attrType) { } else if (itemSon.name === item.attrType) {
this.dataView.children[indexView].children[ this.dataView.children[indexView].children[
indexViewSon indexViewSon
@ -161,5 +218,31 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.wrapper { .wrapper {
.dataTitle {
text-align: center;
color: #333333;
font-size: 22px;
margin-bottom: 25px;
}
.dataTitleSon {
padding-left: 30px;
color: #333333;
font-size: 22px;
margin-bottom: 20px;
background: url('~@/assets/img/sj-jx.png') no-repeat;
background-position-x: 15px;
}
.dataContent {
display: grid;
grid-template-columns: repeat(3, 33%);
}
::v-deep .el-form {
}
::v-deep .el-form-item__content {
display: inline-block;
input {
width: 400px;
}
}
} }
</style> </style>

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,14 +5,20 @@
<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
class="tx"
:class="
val.type == '基础设施' val.type == '基础设施'
? 'sxt' ? 'sxt'
: val.componentType == '智能算法' : val.componentType == '智能算法'
@ -24,12 +30,16 @@
: val.componentType == '业务组件' : val.componentType == '业务组件'
? 'ywzj' ? 'ywzj'
: '' : ''
"></div> "
></div>
<div class="text"> <div class="text">
<div class="name"> <div class="name">
<span @click=" <span
@click="
showItem(val.resourceId, val.type, val.delFlag, val.note1) showItem(val.resourceId, val.type, val.delFlag, val.note1)
" style="cursor: pointer"> "
style="cursor: pointer"
>
{{ val.resourceName }} {{ val.resourceName }}
</span> </span>
<span>{{ val.type }}</span> <span>{{ val.type }}</span>
@ -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>

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;
.yingyongzujian :deep(.ant-form-item-label > label) { border: none;
white-space: normal; text-align: center;
}
:deep(.ant-form-item-label) {
label {
color: #666;
font-size: 16px; font-size: 16px;
&::after {
content: '';
} }
} .oddNumbers {
} margin-bottom: 0.05rem;
: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,9 +130,14 @@
复制 复制
</a-button> </a-button>
</p> </p>
<p class="content-body-content-son" v-else> <template v-else>
<p
class="content-body-content-son"
v-if="item.approveStatus == '通过'"
>
<span>申请结果{{ item.comment || '暂无' }}</span> <span>申请结果{{ item.comment || '暂无' }}</span>
<a-button <a-button
v-if="item.comment"
type="primary" type="primary"
size="small" size="small"
@click="copyComment(item.comment)" @click="copyComment(item.comment)"
@ -121,26 +145,27 @@
复制 复制
</a-button> </a-button>
</p> </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)
getByApplyFlag(item.applyFlag).then((res) => {
refObj.value = res.data.data
detailsVisible.value = true detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName processDefinitionName.value = item.processDefinitionName
businessKey.value = item.businessKey businessKey.value = item.businessKey
processInstanceId.value = item.processInstanceId processInstanceId.value = item.instanceId
resourceId.value = item.resourceId 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,15 +509,37 @@
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,
}
if (typeIndex.value == 0) {
getTabilityapplication(params).then((res) => {
console.log('获取我的申请===============>', res.data.data)
contentList.data = res.data.data.list
total.value = res.data.data.total
})
} else if (typeIndex.value !== 1) {
switch (typeIndex.value) {
case 2:
params.processDefinitionKey = 'resourcemountapply'
break
case 3:
params.processDefinitionKey = 'resourcundercarriageapply'
break
case 4:
params.processDefinitionKey = 'abilitydemandapply'
break
case 5:
params.processDefinitionKey = 'comment_review'
break
} }
console.log('==============>', ended.value)
getMyProcessInstancePage(params).then((res) => { getMyProcessInstancePage(params).then((res) => {
initNum(name.value) // initNum(name.value)
console.log(res.data.data.list) 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
@ -496,6 +567,7 @@
} }
}) })
} }
}
const handleCurrentChange = (val) => { const handleCurrentChange = (val) => {
page.value = val page.value = val
getApplyList() getApplyList()
@ -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;