Merge branch 'hi-ucs-dev' into release

# Conflicts:
#	front/src/App.vue
#	front/src/views/detailsAll/ApplicationDetails.vue
This commit is contained in:
a0049873 2022-12-15 13:48:56 +08:00
commit 4dc1f7190e
60 changed files with 5376 additions and 1488 deletions

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 16:30:04
* @LastEditors: Light
* @LastEditTime: 2022-10-26 11:05:07
* @LastEditTime: 2022-12-13 11:10:46
* @Description: 告诉大家这是什么
-->
<template>

View File

@ -14,19 +14,21 @@ export default {
var showType = this.$route.params.processShowType
this.processVisible = true
this.$nextTick(() => {
if (this.$route.params.processDefinitionKey) {
if (this.$route.params.processDefinitionKey && this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.processDefinitionKey = this.$route.params.processDefinitionKey
}
if (this.$route.params.taskId) {
if (this.$route.params.taskId && this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.taskId = this.$route.params.taskId
}
if (this.$route.params.processInstanceId) {
if (this.$route.params.processInstanceId && this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.processInstanceId = this.$route.params.processInstanceId
}
this.$refs.renProcessMultiple.dataForm.businessKey = this.$route.params.businessKey
this.$refs.renProcessMultiple.showType = showType
this.$refs.renProcessMultiple.parentObj = this
this.$refs.renProcessMultiple.callbacks = callbacks
if (this.$refs.renProcessMultiple) {
this.$refs.renProcessMultiple.dataForm.businessKey = this.$route.params.businessKey
this.$refs.renProcessMultiple.showType = showType
this.$refs.renProcessMultiple.parentObj = this
this.$refs.renProcessMultiple.callbacks = callbacks
}
})
},
// 关闭当前窗口

View File

@ -1,8 +1,8 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-18 15:46:51
* @LastEditors: Light
* @LastEditTime: 2022-12-09 11:36:33
* @FilePath: \back\src\views\main-sidebar.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@ -88,12 +88,14 @@ export default {
} if (children.id == '1545313754106699777') { //
children.total = Number(this.numObject.comment_review)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1554294862931562498') { //
children.total = 0
} if (children.id == '1554294862931562498') { //
// children.total = 0
children.total = Number(this.numObject.meetingroom_book)
daibanNum = Number(daibanNum) + Number(children.total)
}
}
menu.total = daibanNum
console.log('menu', menu)
}
}
this.$store.state.sidebarMenuList = menuList

View File

@ -0,0 +1,568 @@
<!-- 知识库 -->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-ability__bsabilityai">
<el-form :inline="true" :model="dataForm">
<el-form-item>
<el-input v-model="dataForm.name" placeholder="名称" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList2(dataForm.name)">{{
$t('query')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button type="info" @click="exportHandle()">{{
$t('export')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="showPutOnTheShelf()">上架</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('ability:knowledgeBase:delete')" type="danger" @click="deleteHandle2()">{{
$t('deleteBatch')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button @click="reset">重置</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
:key="Math.random()" style="width: 100%" height="650px">
<el-table-column type="selection" header-align="center" align="center" width="50">
</el-table-column>
<af-table-column :show-overflow-tooltip="true" width="280" prop="name" label="名称" header-align="center"
align="center"></af-table-column>
<af-table-column :show-overflow-tooltip="true" width="500" prop="description" label="描述" header-align="center"
align="center"></af-table-column>
<template v-if="dataList[0] && dataList[0].infoList2">
<af-table-column :show-overflow-tooltip="true" v-for="(item, index) in dataList[0].infoList2"
:key="index" :label="item.attrType" header-align="center" align="center">
<template slot-scope="scope">
{{ findValue(scope.row.infoList2, item.attrType) }}
</template>
</af-table-column>
</template>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('ability:knowledgeBase:update')" type="text" size="small"
@click="UpdateData(scope.row)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('ability:knowledgeBase:delete')" type="text" size="small"
@click="deleteHandle2(scope.row.id)">{{ $t('delete') }}</el-button>
<el-button type="text" size="small" @click="showDetail(scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="Number(total)"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<!-- 选择类型 -->
<el-dialog title="选择类型" :visible.sync="showPutOnTheShelfFlag" :close-on-click-modal="false"
:close-on-press-escape="false" :before-close="clear" width="30%">
<el-radio v-model="radio" v-for="(data, i) in insertList.children" :label="data.name" :key="i">
</el-radio>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="showPutOnTheShelfVue"> </el-button>
</span>
</el-dialog>
<el-dialog :title="submitFrom.id ? '修改' + radio : '上架' + radio" :visible.sync="showPutOnTheShelfFlag2"
:close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :before-close="clear"
width="50%">
<putOnTheShelf ref="putOnTheShelf" :putOnTheShelfList="putOnTheShelfList" @changeInfoList="changeInfoList"
:type="radio" :typeInput="typeInput" :required="required" :notFilled="notFilled" @submitData="submitData">
</putOnTheShelf>
<span slot="footer" class="dialog-footer">
<el-button @click="clear"> </el-button>
<el-button type="primary" @click="submitData"> </el-button>
</span>
</el-dialog>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import dictionaries from '@/utils/dictionaries'
import qs from 'qs'
import { pinyin } from 'pinyin-pro'
import putOnTheShelf from '@/views/modules/putOnTheShelf'
export default {
mixins: [mixinViewModule],
data() {
return {
required: [],
// required: ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''],
notFilled: [],
insertList: [],
putOnTheShelfList: [],
radio: '',
showPutOnTheShelfFlag: false,
showPutOnTheShelfFlag2: false,
submitFrom: {
type: '知识库',
deptId: '',
delFlag: 0,
infoList: [
{
attrType: '知识库类型',
attrValue: '',
delFlag: 0
}
]
},
mixinViewModuleOptions: {
getDataListURL: '/resource/page',
getDataListIsPage: true,
exportURL: '/ability/bsabilityai/export',
deleteURL: '/resource/delete',
deleteIsBatch: true
},
disabled: false,
dataForm: {
name: '',
creator: '',
delFlag: 0,
selectType: 0,
type: '知识库'
},
typeInput: '知识库',
uuidOne: '',
uuidTwo: '',
uuidSnum: ''
}
},
watch: {},
components: {
putOnTheShelf
},
created() {
this.dataForm.name = ''
this.dataForm.type = '知识库'
},
mounted() {
// window.addEventListener('resize', this.a)
// this.fullScreen()
this.reset()
},
methods: {
reset() {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
page: 1,
limit: 10,
creator: '',
selectType: 0,
delFlag: 0,
type: '知识库',
name: ''
})
)
.then(({ data: res }) => {
this.dataForm.name = ''
if (res.code !== 0) {
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
this.dataList = this.mixinViewModuleOptions.getDataListIsPage
? res.data.list
: res.data
this.dataList.map((item, index) => {
const dataListSinforList = []
item.infoList.map((itemson, indexson) => {
if (
itemson.attrType === '知识库类型'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
console.log('this.dataList', this.dataList)
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false
})
.catch(() => {
this.dataListLoading = false
})
},
findValue(list, type) {
const found = list.find((item) => item.attrType === type)
if (found) {
return found.attrValue
} else {
return '暂无数据'
}
},
showDetail(val) {
console.log(val)
window.open(window.SITE_CONFIG.previewUrl + '#/details?id=' + val.id)
},
getDataList2(names) {
if (names != null) {
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
pageNum: 1,
pageSize: this.limit,
type: '知识库',
creator: '',
selectType: 0,
delFlag: 0,
name: names
})
)
.then(({ data: res }) => {
if (res.code !== 0) {
this.dataList = []
this.total = 0
return this.$message.error(res.msg)
}
if (res.data.list.length !== 0) {
this.dataList = res.data.list
this.total = this.mixinViewModuleOptions.getDataListIsPage
? res.data.total
: 0
if (this.mixinViewModuleOptions.requestCallback) {
this.mixinViewModuleOptions.requestCallback(res.data)
}
this.dataListLoading = false
this.dataList.map((item, index) => {
const dataListSinforList = []
item.infoList.map((itemson, indexson) => {
if (
itemson.attrType === '知识库类型'
) {
dataListSinforList.push(itemson)
}
})
this.dataList[index].infoList2 = dataListSinforList
})
} else {
this.$message.error('未查询到相关信息')
this.reset()
}
})
.catch(() => {
this.dataListLoading = false
})
} else {
this.$message.error('查询信息不能为空')
}
},
//
clear() {
console.log('清空----------------------------------------')
this.notFilled = []
this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = false
this.insertList = []
this.putOnTheShelfList = []
this.radio = ''
this.submitFrom = {
type: '知识库',
deptId: '',
delFlag: 0,
infoList: [
{
attrType: '知识库类型',
attrValue: '',
delFlag: 0
}
]
}
this.reset()
},
showPutOnTheShelf() {
this.showPutOnTheShelfFlag = true
this.$http.get('/category/getCategoryTree').then((res) => {
console.log('res------获取知识库类型------>', res);
this.insertList = res.data.data.filter(
(item) => item.name === '知识库'
)[0]
})
},
showPutOnTheShelfVue() {
this.showPutOnTheShelfFlag = false
this.showPutOnTheShelfFlag2 = true
if (this.submitFrom.infoList[0]) {
this.submitFrom.infoList[0].attrValue = this.radio
}
this.putOnTheShelfList = this.insertList.children.filter(
(item) => item.name === this.radio
)[0].children
if (this.putOnTheShelfList[0] && this.putOnTheShelfList[0].children && this.putOnTheShelfList[0].children && this.putOnTheShelfList[0].children[0].children) {
this.putOnTheShelfList[0].children[0].children.forEach(v => {
if (v.name == '发布日期') {
//
v.type = 'date'
}
})
}
console.log('this.putOnTheShelfList------------>', this.putOnTheShelfList[0].children[0].children);
},
changeInfoList(obj) {
console.log(obj, this.submitFrom)
this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== obj.attrType
)
this.submitFrom.infoList.push(obj)
},
submitData() {
console.log('提交11111111111===============>', this.putOnTheShelfList, this.submitFrom)
const arr = []
this.putOnTheShelfList.map((item) => {
item.children.map((child) => {
if (child.children) {
child.children.map((val) => {
arr.push(val.name)
if (
val.type === 'input' ||
val.type === 'textArea' ||
val.type === 'select' ||
val.type === 'checkBox' ||
val.type === 'radio'
) {
this.submitFrom.infoList = this.submitFrom.infoList.filter(
(item) => item.attrType !== val.name
)
}
switch (val.name) {
case '标准名称':
case '模型名称':
this.submitFrom.name = val.note1
break;
case '标准简介':
case '模型描述':
this.submitFrom.description = val.note1
break;
case '联系方式':
this.submitFrom.deptPhone = val.note1
break;
case '所属产品线':
this.submitFrom.deptId = val.note1
break
default:
if (
val.type !== 'image' &&
val.type !== 'file' &&
val.type !== 'video'
) {
this.submitFrom.infoList.push({
attrType: val.name,
attrValue: val.note1,
delFlag: 0
})
} else {
if (
this.submitFrom.infoList.filter(
(value) => value.attrType === val.name
).length === 0
) {
this.submitFrom.infoList.push({
attrType: val.name,
attrValue: val.note1,
delFlag: 0,
note2: val.note2 || null
})
}
}
break;
}
})
}
})
})
this.submitFrom.infoList = this.submitFrom.infoList.sort(
(a, b) => arr.indexOf(a.attrType) - arr.indexOf(b.attrType)
)
if (this.submitFrom.id) {
//
this.submitFrom.infoList.map((val) => {
if (val.attrType === '知识库类型') {
val.attrValue = this.radio
}
})
}
//
const newArr = this.submitFrom.infoList.filter(
(element, index, self) => {
return (
self.findIndex((x) => x.attrType === element.attrType) === index
)
}
)
this.submitFrom.infoList = newArr
this.notFilled = []
if (!this.submitFrom.name) {
this.notFilled.push('标准名称')
this.notFilled.push('模型名称')
}
if (this.notFilled.length > 0) {
this.$message({
message: '请填写必填字段!',
type: 'warning'
})
} else {
//
console.log('this.submitFrom.infoList----表单提交-------->', this.submitFrom);
let _url = this.submitFrom.id ? '/resource/update' : '/resource/insert?source= b';
let _method = this.submitFrom.id ? 'put' : 'post';
let _msg = this.submitFrom.id ? '修改' : '上架';
this.$http[_method](_url, this.submitFrom)
.then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(_msg + '失败!')
} else {
this.$message.success(_msg + '成功!')
this.clear()
}
})
.catch(() => { })
}
},
//
UpdateData(item) {
this.$http.get('/category/getCategoryTree').then((res) => {
this.insertList = res.data.data.filter(
(item) => item.name === '知识库'
)[0]
console.log('this.insertList-------www----->', this.insertList);
let _knowType = item.infoList.find((val) => val.attrType === '知识库类型') || {};
console.log('_knowType------------>', _knowType);
this.radio = item.infoList.find(
(val) => val.attrType === '知识库类型'
).attrValue
console.log('item.infoList------------>', item.infoList);
console.log('this.radio---www--------->', this.radio);
this.putOnTheShelfList = this.insertList.children.filter(
(item) => item.name === this.radio
)[0].children;
if (this.putOnTheShelfList[0] && this.putOnTheShelfList[0].children && this.putOnTheShelfList[0].children && this.putOnTheShelfList[0].children[0].children) {
this.putOnTheShelfList[0].children[0].children.forEach(v => {
if (v.name == '发布日期') {
//
v.type = 'date'
}
})
}
this.putOnTheShelfList.map((parent) => {
console.log('parent-------ssss----->', parent);
parent.children.map((child) => {
if (child.children) {
child.children.map((data) => {
switch (data.name) {
case '模型名称':
case '标准名称':
data.note1 = item.name
break
case '标准简介':
case '模型描述':
data.note1 = item.description
break
case '联系方式':
data.note1 = item.deptPhone
break
case '所属产品线':
data.note1 = item.deptId
break
default:
// eslint-disable-next-line no-case-declarations
const obj1 = item.infoList.filter(
(val) => val.attrType === data.name
)[0]
if (obj1) {
data.note1 = obj1.attrValue
}
break
}
if (
data.type === 'image' ||
data.type === 'file' ||
data.type === 'video'
) {
const obj1 = item.infoList.filter(
(val) => val.attrType === data.name
)[0]
if (obj1) {
data.note2 = obj1.note2
}
}
})
}
})
})
this.submitFrom.id = item.id
this.showPutOnTheShelfFlag2 = true
})
},
//
deleteHandle2(id) {
if (id == undefined && this.dataListSelections.length < 1) {
this.$message({
type: 'info',
message: '请选择要删除的数据'
})
} else {
this.$confirm('确认是否删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = []
if (id) {
ids.push(id)
} else {
if (this.dataListSelections.length > 0) {
this.dataListSelections.forEach(item => {
ids.push(item.id)
})
}
}
this.$http.post('/resource/delete', { ids: ids }).then(res => {
console.log('删除成功', res)
this.$message({
type: 'success',
message: '删除成功!'
})
this.reset()
})
}).catch(() => {
})
}
},
}
}
</script>
<style lang="scss" scoped>
.el-tooltip__popper {
max-width: 50%;
}
// ::v-deep .el-table .cell {
// width: 200px;
// }
::v-deep .el-upload-list__item-name {
width: 400px;
}
</style>

View File

@ -12,12 +12,19 @@
</el-form-item>
<!--上架部门-->
<el-form-item>
<span v-if="this.departmentId === 1 ">上架部门</span>
<span v-else>申请部门</span>
<el-form-item v-if="this.departmentId === 1 ">
<span>上架部门:</span>
<el-select v-model="abilityDepartment" placeholder="请选择部门" filterable clearable>
<el-option label="全部" value=""></el-option>
<el-option v-for="item in departmentSelects" :key="item.label" :label="item.label" :value="item.value"
<el-option v-for="item in departmentSelects1" :key="item.label" :label="item.label" :value="item.value"
v-bind="item"></el-option>
</el-select>
</el-form-item>
<el-form-item v-else>
<span >申请部门</span>
<el-select v-model="abilityDepartment" placeholder="请选择部门" filterable clearable>
<el-option label="全部" value=""></el-option>
<el-option v-for="item in provideSelects1" :key="item.label" :label="item.label" :value="item.value"
v-bind="item"></el-option>
</el-select>
</el-form-item>
@ -192,7 +199,11 @@
</el-table-column>
<el-table-column prop="yyzy" label="应用资源" min-width="100%">
</el-table-column>
<el-table-column prop="hys" label="会客厅" min-width="100%" v-show='departmentId == 2 || departmentId == 4'>
<el-table-column prop="hys" label="会客厅" min-width="100%" >
</el-table-column>
<el-table-column prop="yzy" label="云资源" min-width="100%" >
</el-table-column>
<el-table-column prop="ysp" label="云视频" min-width="100%" >
</el-table-column>
<el-table-column prop="zj" label="总计" min-width="100%">
</el-table-column>
@ -265,6 +276,8 @@ export default {
checked: false,
provideSelects: [],
departmentSelects: [],
departmentSelects1: [],
provideSelects1:[],
exportExcel: CONFIGITEM.configData[CONFIGITEM.version].apiURL + '/census/center/export',
exportExcelCondition: '',
exportExcelType: '',
@ -381,7 +394,9 @@ export default {
{ name: '开发组件', value: 3 },
{ name: '业务组件', value: 4 },
{ name: '应用资源', value: 5 },
{ name: '会客厅', value: 6 }
{ name: '会客厅', value: 6 },
{ name: '云资源', value: 7 },
{ name: '云视频', value: 8 }
], //
typeOptions1: [//
{ name: '智能算法', value: 1 },
@ -401,7 +416,9 @@ export default {
this.departmentSelects = []
this.provideSelects = []
res.data.data.map(val => {
this.departmentSelects.push({ label: val.name, value: val.id })
this.departmentSelects.push({ label: val.name, value: val.name })
this.departmentSelects1.push({ label: val.name, value: val.id })
this.provideSelects1.push({ label: val.name, value: val.name })
this.provideSelects.push({ label: val.name, value: val.name })
})
})
@ -451,7 +468,7 @@ export default {
this.detailsVisible = false
},
handleCurrentChange (val) {
console.log('val------------>', val)
this.currentPage = val
// todo
if (this.departmentId === 3) {
@ -461,40 +478,8 @@ export default {
this.getTwoDetail(val)
}
// if (this.choseId === 0) {
// this.getFirstTree(val)
// } else if (this.choseId === 1) {
// this.getReleaseTree(val)
// }
},
getTreeName (data) {
this.$http
.get('/census/center/v3/treeList/', {
params: {
keywords: data.name,
deptId: '1067246875800000066'
// pageNo: pageNo || 1,
// pageSize: 20
}
})
.then((res) => {
this.tableData = res.data.data
})
},
// //
// getALLTree () {
// this.$http.get('/census/center/v3/treeList/' ,{
// params : {
// keywords:this.inputTxt,
// deptId:'1067246875800000066',
// // pageNo: pageNo || 1,
// // pageSize: 20
// }
// }).then(res => {
// this.treeData =res.data.data
// // this.tableData =res.data.data
// })
// },
// --
getFirstTree (page) {
@ -523,6 +508,14 @@ export default {
}
})
.then((res) => {
if (res.data.code !== 0) {
this.tableData =[]
this.tableDataClone = []
this.total = 0
return this.$message.error("服务器内部异常")
}else{
const result = res.data.data
for (let i = 0; i < result.length; i++) {
if (!result[i].hasOwnProperty('yyzy')) {
@ -561,7 +554,9 @@ export default {
endDate: this.endDate,
resourceName: this.resourceName
})
}
})
},
// 使-使
getSecondTree (page) {
@ -590,6 +585,13 @@ export default {
}
})
.then((res) => {
if (res.data.code !== 0) {
this.tableData =[]
this.tableDataClone = []
this.total = 0
return this.$message.error("服务器内部异常")
}else{
const result = res.data.data
for (let i = 0; i < result.length; i++) {
if (!result[i].hasOwnProperty('yyzy')) {
@ -629,6 +631,7 @@ export default {
resourceName: this.resourceName
})
}
})
},
//
@ -701,7 +704,13 @@ export default {
}
})
.then((res) => {
console.log('111111', this.tableData, res.data.data)
if (res.data.code !== 0) {
this.tableData =[]
this.tableDataClone = []
this.total = 0
return this.$message.error("服务器内部异常")
}else{
this.tableData = res.data.data.list
this.tableDataClone = res.data.data.list
this.total = res.data.data.total
@ -712,10 +721,12 @@ export default {
endDate: this.endDate,
resourceName: this.resourceName
})
}
})
},
// 使
getTwoDetail (page) {
var passAndReview = '' // ""
if (this.examineStatus == '-1') {
this.status = ''
@ -745,6 +756,14 @@ export default {
}
})
.then((res) => {
if (res.data.code !== 0) {
this.tableData =[]
this.tableDataClone = []
this.total = 0
return this.$message.error("服务器内部异常")
}else{
this.tableData = res.data.data.list
this.tableDataClone = res.data.data.list
this.total = res.data.data.total
@ -756,69 +775,12 @@ export default {
resourceName: this.resourceName,
provideDept: this.provideDepartment
})
}
})
},
getReleaseTree (page) {
this.$http
.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: {
limit: 5,
// page: page || 1,
approveStatus: '',
type: '',
deptId: '',
params: '',
startDate: ''
}
})
.then((res) => {
const result = res.data.data
for (let i = 0; i < result.length; i++) {
if (!result[i].hasOwnProperty('yyzy')) {
result[i].yyzy = 0
}
if (!result[i].hasOwnProperty('kfzj')) {
result[i].kfzj = 0
}
if (!result[i].hasOwnProperty('znsf')) {
result[i].znsf = 0
}
if (!result[i].hasOwnProperty('tcfw')) {
result[i].tcfw = 0
}
if (!result[i].hasOwnProperty('ywzj')) {
result[i].ywzj = 0
}
if (!result[i].hasOwnProperty('hys')) {
result[i].hys = 0
}
result[i].zj =
parseInt(result[i].yyzy) +
parseInt(result[i].kfzj) +
parseInt(result[i].znsf) +
parseInt(result[i].ywzj) +
parseInt(result[i].tcfw) +
parseInt(result[i].hys)
}
this.tableData = res.data.data
this.total = res.data.data.total
})
},
// 使
getUsedTree () {
this.$http
.get('/census/center/v3/resourceReleaseDetails/', {
params: {
limit: 5,
page: 1,
// id:'1067246875800000066',
resourceType: '应用资源'
}
})
.then((res) => {
this.tableData = res.data.data.list
})
},
handleClick (row) {
if (this.choseId === 0) {
if (this.departmentId === 1) {
@ -847,6 +809,8 @@ export default {
// type
handleChose (index) {
this.checked = false
this.departmentId = index
this.currentPage = 1
@ -914,6 +878,9 @@ export default {
},
// //////////
goToDetail () {
this.abilityDepartment=''
this.provideDepartment=''
this.currentPage = 1
this.pageSize = 10
this.detailFlag = !this.detailFlag
@ -928,6 +895,9 @@ export default {
},
//
goToBack () {
this.abilityDepartment=''
this.provideDepartment=''
this.checked = false
this.currentPage = 1,
this.pageSize = 10,

View File

@ -59,8 +59,8 @@
></el-input>
</el-tooltip>
</el-form-item>
<el-form-item v-if="dataForm.enclosure" label="申请附件" prop="enclosure">
<button
<el-form-item v-show="dataForm.enclosure" label="申请附件">
<!-- <button
style="
width: 100px;
height: 30px;
@ -77,8 +77,20 @@
@click="downloadFile(dataForm.enclosure, '申请附件')"
>
附件下载
</button>
<!-- <el-button class="DownloadAttachment" @click="downloadFile(dataForm.enclosure, '申请附件')">附件下载</el-button> -->
</button> -->
<el-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.enclosure, '申请附件')">附件下载</el-button>
</el-form-item>
</el-form>
<!-- 流程综合组件 -->
@ -139,6 +151,12 @@ export default {
//
fieldDisabled: false,
dataForm: {
applyUserName: '',
applyUserPhone: '',
applyUserDeptName: '',
demandSubject: '',
detailsField: '',
demandDetails: '',
id: '',
user: '',
phone: '',
@ -146,7 +164,8 @@ export default {
area: '',
system: '',
scene: '',
basis: ''
basis: '',
enclosure: ''
},
//
dialogVisible: false,
@ -159,7 +178,7 @@ export default {
created () {
// KEY
this.dataForm.id = this.$route.params.businessKey
console.log(this.$route.params)
// console.log(this.$route.params)
this.init()
//
var callbacks = {
@ -202,8 +221,10 @@ export default {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs.dataForm.resetFields()
if (this.dataForm.id) {
if (this.$refs.dataForm) {
this.$refs.dataForm.resetFields()
}
if (this.dataForm && this.dataForm.id) {
// KEY
this.fieldDisabled = true
this.getInfo()

View File

@ -109,31 +109,31 @@
</template>
<script>
import mixinViewModule from "@/mixins/view-module";
import processModule from "@/mixins/process-module";
import mixinViewModule from '@/mixins/view-module'
import processModule from '@/mixins/process-module'
export default {
mixins: [mixinViewModule, processModule],
data() {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: "/act/his/getMyHandledInstancePage",
getDataListURL: '/act/his/getMyHandledInstancePage?ended=1',
getDataListIsPage: true,
deleteIsBatch: true,
deleteIsBatchKey: "deploymentId",
deleteIsBatchKey: 'deploymentId'
},
dataForm: {
processDefinitionId: "",
},
};
processDefinitionId: ''
}
}
},
components: {},
methods: {
showDetail(row) {
showDetail (row) {
if (!row.businessKey) {
return this.$message.error(this.$t("task.detailError"));
return this.$message.error(this.$t('task.detailError'))
}
this.getProcDefRouteSet(row, this.forwardDetail);
},
},
};
this.getProcDefRouteSet(row, this.forwardDetail)
}
}
}
</script>

View File

@ -115,7 +115,7 @@ export default {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyHandledInstancePage',
getDataListURL: '/act/his/getMyHandledInstancePage?ended=1',
getDataListIsPage: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'

View File

@ -115,7 +115,7 @@ export default {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyHandledInstancePage',
getDataListURL: '/act/his/getMyHandledInstancePage?ended=1',
getDataListIsPage: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'

View File

@ -115,7 +115,7 @@ export default {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyHandledInstancePage',
getDataListURL: '/act/his/getMyHandledInstancePage?ended=1',
getDataListIsPage: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'

View File

@ -115,7 +115,7 @@ export default {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyHandledInstancePage',
getDataListURL: '/act/his/getMyHandledInstancePage?ended=1',
getDataListIsPage: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'

View File

@ -116,7 +116,7 @@ export default {
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/act/his/getMyHandledInstancePage',
getDataListURL: '/act/his/getMyHandledInstancePage?ended=1',
getDataListIsPage: true,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'

View File

@ -3,7 +3,7 @@
<div class="mod-demo__sysnotice">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getData()">
<el-form-item>
<el-input v-model="dataForm.content" dict-type="notice_type" :placeholder="$t('notice.type')"></el-input>
<el-input v-model="dataForm.content" dict-type="notice_type" placeholder="请输入关键词"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getData()">{{ $t('query') }}</el-button>
@ -23,10 +23,17 @@
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="180">
<template slot-scope="scope">
<el-button type="text" size="small" @click="viewHandle(scope.row)">
详情
<el-button type="text" size="small" @click="update(scope.row)" style="margin-right: 10px;">
修改
</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row)">{{ $t('delete') }}</el-button>
<el-popconfirm
title="确定删除这条公告么?"
confirm-button-text='是'
cancel-button-text='否'
@confirm="deleteHandle(scope.row)"
>
<el-button type="text" slot="reference" size="small" >{{ $t('delete') }}</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
@ -38,7 +45,7 @@
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
<el-dialog
title="添加公告"
:title="submitData.id?'修改公告':'添加公告'"
:visible.sync="dialogVisible"
width="30%"
:close-on-click-modal="false">
@ -60,10 +67,11 @@
:visible.sync="dialogVisible2"
width="30%"
:close-on-click-modal="false">
<el-input
公告周期<el-input-number v-model="cycle" :min="1" :max="7" style="margin-right:10px;"></el-input-number>
<!-- <el-input
placeholder="请输入公告周期(天)"
v-model="cycle">
</el-input>
</el-input> -->
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="submitCycle"> </el-button>
@ -120,11 +128,12 @@ export default {
handleClose () {
this.dialogVisible = false
this.dialogVisible2 = false
this.submitData.content = ''
this.submitData = {
content: ''
}
this.getCycle()
},
submit () {
console.log(this.submitData)
if (this.submitData.content.length < 6) {
this.$message({
message: '最少发布6个字的公告',
@ -132,10 +141,15 @@ export default {
})
return
}
this.$http.post('/sysnoticemanagement', this.submitData).then(res => {
console.log('获取通知数据', res.data.data)
this.clear()
})
if (this.submitData.id) {
this.$http.post('/sysnoticemanagement/update', this.submitData).then(res => {
this.clear()
})
} else {
this.$http.post('/sysnoticemanagement', this.submitData).then(res => {
this.clear()
})
}
},
submitCycle () {
this.$http.put('/sys/dict/data', {
@ -156,23 +170,16 @@ export default {
this.getCycle()
},
deleteHandle (item) {
console.log(item)
console.log('点击', item)
this.$http.post('/sysnoticemanagement/delete', [item.id]).then(res => {
this.clear()
})
},
viewHandle (row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
title: this.$t('notice.view1'),
path: 'notice/notice-view',
params: {
id: row.id
}
}
//
addDynamicRoute(routeParams, this.$router)
update (row) {
console.log(row)
this.submitData.id = row.id
this.submitData.content = row.content
this.dialogVisible = true
}
},
created () {

View File

@ -19,7 +19,7 @@ js:
<a-input v-if="type == 'input'" v-model:value="data.note1" :placeholder="'请输入' + name" @change="changeIiem(name,data.note1)"/>
<!-- 下拉框 -->
<el-select
v-else-if="(type === 'select' && name !== '归属部门' && name !== '使用方式') || type == 'radio'"
v-else-if="(type === 'select' && name !== '归属部门' && name !== '使用方式' && name !== '所属产品线') || type == 'radio'"
style="width: 240px"
v-model:value="data.note1"
@change="changeIiem(name,data.note1)"
@ -32,8 +32,8 @@ js:
</el-option>
</el-select>
<el-select
v-else-if="(type === 'select' && name === '归属部门')"
style="width: 240px"
v-else-if="(type === 'select' && (name === '归属部门' || name === '所属产品线'))"
style="width:240px"
v-model:value="data.note1"
filterable
placeholder="请输入关键词"
@ -82,6 +82,11 @@ js:
<el-radio v-for="item in options" :label="item.dictLabel" :key="item.dictLabel">{{item.dictLabel}}</el-radio>
</el-radio-group> -->
<a-textarea v-else-if="type == 'textArea'" @change="changeIiem(name,data.note1)" v-model:value="data.note1" :showCount="true" :maxlength="200" :placeholder="'请填写' + name" />
<div class="block" v-else-if="type == 'date'">
<el-date-picker v-model="data.note1" type="date" :placeholder="'选择' + name" value-format="yyyy-MM-dd">
</el-date-picker>
</div>
</div>
</template>
<script>
@ -132,7 +137,7 @@ export default {
this.options = dataList
})
.catch(() => {})
} else if (this.data.name === '归属部门') {
} else if (this.data.name === '归属部门' || this.data.name === '所属产品线') {
this.$http.get('/sys/dept/all').then(res => {
const dataList = []
res.data.data.forEach((element) => {

View File

@ -47,7 +47,8 @@
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'checkBox'" type="checkBox" :data="item" :name="item.name" :options="item.options"></input-select-checkbox>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'radio'" type="radio" :data="item" :name="item.name" :options="item.options"></input-select-checkbox>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'textArea'" type="textArea" :data="item" :name="item.name"></input-select-checkbox>
</div>
<input-select-checkbox :changeField='changeField' :list="[]" v-else-if="item.type == 'date'" type="date" :data="item" :name="item.name"></input-select-checkbox>
</div>
<div class="requiredTips" v-show="notFilled.indexOf(item.name) > -1 && (item.type=='input' || item.type=='textArea') && changeField.indexOf(item.name) == -1">请填写{{item.name}}</div>
<div class="requiredTips" v-show="notFilled.indexOf(item.name) > -1 && (item.type=='select' || item.type=='checkBox' || item.type=='radio') && changeField.indexOf(item.name) == -1">请选择{{item.name}}</div>
</div>

View File

@ -0,0 +1,432 @@
<!--
* @Author: Light
* @Date: 2022-12-13 15:36:38
* @LastEditors: Light
* @LastEditTime: 2022-12-14 11:52:27
* @Description: 审核组管理
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__role">
<el-form :inline="true" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="name" :placeholder="$t('role.name')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()" type="primary">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addDialog()">{{ $t('add') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="deleteTeam()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetHandle()">{{ $t('reset') }}</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="name" :label="$t('role.name')" header-align="center" align="center"></el-table-column>
<el-table-column prop="description" label="备注" header-align="center" align="center"></el-table-column>
<el-table-column prop="createDate" :label="$t('role.createDate')" header-align="center" align="center" width="180"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button type="text" size="small" @click="updateTeam(scope.row)">{{ $t('update') }}</el-button>
<el-button type="text" size="small" @click="auditorDialogVisible(scope.row)">审核员管理</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<el-dialog
:title="(submitData.id?'修改':'新增')+'审核组'"
:visible.sync="addDialogVisible"
width="30%"
:before-close="handleClose"
:close-on-click-modal="false">
<el-form ref="submitData" :model="submitData" label-width="100px" :rules="rules">
<el-form-item label="审核组名称" prop="name">
<el-input placeholder="请输入审核组名称" v-model="submitData.name"></el-input>
</el-form-item >
<el-form-item label="备注" prop="description">
<el-input placeholder="请输入备注" v-model="submitData.description"></el-input>
</el-form-item >
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()"> </el-button>
<el-button type="primary" @click="addAuditTeam()"> </el-button>
</span>
</el-dialog>
<el-dialog
title="审核员管理"
:visible.sync="addAuditorDialogVisible"
width="70%"
:before-close="handleClose"
:close-on-click-modal="false">
<div class="box">
<div class="left">
<div style="position: relative;">审核人员列表<el-checkbox style="position: absolute;right: 0;" v-model="checked" @change="changeFilter()">仅展示未分配审核员</el-checkbox></div>
<el-table
:height="400"
:data="auditorList"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectAuditorLeft">
<el-table-column type="selection" header-align="center" align="center" width="50" :selectable="selectable"></el-table-column>
<el-table-column prop="real_name" label="姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="所属部门" header-align="center" align="center"></el-table-column>
<el-table-column prop="auditTeamName" label="当前审核组" header-align="center" align="center" v-if="!checked"></el-table-column>
</el-table>
<el-pagination
background
layout="prev, pager, next"
:page-size="pageOptionLeft.limit"
:total="pageOptionLeft.total"
@current-change="currentChangeLeft">
</el-pagination>
</div>
<div class="main">
<el-button type="primary" icon="el-icon-arrow-left" @click="delAudiTeam()"></el-button>
<el-button type="primary" @click="addAudiTeam()"><i class="el-icon-arrow-right el-icon--right"></i></el-button>
</div>
<div class="right">
<div>已添加审核人员</div>
<el-table
:height="400"
:data="submitData.member"
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectAuditorRight">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="name" label="姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="dept_name" label="所属部门" header-align="center" align="center"></el-table-column>
</el-table>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose()"> </el-button>
<el-button type="primary" @click="handleClose()"> </el-button>
</span>
</el-dialog>
</div>
</el-card>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
import qs from 'qs'
export default {
mixins: [mixinViewModule],
data () {
return {
mixinViewModuleOptions: {
getDataListURL: 'audit_team/sysauditteam/page',
getDataListIsPage: true,
deleteIsBatch: true
},
name: '',
dataForm: {
name: ''
},
submitData: {
name: '',
description: '',
member: []
},
submitFlag: true,
deleteFlag: true,
rules: {
name: [
{ required: true, message: '请输入审核组名称', trigger: 'blur' }
]
},
addDialogVisible: false,
addAuditorDialogVisible: false,
auditorList: [],
selectAuditorListLeft: [],
selectAuditorListRight: [],
pageOptionLeft: {
page: 1,
limit: 5,
total: 0
},
checked: true
}
},
components: {
},
methods: {
addDialog () {
this.addDialogVisible = true
},
handleClose () {
this.addDialogVisible = false
this.addAuditorDialogVisible = false
this.selectAuditorListLeft = []
this.selectAuditorListRight = []
this.submitData = {
name: '',
description: '',
member: []
}
this.pageOptionLeft = {
page: 1,
limit: 5,
total: 0
}
this.checked = true
this.getAuditList()
this.resetHandle()
},
auditorDialogVisible (row) {
this.submitData = {
id: row.id,
name: row.name,
description: row.description,
member: row.member
}
this.addAuditorDialogVisible = true
},
//
addAuditTeam () {
this.$refs.submitData.validate((valid) => {
if (valid) {
this.submitFrom()
} else {
return false
}
})
},
submitFrom (flag) {
if (this.submitFlag) {
this.submitFlag = false
if (this.submitData.id) {
this.$http.put('audit_team/sysauditteam', this.submitData).then(res => {
if (res.data.msg !== 'success') {
this.$message({
type: 'warning',
message: '修改失败'
})
} else {
this.$message.success('修改成功!')
}
if (!flag || res.data.msg !== 'success') {
this.handleClose()
this.resetHandle()
}
if (flag) {
this.getAuditList()
}
this.submitFlag = true
})
} else {
this.$http.post('audit_team/sysauditteam', this.submitData).then(res => {
if (res.data.msg !== 'success') {
this.$message({
type: 'warning',
message: '修改失败'
})
} else {
this.$message.success('修改成功!')
}
this.handleClose()
this.resetHandle()
this.submitFlag = true
})
}
} else {
this.$message({
type: 'warning',
message: '请勿重复操作!'
})
}
},
//
deleteTeam () {
if (this.dataListSelections.length === 0) {
this.$message({
type: 'warning',
message: '请先选择需要删除的审批组!'
})
return
}
if (this.deleteFlag) {
this.deleteFlag = false
const ids = []
this.dataListSelections.map(val => {
ids.push(val.id)
})
this.$http.delete('audit_team/sysauditteam', { data: ids }).then(res => {
if (res.data.msg !== 'success') {
this.$message({
type: 'warning',
message: '删除失败'
})
} else {
this.$message.success('删除成功!')
}
this.resetHandle()
this.deleteFlag = true
})
} else {
this.$message({
type: 'warning',
message: '请勿重复操作!'
})
}
},
//
updateTeam (row) {
this.submitData = {
id: row.id,
name: row.name,
description: row.description,
member: row.member
}
this.addDialogVisible = true
},
//
handleSelectAuditorLeft (val) {
this.selectAuditorListLeft = val
},
handleSelectAuditorRight (val) {
this.selectAuditorListRight = val
},
resetHandle () {
this.dataForm.name = ''
this.$nextTick(() => {
this.getDataList()
})
},
getAuditList () {
this.$http.get('/sys/user/auditingUserPage?' + qs.stringify({
page: this.pageOptionLeft.page,
limit: this.pageOptionLeft.limit,
filter: this.checked
})).then(res => {
this.auditorList = res.data.data.list
this.pageOptionLeft.total = res.data.data.total
})
},
currentChangeLeft (val) {
this.pageOptionLeft.page = val
this.getAuditList()
},
//
addAudiTeam () {
if (this.selectAuditorListLeft.length === 0) {
this.$message({
type: 'warning',
message: '请选择审核人员!'
})
return
}
// const arr = []
// const str = ''
// const addArr = []
this.selectAuditorListLeft.map(val => {
// if (val.auditTeamName) {
// arr.push({
// name: val.real_name,
// auditor: val.auditTeamName
// })
// str += val.real_name + ';'
// }
// addArr.push({
// id: val.id,
// name: val.real_name,
// dept_name: val.name
// })
this.submitData.member.push({
id: val.id,
name: val.real_name,
dept_name: val.name
})
})
// if (arr.length > 0) {
// this.$message({
// type: 'warning',
// message: str.substring(0, str.length - 1) + ''
// })
// return
// }
// this.submitData.member.push(...addArr)
this.submitFrom(true)
},
//
delAudiTeam () {
if (this.selectAuditorListRight.length === 0) {
this.$message({
type: 'warning',
message: '请选择审核人员!'
})
return
}
this.selectAuditorListRight.map(val => {
this.submitData.member = this.submitData.member.filter(member => member.id !== val.id)
})
this.submitFrom(true)
},
selectable (row) {
return !row.inAuditTeam
},
changeFilter () {
this.pageOptionLeft.page = 1
this.getAuditList()
}
},
created () {
this.getAuditList()
}
}
</script>
<style lang="scss" scoped>
// :deep(.el-form-item__label::before){
// line-height: 40px;
// }
.box{
display: flex;
justify-content: center;
align-items: flex-start;
.left{
width: 600px;
div:nth-of-type(1){
text-align: center;
font-size: 20px;
font-weight: 600;
margin-bottom: 10px;
}
}
.main{
margin: 200px 30px 0;
}
.right{
width: 500px;
div:nth-of-type(1){
text-align: center;
font-size: 20px;
font-weight: 600;
margin-bottom: 10px;
}
}
}
:deep(.el-pagination){
display: flex;
justify-content: center;
}
</style>

View File

@ -73,12 +73,12 @@ export default {
AddOrUpdate
},
methods: {
resetHandle() {
this.dataForm.name = '';
resetHandle () {
this.dataForm.name = ''
this.$nextTick(() => {
this.getDataList()
})
},
}
}
}
</script>

View File

@ -61,8 +61,8 @@ export default {
},
{
title: '单位',
key: 'deptContacts',
dataIndex: 'deptContacts',
key: 'deptName',
dataIndex: 'deptName',
width: 144
},
{

View File

@ -28,10 +28,9 @@
v-if="dataInfo.type === 'todo'"
:content="
(item.userDeptName || '--') +
'提交“' +
(item.applyTitle || '--') +
'”' +
(item.processDefinitionName || '--') +
'提交' +
(item.applyTitle?'“'+item.applyTitle+'”': '') +
(item.processDefinitionName || item.resourceType || '--') +
(item.processDefinitionName !== '能力申请' &&
item.processDefinitionName !== '能力需求申请'
? '申请'
@ -46,14 +45,13 @@
<!-- {{ `${(item.processDefinitionName || '--')}${item.taskName ? ('—' + item.taskName) : ''}` }} -->
{{
(item.userDeptName || '--') +
'提交“' +
(item.applyTitle || '--') +
'”' +
(item.processDefinitionName || '--') +
(item.processDefinitionName !== '能力申请' &&
item.processDefinitionName !== '能力需求申请'
? '申请'
: '')
'提交' +
(item.applyTitle?'“'+item.applyTitle+'”': '') +
(item.processDefinitionName || item.resourceType || '--') +
(item.processDefinitionName !== '能力申请' &&
item.processDefinitionName !== '能力需求申请'
? '申请'
: '')
}}
</div>
</el-tooltip>
@ -64,7 +62,7 @@
:content="
(item.startUserDeptName || '--') +
'提交的' +
(item.processDefinitionName || '--') +
(item.processDefinitionName || item.resourceType || '--') +
(item.processDefinitionName !== '能力申请' &&
item.processDefinitionName !== '能力需求申请'
? '申请'
@ -79,7 +77,7 @@
{{
(item.startUserDeptName || '--') +
'提交的' +
(item.processDefinitionName || '--') +
(item.processDefinitionName || item.resourceType || '--') +
(item.processDefinitionName !== '能力申请' &&
item.processDefinitionName !== '能力需求申请'
? '申请'

View File

@ -90,7 +90,7 @@ export default {
created () {
bus.$off('workInit')
bus.$on('workInit', () => {
console.log("刷新工作台===================")
console.log('刷新工作台===================')
this.getToDo()
this.getHasToDo()
})
@ -140,7 +140,7 @@ export default {
// page: 1
// }
this.loadingHasToDo = true
this.$http.get('/act/his/getMyHandledInstancePage?page=1&limit=5').then(res => {
this.$http.get('/act/his/getMyHandledInstancePage?ended=1?page=1&limit=5').then(res => {
this.loadingHasToDo = false
this.hasToDodoData.list = res.data.data.list || []
this.hasToDodoData.num = res.data.data.total || 0

View File

@ -89,6 +89,12 @@ z-index: 10010!important;
.ant-tooltip{
z-index: 10010!important;
}
.ant-image-preview-wrap {
z-index: 10012!important;
}
.ant-picker-dropdown {
z-index: 10010!important;
}
.model-container .confirmChrome {
width: 140px;

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-05-06 11:12:0011-18 19:07:53
* @LastEditors: Light
* @LastEditTime: 2022-12-08 13:43:12
* @LastEditTime: 2022-12-15 13:48:34
* @Description: 告诉大家这是什么
-->
<template>
@ -173,4 +173,7 @@
body {
font-size: 0.14rem;
}
img {
pointer-events: none;
}
</style>

View File

@ -338,6 +338,23 @@ export function getDeviceDetail(deviceId) {
})
}
//
export function getZwyBusinessList(params) {
return request({
url: '/act/task/getZwyBusinessList',
method: 'get',
params,
})
}
//
export function getZwyBusinessInfoById(params) {
return request({
url: '/act/task/getZwyBusinessInfoById',
method: 'get',
params,
})
}
//
export function treminders(data) {
return request({

View File

@ -264,7 +264,7 @@
:placeholder="'请输入' + placeHolderWords(item.name)+',单位为元'"
@change="changeIiem(item.name, item.note1)"
/>
<span style="color:red"> (仅用于测算为部门节省资金)</span>
<span style="color:red"> (单位为元*仅用于测算为部门节省资金)</span>
</div>
<a-input
:maxLength="1000"

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua
* @Date: 2022-06-09 15:41:19
* @LastEditors: Light
* @LastEditTime: 2022-11-28 17:05:33
* @LastEditTime: 2022-12-13 14:31:13
* @Description: 上传组件
-->
<template>
@ -34,7 +34,7 @@
</a-upload>
</template>
<script setup>
import { ref, defineProps } from 'vue'
import { ref, defineProps, onBeforeUnmount } from 'vue'
// import { baseURL } from '@/config'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
@ -48,6 +48,9 @@
emitFlag: { type: String, default: '' },
busType: { type: Number, default: 0 },
})
message.config({
top: `70px`,
})
console.log('window.SITE_CONFIG.apiURL', window.SITE_CONFIG.apiURL)
const apiURL = window.SITE_CONFIG.apiURL
const fileList = ref([])
@ -89,8 +92,7 @@
console.log(flag)
if (!flag) {
message.error(`${file.name} 不是${props.type}类型`)
}
if (!isLt10M) {
} else if (!isLt10M) {
message.error(`${file.name} 超出100M的大小`)
flag = false
}
@ -154,6 +156,9 @@
// eslint-disable-next-line vue/no-mutating-props
props.data.note1 = ''
}
onBeforeUnmount(() => {
message.destroy()
})
</script>
<style lang="less" scoped>
.upload-list-inline {

View File

@ -238,7 +238,7 @@
</a-list>
</div>
<!-- 关闭需求申请 -->
<div class="closeMain" @click="closeMain">X</div>
<div class="closeMain" @click="closeMain" v-show="!hiddenBackFlag">X</div>
</div>
</div>
</template>
@ -286,6 +286,7 @@
const evaluateData = ref([])
const myComment = ref('')
const hiddenBackFlag = router.currentRoute.value.query.hiddenBackFlag
const evaluateSubmit = () => {
if (myComment.value === '') {
message.error('请填写评价!')
@ -388,6 +389,7 @@
// const formData = computed(() => store.getters['home/demandDetailsData'])
// formName.value = formData.value
const id = router.currentRoute.value.query.id
getDemandForm(id).then((res) => {
console.log(res, 'res')
const { data } = res.data

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:32:22
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-12 11:10:53
* @LastEditors: Light
* @LastEditTime: 2022-12-15 13:48:45
* @Description: 应用详情页
-->
<template>

View File

@ -0,0 +1,133 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:32:22
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-18 18:48:32
* @Description: 模型详情页
-->
<template>
<div class="application-details" :class="{ fixed2: scrollTop >= 600 }">
<!-- 头部基本信息 -->
<layer-service-top-details :dataList="dataList.data"></layer-service-top-details>
<!-- tab导航 -->
<GovernanceModelNavigation :dataList="dataList.data" :class="{ fixed: scrollTop >= 600 }" :selectNow="selectNow">
</GovernanceModelNavigation>
<!-- 输入数据 -->
<GovernanceModelInputData :dataList="dataList.data" id="governance-model-input-data" class="scrollBox" title="输入数据">
</GovernanceModelInputData>
<!-- 输出数据 -->
<GovernanceModelInputData :dataList="dataList.data" id="governance-model-output-data" class="scrollBox"
title="输出数据">
</GovernanceModelInputData>
<!-- 模型规则 -->
<GovernanceModelInputData :dataList="dataList.data" id="governance-model-rule" class="scrollBox" title="模型规则">
</GovernanceModelInputData>
</div>
</template>
<script setup>
import GovernanceModelNavigation from '@/views/detailsAll/components/GovernanceModel/GovernanceModelNavigation.vue' // Tab
import LayerServiceTopDetails from '@/views/detailsAll/components/GovernanceModel/GovernanceModelTopDetails.vue' //
import GovernanceModelInputData from '@/views/detailsAll/components/GovernanceModel/GovernanceModelInputData.vue' //
import { ref, onMounted, onBeforeUnmount, reactive } from 'vue'
import { useRouter } from 'vue-router'
import {
updateVisits,
selectOne,
browsingInsert,
} from '@/api/home';
import mybus from '@/myplugins/mybus';
const router = useRouter()
const scrollTop = ref(0)
const domArr = ref([])
const selectNow = ref('')
const dataList = reactive({ data: {} })
const id = router.currentRoute.value.query.id
const obj = JSON.parse(window.sessionStorage.getItem('preview'))
let loading = ref(true)
document.documentElement.style.transition = 'all 0.3s ease'
document.documentElement.scrollTop = 0
document.body.style.transition = 'all 0.3s ease'
document.body.scrollTop = 0
mybus.on('flyToView', (id) => {
let top = document.querySelector('#' + id).offsetTop - 50
document.documentElement.scrollTop = top
document.body.scrollTop = top
})
onMounted(() => {
window.addEventListener('scroll', () => {
domArr.value = document.querySelectorAll('.scrollBox')
scrollTop.value =
document.documentElement.scrollTop || document.body.scrollTop
for (let i = 0; i < domArr.value.length; i++) {
if (i === 0) {
if (scrollTop.value <= domArr.value[i + 1].offsetTop - 50) {
selectNow.value = domArr.value[i].id
}
} else if (i == domArr.value.length - 1) {
if (scrollTop.value >= domArr.value[i].offsetTop - 50) {
selectNow.value = domArr.value[i].id
}
} else {
if (
scrollTop.value >= domArr.value[i].offsetTop - 50 &&
scrollTop.value <= domArr.value[i + 1].offsetTop - 50
) {
selectNow.value = domArr.value[i].id
}
}
}
})
})
const init = (id) => {
if (id) {
selectOne(id).then((res) => {
dataList.data = res.data.data
console.log('初始化详情页=========================>', dataList.data)
const arrList = ref([])
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
if (arrList.value && arrList.value.indexOf(id) === -1) {
arrList.value.push(id)
updateVisits({
id: res.data.data.id,
visits: res.data.data.visits || '0',
}).then(() => {
window.sessionStorage.setItem(
'visits',
JSON.stringify(arrList.value)
)
})
}
//
browsingInsert({
resourceId: res.data.data.id,
}).then(() => {
console.log('浏览记录+1')
})
})
} else if (obj) {
dataList.data = obj
console.log('预览==============', obj)
}
}
init(id)
onBeforeUnmount(() => {
mybus.off('flyToView')
})
</script>
<style lang="less" scoped>
.fixed {
position: fixed;
z-index: 2000;
top: 0;
left: 50%;
margin-left: -9.56rem;
}
.fixed2>div:nth-of-type(3) {
margin-top: 0.84rem;
}
</style>

View File

@ -0,0 +1,138 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-08 11:32:22
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-18 18:48:32
* @Description: 数据标准详情页
-->
<template>
<div class="application-details" :class="{ fixed2: scrollTop >= 600 }">
<!-- 头部基本信息 -->
<layer-service-top-details
:dataList="dataList.data"
></layer-service-top-details>
<!-- 数据标准信息-->
<layer-service-information
:dataList="dataList.data"
id="service-information"
class="scrollBox"
></layer-service-information>
</div>
</template>
<script setup>
import LayerServiceInformation from '@/views/detailsAll/components/StandardDoc/StandardDocInformation.vue' //
import LayerServiceTopDetails from '@/views/detailsAll/components/StandardDoc/StandardDocTopDetails.vue' //
import { ref, onMounted, onBeforeUnmount, reactive } from 'vue'
import { useRouter } from 'vue-router'
import {
updateVisits,
selectOne,
queryPartAppByKeyId2,
browsingInsert,
} from '@/api/home'
import mybus from '@/myplugins/mybus'
const router = useRouter()
const scrollTop = ref(0)
const domArr = ref([])
const selectNow = ref('')
const dataList = reactive({ data: {} })
const id = router.currentRoute.value.query.id
const obj = JSON.parse(window.sessionStorage.getItem('preview'))
const associatedComponents = ref([{ type: '应用资源', dataList: [] }])
let loading = ref(true)
document.documentElement.style.transition = 'all 0.3s ease'
document.documentElement.scrollTop = 0
document.body.style.transition = 'all 0.3s ease'
document.body.scrollTop = 0
mybus.on('flyToView', (id) => {
let top = document.querySelector('#' + id).offsetTop - 50
// console.log(top, document.querySelector('#' + id).offsetTop)
document.documentElement.scrollTop = top
document.body.scrollTop = top
})
onMounted(() => {
// console.clear()
window.addEventListener('scroll', () => {
domArr.value = document.querySelectorAll('.scrollBox')
scrollTop.value =
document.documentElement.scrollTop || document.body.scrollTop
for (let i = 0; i < domArr.value.length; i++) {
if (i === 0) {
if (scrollTop.value <= domArr.value[i + 1].offsetTop - 50) {
selectNow.value = domArr.value[i].id
}
} else if (i == domArr.value.length - 1) {
if (scrollTop.value >= domArr.value[i].offsetTop - 50) {
selectNow.value = domArr.value[i].id
}
} else {
if (
scrollTop.value >= domArr.value[i].offsetTop - 50 &&
scrollTop.value <= domArr.value[i + 1].offsetTop - 50
) {
selectNow.value = domArr.value[i].id
}
}
}
})
})
const init = (id) => {
if (id) {
selectOne(id).then((res) => {
// console.clear()
dataList.data = res.data.data
console.log('初始化详情页=========================>', dataList.data)
const arrList = ref([])
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
if (arrList.value && arrList.value.indexOf(id) === -1) {
arrList.value.push(id)
updateVisits({
id: res.data.data.id,
visits: res.data.data.visits || '0',
}).then(() => {
window.sessionStorage.setItem(
'visits',
JSON.stringify(arrList.value)
)
})
}
//
browsingInsert({
resourceId: res.data.data.id,
}).then(() => {
console.log('浏览记录+1')
})
})
associatedComponents.value.map((item, index) => {
let queryPartAppByKeyIdParams = {
keyId: id,
}
queryPartAppByKeyId2(queryPartAppByKeyIdParams).then((res) => {
associatedComponents.value[index].dataList = res.data.data
loading.value = false
})
})
} else if (obj) {
dataList.data = obj
console.log('预览==============', obj)
}
}
init(id)
onBeforeUnmount(() => {
mybus.off('flyToView')
})
</script>
<style lang="less" scoped>
.fixed {
position: fixed;
z-index: 2000;
top: 0;
left: 50%;
margin-left: -9.56rem;
}
.fixed2 > div:nth-of-type(3) {
margin-top: 0.84rem;
}
</style>

View File

@ -59,7 +59,12 @@
</template>
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<a-button type="primary" @click="addShoppingCart()" :style="{
cursor:
!props.dataList.isInShoppingCart
? 'pointer'
: 'not-allowed',
}">
<!-- <template #icon>
<shopping-cart-outlined />
</template> -->

View File

@ -62,6 +62,12 @@
<a-button
v-if="!dataList.fuseResourceList"
type="primary"
:style="{
cursor:
!props.dataList.isInShoppingCart
? 'pointer'
: 'not-allowed',
}"
@click="addShoppingCart()"
>
<!-- <template #icon><shopping-cart-outlined /></template> -->

View File

@ -56,7 +56,8 @@
</template>
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<a-button type="primary" @click="addShoppingCart()"
:style="{ cursor: !props.dataList.isInShoppingCart ? 'pointer': 'not-allowed', }">
<!-- <template #icon>
<shopping-cart-outlined />
</template> -->

View File

@ -54,7 +54,8 @@
<template #icon><form-outlined /></template>
申请使用
</a-button>
<a-button type="primary" @click="addShoppingCart()">
<a-button type="primary" @click="addShoppingCart()"
:style="{ cursor: !props.dataList.isInShoppingCart ? 'pointer': 'not-allowed', }">
<!-- <template #icon><shopping-cart-outlined /></template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入购物车
</a-button>

View File

@ -0,0 +1,178 @@
<!--
* @Author: hisense.hucongqian
* @Date: 2022-12-01 08:56:28
* @LastEditors: hisense.hucongqian
* @LastEditTime: 2022-12-01 11:54:40
* @Description: 模型规则
-->
<template>
<!-- 图层信息 -->
<div class="usage-mode" >
<div class="tltle">
<DetalsTitle title="模型规则" type="INFORMATION"></DetalsTitle>
</div>
<div class="content">
<div class="content-left">
<div class="content-left-content">
<ul>
<li v-for="(item, index) in dataFromLeft.content" :key="index">
<img :src="iconImg" />
<span>{{ item.type }}</span>
<a-tooltip>
<template #title>{{ item.values }}</template>
<p>{{ item.values }}</p>
</a-tooltip>
</li>
</ul>
</div>
</div>
</div>
</div>
</template>
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue'
const iconImg = require('@/assets/detailsAll/layer-service/layer-icon.png')
const dataFromLeft = ref({
content: [
{
type: '服务类型',
values: '',
},
{
type: '输入数据',
values: '',
},
{
type: '详细规则',
values: '',
},
],
})
//
const props = defineProps({
dataList: { type: Object, default: null },
})
const flag = ref(true)
if (props.dataList.infoList) {
let obj = props.dataList.infoList.filter(
(item) =>
item.attrType === '服务类型' ||
item.attrType === '输入数据' ||
item.attrType === '详细规则'
)[0]
if (!obj) {
flag.value = false
} else {
console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => {
handleInfoList(item)
})
}
}
const handleInfoList = (item) => {
if (item.attrType === '输入数据') {
dataFromLeft.value.content[0].values = item.attrValue || '123'
} else if (item.attrType === '输出数据') {
dataFromLeft.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '详细规则') {
dataFromLeft.value.content[2].values = item.attrValue || '--'
}
}
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = val.infoList.filter(
(item) =>
item.attrType === '服务类型' ||
item.attrType === '输入数据' ||
item.attrType === '详细规则'
)[0]
if (!obj) {
flag.value = false
} else {
console.log('dataList', val)
val.infoList.map((item) => {
handleInfoList(item)
})
}
}
}
)
</script>
<style lang="less" scoped>
.usage-mode {
display: flex;
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.content {
margin-top: 0.3rem;
display: flex;
.content-left {
height: 2.8rem;
background: url('~@/assets/detailsAll/layer-service/layer-bg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
border-radius: 0.1rem;
box-shadow: 0rem 0.05rem 0.15rem rgba(82, 106, 255, 0.4);
display: flex;
align-items: center;
padding: 0 0.35rem;
.content-left-content {
width: 100%;
font-size: 0.2rem;
color: rgba(33, 41, 86, 0.8);
line-height: 0.2rem;
display: flex;
justify-content: space-between;
align-items: center;
ul {
padding: 0;
margin: 0;
}
ul li {
list-style: none;
display: flex;
align-items: center;
margin-bottom: 0.3rem;
line-height: 0.25rem;
}
img {
margin: 0 0.2rem 0 0;
width: 0.15rem;
height: 0.15rem;
}
span {
font-size: 0.2rem;
color: #666666;
display: block;
margin-right: 0.5rem;
width: 120px;
}
p {
margin-bottom: 0;
font-size: 0.2rem;
color: #333333;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
}
}
}
</style>

View File

@ -0,0 +1,108 @@
<!--
* @Author: hisense.hucongqian
* @Date: 2022-12-01 08:56:28
* @LastEditors: hisense.hucongqian
* @LastEditTime: 2022-12-01 11:54:40
* @Description: 模型详情信息
-->
<template>
<!-- 信息 -->
<div class="usage-mode">
<div class="tltle">
<DetalsTitle :title="title" type="INFORMATION"></DetalsTitle>
</div>
<div class="content">
<div class="content-left">
{{ title }}
</div>
</div>
</div>
</template>
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue'
const iconImg = require('@/assets/detailsAll/layer-service/layer-icon.png')
//
const props = defineProps({
dataList: { type: Object, default: null },
title: { type: String, default: '' },
})
</script>
<style lang="less" scoped>
.usage-mode {
display: flex;
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.content {
margin-top: 0.3rem;
display: flex;
.content-left {
height: 2.8rem;
background: url('~@/assets/detailsAll/layer-service/layer-bg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
border-radius: 0.1rem;
box-shadow: 0rem 0.05rem 0.15rem rgba(82, 106, 255, 0.4);
display: flex;
align-items: center;
padding: 0 0.35rem;
.content-left-content {
width: 100%;
font-size: 0.2rem;
color: rgba(33, 41, 86, 0.8);
line-height: 0.2rem;
display: flex;
justify-content: space-between;
align-items: center;
ul {
padding: 0;
margin: 0;
}
ul li {
list-style: none;
display: flex;
align-items: center;
margin-bottom: 0.3rem;
line-height: 0.25rem;
}
img {
margin: 0 0.2rem 0 0;
width: 0.15rem;
height: 0.15rem;
}
span {
font-size: 0.2rem;
color: #666666;
display: block;
margin-right: 0.5rem;
width: 120px;
}
p {
margin-bottom: 0;
font-size: 0.2rem;
color: #333333;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
}
}
}
</style>

View File

@ -0,0 +1,88 @@
<!--
* @Description: 知识库--模型规则导航
-->
<template>
<div class="governance-navigation" v-if="navList.length > 0">
<template v-for="nav in navList" :key="nav.key">
<div class="nav" :class="{ select: nav.key == select }" @click="selectNav(nav.key)">
{{ nav.name }}
<span class="line"></span>
</div>
</template>
</div>
</template>
<script setup>
import { ref, defineProps, watch, getCurrentInstance } from 'vue'
import mybus from '@/myplugins/mybus'
//
const navList = ref([
{
name: '输入数据',
key: 'governance-model-input-data',
},
{
name: '输出数据',
key: 'governance-model-output-data',
},
{
name: '详细规则',
key: 'governance-model-rule',
},
])
const select = ref('governance-model-input-data')
const props = defineProps({
selectNow: { type: String, default: '' },
dataList: { type: Object, default: null },
})
watch(
() => props.selectNow,
(newValue) => {
select.value = newValue
}
)
console.log('selectNow------------>', props.selectNow);
const selectNav = (key) => {
select.value = key
mybus.emit('flyToView', select.value)
}
</script>
<style lang="less" scoped>
.governance-navigation {
width: 1912px;
height: 84px;
line-height: 80px;
display: flex;
justify-content: space-around;
font-size: 24px;
color: #666;
background: #fff;
padding: 0 300px;
box-shadow: 0px 5px 10px #f2f3fb;
position: relative;
.nav {
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
.line {
width: 40px;
height: 4px;
}
}
.select {
color: #526aff;
.line {
background: #526aff;
}
}
}
</style>

View File

@ -0,0 +1,189 @@
<!--
* @Author: hisense.hucongqian
* @Date: 2022-12-01 08:56:28
* @LastEditors: hisense.hucongqian
* @LastEditTime: 2022-12-01 11:54:40
* @Description: 模型详情页头部
-->
<template>
<div class="algorithm-top-details">
<div class="left">
<div class="top">
<a-tooltip placement="top">
<template #title>{{ props.dataList.name }}</template>
<span class="name">
{{ props.dataList.name }}
</span>
</a-tooltip>
<div class="label-content">
<p class="lable-father">
<span class="label" v-if="props.dataList.type">
{{ props.dataList.type }}
</span>
<span class="label" v-if="componentType">
{{ componentType }}
</span>
<span class="label" v-if="props.dataList.shareType">
{{ props.dataList.shareType }}
</span>
<span class="label" v-if="props.dataList.shareCondition">
{{ props.dataList.shareCondition }}
</span>
</p>
</div>
</div>
<div class="main">
<a-tooltip placement="top">
<template #title>应用领域{{ businessArea }}</template>
<div>应用领域{{ businessArea }}</div>
</a-tooltip>
<a-tooltip placement="top">
<template #title>{{ props.dataList.description }}</template>
<div>
{{ props.dataList.description }}
</div>
</a-tooltip>
</div>
</div>
<div class="right"></div>
</div>
</template>
<script setup>
import { defineProps, ref, watch } from 'vue'
const props = defineProps({
dataList: { type: Object, default: null },
})
const businessArea = ref('')
const componentType = ref('')
if (props.dataList.infoList) {
businessArea.value = props.dataList.infoList.filter(
(val) => val.attrType === '应用场景'
)[0].attrValue
let obj = props.dataList.infoList.filter(
(val) => val.attrType === '知识库类型'
)[0]
if (obj) {
componentType.value = obj.attrValue
}
}
console.log('val==========>', props.dataList.infoList)
watch(
() => props.dataList,
(val) => {
if (val) {
console.log('val==========>', val)
debugger
businessArea.value = props.dataList.infoList.filter(
(item) => item.attrType === '应用场景'
)[0].attrValue
let obj = props.dataList.infoList.filter(
(item) => item.attrType === '知识库类型'
)[0]
if (obj) {
componentType.value = obj.attrValue
}
}
}
)
</script>
<style lang="less" scoped>
.algorithm-top-details {
height: 6rem;
padding: 1.8rem 0 0;
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.left {
max-width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
.top {
display: flex;
align-items: center;
span {
font-size: 0.14rem;
}
.name {
font-size: 0.4rem;
margin-right: 0.2rem;
max-width: 6rem;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.label-content {
position: relative;
}
.lable-father {
position: absolute;
min-width: 5.5rem;
right: -5.5rem;
top: 0;
}
.label {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
background: rgba(255, 255, 255, 0.4);
}
}
.main {
margin-top: 0.4rem;
font-size: 0.18rem;
line-height: 0.34rem;
& > div:nth-of-type(1) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
& > div:nth-of-type(2) {
margin-top: 0.2rem;
max-height: 1rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.bottom {
margin-top: 0.4rem;
display: flex;
.ant-btn {
height: 0.5rem;
margin-right: 0.2rem;
background: #ff8b55;
border-radius: 0.06rem;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
}
.ant-btn:nth-of-type(1) {
width: 1.8rem;
}
.ant-btn:nth-of-type(2) {
width: 2.2rem;
}
.ant-btn:nth-of-type(3) {
width: 1.45rem;
}
}
}
.right {
width: 5.8rem;
height: 4rem;
background: url('~@/assets/detailsAll/layer-service/layer-top-bg.png')
no-repeat;
background-size: 100%;
margin-top: -0.4rem;
}
}
</style>

View File

@ -62,6 +62,8 @@
(val) => val.attrType == '外部服务地址'
).length === 0
"
:style="{ cursor: !props.dataList.isInShoppingCart ? 'pointer': 'not-allowed', }"
>
<!-- <template #icon><shopping-cart-outlined /></template> -->
{{ props.dataList.isInShoppingCart ? '已' : '' }}加入申购车

View File

@ -0,0 +1,203 @@
<!--
* @Author: hisense.hucongqian
* @Date: 2022-12-01 08:56:28
* @LastEditors: hisense.hucongqian
* @LastEditTime: 2022-12-01 11:54:40
* @Description:数据标准规则
-->
<template>
<!-- 图层信息 -->
<div class="usage-mode" >
<div class="tltle">
<DetalsTitle title="标准详情" type="INFORMATION"></DetalsTitle>
</div>
<div class="content">
<div class="content-left">
<div class="content-left-content">
<ul>
<li v-for="(item, index) in dataFromLeft.content" :key="index">
<img :src="iconImg" />
<span>{{ item.type }}</span>
<a-tooltip>
<template #title>{{ item.values }}</template>
<p>{{ item.values }}</p>
</a-tooltip>
</li>
</ul>
</div>
</div>
</div>
</div>
</template>
<script setup>
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue'
const iconImg = require('@/assets/detailsAll/layer-service/layer-icon.png')
const dataFromLeft = ref({
content: [
{
type: '标准简介',
values: '',
},
{
type: '发布日期',
values: '',
},
{
type: '归属单位',
values: '',
},
{
type: '实际应用系统',
values: '',
},
{
type: '责任人',
values: '',
},
{
type: '联系方式',
values: '',
},
],
})
//
const props = defineProps({
dataList: { type: Object, default: null },
})
const flag = ref(true)
if (props.dataList.infoList) {
debugger
let obj = props.dataList.infoList.filter(
(item) =>
item.attrType === '标准简介' ||
item.attrType === '发布日期' ||
item.attrType === '归属单位' ||
item.attrType === '实际应用系统'||
item.attrType === '责任人'||
item.attrType === '联系方式'
)[0]
if (!obj) {
flag.value = false
} else {
console.log('dataList', props.dataList)
props.dataList.infoList.map((item) => {
handleInfoList(item)
})
}
}
const handleInfoList = (item) => {
if (item.attrType === '标准简介') {
dataFromLeft.value.content[0].values = item.attrValue || '--'
} else if (item.attrType === '发布日期') {
dataFromLeft.value.content[1].values = item.attrValue || '--'
} else if (item.attrType === '归属单位') {
dataFromLeft.value.content[2].values = item.attrValue || '--'
} else if (item.attrType === '实际应用系统') {
dataFromLeft.value.content[3].values = item.attrValue || '--'
} else if (item.attrType === '责任人') {
dataFromLeft.value.content[4].values = item.attrValue || '--'
} else if (item.attrType === '联系方式') {
dataFromLeft.value.content[5].values = item.attrValue || '--'
}
}
watch(
() => props.dataList,
(val) => {
if (val) {
let obj = val.infoList.filter(
(item) =>
item.attrType === '标准简介' ||
item.attrType === '发布日期' ||
item.attrType === '归属单位' ||
item.attrType === '实际应用系统'||
item.attrType === '责任人'||
item.attrType === '联系方式'
)[0]
if (!obj) {
flag.value = false
} else {
console.log('dataList', val)
val.infoList.map((item) => {
handleInfoList(item)
})
}
}
}
)
</script>
<style lang="less" scoped>
.usage-mode {
display: flex;
flex-direction: column;
align-items: center;
padding: 0.8rem 0;
.content {
margin-top: 0.3rem;
display: flex;
.content-left {
height: 3.5rem;
background: url('~@/assets/detailsAll/layer-service/layer-bg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
border-radius: 0.1rem;
box-shadow: 0rem 0.05rem 0.15rem rgba(82, 106, 255, 0.4);
display: flex;
align-items: center;
padding: 0 0.35rem;
.content-left-content {
width: 100%;
font-size: 0.2rem;
color: rgba(33, 41, 86, 0.8);
line-height: 0.2rem;
display: flex;
justify-content: space-between;
align-items: center;
ul {
padding: 0;
margin: 0;
}
ul li {
list-style: none;
display: flex;
align-items: center;
margin-bottom: 0.3rem;
line-height: 0.25rem;
}
img {
margin: 0 0.2rem 0 0;
width: 0.15rem;
height: 0.15rem;
}
span {
font-size: 0.2rem;
color: #666666;
display: block;
margin-right: 0.5rem;
width: 120px;
}
p {
margin-bottom: 0;
font-size: 0.2rem;
color: #333333;
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
}
}
}
</style>

View File

@ -0,0 +1,169 @@
<!--
* @Author: hisense.hucongqian
* @Date: 2022-12-01 11:56:28
* @LastEditors: hisense.hucongqian
* @LastEditTime: 2022-12-01 11:54:40
* @Description:数据标准详情页头部
-->
<template>
<div class="algorithm-top-details">
<div class="left">
<div class="top">
<a-tooltip placement="top">
<template #title>{{ props.dataList.name }}</template>
<span class="name">
{{ props.dataList.name }}
</span>
</a-tooltip>
<div class="label-content">
<p class="lable-father">
<span class="label" v-if="props.dataList.type">
{{ props.dataList.type }}
</span>
<span class="label" v-if="componentType">
{{ componentType }}
</span>
<span class="label" v-if="props.dataList.shareType">
{{ props.dataList.shareType }}
</span>
<span class="label" v-if="props.dataList.shareCondition">
{{ props.dataList.shareCondition }}
</span>
</p>
</div>
</div>
<div class="main">
<a-tooltip placement="top">
<template #title>应用领域{{ businessArea }}</template>
<div>应用领域{{ businessArea }}</div>
</a-tooltip>
<a-tooltip placement="top">
<template #title>{{ props.dataList.description }}</template>
<div>
{{ props.dataList.description }}
</div>
</a-tooltip>
</div>
</div>
<div class="right"></div>
</div>
</template>
<script setup>
import { defineProps, ref, watch } from 'vue'
const props = defineProps({
dataList: { type: Object, default: null },
})
const businessArea = ref('')
const componentType = ref('')
if (props.dataList.infoList) {
}
console.log('val==========>', props.dataList.infoList)
watch(
() => props.dataList,
(val) => {
if (val) {
}
}
)
</script>
<style lang="less" scoped>
.algorithm-top-details {
height: 6rem;
padding: 1.8rem 0 0;
background: url('~@/assets/detailsAll/sf_top_bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.left {
max-width: 7.2rem;
color: #fff;
margin-right: 0.8rem;
.top {
display: flex;
align-items: center;
span {
font-size: 0.14rem;
}
.name {
font-size: 0.4rem;
margin-right: 0.2rem;
max-width: 6rem;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.label-content {
position: relative;
}
.lable-father {
position: absolute;
min-width: 5.5rem;
right: -5.5rem;
top: 0;
}
.label {
padding: 0.01rem 0.1rem;
margin-right: 0.1rem;
border-radius: 0.13rem;
background: rgba(255, 255, 255, 0.4);
}
}
.main {
margin-top: 0.4rem;
font-size: 0.18rem;
line-height: 0.34rem;
& > div:nth-of-type(1) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
& > div:nth-of-type(2) {
margin-top: 0.2rem;
max-height: 1rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
word-break: break-all;
}
}
.bottom {
margin-top: 0.4rem;
display: flex;
.ant-btn {
height: 0.5rem;
margin-right: 0.2rem;
background: #ff8b55;
border-radius: 0.06rem;
font-size: 0.2rem;
display: flex;
justify-content: center;
align-items: center;
}
.ant-btn:nth-of-type(1) {
width: 1.8rem;
}
.ant-btn:nth-of-type(2) {
width: 2.2rem;
}
.ant-btn:nth-of-type(3) {
width: 1.45rem;
}
}
}
.right {
width: 5.8rem;
height: 4rem;
background: url('~@/assets/detailsAll/layer-service/layer-top-bg.png')
no-repeat;
background-size: 100%;
margin-top: -0.4rem;
}
}
</style>

View File

@ -1006,7 +1006,6 @@
paramsGetResources,
flag
)
getAppResources()
}
//
@ -1167,10 +1166,8 @@
}
console.log('selectSubType------------>', selectSubType)
console.log('ListContent.records------------>', ListContent.records)
ListContent.records.forEach((val) => {
console.log('val-----ddd------->', val)
if (!val) {
return
}
@ -1202,7 +1199,6 @@
}
}
})
// -
if (whoShow1.value.itShowXiHaiAn) {
if (!storageSearchInfo) {
@ -1341,7 +1337,6 @@
globalData.data = []
}
select = router.currentRoute.value.query.select
if (
(select == '应用资源' &&
(paramsGetResources.orderField == '' ||
@ -1649,7 +1644,6 @@
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
console.log('接口数据', data)
resourceList.data = data || []
console.log('接口数据2', resourceList.data)
@ -1820,7 +1814,6 @@
listKey.value++
}
}
//
if (str && !router.currentRoute.value.query.select) {
globalSearch()
@ -2029,11 +2022,9 @@
font-family: 'webfont';
src: url('~@/assets/capacitySquare/webfont.ttf');
}
.resultListSearchInput-father {
background: #f3f5f9;
padding: 0.2rem;
.resultListSearchInput-son {
background: #fff;
padding: 0.2rem 0.2rem 0rem 0.3rem;
@ -2054,17 +2045,14 @@
}
}
}
.resultListSearchInput {
margin-left: 0.1rem;
:deep(.ant-input) {
width: 4rem;
height: 0.32rem;
background: #fff;
border-radius: 0.02rem;
}
:deep(.ant-input-search-button) {
width: 0.8rem;
height: 0.32rem;
@ -2076,12 +2064,10 @@
line-height: 0.32rem;
margin-left: 0.1rem;
}
:deep(.ant-input-group-addon) {
left: 0 !important;
}
}
.button-reset {
border: 0;
outline: none;
@ -2098,7 +2084,6 @@
margin-left: 2.5rem;
cursor: pointer;
}
.details-pageconetent {
height: 100%;
width: 100%;
@ -2108,7 +2093,6 @@
margin-top: 0.67rem;
position: relative;
background: rgba(245, 243, 243, 0.3);
.details-pageconetent-left {
// max-height: 8.5rem;
height: 100%;
@ -2122,7 +2106,6 @@
margin-right: 0.17rem;
overflow: auto;
}
.top {
min-height: 7.2rem;
position: relative;
@ -2134,33 +2117,26 @@
justify-content: left;
margin-left: 2.5rem;
background: #f3f5f9;
.pagination {
background: #f3f5f9;
padding-bottom: 0.6rem;
}
.jichusheshi {
height: 4.45rem;
.yunziyuan {
width: 100%;
position: relative;
.shuoming {
position: absolute;
right: 0.2rem;
top: 0.15rem;
font-size: 0.12rem;
}
.yunziyuan-title {
display: flex;
align-items: center;
.tupian {
}
.title {
margin-left: 0.1rem;
font-weight: 600;
@ -2168,44 +2144,35 @@
cursor: pointer;
}
}
.fenlei {
display: flex;
margin-left: 0.2rem;
margin-right: 0.3rem;
justify-content: space-between;
}
.keyongziyuan {
display: flex;
justify-content: space-between;
margin-left: 0.3rem;
margin-right: 0.3rem;
div {
display: flex;
div:last-child {
font-weight: 600;
}
}
}
}
.yunziyuan > div {
margin-bottom: 0.1rem;
}
.shipin {
width: 100%;
.shipin-title {
display: flex;
align-items: center;
.tupian {
}
.title {
margin-left: 0.1rem;
font-weight: 600;
@ -2213,58 +2180,47 @@
cursor: pointer;
}
}
.fenlei {
display: flex;
margin-left: 0.2rem;
div {
margin-right: 0.6rem;
}
.shuzi {
font-weight: 600;
}
}
}
.shipin > div {
margin-bottom: 0.1rem;
}
}
.jichusheshi > div {
padding-top: 0.1rem;
border-radius: 0.04rem;
margin-bottom: 0.2rem;
padding-bottom: 0.4rem;
}
.shujuziyuan {
display: flex;
flex-direction: column;
justify-content: center;
padding-top: 0.4rem;
.yunziyuan {
width: 100%;
position: relative;
.shuoming {
position: absolute;
right: 0.2rem;
top: 0.15rem;
font-size: 0.12rem;
}
.yunziyuan-title {
display: flex;
align-items: center;
margin-left: 0.2rem;
.tupian {
}
.title {
margin-left: 0.1rem;
font-weight: 600;
@ -2272,35 +2228,29 @@
cursor: pointer;
}
}
.fenlei {
display: flex;
margin-left: 0.2rem;
margin-right: 0.3rem;
justify-content: space-between;
}
.keyongziyuan {
display: flex;
justify-content: space-between;
margin-left: 0.3rem;
margin-right: 0.3rem;
div {
display: flex;
div:last-child {
font-weight: 600;
}
}
}
}
.yunziyuan > div {
margin-bottom: 0.1rem;
}
}
.shujuziyuan > div {
background: #eaf4ff;
padding-top: 0.1rem;
@ -2308,7 +2258,6 @@
margin-bottom: 0.2rem;
padding-bottom: 0.4rem;
}
.top-title {
display: flex;
justify-content: space-around;
@ -2318,47 +2267,39 @@
color: #000000;
line-height: 0.34rem;
margin-bottom: 0.2rem;
.photo {
display: inline-block;
height: 0.44rem;
width: 0.44rem;
margin-right: 0.1rem;
}
div {
padding: 0 0.1rem;
cursor: pointer;
display: flex;
align-items: center;
}
div:hover {
color: #0087ff;
}
.sel {
font-weight: 600;
color: #0087ff;
border-bottom: 0.02rem solid #0087ff;
}
}
.top-content-father {
width: 100%;
padding: 0 0.2rem 0.2rem 0.2rem;
background: #f3f5f9;
margin-bottom: 0.2rem;
.top-content-son {
background: #fff;
padding: 0.2rem 0;
}
.top-content {
display: flex;
margin-top: 0rem;
span:nth-child(1) {
display: inline-block;
position: relative;
@ -2367,7 +2308,6 @@
text-align: center;
vertical-align: middle;
}
.leixingsumfather {
margin-left: -13px;
width: 9.4rem;
@ -2375,17 +2315,14 @@
height: 0.3014rem;
overflow: hidden;
}
.leixingsumfather2 {
width: 9.2rem;
}
.leixingsum {
display: inline-block;
cursor: pointer;
text-align: center;
margin-top: 0.05rem;
.ant-tag-checkable {
width: 1rem;
height: 0.25rem;
@ -2403,13 +2340,11 @@
text-align: center;
line-height: 0.14rem;
}
:deep(.ant-tag-checkable-checked) {
margin-left: 0.15rem;
margin-right: 0.15rem;
text-align: center;
}
.ant-tag-checkable:active,
.ant-tag-checkable-checked {
// width: 0.85rem;
@ -2421,7 +2356,6 @@
border-radius: 0.16rem;
}
}
.active {
font-family: Alibaba PuHuiTi;
font-weight: 500;
@ -2429,38 +2363,32 @@
color: #ffffff;
}
}
.top-content:nth-child(1) {
margin-top: 0rem !important;
}
}
}
}
.shrinkTag {
width: 0.5rem;
display: flex;
justify-content: center;
align-items: flex-end;
margin-bottom: 0.05rem;
span {
cursor: pointer;
}
}
.shrink {
height: unset !important;
overflow: unset !important;
}
.talk-monitor {
position: fixed;
bottom: 0.5rem;
right: 0.1rem;
z-index: 9999;
cursor: pointer;
i {
width: 0.64rem;
height: 0.64rem;
@ -2469,7 +2397,6 @@
background-size: cover;
}
}
.abilitySquare {
width: 0.7rem;
height: 0.7rem;
@ -2485,11 +2412,9 @@
right: 0.1rem;
cursor: pointer;
background: #e3edfc;
p {
margin: 0;
}
p:nth-child(1) {
height: 0.35rem;
width: 0.36rem;
@ -2497,7 +2422,6 @@
background-size: 100% 100%;
background-position: center;
}
ul {
background: #ffffff;
font-family: webfont;
@ -2510,7 +2434,6 @@
left: -0.62rem;
padding: 0;
margin: 0;
li {
list-style: none;
color: #0061ec;
@ -2519,24 +2442,20 @@
padding-left: 0.4rem;
border-bottom: 0.01rem solid #dfd9d9;
}
li:nth-of-type(1) {
background: url('~@/assets/home/appIcon.png') no-repeat;
background-position: 0.18rem center;
}
li:nth-of-type(2) {
background: url('~@/assets/home/AiIcon.png') no-repeat;
background-position: 0.18rem center;
}
li:nth-of-type(3) {
border-bottom: none;
background: url('~@/assets/home/GisIcon.png') no-repeat;
background-position: 0.18rem center;
}
}
ul::after {
content: '';
position: absolute;
@ -2547,7 +2466,6 @@
border: 0.13rem solid;
border-color: #fff transparent transparent transparent;
}
ul::before {
content: '';
position: absolute;
@ -2558,26 +2476,21 @@
border: 0.13rem solid;
border-color: #dfd9d9 transparent transparent transparent;
}
@keyframes ulShowTime {
0% {
transform: scale(0);
}
100% {
transform: scale(0);
}
}
}
.top-content-father {
width: 10.87rem;
padding-left: 0.2rem;
.top-content {
display: flex;
margin-top: 0.23rem;
span:nth-child(1) {
display: inline-block;
position: relative;
@ -2589,21 +2502,18 @@
font-size: 0.16rem;
margin-left: 0.3rem;
}
.leixingsumfather {
width: 7.7rem;
display: inline-block;
height: 0.3014rem;
overflow: hidden;
}
.leixingsum {
// width: 1rem;
display: inline-block;
cursor: pointer;
text-align: center;
margin-top: 0.05rem;
.ant-tag-checkable {
width: 1rem;
height: 0.25rem;
@ -2621,13 +2531,11 @@
text-align: center;
line-height: 0.14rem;
}
:deep(.ant-tag-checkable-checked) {
margin-left: 0.15rem;
margin-right: 0.15rem;
text-align: center;
}
.ant-tag-checkable:active,
.ant-tag-checkable-checked {
width: 0.85rem;
@ -2638,7 +2546,6 @@
border-radius: 0.16rem;
}
}
.active {
font-family: Alibaba PuHuiTi;
font-weight: 500;
@ -2646,12 +2553,10 @@
color: #ffffff;
}
}
.top-content:nth-child(1) {
margin-top: 0.41rem !important;
}
}
:deep(.ant-card-grid) {
overflow: hidden;
white-space: nowrap;

View File

@ -62,7 +62,7 @@
// }
.pageResource {
position: absolute;
top: 0.68rem;
top: 1.2rem;
left: -5.37rem;
width: 176%;
height: 90.5%;

View File

@ -92,7 +92,9 @@
<div class="bottom" @click="goToView()">查看更多</div>
</div>
<div class="info">
<i class="img"></i>
<i class="img" @click="
jumpPage({ name: '个人中心', key: 'personalCenter' }, 'headerClick')
"></i>
<a-tooltip placement="bottom">
<template #title>
<span>{{ user.realName }}</span>

View File

@ -13,7 +13,8 @@
<IntegrationServiceOrder
ref="integrationServiceOrderDom"
v-if="
selectCardsname === '融合服务' || selectCardsname === '赋能场景'
selectCardsname === '融合服务' ||
(selectCardsname === '赋能场景' && selectCardsname !== '知识库')
"
></IntegrationServiceOrder>
<ul v-else>
@ -56,6 +57,7 @@
"
>
<a-image
style="max-height: 1.25rem"
:width="106"
:preview="false"
:src="
@ -310,8 +312,10 @@
>
<span>
{{
item.infoList.filter((val) => val.attrType == '组件类型')[0]
.attrValue
item.infoList.filter(
(val) =>
val.attrType == '组件类型' || val.attrType == '知识库类型'
)[0].attrValue
}}
</span>
</div>
@ -337,7 +341,7 @@
</div>
<div class="btn">
<div class="bottom" v-if="selectCardsname !== '基础设施'">
<div>
<div v-if="selectCardsname !== '知识库'">
<!-- <div
v-if="
selectCardsname !== '数据资源' &&
@ -395,7 +399,7 @@
></span>
</template>
</div>
<div class="sc">
<div class="sc" v-if="selectCardsname !== '知识库'">
<span
class="sc-down"
v-if="item.isCollect == 'false'"
@ -426,6 +430,13 @@
>
查看详情
</a-button>
<a-button
type="primary"
@click.stop="downLoad(item)"
v-if="whoShow1.itShowQingDao && selectCardsname == '知识库'"
>
下载
</a-button>
<a-button
style="margin-left: 10px"
v-show="
@ -738,13 +749,21 @@
}
}
}
//
const downLoad = (item) => {
const a = document.createElement('a')
a.href = item.infoList.filter(
(val) => val.attrType === '标准文件'
)[0].attrValue
// a.download = item.infoList.filter(val =>val.attrType === '')[0].attrValue
a.click()
}
/**
* val: 排序字段值
* isFromFather: 是否来自父组件传值
*/
const changeCondition = (item, isFromFather = false) => {
console.log('item, isFromFather------------>', item, isFromFather)
let newType = item.orderType == 'DESC' ? 'ASC' : 'DESC'
if (isFromFather) {
@ -919,6 +938,7 @@
imgSrcZnsf,
imgSrcKfzj,
imgSrcYwzj,
downLoad,
}
},
beforeUnmount() {

View File

@ -1,36 +1,35 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-14 09:43:49
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-06-20 18:44:52
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-12 15:36:59
* @Description: 告诉大家这是什么
-->
<template>
<div>
<div id="apply-container">
<home-header :showView="showView" :target-flag = "targetFlag"></home-header>
<detail-back></detail-back>
<home-header :showView="showView" :target-flag="targetFlag"></home-header>
<detail-back v-show="!hiddenBackFlag"></detail-back>
<div class="detail-content">
<details-view v-if="showView === 'details-view'"></details-view>
<algorithm-details
v-if="showView === 'algorithm-details'"
></algorithm-details>
<application-details
v-else-if="showView === 'application-details'"
></application-details>
<developer-components
v-else-if="showView === 'development-of-component'"
></developer-components>
<business-details
v-else-if="showView === 'business-details'"
></business-details>
<layer-service v-else-if="showView === 'layer-service'"></layer-service>
<details-view v-if="showView === 'details-view'"></details-view>
<algorithm-details
v-if="showView === 'algorithm-details'"
></algorithm-details>
<application-details
v-else-if="showView === 'application-details'"
></application-details>
<developer-components
v-else-if="showView === 'development-of-component'"
></developer-components>
<business-details
v-else-if="showView === 'business-details'"
></business-details>
<layer-service v-else-if="showView === 'layer-service'"></layer-service>
</div>
<home-footer></home-footer>
</div>
</div>
</template>
<script>
import HomeHeader from '@/views/home/components/header'
import { defineComponent, reactive, ref } from 'vue'
@ -56,7 +55,7 @@
DeveloperComponents,
BusinessDetails,
LayerService,
detailBack
detailBack,
},
setup() {
const formState = reactive({
@ -66,7 +65,6 @@
applyPurpose: '',
applySystem: '',
})
const options = ref([
{
value: '政法委',
@ -95,9 +93,11 @@
])
const router = useRouter()
const id = router.currentRoute.value.query.id
// 退
const hiddenBackFlag = router.currentRoute.value.query.hiddenBackFlag
const obj = JSON.parse(window.sessionStorage.getItem('preview'))
let showView = ref('')
const targetFlag= ref(true)
const targetFlag = ref(true)
const init = () => {
if (id) {
selectOne(id).then((res) => {
@ -178,11 +178,11 @@
init,
router,
id,
hiddenBackFlag,
}
},
})
</script>
<style scoped lang="less"></style>
<style>
html,
@ -195,7 +195,7 @@
flex-direction: column;
justify-content: space-between;
}
.detail-content{
margin-top:90px;
}
.detail-content {
margin-top: 90px;
}
</style>

View File

@ -142,7 +142,7 @@
let obj = {
title: val.type,
total: val.total,
show: val.type === '市级' ? true : false,
show: val.type === '市级' || val.type === '区级' ? true : false,
select: false,
key: val.type,
children: [],
@ -252,8 +252,6 @@
}
}
const showToolTip = (e) => {
console.log('鼠标移入', e, e.target.clientWidth, e.target.scrollWidth)
debugger
if (e.target.clientWidth < 200) {
e.target.style.pointerEvents = 'none' //
}

View File

@ -2,7 +2,7 @@
<template>
<div class="IntegrationServicesDetails" :class="{ fixed2: scrollTop >= 600 }">
<home-header></home-header>
<detail-back></detail-back>
<detail-back v-show="!hiddenBackFlag"></detail-back>
<!-- 头部基本信息 -->
<application-top-details
:dataList="detailInfoObj"
@ -190,6 +190,7 @@
const infrastructureCount = ref(0)
const componentCount = ref(0)
const id = router.currentRoute.value.query.id
const hiddenBackFlag = router.currentRoute.value.query.hiddenBackFlag
document.documentElement.style.transition = 'all 0.3s ease'
document.documentElement.scrollTop = 0
document.body.style.transition = 'all 0.3s ease'
@ -562,9 +563,9 @@
background: url('~@/assets/home/fn/cjtd.png') no-repeat;
background-size: 100%;
}
.cjtd img{
width:100%;
height:100%
.cjtd img {
width: 100%;
height: 100%;
}
.content {

View File

@ -1,8 +1,8 @@
<!--
* @Author: Light
* @Date: 2022-11-30 17:43:43
* @LastEditors: Light
* @LastEditTime: 2022-12-08 15:20:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-12-12 21:27:02
* @Description: 告诉大家这是什么
-->
<template>

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-11-26 14:47:12
* @LastEditTime: 2022-12-12 15:37:17
* @Description:我的申请 能力申请 查看详情
-->
<template>
@ -503,6 +503,7 @@
path: '/details', //
query: {
id: id,
hiddenBackFlag: true,
},
})
window.open(applypage.href, '_blank')

View File

@ -0,0 +1,102 @@
<template>
<div class="top">
<div class="title">基本信息</div>
<div class="main">
<div>
<p class="item">
<span>业务名称{{baseInfo.BUSINESS_NAME}}</span>
</p>
<p class="item">
<span>业务id :{{baseInfo.BSNUM}}</span>
</p>
<p class="item">
<span>状态{{baseInfo.STATUS}}</span>
</p>
<p class="item">
<span>申请时间: {{baseInfo.CREATE_TIME}}</span>
</p>
</div>
</div>
</div>
<div class="top">
<div class="title">申请资源</div>
<a-table :columns="columns" :data-source="xVideoList" bordered :pagination="{ defaultPageSize: 6 }">
<template #bodyCell="{ column, text }">
</template>
</a-table>
</div>
</template>
<script setup>
import { onMounted, defineProps, ref } from 'vue'
import {
getZwyBusinessInfoById
} from '@/api/personalCenter'
const props = defineProps({
BSNUM: { type: String, default: '' },
baseInfo: { type: Object, default: null },
})
const BSNUM = ref('')
const baseInfo = ref({})
BSNUM.value = props.BSNUM
baseInfo.value = props.baseInfo
const columns = ref([
{
title: '资源类型',
dataIndex: 'SOURCE_TYPE',
}, {
title: '资源名称',
dataIndex: 'NAME',
}, {
title: '备注',
dataIndex: 'INFO',
},
])
const xVideoList = ref([
])
onMounted(() => {
const params={
"id":BSNUM.value
}
getZwyBusinessInfoById(params).then(
(res) => {
xVideoList.value = res.data.data
num.value = []
total.value = res.data.data.total
}
)
})
</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;
margin-left: 12px;
}
// .resource{
// margin: 0.1rem 0.2rem;
// }
.top {
margin: 0.1rem 0.2rem;
.main {
background: #eee;
padding: 0.2rem 0.2rem 0.1rem;
height: 100px;
.item {
width: 450px;
float: left;
}
}
}
</style>

View File

@ -171,7 +171,11 @@
console.log('编目一级=============>', res.data)
res.data.data.forEach((val) => {
// tabList.value.push(val.name)
if (val.name == '应用资源' || val.name == '组件服务' || val.name == '融合服务') {
if (
val.name == '应用资源' ||
val.name == '组件服务' ||
val.name == '融合服务'
) {
tabList.value.push(val.name)
}
})
@ -349,22 +353,39 @@
if (delFlag == 0) {
console.log('进入详情')
mybus.emit('tabsChange', { flag: id })
router.push({
path: '/details',
// router.push({
// path: '/details',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/details', //
query: {
id: id,
hiddenBackFlag: true,
},
})
window.open(detailPage.href, '_blank')
} else if (delFlag === undefined) {
//
// mybus.emit('tabsChange', { flag: item.resourceId })
// mybus.emit('tabsChange', { flag: item.resourceId })
mybus.emit('tabsChange', { flag: id })
router.push({
path: `/integrationServicesDetails`,
// router.push({
// path: `/integrationServicesDetails`,
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/integrationServicesDetails', //
query: {
id: id,
hiddenBackFlag: true,
},
})
window.open(detailPage.href, '_blank')
}
}
</script>

View File

@ -90,12 +90,20 @@
const showDetail = (item) => {
// console.log('demandDetails', item)
// store.commit('home/demandDetailsData', item)
router.push({
path: '/demandDetails',
// router.push({
// path: '/demandDetails',
// query: {
// id: item.id,
// },
// })
const detailPage = router.resolve({
path: '/demandDetails', //
query: {
id: item.id,
hiddenBackFlag: true,
},
})
window.open(detailPage.href, '_blank')
}
const creator = ref('')

View File

@ -1,7 +1,18 @@
<template>
<div class="on-the-right-side-of-the-list">
<div class="title" style="margin-bottom: 0.2rem">我的申请</div>
<div class="tab" style="margin-bottom: 0.1rem">
<div class="second-title">
<div
style="margin-right: 30px"
v-for="(item, index) in chooseList"
:class="chooseTab == index ? 'chooseStyle' : 'noChooseStyle'"
:key="index"
@click="handleTab(index)"
>
{{ item }}
</div>
</div>
<div class="tab" style="margin-bottom: 0.1rem" v-show="chooseTab == 0">
<span>类型</span>
<div
:class="typeIndex == index ? 'tabclass' : ' '"
@ -12,10 +23,7 @@
{{ item }}
</div>
</div>
<div
class="tab"
v-show="typeIndex != 5 && typeIndex != 6 && typeIndex != 7"
>
<div class="tab" v-if="chooseTab != 1 && chooseTab != 2 && chooseTab != 3">
<span>申请状态</span>
<div
:class="tabIndex == index ? 'tabclass' : ' '"
@ -34,51 +42,108 @@
</template>
</div>
</div>
<a-form
:model="formState"
name="basic"
:label-col="{ span: 8 }"
:wrapper-col="{ span: 16 }"
autocomplete="off"
@submit="onSubmit"
v-if="typeIndex == 6 || typeIndex == 7"
style="display: flex; margin-top: 10px; margin-left: -35px"
>
<a-form-item label="名称" name="name">
<a-input v-model:value="formState.name" />
</a-form-item>
<!--政务云资源-->
<template v-if="chooseTab == 2">
<a-form
:label-col="{ style: { width: '80px' } }"
:wrapper-col="{ style: { width: '200px' } }"
labelAlign="center"
>
<a-row>
<a-form-item label="业务名称">
<a-input
placeholder="请输入业务名称"
v-model:value="yunForm.busineesName"
style="width: 200px"
/>
</a-form-item>
<a-form-item label="状态">
<a-select
ref="select"
v-model:value="yunForm.status"
placeholder="请选择状态"
style="width: 200px"
>
<a-select-option
v-for="(item, index) in cloudResourceStatusList"
:key="index"
:value="item.dictValue"
clearable
>
{{ item.dictLabel }}
</a-select-option>
</a-select>
</a-form-item>
<button class="queryButton" @click="getCloudList()">查询</button>
<button class="queryButton" @click="cloudSearchReserve()">
重置
</button>
</a-row>
</a-form>
<a-form-item :wrapper-col="{ offset: 8, span: 16 }">
<a-button type="primary" html-type="submit">搜索</a-button>
</a-form-item>
</a-form>
<div v-if="contentList.data.length > 0">
<div class="content">
<div
class="content-body"
v-for="item in contentList.data"
:key="item.index"
>
<div class="withdraw" v-if="item.approveStatus === '不通过'"></div>
<div class="content-body-title">
<span>
申请单号{{
item.applyNumber || item.GUID || item.BSNUM || '--'
}}
</span>
<div></div>
<div v-if="cloudList.data.length > 0">
<div class="content-cloud">
<div
class="content-cloud-body"
v-for="item in cloudList.data"
:key="item.index"
>
<div class="content-body-left">
<div class="content-body-left-one">
<div style="font-size: 16px">{{ item.BUSINESS_NAME }}</div>
<div>单号: {{ item.BSNUM }}</div>
</div>
<div class="content-body-left-two">
<!-- <div>申请类型: {{item.type}}</div> -->
<div>状态: {{ item.STATUS }}</div>
<div>申请时间: {{ item.CREATE_TIME }}</div>
</div>
</div>
<div class="content-body-right">
<div class="button" @click="showCloudDetail(item)">查看详情</div>
</div>
</div>
<a-tooltip>
<template #title>
{{
item.cameraList
? item.system
: item.title || item.name || item.title || item.BUSINESS_NAME
}}
</template>
</div>
<div class="bottom">
<a-pagination
size="small"
pageSize="4"
:total="total"
:showTotal="(total) => `共 ${total} 项`"
:current="page"
@change="handleCurrentChange"
@showSizeChange="handlePageSizeChange"
:showSizeChanger="false"
/>
</div>
</div>
<a-empty v-else />
</template>
<!--数据资源和视频资源-->
<template v-else-if="chooseTab == 1 || chooseTab == 3">
<a-empty></a-empty>
</template>
<!--UCS内部资源-->
<template v-else>
<div v-if="contentList.data.length > 0">
<div class="content">
<div
class="content-body"
v-for="item in contentList.data"
:key="item.index"
>
<div class="withdraw" v-if="item.approveStatus === '不通过'"></div>
<div class="content-body-title">
<span>
名称{{
申请单号{{
item.applyNumber || item.GUID || item.BSNUM || '--'
}}
</span>
<div></div>
</div>
<a-tooltip>
<template #title>
{{
item.cameraList
? item.system
: item.title ||
@ -86,177 +151,205 @@
item.title ||
item.BUSINESS_NAME
}}
</span>
<div></div>
</template>
<div class="content-body-title">
<span>
名称{{
item.cameraList
? item.system
: item.title ||
item.name ||
item.title ||
item.BUSINESS_NAME
}}
</span>
<div></div>
</div>
</a-tooltip>
<div class="content-body-content">
<p class="content-body-content-son" v-if="typeName == '设备申请'">
审核结果{{ item.state === 0 ? '审核中' : '审核完成' }}
</p>
<p
class="content-body-content-son"
v-else-if="typeName == '数据资源申请'"
>
审核结果{{ item.bmyijian === 0 ? '审核中' : '审核完成' }}
</p>
<p
class="content-body-content-son"
v-else-if="typeName == '云资源申请'"
>
审核结果{{ status[item.STATUS] }}
</p>
<p
class="content-body-content-son"
v-else-if="typeName == '云视频申请'"
>
审核结果{{ status2[item.STATUS] }}
</p>
<p class="content-body-content-son" v-else>
审核结果{{
item.ended
? '审核完成'
: item.backToFirst
? '审核中(请修改被驳回内容)'
: '审核中'
}}
</p>
<div>
申请日期{{
item.createDate ||
item.startTime ||
item.tbsj ||
(item.CREATE_TIME &&
moment(item.CREATE_TIME.time + 480 * 60 * 1000).format(
'YYYY-MM-DD HH:mm:ss'
))
}}
</div>
<!-- 西海岸--增加过期时间显示 -->
<div v-if="isXiHaiAn">过期时间{{ item.expireDate || '' }}</div>
</div>
</a-tooltip>
<div class="content-body-content">
<p class="content-body-content-son" v-if="typeName == '设备申请'">
审核结果{{ item.state === 0 ? '审核中' : '审核完成' }}
</p>
<p
class="content-body-content-son"
v-else-if="typeName == '数据资源申请'"
>
审核结果{{ item.bmyijian === 0 ? '审核中' : '审核完成' }}
</p>
<p
class="content-body-content-son"
v-else-if="typeName == '云资源申请'"
>
审核结果{{ status[item.STATUS] }}
</p>
<p
class="content-body-content-son"
v-else-if="typeName == '云视频申请'"
>
审核结果{{ status2[item.STATUS] }}
</p>
<p class="content-body-content-son" v-else>
审核结果{{
item.ended
? '审核完成'
: item.backToFirst
? '审核中(请修改被驳回内容)'
: '审核中'
}}
</p>
<div>
申请日期{{
item.createDate ||
item.startTime ||
item.tbsj ||
(item.CREATE_TIME &&
moment(item.CREATE_TIME.time + 480 * 60 * 1000).format(
'YYYY-MM-DD HH:mm:ss'
))
}}
<div class="button-box">
<div
class="button"
v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@click="showPhoneModal(item)"
>
联系方式
</div>
<div class="button" @click="showDetail(item)">查看详情</div>
<div
class="button"
@click="showAdd(item)"
v-if="typeName !== '能力申请' && item.backToFirst"
>
修改
</div>
<svg
t="1652233950228"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5970"
data-spm-anchor-id="a313x.7781069.0.i8"
width="80"
height="80"
v-if="
item.processDefinitionName != '能力资源下架' &&
item.approveStatus !== '不通过' &&
(item.resourceStatus == 4 || item.resourceStatus == 5)
"
style="position: absolute; top: 20px; left: -850px"
>
<path
d="M955.22053 256C813.82053 11.2 500.72053-72.6 255.92053 68.8S-72.67947 523.2 68.72053 768 523.22053 1096.6 768.02053 955.2c244.7-141.2 328.6-454.1 187.4-698.8 0-0.1-0.1-0.3-0.2-0.4zM762.02053 944.7c-239 138.1-544.8 56.2-682.9-182.8S22.92053 217.1 261.92053 79.1s544.8-56.2 682.9 182.8c137.9 239 56.1 544.6-182.8 682.8z"
fill="#515151"
opacity=".5"
p-id="5971"
></path>
<path
d="M898.12053 289.2C775.02053 76 502.42053 2.9 289.22053 126 76.02053 249.1 3.02053 521.6 126.02053 734.8 249.12053 948 521.62053 1021.1 734.82053 898 947.92053 774.9 1021.02053 502.4 898.12053 289.2zM731.62053 892.8C521.32053 1014.3 252.42053 942.2 131.02053 731.9 9.52053 521.6 81.62053 252.7 291.92053 131.3 502.12053 9.9 771.02053 81.8 892.42053 292c121.5 210.3 49.5 479.3-160.8 600.8z"
fill="#515151"
opacity=".5"
p-id="5972"
></path>
<path
d="M323.62053 176.8c3.6-2 6 0.8 8.8 2.8 6 4.4 12.4 8.8 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.4 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.6 0.6-2zM200.72053 289.2c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 14.8 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.4-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.4-1.2 0-1.6 0.8-2.4l0.2 0.4z m276.6-159.6c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.8-1.2-0.4-1.6 0.4-2.4l0.2 0.4z m141.9 29.6c3.6-2 6 0.8 8.8 2.8l18.8 12.8c7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4-7.7 0.4-15.2 0.8-22.4 0.8-4.4 6.8-8.4 13.2-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.5-1.2 0.2-1.6 0.6-2zM150.02053 430c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-4 14-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.5 0.6-2z m558.9 414.4c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.1 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-1.1 0.8-1.1 1.6-1.1h0.1z m-158.8 50c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.1-3.7-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2-1 4.2-1.7 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.4-0.8 0.8-0.8 1.7-0.7z m276.5-159.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8s-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.2 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0-0.8 0.8-1.2 1.6-1.2l0.1 0.1z m45.6-137.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.2-0.7 0.6-0.7 1.4-0.7h0.3zM402.72053 868c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-0.8 1-1.1 1.7-1.1z"
fill="#515151"
opacity=".5"
p-id="5973"
></path>
<path
d="M386.42053 590.4l-43.8-75.9L207.02053 592.7l10.2 17.7L334.02053 543l23.4 40.4-90.5 52.2-13.5-23.4-18.7 10.8 53.1 92c9.1 15.8 21.2 19.5 36.4 10.7l98.8-57c6.2-3.6 11-9.3 13.4-16.1-1.4-15.9-6.2-31.2-14.2-45l-21.4 4.8c6.7 10.3 11 21.9 12.8 34-1 3.3-3.2 6-6.1 7.8l-88.3 51c-6.2 3.6-11.1 2.1-14.8-4.3l-27.3-47.4 109.3-63.1z m2.9-103.2l10.4 18.1 65.6-37.9 79.9 138.4 18.6-10.8-55.9-96.9c18.8-0.9 43.2-0.6 73 0.7l1.5-23.1c-29.8-0.3-58.4 0.4-86 2.6l-12.5-21.6 74.9-43.2-10.4-18.1-159.1 91.8zM669.52053 329l38.2 66.2 61.4-35.4-38.1-66.1-61.5 35.3z m72.4 24.2l-26.3 15.2-19-33 26.3-15.2 19 33zM599.02053 356.7l7.9 13.7-23.3 13.5 9.8 17 21.8-12.6c7.5 18.7 6.6 39.6-2.5 57.6l20.7 4.4c10.3-23.1 10.3-49.4 0-72.5l18.8-10.9c6 9.2 10.7 19.2 14.2 29.7 0.3 5-2.6 9.7-7.2 11.7-2.9 1.2-6.4 2.8-10.9 4.9l14.1 14.1c3.7-1.3 7.3-2.9 10.7-4.8 8.6-3.9 14.4-12.2 15.2-21.6-5.4-22.1-14.6-43-27.4-61.8l-36.1 20.8-7.9-13.7-17.9 10.5z m29.9 108.1l10 17.4 53.2-30.7c-7.8 23.7-20.6 45.4-37.5 63.6l20.6 11.1c18.6-24.2 30-53.1 33-83.4l29.8 51.5 18.4-10.7-29.8-51.5c27.4 11.5 57.2 16.3 86.9 14.1l3.5-23.5c-24.7 5.1-50.1 5-74.8-0.1l53.5-30.9-10-17.3-69.3 40-7.3-12.6-18.4 10.7L698.02053 425l-69.1 39.8z"
fill="#515151"
opacity=".5"
p-id="5974"
></path>
</svg>
</div>
<!-- 西海岸--增加过期时间显示 -->
<div v-if="isXiHaiAn">过期时间{{ item.expireDate || '' }}</div>
</div>
<div class="button-box">
<div
class="button"
v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@click="showPhoneModal(item)"
>
联系方式
</div>
<div class="button" @click="showDetail(item)">查看详情</div>
<div class="button" @click="showAdd(item)" v-if="item.backToFirst">
修改
</div>
<svg
t="1652233950228"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5970"
data-spm-anchor-id="a313x.7781069.0.i8"
width="80"
height="80"
v-if="
item.processDefinitionName != '能力资源下架' &&
item.approveStatus !== '不通过' &&
(item.resourceStatus == 4 || item.resourceStatus == 5)
"
style="position: absolute; top: 20px; left: -850px"
>
<path
d="M955.22053 256C813.82053 11.2 500.72053-72.6 255.92053 68.8S-72.67947 523.2 68.72053 768 523.22053 1096.6 768.02053 955.2c244.7-141.2 328.6-454.1 187.4-698.8 0-0.1-0.1-0.3-0.2-0.4zM762.02053 944.7c-239 138.1-544.8 56.2-682.9-182.8S22.92053 217.1 261.92053 79.1s544.8-56.2 682.9 182.8c137.9 239 56.1 544.6-182.8 682.8z"
fill="#515151"
opacity=".5"
p-id="5971"
></path>
<path
d="M898.12053 289.2C775.02053 76 502.42053 2.9 289.22053 126 76.02053 249.1 3.02053 521.6 126.02053 734.8 249.12053 948 521.62053 1021.1 734.82053 898 947.92053 774.9 1021.02053 502.4 898.12053 289.2zM731.62053 892.8C521.32053 1014.3 252.42053 942.2 131.02053 731.9 9.52053 521.6 81.62053 252.7 291.92053 131.3 502.12053 9.9 771.02053 81.8 892.42053 292c121.5 210.3 49.5 479.3-160.8 600.8z"
fill="#515151"
opacity=".5"
p-id="5972"
></path>
<path
d="M323.62053 176.8c3.6-2 6 0.8 8.8 2.8 6 4.4 12.4 8.8 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.4 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.6 0.6-2zM200.72053 289.2c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 14.8 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.4-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.4-1.2 0-1.6 0.8-2.4l0.2 0.4z m276.6-159.6c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.8-1.2-0.4-1.6 0.4-2.4l0.2 0.4z m141.9 29.6c3.6-2 6 0.8 8.8 2.8l18.8 12.8c7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4-7.7 0.4-15.2 0.8-22.4 0.8-4.4 6.8-8.4 13.2-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.5-1.2 0.2-1.6 0.6-2zM150.02053 430c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-4 14-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.5 0.6-2z m558.9 414.4c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.1 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-1.1 0.8-1.1 1.6-1.1h0.1z m-158.8 50c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.1-3.7-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2-1 4.2-1.7 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.4-0.8 0.8-0.8 1.7-0.7z m276.5-159.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8s-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.2 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0-0.8 0.8-1.2 1.6-1.2l0.1 0.1z m45.6-137.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.2-0.7 0.6-0.7 1.4-0.7h0.3zM402.72053 868c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-0.8 1-1.1 1.7-1.1z"
fill="#515151"
opacity=".5"
p-id="5973"
></path>
<path
d="M386.42053 590.4l-43.8-75.9L207.02053 592.7l10.2 17.7L334.02053 543l23.4 40.4-90.5 52.2-13.5-23.4-18.7 10.8 53.1 92c9.1 15.8 21.2 19.5 36.4 10.7l98.8-57c6.2-3.6 11-9.3 13.4-16.1-1.4-15.9-6.2-31.2-14.2-45l-21.4 4.8c6.7 10.3 11 21.9 12.8 34-1 3.3-3.2 6-6.1 7.8l-88.3 51c-6.2 3.6-11.1 2.1-14.8-4.3l-27.3-47.4 109.3-63.1z m2.9-103.2l10.4 18.1 65.6-37.9 79.9 138.4 18.6-10.8-55.9-96.9c18.8-0.9 43.2-0.6 73 0.7l1.5-23.1c-29.8-0.3-58.4 0.4-86 2.6l-12.5-21.6 74.9-43.2-10.4-18.1-159.1 91.8zM669.52053 329l38.2 66.2 61.4-35.4-38.1-66.1-61.5 35.3z m72.4 24.2l-26.3 15.2-19-33 26.3-15.2 19 33zM599.02053 356.7l7.9 13.7-23.3 13.5 9.8 17 21.8-12.6c7.5 18.7 6.6 39.6-2.5 57.6l20.7 4.4c10.3-23.1 10.3-49.4 0-72.5l18.8-10.9c6 9.2 10.7 19.2 14.2 29.7 0.3 5-2.6 9.7-7.2 11.7-2.9 1.2-6.4 2.8-10.9 4.9l14.1 14.1c3.7-1.3 7.3-2.9 10.7-4.8 8.6-3.9 14.4-12.2 15.2-21.6-5.4-22.1-14.6-43-27.4-61.8l-36.1 20.8-7.9-13.7-17.9 10.5z m29.9 108.1l10 17.4 53.2-30.7c-7.8 23.7-20.6 45.4-37.5 63.6l20.6 11.1c18.6-24.2 30-53.1 33-83.4l29.8 51.5 18.4-10.7-29.8-51.5c27.4 11.5 57.2 16.3 86.9 14.1l3.5-23.5c-24.7 5.1-50.1 5-74.8-0.1l53.5-30.9-10-17.3-69.3 40-7.3-12.6-18.4 10.7L698.02053 425l-69.1 39.8z"
fill="#515151"
opacity=".5"
p-id="5974"
></path>
</svg>
</div>
</div>
<div class="bottom">
<a-pagination
size="small"
pageSize="4"
:total="total"
:current="page"
:showTotal="(total) => `共 ${total} 项`"
@change="handleCurrentChange"
@showSizeChange="handlePageSizeChange"
:showSizeChanger="false"
/>
</div>
</div>
<div class="bottom">
<a-pagination
size="small"
pageSize="4"
:total="total"
:current="page"
@change="handleCurrentChange"
@showSizeChange="handlePageSizeChange"
:showSizeChanger="false"
/>
</div>
</div>
<a-empty v-else />
<a-modal
bodyStyle="padding:0.1rem 0"
v-model:visible="detailsVisible"
style="width: 1000px"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
<a-empty v-else />
</template>
</div>
<!-- 政务云资源详情-->
<a-modal
bodyStyle="padding:0.1rem 0"
v-model:visible="cloudVisible"
style="width: 1000px"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<template v-slot:title>申请详情</template>
<cloud-details :BSNUM="BSNUM" :baseInfo="baseInfo"></cloud-details>
</a-modal>
<a-modal
bodyStyle="padding:0.1rem 0"
v-model:visible="detailsVisible"
style="width: 1000px"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<template v-slot:title>
{{
refObj.description && itShowXiHaiAn
? refObj.description + '申请详情'
: '申请详情'
}}
</template>
<apply-details
:processDefinitionName="processDefinitionName"
:businessKey="businessKey"
:processInstanceId="processInstanceId"
:resourceId="resourceId"
:refObj="refObj"
:showType="showType"
></apply-details>
</a-modal>
<a-modal
v-model:visible="visible"
title="下架原因"
@ok="del()"
@cancel="reason = ''"
>
<a-input v-model:value="reason" placeholder="请输入下架原因" />
</a-modal>
<a-modal
v-model:visible="videoVisible"
title="已申请摄像头列表"
@ok="videoVisible = false"
>
<a-table
:columns="columns"
:data-source="xVideoList"
bordered
:pagination="{ defaultPageSize: 6 }"
>
<template v-slot:title>
{{
refObj.description && itShowXiHaiAn
? refObj.description + '申请详情'
: '申请详情'
}}
</template>
<apply-details
:processDefinitionName="processDefinitionName"
:businessKey="businessKey"
:processInstanceId="processInstanceId"
:resourceId="resourceId"
:refObj="refObj"
:showType="showType"
></apply-details>
</a-modal>
<a-modal
v-model:visible="visible"
title="下架原因"
@ok="del()"
@cancel="reason = ''"
>
<a-input v-model:value="reason" placeholder="请输入下架原因" />
</a-modal>
<a-modal
v-model:visible="videoVisible"
title="已申请摄像头列表"
@ok="videoVisible = false"
>
<a-table
:columns="columns"
:data-source="xVideoList"
bordered
:pagination="{ defaultPageSize: 6 }"
>
<template #bodyCell="{ column, text }">
<!-- <template>
<template #bodyCell="{ column, text }">
<!-- <template>
<a>{{ text }}</a>
</template> -->
</template>
</a-table>
</a-modal>
</div>
</template>
</a-table>
</a-modal>
<!-- 联系方式弹框 -->
<a-modal
v-model:visible="phoneVisible"
@ -291,6 +384,8 @@
yaweiApproveDetails,
getResourceBusinessList,
getVideoBusinessList,
getCategoryTreePage,
getZwyBusinessList,
} from '@/api/personalCenter'
import {
updateRes,
@ -303,6 +398,7 @@
import { getUserInfo } from '@/api/user'
import { message } from 'ant-design-vue'
import ApplyDetails from '@/views/personalCenter/components/ApplyDetails'
import CloudDetails from '@/views/personalCenter/components/CloudDetails'
import mybus from '@/myplugins/mybus'
import * as moment from 'moment'
@ -311,27 +407,33 @@
})
const router = useRouter()
const userName = ref('')
//
let cloudResourceStatusList = ref([])
getUserInfo().then((res) => {
userName.value = res.data.data.username
})
const formState = ref({ name: '' })
// 西-
let isXiHaiAn = whoShow.itShowXiHaiAn
let typeList = ref(
isXiHaiAn
? ['能力申请', '能力上架', '能力下架', '能力需求', '需求评论']
: [
'能力申请',
'能力上架',
'能力下架',
'能力需求',
'需求评论',
'数据资源申请',
'云资源申请',
'云视频申请',
// '',
]
)
//Tab
let chooseTab = ref(0)
//
let yunForm = reactive({
status: '',
busineesName: '',
})
let chooseList = ref(['UCS内部资源', '数据资源', '政务云资源', '视频资源'])
let typeList = ref([
'能力申请',
'能力上架',
'能力下架',
'能力需求',
'需求评论',
// '',
// '',
// '',
])
const itShowXiHaiAn = ref(isXiHaiAn)
const phoneSate = ref([2, 3])
if (isXiHaiAn) {
@ -346,9 +448,12 @@
let tabList = ref(['全部', '审核中', '审核完成'])
const contentList = reactive({ data: [] })
const contentList2 = reactive({ data: [] }) // 使
//
const cloudList = reactive({ data: [] })
let tabIndex = ref(0)
let typeIndex = ref(0)
let typeName = ref(typeList.value[0])
if (router.currentRoute.value.query.tabTypeName) {
typeName.value = router.currentRoute.value.query.tabTypeName
}
@ -365,6 +470,8 @@
let name = ref('')
const detailsVisible = ref(false)
const detailsVisible2 = ref(false)
//
const cloudVisible = ref(false)
const businessKey = ref('')
const processInstanceId = ref('')
const processDefinitionName = ref('')
@ -375,6 +482,9 @@
const taskId = ref('')
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const refObj = ref({})
//
const BSNUM = ref('')
const baseInfo = ref({})
const num = ref({
finished: 0,
unfinished: 0,
@ -390,7 +500,7 @@
const changeType = (item, index) => {
contentList.data = []
formState.value.name = ''
console.log('item, index-----选择类型------->', item, index)
numFlag.value = true
num.value = []
showType.value = ''
@ -401,6 +511,47 @@
typeName.value = item
getApplyList()
}
//tab
const handleTab = (index) => {
chooseTab.value = index
if (index == 2) {
//
getCloudResource()
getCloudList()
}
}
const cloudSearchReserve = () => {
Object.keys(yunForm).map((key) => {
delete yunForm[key]
})
getCloudList()
}
//
const getCloudList = () => {
const params = {
pageNum: page.value,
pageSize: 5,
status: yunForm.status,
name: yunForm.busineesName,
}
total.value = 5
getZwyBusinessList(params).then((res) => {
cloudList.data = res.data.data.list
num.value = []
total.value = res.data.data.total
})
}
//
const getCloudResource = () => {
getCategoryTreePage({
page: 1,
limit: 20,
dictTypeId: '1601043884320755714',
deFlage: 0,
}).then((res) => {
cloudResourceStatusList.value = res.data.data.list
})
}
//
function changeApplyState(item, index) {
@ -464,6 +615,13 @@
'06': '交付',
}
const cilckRowData = ref({})
//
const showCloudDetail = (item) => {
//
cloudVisible.value = true
BSNUM.value = item.BSNUM
baseInfo.value = item
}
const showDetail = (item) => {
cilckRowData.value = item
// 西-
@ -592,6 +750,7 @@
oInput.remove()
}
const showAdd = (item) => {
console.log('item', item)
if (item.processDefinitionKey == 'resourcemountapply') {
const data = {
id: item.resourceId,
@ -810,12 +969,11 @@
contentList.data = res.data.data.list
total.value = res.data.data.total
initNum()
console.log('typeIndex', typeIndex.value)
switch (typeIndex.value) {
case 1:
contentList.data.map((val) => {
nengliziyuanshangjiaapply(val.businessKey).then((res1) => {
console.log('上架===========>', res1.data.data)
val.title = res1.data.data.resourceDTO.name
val.dto = res1.data.data.resourceDTO
showType.value = '能力上架'
@ -869,12 +1027,20 @@
}
const handleCurrentChange = (val) => {
page.value = val
getApplyList()
if (chooseTab.value == 2) {
getCloudList()
} else {
getApplyList()
}
}
const handlePageSizeChange = (val) => {
page.value = val
getApplyList()
if (chooseTab.value == 2) {
getCloudList()
} else {
getApplyList()
}
}
const viewDetail = (processDefinitionName, id, ended, businessKey) => {
@ -1006,6 +1172,15 @@
</script>
<style scoped lang="less">
.queryButton {
background: #0058e1;
width: 80px;
height: 32px;
margin-left: 20px;
border: 1px solid #0058e1;
border-radius: 2px;
color: #fff;
}
.on-the-right-side-of-the-list {
background: #ffffff;
padding: 20px 0px 30px 20px;
@ -1018,6 +1193,31 @@
flex-direction: column;
font-size: 16px;
justify-content: left;
.second-title {
border-radius: 4px;
margin-top: 10px;
margin-bottom: 22px;
font-size: 18px;
cursor: pointer;
text-align: center;
background: #edf4fc;
width: 500px;
height: 36px;
line-height: 36px;
display: table;
}
.chooseStyle {
display: table-cell;
width: 25%;
color: #fff;
background-color: #0058e1;
font-weight: bolder;
}
.noChooseStyle {
display: table-cell;
width: 25%;
}
.title {
font-size: 20px;
color: #000000;
@ -1076,7 +1276,46 @@
color: #0087ff;
}
}
.content-cloud {
padding: 0px 10px;
overflow-y: scroll;
height: 610px;
.content-cloud-body {
height: 100px;
height: 100px;
margin-bottom: 10px;
border-bottom: 1px solid #cccccc;
.content-body-left {
width: 85%;
float: left;
.content-body-left-one {
display: table;
height: 50px;
width: 80%;
div {
display: table-cell;
width: 50%;
font-size: 14px;
}
}
.content-body-left-two {
width: 80%;
height: 50px;
display: table;
div {
display: table-cell;
width: 30%;
font-size: 14px;
}
}
}
.content-body-right {
width: 15%;
float: left;
}
}
}
.content {
padding-right: 10px;
height: 610px;

File diff suppressed because it is too large Load Diff

View File

@ -220,7 +220,7 @@
type.value = ''
pageNum.value = '1'
pageSize.value = '5'
tabIndex.value = 0
tabIndex.value = -1
showKey.value++
checkAll.value = false
getList()
@ -333,7 +333,7 @@
showKey.value++
}
//
const tabIndex = ref(0)
const tabIndex = ref(-1)
const changeTab = (index) => {
console.log('tabIndex', tabIndex.value, index, tabList)
if (tabIndex.value == index) {
@ -377,50 +377,58 @@
openHref(item)
} else {
mybus.emit('tabsChange', { flag: id })
router.push({
path: '/details',
// router.push({
// path: '/details',
// query: {
// id: id,
// },
// })
const detailPage = router.resolve({
path: '/details', //
query: {
id: id,
hiddenBackFlag: true,
},
})
window.open(detailPage.href, '_blank')
}
}
}
//tabindex
watch(tabIndex, (val) => {
getBsList({
limit: pageSize.value,
page: pageNum.value,
type: tabList.value[val],
name: name.value,
}).then((res) => {
checkAll.value = true
console.log('申购车列表================>', res)
initLoading.value = false
list.value = []
total.value = res.data.data.total
res.data.data.list.forEach((val) => {
const obj = {
loading: false,
name: val.resourceDTO.name,
id: val.id,
checked: false,
visits: val.resourceDTO.visits,
type: val.resourceDTO.type,
link: val.resourceDTO.link,
resourceId: val.resourceId,
createDate: val.createDate,
description: val.resourceDTO.description,
delFlag: val.resourceDTO.delFlag,
}
if (checkedList.value.indexOf(val.id) == -1) {
checkAll.value = false
} else {
obj.checked = true
}
list.value.push(obj)
})
})
// getBsList({
// limit: pageSize.value,
// page: pageNum.value,
// type: tabList.value[val],
// name: name.value,
// }).then((res) => {
// checkAll.value = true
// console.log('================>', res)
// initLoading.value = false
// list.value = []
// total.value = res.data.data.total
// res.data.data.list.forEach((val) => {
// const obj = {
// loading: false,
// name: val.resourceDTO.name,
// id: val.id,
// checked: false,
// visits: val.resourceDTO.visits,
// type: val.resourceDTO.type,
// link: val.resourceDTO.link,
// resourceId: val.resourceId,
// createDate: val.createDate,
// description: val.resourceDTO.description,
// delFlag: val.resourceDTO.delFlag,
// }
// if (checkedList.value.indexOf(val.id) == -1) {
// checkAll.value = false
// } else {
// obj.checked = true
// }
// list.value.push(obj)
// })
// })
})
</script>
<style lang="less" scoped>

View File

@ -71,12 +71,20 @@
const showDetail = (item) => {
console.log('demandDetails', item)
// store.commit('home/demandDetailsData', item)
router.push({
path: '/demandDetails',
// router.push({
// path: '/demandDetails',
// query: {
// id: item.demandDataDTO.id,
// },
// })
const detailPage = router.resolve({
path: '/demandDetails', //
query: {
id: item.demandDataDTO.id,
hiddenBackFlag: true,
},
})
window.open(detailPage.href, '_blank')
}
const total = ref()

View File

@ -395,13 +395,15 @@
const showDetail = (item) => {
console.log('showDetail', item, item.id)
if (item.delFlag == 0) {
router.push({
path: '/details',
const detailPage = router.resolve({
path: '/details', //
query: {
id: item.id,
hiddenBackFlag: true,
},
})
newpage
window.open(detailPage.href, '_blank')
// newpage
}
// getProcDefBizRoute(item.processDefinitionId)
// detailsVisible.value = true
@ -445,9 +447,9 @@
limt.value = size
getApplyList(tabname.value)
}
const newpage = router.resolve({
path: '/nenglishangjia', //
})
// const newpage = router.resolve({
// path: '/nenglishangjia', //
// })
// const nenglishangjia = () => {
// window.open(newpage.href, '_blank')
// // router.resolve('/nenglishangjia')

File diff suppressed because it is too large Load Diff

View File

@ -255,7 +255,6 @@
import { useRouter } from 'vue-router'
export default {
name: '',
props: {},
components: {
HomeHeader,
@ -296,7 +295,7 @@
fileList.value = [
{
uid: res.data.data.id,
name: '附件',
name: res.data.data.enclosureName || '附件',
staus: 'done',
},
]
@ -339,6 +338,7 @@
}
const handleRemove = () => {
formName.enclosure = ''
formName.enclosureName = ''
}
const handleChange = (info) => {
if (info.file.status !== 'uploading') {
@ -346,12 +346,15 @@
}
if (info.file.status === 'removed') {
formName.enclosure = ''
formName.enclosureName = ''
}
if (info.file.status === 'done') {
message.success(`${info.file.name} 文件上传成功`)
formName.enclosure = info.file.response.data
formName.enclosureName = info.file.name
} else if (info.file.status === 'error') {
formName.enclosure = ''
formName.enclosureName = ''
fileList.value = []
message.error(`${info.file.name} 文件上传失败`)
}
@ -368,8 +371,8 @@
// copy
let _postData = JSON.parse(JSON.stringify(formName))
_postData.detailsField = detailsField
if (id.value) {
_postData.id = id.value
updateDemandForm(_postData).then((upres) => {
if (upres.data.code == 0) {
relaunch({ data: _postData, taskId: taskId.value }).then(
@ -396,8 +399,16 @@
console.log(detString, _postData.detailsField, 'detString')
demandApply(_postData).then((res) => {
applySuccess.value = false
message.success('操作成功!')
// message.success('')
console.log('能力申请================>', res)
if (res.data.code == 0) {
message.success('操作成功!')
window.setTimeout(() => {
window.close()
}, 1000)
} else {
message.error('操作失败')
}
})
})
}

View File

@ -6,18 +6,28 @@
<aside-menu></aside-menu>
</aside>
<article>
<!-- 我的申请 -->
<div class="form-container">
<!-- <on-the-right-side-of-the-list
v-if="showFlag === 'collect'"
></on-the-right-side-of-the-list> -->
<my-apply v-if="showFlag === 'apply'" :tabTypeName="tabTypeName"></my-apply>
<template v-if="showFlag === 'apply'">
<my-apply-xha
v-if="xinhaian"
:tabTypeName="tabTypeName"
></my-apply-xha>
<my-apply v-else :tabTypeName="tabTypeName"></my-apply>
</template>
<!-- 我的发布 -->
<my-publish v-if="showFlag === 'push'"></my-publish>
<!-- 申购车 -->
<purchase-vehicle
v-if="showFlag === 'PurchaseVehicle'"
></purchase-vehicle>
<!-- 我的收藏 -->
<collection v-else-if="showFlag === 'collect'"></collection>
<!-- 我的需求 -->
<my-application v-else-if="showFlag === 'demand'"></my-application>
<!-- 我的评论 -->
<my-comments v-else-if="showFlag === 'remark'"></my-comments>
<!-- 我的浏览 -->
<my-browse v-else-if="showFlag === 'recent'"></my-browse>
</div>
</article>
@ -30,6 +40,7 @@
import asideMenu from '@/views/personalCenter/components/asideMenu'
// import OnTheRightSideOfTheList from './OnTheRightSideOfTheList'
import MyApply from '@/views/personalCenter/components/MyApply'
import MyApplyXha from '@/views/personalCenter/components/MyApplyXha'
import MyApplication from '@/views/personalCenter/components/MyApplication'
import MyComments from '@/views/personalCenter/components/MyComments'
import MyPublish from '@/views/personalCenter/components/MyPublish'
@ -41,6 +52,7 @@
import { useRouter } from 'vue-router'
const router = useRouter()
let tabTypeName = ref(router.currentRoute.value.query.tabTypeName || '')
let xinhaian = whoShow.itShowXiHaiAn //西
const type = JSON.parse(window.sessionStorage.getItem('type'))
const showFlag = ref('PurchaseVehicle')
if (type) {
@ -72,30 +84,30 @@
background-color: #f5f8fc;
height: 100%;
width: 100%;
margin: 64px auto 0;
margin: 0.64rem auto 0;
display: flex;
justify-content: center;
position: relative;
aside {
width: 282px;
width: 2.82rem;
height: 96%;
overflow-y: auto;
background-color: #fff;
margin: 1% 0 3%;
}
article {
width: 1090px;
width: 10.9rem;
height: 99%;
// overflow-y: auto;
background-color: #fff;
margin: 1% 0 1% 14px;
margin: 1% 0 1% 0.14rem;
}
.form-container {
.title {
font-size: 20px;
font-size: 0.2rem;
color: #000;
font-weight: bold;
margin-bottom: 20px;
margin-bottom: 0.2rem;
}
}
}