Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev

This commit is contained in:
unknown 2022-10-28 15:27:07 +08:00
commit dd38eba69b
46 changed files with 7416 additions and 6533 deletions

1
.gitignore vendored
View File

@ -10,3 +10,4 @@ back/dist-西海岸-后台管理-v0.8.2.1.zip
back/dist-市局-后台管理-v0.8.2.3.zip
back/dist-西海岸-后台管理-v0.8.2.4.d.zip
*.zip
front/public/static/config/basicConfig.js

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-08-25 14:37:49
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-13 16:46:41
* @LastEditors: Light
* @LastEditTime: 2022-10-26 10:48:52
* @Description: 告诉大家这是什么
*/
var _global = {}
@ -43,8 +43,8 @@ var CONFIGITEM = {
},
dev: {
previewUrl: 'http://localhost:8080/',
apiURL: 'http://192.168.124.233:8888/renren-admin',
websocketURL: 'ws://192.168.124.236:8888/renren-admin/websocket'
apiURL: 'http://192.168.124.243:8888/renren-admin',
websocketURL: 'ws://192.168.124.243:8888/renren-admin/websocket'
}
}
}

View File

@ -1,10 +1,12 @@
<template>
<div>
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog">
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog" readonly
@paste.native.capture.prevent="handlePaste">
<el-button slot="append" icon="el-icon-search" @click="deptDialog"></el-button>
</el-input>
<el-input :value="value" style="display: none"></el-input>
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false"
:close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
@ -14,16 +16,9 @@
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree
class="filter-tree"
:data="deptList"
:default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
:highlight-current="true"
node-key="id"
ref="tree">
<el-tree class="filter-tree" :data="deptList" :default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }" :expand-on-click-node="false" :filter-node-method="filterNode"
:highlight-current="true" node-key="id" ref="tree">
</el-tree>
<template slot="footer">
<el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button>
@ -36,7 +31,7 @@
<script>
export default {
name: 'RenDeptTree',
data () {
data() {
return {
filterText: '',
visibleDept: false,
@ -56,15 +51,23 @@ export default {
placeholder: String
},
watch: {
filterText (val) {
filterText(val) {
this.$refs.tree.filter(val)
},
deptName (val) {
deptName(val) {
this.showDeptName = val
},
visibleDept(val) {
if (!val) {
this.filterText = ''
}
}
},
methods: {
deptDialog () {
handlePaste() {
return false
},
deptDialog() {
this.expandedKeys = null
if (this.$refs.tree) {
this.$refs.tree.setCurrentKey(null)
@ -72,11 +75,11 @@ export default {
this.visibleDept = true
this.getDeptList(this.value)
},
filterNode (value, data) {
filterNode(value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
getDeptList (id) {
getDeptList(id) {
return this.$http.get('/sys/dept/list').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
@ -86,14 +89,14 @@ export default {
this.$refs.tree.setCurrentKey(id)
this.expandedKeys = [id]
})
}).catch(() => {})
}).catch(() => { })
},
cancelHandle () {
cancelHandle() {
this.visibleDept = false
this.deptList = []
this.filterText = ''
},
clearHandle () {
clearHandle() {
this.$emit('input', '')
this.$emit('update:deptName', '')
this.showDeptName = ''
@ -101,7 +104,7 @@ export default {
this.deptList = []
this.filterText = ''
},
commitHandle () {
commitHandle() {
const node = this.$refs.tree.getCurrentNode()
if (!node) {
this.$message.error(this.$t('dept.chooseerror'))

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-04-11 16:30:04
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-16 15:07:44
* @LastEditors: Light
* @LastEditTime: 2022-10-26 11:05:07
* @Description: 告诉大家这是什么
-->
<template>
@ -31,7 +31,7 @@
<!-- 审核意见 -->
<el-table-column prop="comment" :label="$t('process.comment')" header-align="center" align="center"></el-table-column>
<!-- 任务时长 -->
<el-table-column prop="durationInSeconds" :label="$t('task.durationInSeconds')" header-align="center" align="center" width="180"></el-table-column>
<el-table-column prop="duration" :label="$t('task.durationInSeconds')" header-align="center" align="center" width="180"></el-table-column>
</el-table>
<el-pagination
v-if="dataForm.pid === '0'"

View File

@ -41,7 +41,8 @@
</el-menu-item> -->
</el-menu>
<el-menu class="aui-navbar__menu" mode="horizontal">
<el-menu-item index="1">
<!-- 暂时隐藏切换语言--勿删 -->
<!-- <el-menu-item index="1">
<el-dropdown placement="bottom" :show-timeout="0">
<el-button size="mini">{{ $t("_lang") }}</el-button>
<el-dropdown-menu slot="dropdown">
@ -53,14 +54,14 @@
>
</el-dropdown-menu>
</el-dropdown>
</el-menu-item>
<el-menu-item index="2">
</el-menu-item> -->
<!-- <el-menu-item index="2">
<a href="//115.28.200.119:9091" target="_blank">
<svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-earth"></use>
</svg>
</a>
</el-menu-item>
</el-menu-item> -->
<el-menu-item index="3" v-if="$hasPermission('sys:notice:all')">
<el-badge :is-dot="messageTip">
<a href="#" @click="myNoticeRouter()"

View File

@ -8,11 +8,11 @@
-->
<template>
<div class="aui-theme-tools" :class="{ 'aui-theme-tools--open': isOpen }">
<div class="aui-theme-tools__toggle" @click="isOpen = !isOpen">
<!-- <div class="aui-theme-tools__toggle" @click="isOpen = !isOpen">
<svg class="icon-svg" aria-hidden="true">
<use xlink:href="#icon-setting"></use>
</svg>
</div>
</div> -->
<div class="aui-theme-tools__content">
<div class="aui-theme-tools__item">
<h3>Navbar</h3>

View File

@ -1,5 +1,6 @@
<template>
<el-dialog
width="70%"
:destroy-on-close="true"
:close-on-click-modal="false"
@close="closeModal"
@ -104,6 +105,11 @@
label="任务名称"
width="180">
</el-table-column>
<el-table-column
prop="assigneeDeptName"
label="处理人部门"
width="200">
</el-table-column>
<el-table-column
prop="assigneeName"
label="处理人"
@ -142,126 +148,125 @@ export default {
props: {
detailType: {
type: String,
default: "",
default: ''
},
detailsVisible: {
type: Boolean,
default: false,
default: false
},
detailParamss: {
type: Object,
default: {},
},
default: {}
}
},
watch: {
detailsVisible: {
handler(newVal) {
this.detailsVisibleCopy = newVal;
handler (newVal) {
this.detailsVisibleCopy = newVal
},
immediate: true,
immediate: true
},
detailParamss: {
handler(newVal) {
this.detailParams = newVal;
this.getDetail(newVal);
handler (newVal) {
this.detailParams = newVal
this.getDetail(newVal)
},
immediate: true,
immediate: true
}
},
},
data() {
data () {
return {
detailsVisibleCopy: false,
columns: [
{
title: "任务名称",
dataIndex: "activityName",
key: "activityName",
title: '任务名称',
dataIndex: 'activityName',
key: 'activityName'
},
{
title: "处理人",
dataIndex: "assigneeName",
key: "assigneeName",
title: '处理人',
dataIndex: 'assigneeName',
key: 'assigneeName'
},
{
title: "任务开始时间",
dataIndex: "startTime",
key: "startTime",
title: '任务开始时间',
dataIndex: 'startTime',
key: 'startTime'
},
{
title: "任务结束时间",
dataIndex: "endTime",
key: "endTime",
title: '任务结束时间',
dataIndex: 'endTime',
key: 'endTime'
},
{
title: "审核意见",
dataIndex: "comment",
key: "comment",
title: '审核意见',
dataIndex: 'comment',
key: 'comment'
},
{
title: "任务时长/秒",
dataIndex: "durationInSeconds",
key: "durationInSeconds",
},
title: '任务时长/秒',
dataIndex: 'durationInSeconds',
key: 'durationInSeconds'
}
],
dataSource: [{ data: [] }],
showArr: [],
};
showArr: []
}
},
computed: {},
components: {},
methods: {
getDetail(newVal) {
getDetail (newVal) {
if (newVal.resourceApplication) {
this.dataSource.data = [];
if (this.detailType == "能力上架") {
let arr = [];
this.dataSource.data = []
if (this.detailType == '能力上架') {
const arr = []
newVal.resourceApplication.forEach((item) => {
arr.push(item);
});
arr.push(item)
})
this.dataSource.data.push([
newVal.resourceApplication.processInstanceId,
arr,
]);
arr
])
} else {
for (const key in newVal.resourceApplication) {
if (newVal.resourceApplication[key].length > 0) {
newVal.resourceApplication[key].map((item) => {
this.dataSource.data.push([
item.instanceId,
item.taskHandleDetailInfo,
]);
});
item.taskHandleDetailInfo
])
})
}
}
}
this.showArr.value = [];
this.showArr.value = []
for (const key in newVal.resourceApplication) {
if (newVal.resourceApplication[key].length > 0) {
let obj = { name: "", instanceId: "", list: [], list2: [] };
obj.name = key;
const obj = { name: '', instanceId: '', list: [], list2: [] }
obj.name = key
newVal.resourceApplication[key].map((item) => {
obj.instanceId = item.instanceId;
obj.backToFirst = item.backToFirst;
obj.ended = item.ended;
obj.approveStatus = item.approveStatus;
obj.instanceId = item.instanceId
obj.backToFirst = item.backToFirst
obj.ended = item.ended
obj.approveStatus = item.approveStatus
if (item.resources.length > 0) {
item.resources.map((val) => {
obj.list.push(val);
});
obj.list.push(val)
})
} else {
item.camera.map((val) => {
obj.list2.push(val);
});
obj.list2.push(val)
})
}
});
})
this.showArr.push(obj);
this.showArr.push(obj)
}
}
}
console.log("this.dataSource.data[0]========",this.dataSource.data[0][1])
console.log('this.dataSource.data[0]========', this.dataSource.data[0][1])
},
// init () {
// this.visible = true
@ -269,11 +274,11 @@ export default {
// this.$refs['dataForm'].resetFields()
// })
// },
closeModal() {
this.$emit("closeModal");
},
},
};
closeModal () {
this.$emit('closeModal')
}
}
}
</script>
<style scoped>
.title {
@ -457,4 +462,3 @@ export default {
}
}
</style>

View File

@ -26,7 +26,7 @@
<!--起始日期 @keyup.enter.native="getDataList()"-->
<el-form-item>
<span>日期</span>
<el-date-picker v-model="value1" type="datetimerange" range-separator="" start-placeholder="开始日期"
<el-date-picker v-model="value1" type="daterange" range-separator="" start-placeholder="开始日期"
end-placeholder="结束日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
@ -45,35 +45,33 @@
<el-form-item>
<span v-if="this.departmentId === 1 || this.departmentId === 3">上架部门</span>
<span v-else>申请部门</span>
<el-select
v-model="abilityDepartment"
placeholder="请选择部门"
filterable
clearable
>
<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" v-bind="item"></el-option>
<el-option v-for="item in departmentSelects" :key="item.label" :label="item.label" :value="item.value"
v-bind="item"></el-option>
</el-select>
</el-form-item>
<!--类型-->
<el-form-item>
<span>类型</span>
<el-select v-if="this.departmentId === 2 || this.departmentId === 4" v-model="abilityType" placeholder="请选择类型" clearable>
<el-select @change="changeIiem" v-if="this.departmentId === 2 || this.departmentId === 4" v-model="abilityType" placeholder="请选择类型" clearable>
<el-option label="全部" value=""></el-option>
<el-option v-for="(item, i) in typeOptions" :key="`${item.name}${i}`" :label="item.name" :value="item.name" v-bind="item">
<el-option v-for="(item, i) in typeOptions" :key="`${item.name}${i}`" :label="item.name" :value="item.name"
v-bind="item">
</el-option>
</el-select>
<el-select v-else v-model="abilityType" placeholder="请选择类型" clearable>
<el-select @change="changeIiem" v-else v-model="abilityType" placeholder="请选择类型" clearable>
<el-option label="全部" value=""></el-option>
<el-option v-for="(item, i) in typeOptions1" :key="`${item.name}${i}`" :label="item.name" :value="item.name" v-bind="item">
<el-option v-for="(item, i) in typeOptions1" :key="`${item.name}${i}`" :label="item.name" :value="item.name"
v-bind="item">
</el-option>
</el-select>
</el-form-item>
<!--操作按钮查询-->
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
<el-button type="primary" @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
<!--操作按钮重置-->
<el-form-item>
@ -82,7 +80,8 @@
}}</el-button>
</el-form-item>
<!-- 导出 -->
<a class='export' :href="exportExcel+exportExcelType+'?'+exportExcelCondition+'&token='+token">导出全部</a>
<a class='export'
:href="exportExcel + exportExcelType + '?' + exportExcelCondition + '&token=' + token">导出全部</a>
</el-form>
<el-card shadow="never" class="aui-card--fill" v-if="homeIsShow">
<div class="mod-demand__bsdemand">
@ -117,7 +116,8 @@
能力使用明细
</span> -->
<template v-if="detailFlag">
<el-checkbox v-model="checked" @change='chagneCheckbox' style="position: absolute;right: 150px;margin-top: -15px;">隐藏空数据</el-checkbox>
<el-checkbox v-model="checked" @change='chagneCheckbox'
style="position: absolute;right: 150px;margin-top: -15px;">隐藏空数据</el-checkbox>
<span class="detail-button" @click="goToDetail()">
明细
</span>
@ -168,13 +168,9 @@
</el-table>
<!--明细表-->
<el-table
:data="tableData"
:header-cell-style="{ textAlign: 'center',height:'96px' }"
:cell-style="{ textAlign: 'center' }"
style="width: 100%"
v-show="this.departmentId === 3 || this.departmentId === 4"
>
<el-table :data="tableData" :header-cell-style="{ textAlign: 'center', height: '96px' }"
:cell-style="{ textAlign: 'center' }" style="width: 100%"
v-show="this.departmentId === 3 || this.departmentId === 4">
<el-table-column v-if="this.departmentId === 3" prop="deptName" label="上架部门" min-width="100%">
</el-table-column>
<el-table-column v-if="this.departmentId === 4" prop="deptName" label="申请部门" min-width="100%">
@ -194,7 +190,7 @@
</template>
</el-table-column>
</el-table>
<div class="block">
<div class="block" v-if="!detailFlag">
<el-pagination @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper"
:total="total" :page-size="pageSize" :current-page="currentPage">
</el-pagination>
@ -233,7 +229,7 @@ import Template from '../devtools/template.vue'
// })
export default {
components: { componentServices, applicationResources, ComponentUsed, AbilityDetail, Template },
data () {
data() {
return {
checked: false,
departmentSelects: [],
@ -353,12 +349,12 @@ export default {
{ name: '应用资源', value: 5 },
{ name: '会议室', value: 6 }
], //
typeOptions1: [//
typeOptions1: [//
{ name: '智能算法', value: 1 },
{ name: '图层服务', value: 2 },
{ name: '开发组件', value: 3 },
{ name: '业务组件', value: 4 },
{ name: '应用资源', value: 5 },
{ name: '应用资源', value: 5 }
], //
detailFlag: false, //
@ -366,7 +362,7 @@ export default {
endDate: '' //
}
},
created () {
created() {
this.$http.get('/sys/dept/all').then(res => {
// console.log('=========>', res)
this.departmentSelects = []
@ -387,8 +383,12 @@ export default {
// const date2 = new Date(year2, month2, day2, 7)
// this.value1.unshift(date2)
},
mounted () {
mounted() {
// this.getFirstTree()
console.log('this.$route.query.Id;', this.$route.query.type)
if (this.$route.query.type === 'use') {
this.handleChose(4)
} else {
if (this.departmentId === 1) {
this.handleChose(3)
// this.departmentId = 1;
@ -397,12 +397,13 @@ export default {
// this.departmentId = 2;
} else {
}
}
},
computed: {
// ...mapState(['departmentSelects'])
},
methods: {
chagneCheckbox () {
chagneCheckbox() {
if (this.checked) {
this.tableData = this.tableDataClone.filter(val => val.count !== 0)
this.total = this.tableData.length
@ -411,7 +412,7 @@ export default {
this.total = this.tableData.length
}
},
closeModal () {
closeModal() {
this.detailsVisible = false
},
handleCurrentChange (val) {
@ -431,7 +432,7 @@ export default {
// this.getReleaseTree(val)
// }
},
getTreeName (data) {
getTreeName(data) {
this.$http
.get('/census/center/v3/treeList/', {
params: {
@ -461,7 +462,7 @@ export default {
// },
// --
getFirstTree (page) {
getFirstTree(page) {
if (this.examineStatus == '-1') {
this.status = ''
} else if (this.examineStatus == '0') {
@ -527,7 +528,7 @@ export default {
})
},
// 使-使
getSecondTree (page) {
getSecondTree(page) {
if (this.examineStatus == '-1') {
this.status = ''
} else if (this.examineStatus == '0') {
@ -593,7 +594,7 @@ export default {
})
},
//
detailClick (row) {
detailClick(row) {
this.detailParamss = {}
const applyNumber = row.applyNumber
if (this.departmentId == 3) { //
@ -635,7 +636,7 @@ export default {
}
},
//
getOneDetail (page) {
getOneDetail(page) {
var passAndReview = '' // ""
if (this.examineStatus == '-1') {
this.status = ''
@ -674,7 +675,7 @@ export default {
})
},
// 使 使
getTwoDetail (page) {
getTwoDetail(page) {
var passAndReview = '' // ""
if (this.examineStatus == '-1') {
this.status = ''
@ -711,7 +712,7 @@ export default {
})
})
},
getReleaseTree (page) {
getReleaseTree(page) {
this.$http
.get('/census/center/selectApplyDeptDetailTypeCountList/', {
params: {
@ -758,7 +759,7 @@ export default {
})
},
// 使
getUsedTree () {
getUsedTree() {
this.$http
.get('/census/center/v3/resourceReleaseDetails/', {
params: {
@ -772,7 +773,7 @@ export default {
this.tableData = res.data.data.list
})
},
handleClick (row) {
handleClick(row) {
if (this.choseId === 0) {
if (this.departmentId === 1) {
this.homeIsShow = false
@ -793,7 +794,7 @@ export default {
}
},
//
choseBtn (index) {
choseBtn(index) {
this.choseId = index
this.handleChose(1)
},
@ -809,9 +810,11 @@ export default {
// }
// },
// or使
handleChose (index) {
handleChose(index) {
this.checked = false
this.departmentId = index
this.currentPage=1
this.pageSize=10
if (index === 1) {
if (this.choseId === 0) {
if (!this.detailFlag) {
@ -851,26 +854,32 @@ export default {
}
},
//
handleSizeChange (val) {
handleSizeChange(val) {
console.log(`每页 ${val}`)
},
closeChild () {
closeChild() {
this.homeIsShow = true
this.servicesIsShow = false
this.handleCurrentChange(1)
},
closeChild2 () {
closeChild2() {
this.homeIsShow = true
this.UsedIsShow = false
this.handleCurrentChange(1)
},
closeApplication () {
closeApplication() {
this.homeIsShow = true
this.resourcesIsShow = false
this.handleCurrentChange(1)
},
changeIiem(){
this.currentPage=1
this.pageSize=10
},
// //////////
goToDetail () {
this.currentPage=1
this.pageSize=10
this.detailFlag = !this.detailFlag
if (this.departmentId === 1) {
this.handleChose(3)
@ -882,8 +891,10 @@ export default {
}
},
//
goToBack () {
goToBack() {
this.checked = false
this.currentPage=1,
this.pageSize=10,
// departmentId 13 24
this.detailFlag = !this.detailFlag
if (this.departmentId === 3) {
@ -896,10 +907,12 @@ export default {
}
},
//
getDataList () {
getDataList() {
if (this.value1 && this.value1.length > 0) {
this.startDate = this.handleTime(this.value1[0], 'yyyy-MM-dd')
this.endDate = this.handleTime(this.value1[1], 'yyyy-MM-dd')
// this.startDate = this.handleTime(this.value1[0], 'yyyy-MM-dd')
// this.endDate = this.handleTime(this.value1[1], 'yyyy-MM-dd')
this.startDate = this.value1[0]
this.endDate = this.value1[1]
} else {
this.startDate = ''
this.endDate = ''
@ -927,7 +940,7 @@ export default {
}
},
//
resetDataList () {
resetDataList() {
this.value1 = []
this.startDate = ''
this.endDate = ''
@ -965,7 +978,7 @@ export default {
}
},
//
handleTime (time, format) {
handleTime(time, format) {
if (time == null || time == undefined || time == '') {
return ''
}
@ -1159,24 +1172,16 @@ input::placeholder {
background: #fff;
border: 1px solid #dcdfe6;
color: #000;
color: #FFF;
background-color: #0058e1;
border-color: #0058e1;
text-decoration: none;
}
.export:hover {
border-color: #c5ddfd;
background-color: #ecf4fe;
color: #0058e1;
text-decoration: none;
background: #65a5f9;
border-color: #65a5f9;
color: #FFF;
}
.export:active {
border-color: #c5ddfd;
background-color: #ecf4fe;
color: #0058e1;
text-decoration: none;
}
.export:visited {
color: #fff;
text-decoration: none;
}
</style>

View File

@ -36,6 +36,7 @@
<div class="agreeOr" v-if="taskId">
<h3>审批</h3>
<div>
<el-button type="info" @click="entrustTask()" v-if='taskEntrustFlag && taskEntrustFlag2'>转办</el-button>
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('驳回')"
>驳回</el-button
@ -61,6 +62,7 @@
> -->
</div>
</div>
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<!-- 流程详情 -->
<ren-process-detail></ren-process-detail>
<el-dialog
@ -84,6 +86,7 @@
</template>
<script>
import RenTaskEntrust from '@/components/ren-process-running/src/ren-task-entrust'
import bus from '@/views/bus.js'
import ResourcesAndServices from './ResourcesAndServices.vue'
import debounce from 'lodash/debounce'
@ -93,7 +96,8 @@ export default {
//
// mixins: [processModule],
components: {
ResourcesAndServices
ResourcesAndServices,
RenTaskEntrust
},
props: {
// fromList: {
@ -105,6 +109,9 @@ export default {
},
data () {
return {
taskEntrustFlag: false,
taskEntrustFlag2: false,
renTaskEntrustVisible: false,
dialogVisible: false,
dialogType: '',
input: '',
@ -132,6 +139,35 @@ export default {
console.log('params=================>', this.$route, this.$route.params)
this.taskId = this.$route.params.taskId
this.dataForm.taskId = this.$route.params.taskId
this.$http.get('/sys/user/info').then(({ data: res }) => {
res.data.roleIdList.map(val => {
this.$http.get('/sys/role/' + val).then(role => {
if (role.data.data.name === '流程管理员') {
this.taskEntrustFlag = true
this.$http
.get(
'/act/task/getTaskVariables?taskId=' + this.$route.params.taskId + '&variableName=allowEntrust'
).then(entrust => {
console.log('11111111111111', entrust, this.dataForm)
if (entrust.data.data.allowEntrust === true) {
this.taskEntrustFlag2 = true
if (this.taskEntrustFlag && this.taskEntrustFlag2) {
this.$alert('当前审核部门为' + this.dataForm.deptName + ',该部门未配置审核人,请联系运维工程师配置完成后进行流程转办!', '流程提醒', {
confirmButtonText: '确定',
callback: action => {
// this.$message({
// type: 'info',
// message: `action: ${action}`
// })
}
})
}
}
})
}
})
})
})
this.init()
console.log('fromList', this.$router.currentRoute.params.businessKey)
// this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
@ -154,6 +190,15 @@ export default {
},
computed: {},
methods: {
entrustTask () {
this.renTaskEntrustVisible = true
this.$nextTick(() => {
this.$refs.renTaskEntrust.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskEntrust.callbacks = this.callbacks
this.$refs.renTaskEntrust.init()
})
},
getInfo (id) {
this.$http.get('/resourceMountApply/' + id).then(({ data: res }) => {
this.dataForm = res.data.resourceDTO

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua
* @Date: 2022-06-29 15:59:51
* @LastEditors: Light
* @LastEditTime: 2022-10-21 16:11:46
* @LastEditTime: 2022-10-27 16:04:01
* @Description: 告诉大家这是什么
-->
<!-- 流程业务表单 -->
@ -105,7 +105,7 @@
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<!-- 流程详情 -->
<ren-process-detail></ren-process-detail>
<ren-process-detail ref="renProcessMultiple"></ren-process-detail>
<el-dialog title="审批意见" :close-on-click-modal="false" :visible.sync="dialogVisible" width="30%"
:before-close="handleClose">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
@ -131,6 +131,7 @@ export default {
mixins: [processModule],
data () {
return {
callbacks: null,
taskEntrustFlag: false,
taskEntrustFlag2: false,
dialogVisible: false,

View File

@ -15,16 +15,28 @@
<el-button type="danger" @click="deleteHandle()">{{ $t('deleteBatch') }}</el-button>
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="title" :label="$t('notice.title')" header-align="center" align="center"></el-table-column>
<el-table-column prop="title" :label="$t('notice.title')" header-align="center" align="center" width="180">
</el-table-column>
<!-- 内容 prop="content"-->
<el-table-column :label="$t('news.content')" header-align="center" align="center">
<template slot-scope="scope">
<el-tooltip effect="dark" :content="scope.row.content" placement="top">
<span class="text-ellipsis">{{ scope.row.content }}</span>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="type" :label="$t('notice.type')" header-align="center" align="center" width="150">
<template slot-scope="scope">
{{ $getDictLabel("notice_type", scope.row.type) }}
</template>
</el-table-column>
<el-table-column prop="senderName" :label="$t('notice.senderName')" header-align="center" align="center" width="150"></el-table-column>
<el-table-column prop="senderDate" :label="$t('notice.senderDate')" header-align="center" align="center" width="170"></el-table-column>
<el-table-column prop="senderName" :label="$t('notice.senderName')" header-align="center" align="center"
width="150"></el-table-column>
<el-table-column prop="senderDate" :label="$t('notice.senderDate')" header-align="center" align="center"
width="170"></el-table-column>
<el-table-column prop="status" :label="$t('notice.status')" header-align="center" align="center" width="130">
<template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{ $t('notice.status0') }}</el-tag>
@ -33,19 +45,17 @@
</el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="scope.row.status === 1" type="text" size="small" @click="viewHandle(scope.row)">{{ $t('notice.view') }}</el-button>
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">
{{ $t('update') }}</el-button>
<el-button v-if="scope.row.status === 1" type="text" size="small" @click="viewHandle(scope.row)">{{
$t('notice.view')
}}</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</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"
<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>
<!-- 弹窗, 新增 / 修改 -->
@ -60,7 +70,7 @@ import AddOrUpdate from './notice-add-or-update'
import { addDynamicRoute } from '@/router'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/notice/page',
@ -77,7 +87,7 @@ export default {
AddOrUpdate
},
methods: {
viewHandle (row) {
viewHandle(row) {
//
const routeParams = {
routeName: `${this.$route.name}__${row.id}`,
@ -93,3 +103,13 @@ export default {
}
}
</script>
<style scoped>
.text-ellipsis {
/*1. 先强制一行内显示文本*/
white-space: nowrap;
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;
}
</style>

View File

@ -142,48 +142,7 @@ export default {
//
RankingData: [],
//
AnomalyStatisticsTable: [
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
},
{
name: '接口名称',
address: 'http://hhhhhhhhhhhhhhhhhhhh',
method: '调用方法',
type: '组件类型',
provider: '提供商名称',
state: '监控状态'
}
],
AnomalyStatisticsTable: [],
//
currentPage4: 1,
total: 0

View File

@ -1,53 +1,25 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input
v-model="dataForm.username"
placeholder="用户名"
clearable
></el-input>
<el-input v-model="dataForm.username" placeholder="用户名" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model="dataForm.real_name"
placeholder="真实姓名"
clearable
></el-input>
<el-input v-model="dataForm.real_name" placeholder="真实姓名" clearable></el-input>
</el-form-item>
<el-form-item>
<ren-select
v-model="dataForm.gender"
dict-type="gender"
:placeholder="$t('user.gender')"
></ren-select>
<ren-select v-model="dataForm.gender" dict-type="gender" :placeholder="$t('user.gender')"></ren-select>
</el-form-item>
<el-form-item>
<el-select
v-model="dataForm.postId"
:placeholder="$t('user.postIdList')"
clearable
>
<el-option
:label="data.postName"
v-for="data in postList"
:key="data.id"
:value="data.id"
>{{ data.postName }}</el-option
>
<el-select v-model="dataForm.postId" :placeholder="$t('user.postIdList')" clearable>
<el-option :label="data.postName" v-for="data in postList" :key="data.id" :value="data.id">{{ data.postName
}}</el-option>
</el-select>
</el-form-item>
<el-form-item>
<ren-dept-tree
v-model="dataForm.deptId"
:placeholder="$t('dept.title')"
:query="true"
></ren-dept-tree>
<ren-dept-tree v-model="dataForm.deptId" :placeholder="$t('dept.title')" :query="true" ref="renDeptTree">
</ren-dept-tree>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{
@ -55,97 +27,40 @@
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:save')"
type="primary"
@click="addOrUpdateHandle()"
>{{ $t('add') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:delete')"
type="danger"
@click="deleteHandle()"
>{{ $t('deleteBatch') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:export')"
type="info"
@click="exportHandle()"
>{{ $t('export') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:export')" type="info" @click="exportHandle()">{{ $t('export') }}
</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"
@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="username"
:label="$t('user.username')"
sortable="custom"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="realName"
label="真实姓名"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="deptName"
:label="$t('user.deptName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="email"
:label="$t('user.email')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="mobile"
:label="$t('user.mobile')"
sortable="custom"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="gender"
:label="$t('user.gender')"
sortable="custom"
header-align="center"
align="center"
>
<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="username" :label="$t('user.username')" sortable="custom" header-align="center"
align="center"></el-table-column>
<el-table-column prop="realName" label="真实姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="deptName" :label="$t('user.deptName')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="email" :label="$t('user.email')" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" :label="$t('user.mobile')" sortable="custom" header-align="center"
align="center"></el-table-column>
<el-table-column prop="gender" :label="$t('user.gender')" sortable="custom" header-align="center"
align="center">
<template slot-scope="scope">
{{ $getDictLabel('gender', scope.row.gender) }}
</template>
</el-table-column>
<el-table-column
prop="status"
:label="$t('user.status')"
sortable="custom"
header-align="center"
align="center"
>
<el-table-column prop="status" :label="$t('user.status')" sortable="custom" header-align="center"
align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{
$t('user.status0')
@ -155,55 +70,23 @@
}}</el-tag>
</template>
</el-table-column>
<el-table-column
prop="createDate"
:label="$t('user.createDate')"
sortable="custom"
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"
>
<el-table-column prop="createDate" :label="$t('user.createDate')" sortable="custom" 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
v-if="$hasPermission('sys:user:update')"
type="text"
size="small"
@click="addOrUpdateHandle(scope.row.id)"
>{{ $t('update') }}</el-button
>
<el-button
v-if="$hasPermission('sys:user:delete')"
type="text"
size="small"
@click="deleteHandle(scope.row.id)"
>{{ $t('delete') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:update')" type="text" size="small"
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:user:delete')" type="text" size="small"
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</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 :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>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
@ -214,7 +97,7 @@ import AddOrUpdate from './user-add-or-update'
import qs from 'qs'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/user/page',
@ -235,11 +118,19 @@ export default {
components: {
AddOrUpdate
},
created () {
created() {
this.getPostList()
},
methods: {
reset () {
reset() {
this.dataForm.username = ''
this.dataForm.real_name = ''
this.dataForm.deptId = ''
this.dataForm.postId = ''
this.dataForm.gender = ''
if (this.$refs.renDeptTree) {
this.$refs.renDeptTree.showDeptName = '';
}
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
@ -254,11 +145,6 @@ export default {
})
)
.then(({ data: res }) => {
this.dataForm.username = ''
this.dataForm.real_name = ''
this.dataForm.deptId = ''
this.dataForm.postId = ''
this.dataForm.gender = ''
if (res.code !== 0) {
this.dataList = []
this.total = 0
@ -279,7 +165,7 @@ export default {
this.dataListLoading = false
})
},
getPostList () {
getPostList() {
this.$http
.get('/sys/post/list')
.then(({ data: res }) => {
@ -288,7 +174,7 @@ export default {
}
this.postList = res.data
})
.catch(() => {})
.catch(() => { })
}
}
}

View File

@ -9,7 +9,7 @@
>
<div class="content">
<img class="img" :src="dataInfo.imgSrc" />
<div class="title">{{ title }}</div>
<div class="title">{{ '我的'+title }}</div>
<div class="flex-row-bottom">
<span class="num" :style="{ color: dataInfo.textColor }">{{
formatNum(dataInfo.num)
@ -90,7 +90,7 @@
</div>
<div class="more" @click="goPage(dataInfo.url)">查看更多 ></div>
</div>
<div class="list-box flex-row-center no-data" v-else>暂无数据</div>
<div class="list-box flex-row-center no-data" v-else>暂无{{title}}任务</div>
</div>
</template>
<script>

View File

@ -4,19 +4,19 @@
<div v-if="!noData" v-loading="loading">
<div class="no-box">
<div class="no no2">
<el-tooltip effect="dark" :content="no2Obj.name" placement="top">
<el-tooltip effect="dark" :content="no2Obj.name" placement="top" v-if="no2Obj.name">
<div class="name ellipsis" :style="{ color: colorObj[2] }">{{ no2Obj.name || '--' }}</div>
</el-tooltip>
<div class="count">{{ formatCount(no2Obj.count) }}</div>
</div>
<div class="no no1">
<el-tooltip effect="dark" :content="no1Obj.name" placement="top">
<el-tooltip effect="dark" :content="no1Obj.name" placement="top" v-if="no1Obj.name">
<div class="name ellipsis" :style="{ color: colorObj[1] }">{{ no1Obj.name || '--' }}</div>
</el-tooltip>
<div class="count">{{ formatCount(no1Obj.count) }}</div>
</div>
<div class="no no3">
<el-tooltip effect="dark" :content="no3Obj.name" placement="top">
<el-tooltip effect="dark" :content="no3Obj.name" placement="top" v-if="no3Obj.name">
<div class="name ellipsis" :style="{ color: colorObj[3] }">{{ no3Obj.name || '--' }}</div>
</el-tooltip>
@ -26,7 +26,7 @@
<div class="flex-row-between row-name" v-for="(data, i) in listInfo" :key="i">
<div class="left">
<div class="row-index">{{ i + 4 }}</div>
<el-tooltip effect="dark" :content="data.name" placement="top">
<el-tooltip effect="dark" :content="data.name" placement="top" v-if="data.name">
<div class="name-text ellipsis">{{ data.name || '--' }}</div>
</el-tooltip>
</div>

View File

@ -3,8 +3,8 @@
<!-- -->
<div class="flex-row-start top">
<div class="flex-row-start dept-left">
<dept-todo-view title="部门待办" v-loading="loadingToDo" :dataInfo="toToData"></dept-todo-view>
<dept-todo-view title="部门已办" v-loading="loadingHasToDo" :dataInfo="hasToDodoData"
<dept-todo-view title="待办" v-loading="loadingToDo" :dataInfo="toToData"></dept-todo-view>
<dept-todo-view title="已办" v-loading="loadingHasToDo" :dataInfo="hasToDodoData"
style="margin-left: 0"></dept-todo-view>
</div>
<div class="flex-row-start dept-chart-box">
@ -56,7 +56,7 @@ export default {
list: [],
type: 'todo',
// url: 'activiti-my-todo-task',
url: 'myAgent-CompetencyApplication',
url: 'myAgent-CompetencyApplication'
},
//
hasToDodoData: {
@ -69,7 +69,7 @@ export default {
num: 0,
list: [],
// url: 'activiti-my-join-task',
url: 'hasToDoTasks-CompetencyApplication',
url: 'hasToDoTasks-CompetencyApplication'
},
//
resourceData: [],
@ -103,43 +103,53 @@ export default {
//
getToDo () {
this.loadingToDo = true
const data = {
limit: 5,
page: 1
}
Apis.getToDoTask(data, res => {
// const data = {
// limit: 5,
// page: 1
// }
this.$http.get('/act/task/myToDoTaskPage?page=1&limit=5').then(res => {
this.loadingToDo = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----待办-------->', res.data)
this.toToData.list = res.data.data.records || []
this.toToData.list = res.data.data.list || []
this.toToData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingToDo = false
})
// Apis.getToDoTask(data, res => {
// this.loadingToDo = false
// if (res.data.code !== 0) {
// return this.$message.error(res.data.msg)
// }
// console.log('res------------>', res.data)
// this.toToData.list = res.data.data.records || []
// this.toToData.num = res.data.data.total || 0
// }, err => {
// this.$message.error(err)
// this.loadingToDo = false
// })
},
//
getHasToDo () {
const data = {
limit: 5,
page: 1
}
// const data = {
// limit: 5,
// page: 1
// }
this.loadingHasToDo = true
Apis.getHasToDoTask(data, res => {
this.$http.get('/act/his/getMyHandledInstancePage?page=1&limit=5').then(res => {
this.loadingHasToDo = false
if (res.data.code !== 0) {
return this.$message.error(res.data.msg)
}
console.log('res----已办-------->', res.data)
this.hasToDodoData.list = res.data.data.records || []
this.hasToDodoData.list = res.data.data.list || []
this.hasToDodoData.num = res.data.data.total || 0
}, err => {
this.$message.error(err)
this.loadingHasToDo = false
console.log('err-----已办------->', err)
})
// Apis.getHasToDoTask(data, res => {
// this.loadingHasToDo = false
// if (res.data.code !== 0) {
// return this.$message.error(res.data.msg)
// }
// console.log('res------------>', res.data)
// this.hasToDodoData.list = res.data.data.records || []
// this.hasToDodoData.num = res.data.data.total || 0
// }, err => {
// this.$message.error(err)
// this.loadingHasToDo = false
// console.log('err------------>', err)
// })
},
//
getShelvesTotal () {

View File

@ -2,18 +2,18 @@
* @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-13 21:31:09
* @LastEditTime: 2022-10-24 11:50:52
* @Description: 系统静态参数配置
*/
var _global = {}
var CONFIGITEM = {
// version: 'qingdao', //
version: 'xihaian', // 西
version: 'dev', // 西
// version: 'qingdao', //
// version: 'zhanTingDev', // dev (2022-09-13:)
// version: 'qingdao', //
//version: 'frp', // 穿
vNum: 'v0.8.7.2',
vNum: 'v0.8.14.2',
configData: {
//
qingdao: {
@ -27,8 +27,8 @@ var CONFIGITEM = {
backUrl: 'http://15.72.183.90:8001',
previewUrl: 'http://15.72.183.90:7008/',
//frontUrl: 'http://15.72.183.90:7008/document/#/devModelFile/',
//apiURL: 'http://15.72.183.90:8000/renren-admin',
// websocketURL: '15.72.183.90:8000/renren-admin',
apiURL: 'http://15.72.183.90:8000/renren-admin',
websocketURL: '15.72.183.90:8000/renren-admin',
// websocketURL: '192.168.124.233:8888/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',
@ -86,8 +86,8 @@ var CONFIGITEM = {
userPwd: '',
},
backUrl: 'http://localhost:8001',
previewUrl: 'http://192.168.124.236:9796/',
websocketURL: '192.168.124.233:8888/renren-admin',
previewUrl: 'http://192.168.124.243:9796/',
websocketURL: '192.168.124.243:8888/renren-admin',
// websocketURL: '10.18.1.99:8889/renren-admin',
POI_URL:
'http://15.72.178.129:8090/iserver/services/addressmatch-qingdaoPOI181015/restjsr/v1/address',

View File

@ -104,3 +104,8 @@
font-family: 'Alibaba PuHuiTi';
src: url('~@/assets/home/font/Alibaba-PuHuiTi-Light.otf');
}
/* 气泡提示框按钮居中 */
.ant-popover-inner-content .ant-popover-buttons {
text-align: center;
}

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian
* @Date: 2022-04-20 17:16:35
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 14:13:30
* @LastEditTime: 2022-10-26 17:57:52
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -99,14 +99,37 @@ export function getHls(params) {
}
// 西-- (10.134.135.92:9537)
let _cameraUrl = _global && _global.config && _global.config.camreaInfo && _global.config.camreaInfo.cameraUrl || '10.134.135.92:9537';
let _cameraUrl =
(_global &&
_global.config &&
_global.config.camreaInfo &&
_global.config.camreaInfo.cameraUrl) ||
'10.134.135.92:9537'
//-
export function getCameraInfoByAreaId(params) {
return axios.get(`http://${_cameraUrl}/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`,
return axios.get(
`http://${_cameraUrl}/data_service/getCamera/getCameraInfoByAreaId?areaId=${params.areaId}`,
config2
)
}
//-
export function getCameraByCondition(params) {
return axios.post(`http://${_cameraUrl}/data_service/getCamera/getCameraByCondition`, params, config2)
return axios.post(
`http://${_cameraUrl}/data_service/getCamera/getCameraByCondition`,
params,
config2
)
}
export function initiateMeet(data) {
// return request({
// url: '/enke/initiateMeet',
// method: 'post',
// data: data,
// })
return axios.post(
'http://10.134.135.92:8888/renren-admin/enke/initiateMeet',
data,
config2
)
}

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-23 09:37:58
* @LastEditors: Light
* @LastEditTime: 2022-10-26 10:35:36
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -103,6 +103,20 @@ export function getUserInfo(params) {
method: 'get',
})
}
export function initiateMeet(data) {
return request({
url: '/enke/initiateMeet',
method: 'post',
data: data,
})
}
export function getEnkeUsers(params) {
return request({
url: '/enke/getEnkeUsers',
method: 'get',
params: params,
})
}
//
export function ApplicationServe(data) {
@ -405,11 +419,14 @@ export function updateIntegrationServices(data) {
}
//
export function getCountByFuzzyQuery(params) {
export function getCountByFuzzyQuery(params, flag) {
return request({
url: '/resource/getCountByFuzzyQuery?keyWorld=' + params,
url:
'/resource/getCountByFuzzyQuery?keyWorld=' +
params +
'&nonChinese=' +
flag,
method: 'get',
params,
})
}
@ -493,3 +510,12 @@ export function getMaxApplyNum(number) {
method: 'get',
})
}
// -广-广GIS广
export function getGisByArea(data) {
return request({
url: '/resource/getSquareList',
method: 'post',
data,
})
}

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-03-29 17:48:03
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-07-15 16:42:22
* @LastEditors: Light
* @LastEditTime: 2022-10-25 09:37:05
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request'
@ -23,6 +23,13 @@ export async function socialLogin(data) {
})
}
export function getRole(params) {
return request({
url: '/sys/role/' + params,
method: 'get',
params,
})
}
export function getUserInfo(redict) {
//mock.js使dataaccessToken使mockheaders
// debugger
@ -30,8 +37,8 @@ export function getUserInfo(redict) {
url: '/sys/user/info',
method: 'get',
headers: {
REQUESTURI:redict
}
REQUESTURI: redict,
},
})
}
export function getDeptAll() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 KiB

View File

@ -16,6 +16,7 @@ const state = () => ({
username: '',
realName: '',
deptName: '',
deptId: '',
userId: '',
avatar: '',
role: 0, //
@ -28,6 +29,7 @@ const getters = {
role: (state) => state.role,
userId: (state) => state.userId,
deptName: (state) => state.deptName,
deptId: (state) => state.deptId,
}
const mutations = {
/**
@ -70,6 +72,9 @@ const mutations = {
setDeptName(state, name) {
state.deptName = name
},
setDeptId(state, name) {
state.deptId = name
},
/**
* @author chuzhixin 1204505056@qq.com
* @description 设置头像
@ -143,6 +148,7 @@ const actions = {
commit('setRole', res.data.data.roleIdList.length)
commit('setUserId', res.data.data.id)
commit('setDeptName', res.data.data.deptName)
commit('setDeptId', res.data.data.deptId)
// TODO
// let { username, avatar, roles, ability } = data
// if (username && roles && Array.isArray(roles)) {
@ -175,7 +181,7 @@ const actions = {
* @param {*} { commit, dispatch }
*/
async resetAll({ dispatch }) {
debugger
await dispatch('setAccessToken', '')
await dispatch('acl/setFull', false, {
root: true,

View File

@ -45,7 +45,6 @@ router.beforeEach(async (to, from, next) => {
})
console.log('验证白名单', routesWhiteList)
if (routesWhiteList.indexOf(to.path) !== -1) {
debugger
next()
} else {
//

View File

@ -109,7 +109,7 @@
break
case '资源申请量':
window.open(
window.SITE_CONFIG.backUrl + '/#/abilityStatistics-index',
window.SITE_CONFIG.backUrl + '/#/abilityStatistics-index?type=use',
'_blank'
)
break

View File

@ -262,6 +262,7 @@
center: ['50%', '40%'],
type: 'pie',
selectedMode: 'single',
silent: true,
radius: ['50%', '30%'],
color: ['#fe845e', '#6cc95a', '#02d1b0', '#1772ff', '#FAC858'],
top: '0',
@ -289,6 +290,7 @@
type: 'pie',
center: ['50%', '40%'],
radius: ['58%', '50%'],
silent: true,
itemStyle: {
normal: {
color: '#c2c7d6',

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-17 14:11:08
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 19:52:03
* @LastEditors: Light
* @LastEditTime: 2022-10-26 14:57:25
* @Description: 上架
-->
<template>
@ -95,7 +95,7 @@
disabled
v-model:value="val[attr.field]"
:showCount="true"
:maxlength="200"
:maxlength="1000"
:placeholder="'请填写' + attr.name"
v-else-if="attr.type == 'textArea'"
/>
@ -166,7 +166,7 @@
<a-textarea
v-model:value="val.note1"
:showCount="true"
:maxlength="200"
:maxlength="1000"
:placeholder="'请填写' + val.name"
v-else-if="val.type == 'textArea'"
/>
@ -270,7 +270,7 @@
v-else-if="item.type == 'textArea'"
v-model:value="item.note1"
:showCount="true"
:maxlength="200"
:maxlength="1000"
:placeholder="'请输入' + item.name"
@change="changeIiem(item.name, item.note1)"
/>
@ -1132,7 +1132,7 @@
</script>
<style></style>
<style lang="less" scoped>
.put-on-the-shelf {
.put-on-the-shelf {
height: 6.8rem;
overflow: scroll;
display: flex;
@ -1272,9 +1272,9 @@
& > div:nth-of-type(1) {
margin-top: 0;
}
}
}
.application-Area {
.application-Area {
width: 5.2rem;
display: grid;
margin-top: -0.05rem;
@ -1300,78 +1300,78 @@
background: #0087ff;
color: #fff;
}
}
}
:deep(.ant-image-img) {
:deep(.ant-image-img) {
width: 100%;
height: 100%;
object-fit: contain;
}
}
:deep(.ant-modal) {
:deep(.ant-modal) {
width: 9.6rem;
}
}
:deep(.ant-transfer-list) {
:deep(.ant-transfer-list) {
width: 39.5%;
height: 5.2rem;
}
}
:deep(.ant-transfer-operation) {
:deep(.ant-transfer-operation) {
flex-direction: row-reverse;
margin: 0 0.3rem;
}
}
:deep(.ant-btn) {
:deep(.ant-btn) {
width: 0.56rem;
height: 0.4rem;
border-radius: 0.04rem;
}
}
:deep(.ant-btn:first-child) {
:deep(.ant-btn:first-child) {
margin-left: 0.04rem;
}
}
:deep(.ant-modal-footer) {
:deep(.ant-modal-footer) {
border: 0;
}
}
:deep(.ant-modal-header) {
:deep(.ant-modal-header) {
border: 0;
}
}
:deep(.ant-modal-title) {
:deep(.ant-modal-title) {
line-height: 0.24rem;
font-size: 0.18rem;
color: #303133;
}
}
:deep(.ant-transfer-list-header) {
:deep(.ant-transfer-list-header) {
background: #f5f7fa;
}
}
:deep(.ant-transfer-list-header-selected) {
:deep(.ant-transfer-list-header-selected) {
display: flex;
width: 90%;
flex-direction: row-reverse;
justify-content: space-between;
align-items: center;
}
}
:deep(.ant-transfer-list-header-title) {
:deep(.ant-transfer-list-header-title) {
font-size: 0.16rem;
color: #303133;
font-weight: 400;
text-align: left;
}
:deep(.ant-transfer-list-header .ant-checkbox-wrapper) {
}
:deep(.ant-transfer-list-header .ant-checkbox-wrapper) {
display: none !important;
}
:deep(.ant-upload-list-item-name) {
}
:deep(.ant-upload-list-item-name) {
width: 1rem;
}
}
.del {
.del {
display: flex;
justify-content: flex-start;
align-items: center;
@ -1390,8 +1390,8 @@
div {
cursor: pointer;
}
}
.item {
}
.item {
position: relative;
span:first-child {
width: unset;
@ -1417,5 +1417,5 @@
bottom: -20px;
left: 110px;
}
}
}
</style>

View File

@ -1,6 +1,20 @@
<!-- 智能算法 -->
<template>
<div class="algorithm">
<div style="display: flex">
<div class="select">
<div class="top" @click="selectFlag = !selectFlag">
{{ typeName }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag">
<span class="light"></span>
<div @click="changeDeptType('全市')">全市</div>
<div @click="changeDeptType('市级')">市级</div>
<div @click="changeDeptType('区级')">区级</div>
<div @click="changeDeptType('企业')">企业</div>
</div>
</div>
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
@ -8,24 +22,17 @@
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
<div v-for="val in dictList" :key="val" @click="changeAreaFunction(val)">
{{ val }}
</div>
</div>
</div>
</div>
<div class="algorithm-class">
<div
v-for="(item, index) in dataList"
:key="`algorithm-${index}`"
class="algorithm-card"
>
<a-image
:src="algorithmCardPhoto(item.infoList, item)"
:width="525"
:height="275"
:fallback="imgSrc"
:preview="false"
></a-image>
<div v-for="(item, index) in dataList" :key="`algorithm-${index}`" class="algorithm-card">
<a-image :src="algorithmCardPhoto(item)" :width="525" :height="275" :fallback="imgSrc" :preview="false">
</a-image>
<a-tooltip>
<template #title>{{ item.name }}</template>
@ -39,81 +46,75 @@
</div>
</template>
<script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue'
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
getCategoryTreePage({
import { getCategoryTreePage } from '@/api/personalCenter'
import { getGisByArea } from '@/api/home'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
const deptType = ref(null)
const typeName = ref('全市')
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
const selectFlag = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
// if (val.dictLabel !== '') {
dictList.value.push(val.dictLabel)
}
// }
})
})
const params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '智能算法' }],
orderField: 'pin_top',
orderType: 'DESC',
})
const params = {
pageNum: 1,
pageSize: 9,
type: '组件服务',
}
const getList2 = (val) => {
type: '智能算法',
area: typeName2.value == '全部' ? '' : typeName2.value,
pageSize: 9 // 9
}
//
const changeAreaFunction = (val) => {
params.pageNum = 1;
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '智能算法' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '智能算法' },
{ attrType: '应用领域', attrValue: val },
]
}
params.area = typeName2.value == '全部' ? '' : typeName2.value;
selectFlag2.value = false
pageWithAttrsFunction()
}
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
let url = ref('')
const pageWithAttrsFunction = () => {
pageWithAttrs(params).then((res) => {
dataList.value = res.data.data.records
if (res.data.data.records.length < 9) {
}
let algorithmclassDom = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
let url = ref('')
const pageWithAttrsFunction = () => {
getGisByArea(params).then((res) => {
dataList.value = res.data.data.list
if (res.data.data.list.length < 9) {
dataLength.value = false
}
})
}
pageWithAttrsFunction()
//
const algorithmCardPhoto = (item) => {
let _arr = []
if(item.pic && typeof item.pic == 'string') {
_arr = JSON.parse(item.pic)
}
pageWithAttrsFunction()
//
const algorithmCardPhoto = (List, item) => {
let obj = List.filter((item) => item.attrType === '应用场景')[0]
if (obj && obj.attrValue != '') {
console.log(
item.name,
item.id,
obj.attrValue,
'----------------------------'
)
obj = JSON.parse(obj.attrValue)[0].img
}
return obj || ''
}
//
const detailFunction = (id) => {
let _img = _arr[0] && _arr[0].img || imgSrc.value;
console.log('_img------------>', _img);
return _img
}
//
const detailFunction = (id) => {
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
}
const algorithmFunction = (e) => {
}
const algorithmFunction = (e) => {
var scrollTop = e.currentTarget.scrollTop
var windowHeight = e.currentTarget.clientHeight
var scrollHeight = e.currentTarget.scrollHeight
@ -125,37 +126,92 @@
//
isNoMore.value = true
params.pageNum++
pageWithAttrs(params).then((res) => {
dataList.value.push(...res.data.data.records)
if (res.data.data.records.length < 9) {
getGisByArea(params).then((res) => {
dataList.value.push(...res.data.data.list)
if (res.data.data.list.length < 9) {
dataLength.value = false
}
})
} else {
isNoMore.value = false
}
}
}
onMounted(() => {
algorithmclass = document.querySelector('.algorithm-class')
//
const changeDeptType = (str) => {
if (str) {
if (algorithmclassDom) {
algorithmclassDom.scrollTop = 0;
}
switch (str) {
case '全市':
deptType.value = null
typeName.value = '全 市'
break
case '市级':
deptType.value = 2
typeName.value = '市 级'
break
case '区级':
deptType.value = 3
typeName.value = '区 级'
break
case '企业':
deptType.value = 4
typeName.value = '企 业'
break
}
params.pageNum = 1;
if(deptType.value !== null && deptType.value !== undefined) {
params.deptType = deptType.value;
}else {
if(Object.keys(params).includes('deptType')) {
delete params.deptType
}
}
}
selectFlag.value = false
getData(str)
}
const getData = (str) => {
getGisByArea(params).then((res) => {
const resData = res.data.data || {}
if (resData.list.length > 0 && resData.list.length < 9 && algorithmclassDom) {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
}
dataList.value = resData.list || []
nextTick(() => {
algorithmclassDom = document.querySelector('.algorithm-box')
if (str && algorithmclassDom) {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
}
})
})
}
onMounted(() => {
algorithmclassDom = document.querySelector('.algorithm-class')
if (dataLength.value) {
//
algorithmclass.addEventListener('scroll', algorithmFunction, true)
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
}
})
onBeforeUnmount(() => {
algorithmclass.removeEventListener('scroll', algorithmFunction, true)
})
})
onBeforeUnmount(() => {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
})
</script>
<style lang="less" scoped>
.algorithm {
.algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
@ -166,17 +222,18 @@
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background: url('~@/assets/capacitySquare/select-light1.png') no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
@ -185,6 +242,7 @@
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
@ -192,22 +250,24 @@
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background: url('~@/assets/capacitySquare/select-light2.png') no-repeat;
background-size: 100%;
}
& > div {
&>div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
&>div:nth-of-type(1) {
border: none;
}
}
}
.algorithm-class {
// margin-top: 0.6rem;
margin-bottom: 0.18rem;
@ -217,6 +277,7 @@
overflow: auto;
margin-left: 1.15rem;
margin-right: 0.15rem;
.algorithm-card {
height: 2.75rem;
width: 5.25rem;
@ -225,6 +286,7 @@
margin-bottom: 0.4rem;
margin-right: 0.65rem;
position: relative;
:deep(.ant-image) {
img {
margin-top: 0.15rem;
@ -233,13 +295,14 @@
margin-left: 0.1rem;
}
}
.algorithm-card-photo {
height: 100%;
width: 100%;
background: url('~@/assets/capacitySquare/algorithm-photo.jpg')
no-repeat;
background: url('~@/assets/capacitySquare/algorithm-photo.jpg') no-repeat;
background-size: 100%;
}
.algorithm-card-title {
position: absolute;
height: 0.6rem;
@ -250,12 +313,12 @@
font-family: alibaba;
bottom: 0.15rem;
padding-left: 0.22rem;
background: url('~@/assets/capacitySquare/algorithm-title-bg.png')
no-repeat;
background: url('~@/assets/capacitySquare/algorithm-title-bg.png') no-repeat;
background-size: 100%;
display: flex;
flex-direction: column;
justify-content: center;
span {
line-height: 0.24rem;
overflow: hidden;
@ -263,24 +326,28 @@
white-space: nowrap;
cursor: pointer;
}
span:last-child {
font-size: 0.14rem;
}
}
}
}
.algorithm-class::-webkit-scrollbar-track-piece {
background: #a5bcdb;
border-radius: 0.08rem;
}
.algorithm-class::-webkit-scrollbar-thumb {
height: 3.2rem;
background: linear-gradient(to bottom, #47d7f5, #3dc6e3);
}
.algorithm-class::-webkit-scrollbar {
height: 8.8rem;
width: 0.08rem;
border-radius: 0.08rem;
}
}
}
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-08-09 09:31:25
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-09-19 10:19:02
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-24 10:44:50
* @Description: 应用资源
-->
<template>
@ -74,9 +74,9 @@
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
// if (val.dictLabel !== '') {
dictList.value.push(val.dictLabel)
}
// }
})
})
let dom = null
@ -121,16 +121,19 @@
type: type.value,
area: area.value,
}).then((res) => {
if (res.data.data.length < 9) {
console.log('res---应用广场--------->', res);
if (res.data.data.total.length < 9) {
dom.removeEventListener('scroll', viewMonitor, true)
}
res.data.data.map((val) => {
// appList
res.data.data.appList.map((val) => {
if (!val.pic) {
val.pic = require('@/assets/capacitySquare/yyzy.jpg')
}
val.pic2 = require('@/assets/capacitySquare/yyzy.jpg')
})
data.list.push(...res.data.data)
data.list.push(...res.data.data.appList)
selectFlag.value = false
nextTick(() => {
dom = document.querySelector('.item-box')

View File

@ -1,6 +1,20 @@
<!-- 图层服务 -->
<template>
<div class="algorithm">
<div style="display: flex">
<div class="select">
<div class="top" @click="selectFlag = !selectFlag">
{{ typeName }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag">
<span class="light"></span>
<div @click="changeDeptType('全市')">全市</div>
<div @click="changeDeptType('市级')">市级</div>
<div @click="changeDeptType('区级')">区级</div>
<div @click="changeDeptType('企业')">企业</div>
</div>
</div>
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
@ -8,11 +22,16 @@
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
<div
v-for="val in dictList"
:key="val"
@click="changeAreaFunction(val)"
>
{{ val }}
</div>
</div>
</div>
</div>
<div class="algorithm-class">
<div
v-for="(item, index) in dataList"
@ -20,13 +39,12 @@
class="algorithm-card"
>
<a-image
:src="algorithmCardPhoto(item.infoList)"
:src="item.pic || imgSrc"
:width="525"
:height="275"
:fallback="imgSrc"
:preview="false"
></a-image>
<a-tooltip>
<template #title>{{ item.name }}</template>
<div class="algorithm-card-title" @click="detailFunction(item.id)">
@ -40,12 +58,15 @@
</template>
<script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue'
import { getGisByArea } from '@/api/home'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
const deptType = ref(null)
const typeName = ref('全市')
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
const selectFlag = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
@ -53,61 +74,101 @@
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
// if (val.dictLabel !== '') {
dictList.value.push(val.dictLabel)
}
// }
})
})
const params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '图层服务' }],
orderField: 'deptSort',
orderType: 'DESC',
pageNum: 1,
pageSize: 9,
type: '组件服务',
type: '图层服务',
area: typeName2.value == '全部' ? '' : typeName2.value,
pageSize: 9, // 9
}
const getList2 = (val) => {
//
const changeAreaFunction = (val) => {
params.pageNum = 1
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '图层服务' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '图层服务' },
{ attrType: '应用领域', attrValue: val },
]
}
params.area = typeName2.value == '全部' ? '' : typeName2.value
selectFlag2.value = false
pageWithAttrsFunction()
}
let algorithmclass = null
let algorithmclassDom = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo2.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
const pageWithAttrsFunction = () => {
pageWithAttrs(params).then((res) => {
dataList.value = res.data.data.records
if (res.data.data.records.length < 9) {
getGisByArea(params).then((res) => {
dataList.value = res.data.data.list
if (res.data.data.list.length < 9) {
dataLength.value = false
}
})
}
pageWithAttrsFunction()
//
const algorithmCardPhoto = (List) => {
let url = ''
List.map((item) => {
if (item.attrType === '图层缩略图') {
url = item.attrValue
}
})
return url
}
//
const detailFunction = (id) => {
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
}
const changeDeptType = (str) => {
if (str) {
if (algorithmclassDom) {
algorithmclassDom.scrollTop = 0
}
switch (str) {
case '全市':
deptType.value = null
typeName.value = '全 市'
break
case '市级':
deptType.value = 2
typeName.value = '市 级'
break
case '区级':
deptType.value = 3
typeName.value = '区 级'
break
case '企业':
deptType.value = 4
typeName.value = '企 业'
break
}
params.pageNum = 1
if (deptType.value !== null && deptType.value !== undefined) {
params.deptType = deptType.value
} else {
if (Object.keys(params).includes('deptType')) {
delete params.deptType
}
}
}
selectFlag.value = false
getData(str)
}
const getData = (str) => {
getGisByArea(params).then((res) => {
const resData = res.data.data || {}
if (
resData.list.length > 0 &&
resData.list.length < 9 &&
algorithmclassDom
) {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
}
dataList.value = resData.list || []
nextTick(() => {
algorithmclassDom = document.querySelector('.algorithm-box')
if (str && algorithmclassDom) {
algorithmclassDom.removeEventListener(
'scroll',
algorithmFunction,
true
)
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
}
})
})
}
const layerFunction = (e) => {
var scrollTop = e.currentTarget.scrollTop
var windowHeight = e.currentTarget.clientHeight
@ -120,9 +181,9 @@
//
isNoMore.value = true
params.pageNum++
pageWithAttrs(params).then((res) => {
dataList.value.push(...res.data.data.records)
if (res.data.data.records.length < 9) {
getGisByArea(params).then((res) => {
dataList.value.push(...res.data.data.list)
if (res.data.data.list.length < 9) {
dataLength.value = false
}
})
@ -131,17 +192,16 @@
}
}
onMounted(() => {
algorithmclass = document.querySelector('.algorithm-class')
algorithmclassDom = document.querySelector('.algorithm-class')
if (dataLength.value) {
//
algorithmclass.addEventListener('scroll', layerFunction, true)
algorithmclassDom.addEventListener('scroll', layerFunction, true)
}
})
onBeforeUnmount(() => {
algorithmclass.removeEventListener('scroll', layerFunction, true)
algorithmclassDom.removeEventListener('scroll', layerFunction, true)
})
</script>
<style lang="less" scoped>
.algorithm {
.select {

File diff suppressed because it is too large Load Diff

View File

@ -811,10 +811,10 @@
const handleBlur = () => {
console.log('blur')
}
const arrId = []
const handleFocus = () => {
console.log('focus')
let arrId = []
for (var valueIndex of systemOptions2.value) {
console.log('focus', systemOptions2.value, systemOptions.value)
for (let valueIndex of systemOptions2.value) {
if (arrId.indexOf(valueIndex['value']) == -1) {
arrId.push(valueIndex['value'])
systemOptions.value.push(valueIndex)

View File

@ -1,8 +1,11 @@
<template>
<div class="home-header" :class="[
<div
class="home-header"
:class="[
select !== 'home' || scrollTop > 500 ? 'white' : '',
props.showView === 'algorithm-details' ? '' : '',
]">
]"
>
<div class="name" @click="goToHome">
<div class="name-bg" v-if="!itShowXiHaiAn"></div>
<div class="name-bg-xihaian" v-else></div>
@ -11,26 +14,52 @@
<p>(United Capacity System)</p>
</div>
</div>
<div v-for="item in navList" :key="item.key" @click="jumpPage(item)" class="nav"
:class="item.key == select ? 'select' : ''">
<div
v-for="item in navList"
:key="item.key"
@click="jumpPage(item)"
class="nav"
:class="item.key == select ? 'select' : ''"
>
{{ item.name }}
</div>
<!-- 购物车 -->
<a-badge :count="sgcNum">
<svg t="1650455446850" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="2069" width="0.4rem" height="0.4rem" @click="goToSgc">
<svg
t="1650455446850"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2069"
width="0.4rem"
height="0.4rem"
@click="goToSgc"
>
<path
d="M384 832v85.333333h-85.333333v-85.333333h85.333333z m405.333333 0v85.333333h-85.333333v-85.333333h85.333333zM240.32 185.002667l24.149333 140.928h633.173334L835.285333 746.666667h-563.626666l-85.333334-497.685334H94.485333v-64h145.834667z m583.104 204.928H275.434667L325.632 682.666667h454.464l43.328-292.736z"
:fill="props.showView === 'algorithm-details' ? '#1296db' : '#1296db'" p-id="2070"></path>
:fill="props.showView === 'algorithm-details' ? '#1296db' : '#1296db'"
p-id="2070"
></path>
</svg>
</a-badge>
<a-badge :count="mynoticeNum" style="margin-left: 0.2rem">
<!-- 消息提醒 -->
<svg t="1654051054113" class="icon2" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="2187" width="0.35rem" height="0.35rem">
<svg
t="1654051054113"
class="icon2"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2187"
width="0.35rem"
height="0.35rem"
>
<path
d="M544 161.536a330.666667 330.666667 0 0 1 298.666667 329.130667h-0.341334c0.213333 1.493333 0.341333 2.986667 0.341334 4.565333v219.434667h39.68a32 32 0 0 1 0 64h-212.053334a160 160 0 0 1-316.586666 0H141.909333a32 32 0 1 1 0-64h39.424v-219.434667c0-1.578667 0.128-3.072 0.341334-4.565333H181.333333a330.666667 330.666667 0 0 1 298.666667-329.130667V128a32 32 0 1 1 64 0v33.536z m-298.666667 553.130667h533.333334v-219.434667c0-1.578667 0.128-3.072 0.341333-4.565333h-0.341333a266.666667 266.666667 0 1 0-533.333334 0h-0.341333c0.213333 1.493333 0.341333 2.986667 0.341333 4.565333v219.434667z m359.765334 64H418.901333a96 96 0 0 0 186.197334 0z"
:fill="props.showView === 'algorithm-details' ? '#1296db' : '#1296db'" p-id="2188"></path>
:fill="props.showView === 'algorithm-details' ? '#1296db' : '#1296db'"
p-id="2188"
></path>
</svg>
<!-- <a-avatar shape="square" size="large" /> -->
</a-badge>
@ -59,12 +88,19 @@
<template #title>
<span>{{ user.realName }}</span>
</template>
<span class="name" @click="jumpPage({ name: '个人中心', key: 'personalCenter' })">
<span
class="name"
@click="jumpPage({ name: '个人中心', key: 'personalCenter' })"
>
{{ user.realName }}
</span>
</a-tooltip>
<span @click="logout" class="out">退出</span>
<i @click="jumpPage({ name: '后台管理', key: 'houtaiguanli' })" class="iconTo" v-show="backFlag"></i>
<i
@click="jumpPage({ name: '后台管理', key: 'houtaiguanli' })"
class="iconTo"
v-show="backFlag"
></i>
<!-- <i class="img1" @click="jumpWaibu"></i> -->
</div>
<div class="info1">
@ -73,49 +109,54 @@
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount, defineProps } from 'vue'
import { getUserInfo } from '@/api/user'
import { recordRoute } from '@/config'
import { useRoute, useRouter } from 'vue-router'
import { mynotice } from '@/api/home'
import { useStore } from 'vuex'
import { getSgcTotal } from '@/api/home'
import Cookies from 'js-cookie'
import mybus from '@/myplugins/mybus'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { message } from 'ant-design-vue'
import { ref, onMounted, onBeforeUnmount, defineProps } from 'vue'
import { getUserInfo, getRole } from '@/api/user'
import { recordRoute } from '@/config'
import { useRoute, useRouter } from 'vue-router'
import { mynotice } from '@/api/home'
import { useStore } from 'vuex'
import { getSgcTotal } from '@/api/home'
import Cookies from 'js-cookie'
import mybus from '@/myplugins/mybus'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { message } from 'ant-design-vue'
const store = useStore()
const router = useRouter()
const route = useRoute()
const itShowXiHaiAn = ref(whoShow.itShowXiHaiAn)
const store = useStore()
const router = useRouter()
const route = useRoute()
const itShowXiHaiAn = ref(whoShow.itShowXiHaiAn)
//
const user = ref({
//
const user = ref({
username: store.getters['user/username'],
realName: store.getters['user/realName'],
})
const select = ref(router.currentRoute.value.name)
const mynoticeFlag = ref(false)
const mynoticeData = ref([])
const navList = ref(navListManagement.navList)
const backFlag = ref(true)
getUserInfo().then((res) => {
if (
res.data.data.roleIdList.length == 0 &&
res.data.data.superAdmin === 0
) {
backFlag.value = false
})
const select = ref(router.currentRoute.value.name)
const mynoticeFlag = ref(false)
const mynoticeData = ref([])
const navList = ref(navListManagement.navList)
const backFlag = ref(false)
getUserInfo().then((res) => {
if(res.data.data.superAdmin =='1'){
backFlag.value = true
} else {
res.data.data.roleIdList.map((val) => {
getRole(val).then((role) => {
if (role.data.data.name === '后台管理员') {
backFlag.value = true
}
})
console.log('navList------------>', navList)
})
})
}
})
console.log('navList------------>', navList)
const props = defineProps({
const props = defineProps({
showView: { type: String, default: '' },
})
})
// 退
const logout = async () => {
// 退
const logout = async () => {
await store.dispatch('user/logout')
window.sessionStorage.setItem('visits', JSON.stringify([]))
// 西
@ -127,26 +168,24 @@ const logout = async () => {
router.push('/login')
}
}
}
//
const goToHome = () => {
}
//
const goToHome = () => {
// 西
if (itShowXiHaiAn.value) {
if (
!xhaHasPermissionUser.list.includes(user.value.username)
) {
if (!xhaHasPermissionUser.list.includes(user.value.username)) {
return message.warn('暂无权限')
}
}
router.push({
path: '/home',
})
}
const jumpWaibu=()=>{
window.open('http://15.72.177.175:18460/analystrunner/tonglan', "_blank");
}
//
const jumpPage = (item) => {
}
const jumpWaibu = () => {
window.open('http://15.72.177.175:18460/analystrunner/tonglan', '_blank')
}
//
const jumpPage = (item) => {
// 西
if (itShowXiHaiAn.value) {
let _arr = ['共享门户', '能力云图', '能力统计', '需求中心', '赋能案例']
@ -232,50 +271,50 @@ const jumpPage = (item) => {
router.push('/home')
break
}
}
const scrollTop = ref(0)
window.onscroll = function () {
}
const scrollTop = ref(0)
window.onscroll = function () {
//
//scrollTop
scrollTop.value =
document.documentElement.scrollTop || document.body.scrollTop
// console.log('' + scrollTop.value)
}
mybus.on('getSgcNum', () => {
}
mybus.on('getSgcNum', () => {
getSgcTotal().then((res) => {
sgcNum.value = res.data.data.count
// console.log('========================>', res.data.data.count)
})
})
})
const sgcNum = ref(0)
const goToSgc = () => {
const sgcNum = ref(0)
const goToSgc = () => {
window.sessionStorage.setItem('type', JSON.stringify('PurchaseVehicle'))
router.push('/personalCenter')
}
const mynoticeNum = ref(0)
//
const getMynotice = () => {
}
const mynoticeNum = ref(0)
//
const getMynotice = () => {
mynotice({ page: 1, limit: 3, readStatus: 0 }).then((res) => {
// console.log('', res.data.data)
mynoticeNum.value = res.data.data.total
mynoticeData.value = res.data.data.list
})
}
const goToView = () => {
}
const goToView = () => {
router.push({
path: '/mynoticeView',
})
}
// const read = (item) => {
// mynoticeRead(item.id).then((res) => {
// console.log('', res)
// getMynotice()
// })
// }
// -- cookie
}
// const read = (item) => {
// mynoticeRead(item.id).then((res) => {
// console.log('', res)
// getMynotice()
// })
// }
// -- cookie
onMounted(() => {
onMounted(() => {
getSgcTotal().then((res) => {
// console.log('========================>', res.data.data.count)
sgcNum.value = res.data.data.count
@ -309,19 +348,19 @@ onMounted(() => {
mybus.on('getMynotice', () => {
getMynotice()
})
})
onBeforeUnmount(() => {
})
onBeforeUnmount(() => {
mybus.off('getSgcNum')
mybus.off('getMynotice')
})
})
</script>
<style lang="less" scoped>
@font-face {
@font-face {
font-family: 'header-typeface';
src: url('~@/assets/newHome/font/header-typeface.ttf');
}
}
.home-header {
.home-header {
height: 0.64rem;
width: 100%;
max-width: 1920px;
@ -358,7 +397,8 @@ onBeforeUnmount(() => {
.name-bg-xihaian {
height: 0.6rem;
width: 0.6rem;
background: url('~@/assets/newHome/newHome-title-bg-xihaian.png') no-repeat;
background: url('~@/assets/newHome/newHome-title-bg-xihaian.png')
no-repeat;
background-size: 100%;
margin-right: 0.15rem;
}
@ -397,7 +437,7 @@ onBeforeUnmount(() => {
.info1 {
margin-left: 0.1rem;
display: flex;
.img1{
.img1 {
height: 0.3rem;
width: 1.4rem;
margin-left: 0.1rem;
@ -456,9 +496,9 @@ onBeforeUnmount(() => {
cursor: pointer;
}
}
}
}
.white {
.white {
background-color: #fff;
box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.1);
@ -491,13 +531,15 @@ onBeforeUnmount(() => {
color: #000;
}
}
}
}
.blue {
.blue {
position: absolute;
background: linear-gradient(to right,
background: linear-gradient(
to right,
rgba(15, 90, 253, 0.8),
rgba(36, 25, 248, 0.8));
rgba(36, 25, 248, 0.8)
);
.name {
color: #fff;
@ -517,9 +559,9 @@ onBeforeUnmount(() => {
color: #fff;
}
}
}
}
.mynotice {
.mynotice {
width: 4rem;
height: 3rem;
background: #eee;
@ -536,19 +578,18 @@ onBeforeUnmount(() => {
color: #000;
font-size: 0.16rem;
}
}
}
.mynotice::-webkit-scrollbar {
.mynotice::-webkit-scrollbar {
display: none;
}
}
:deep(.ant-list-item) {
:deep(.ant-list-item) {
border-bottom: 0.01rem solid #ccc;
padding: 0.1rem;
}
:deep(.ant-list-item-meta-title) {
}
:deep(.ant-list-item-meta-title) {
// display: flex;
// justify-content: space-around;
// align-items: center;
@ -574,18 +615,18 @@ onBeforeUnmount(() => {
font-size: 0.1rem;
}
}
}
}
.iconTo {
.iconTo {
display: block;
width: 0.35rem;
height: 0.35rem;
background: url('~@/assets/newHome/iconTo.png') no-repeat;
cursor: pointer;
}
}
</style>
<style>
html::-webkit-scrollbar {
html::-webkit-scrollbar {
display: none;
}
}
</style>

View File

@ -230,12 +230,7 @@
</span>
</template>
</div>
<div
v-if="
selectCardsname === '打包模式'
"
class="label-content1"
>
<div v-if="selectCardsname === '打包模式'" class="label-content1">
发布时间
<template v-if="item.createDate">
<span>
@ -300,11 +295,13 @@
>
申请量{{ item.applyCount || 0 }}
</div>
<!-- 青岛不展示数据量 -->
<div
v-if="
selectCardsname === '数据资源' &&
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景'
selectCardsname !== '赋能场景' &&
whoShow1.itShowXiHaiAn
"
>
数据量{{ item.sjlCount || 0 }}

View File

@ -117,6 +117,7 @@
import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router'
import { UpOutlined, DownOutlined } from '@ant-design/icons-vue'
import { useStore } from 'vuex'
export default defineComponent({
setup() {
const selectedKeys = ref([])
@ -126,6 +127,12 @@
children: 'children',
title: 'name',
}
const store = useStore()
//
const user = ref({
deptName: store.getters['user/deptName'],
deptId: store.getters['user/deptId'],
})
const showKey = ref(0)
const treeData = ref([])
const init = () => {
@ -138,7 +145,7 @@
if (select === '123') {
select = ''
}
// debugger
console.log(
'获取url中的select=====================>',
router.currentRoute.value.query.select
@ -177,8 +184,34 @@
const sortArr = ['全部能力目录', '市级', '区级', '企业', '其他']
treeData.value.sort((a, b) => {
return sortArr.indexOf(a.key) - sortArr.indexOf(b.key)
})
let deptId=user.value.deptId
treeData.value.forEach((child) => {
let childern=child.children
childern.forEach((childs) => {//
if(childs.key==deptId ){
childs.show=true
child.show=true
mybus.emit('paramsGetResources', [childs.key])
selectId.value =childs.key
}
if(childs.children && childs.children.length>0){//
let qu=childs.children
qu.forEach((qu) => {
if(qu.key==deptId ){
qu.show=true
childs.show=true
child.show=true
mybus.emit('paramsGetResources', [qu.key])
selectId.value = qu.key
}
})
}
})
})
console.log('左侧树结构数据======================>', treeData.value)
showKey.value++
})
}
@ -188,6 +221,7 @@
})
// children
const generateChildren = (val, obj) => {
if (val.dataList.length > 0) {
val.dataList.forEach((child) => {
let children = {
@ -197,12 +231,14 @@
total: child.deptCount,
key: child.deptId,
}
obj.children.push(children)
})
}
}
//
const generateChildren2 = (val, obj) => {
if (val.dataList.length > 0) {
val.dataList.forEach((dis) => {
let children = {
@ -222,6 +258,7 @@
select: false,
key: child.deptId,
}
children.children.push(children2)
})
}

File diff suppressed because it is too large Load Diff

View File

@ -267,9 +267,12 @@
})
window.open(newpage.href, '_blank')
} else if (data === '资源下架') {
window.sessionStorage.setItem('type', JSON.stringify('PurchaseVehicle'))
window.sessionStorage.setItem('type', JSON.stringify('apply'))
const newpage = router.resolve({
path: '/personalCenter',
query: {
tabTypeName: '能力上架'
}
})
window.location.href = newpage.href
}

View File

@ -8,40 +8,74 @@
<div class="bottom">
<div class="item">
<div class="zj">组件服务</div>
<div class="name" v-for="(item, index) in zjList.slice(0, 5)" :key="item.name"
:class="index == 4 ? 'name-last' : ''" @click="selectOne1(item.name)">
<div
class="name"
v-for="(item, index) in zjList.slice(0, 5)"
:key="item.name"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne1(item.name)"
>
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('组件服务')">查看更多</div>
</div>
<div class="item">
<div class="yy">应用资源</div>
<div class="name" v-for="(item, index) in yyList.slice(0, 5)" :key="item.name"
:class="index == 4 ? 'name-last' : ''" @click="selectOne11(item.name)">
<div
class="name"
v-for="(item, index) in yyList.slice(0, 5)"
:key="item.name"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne11(item.name)"
>
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('应用资源')">查看更多</div>
</div>
<div class="item">
<div class="jc">基础设施</div>
<div class="name" v-for="(item, index) in jcList.slice(0, 5)" :key="item.name"
:class="index == 2 ? 'name-last' : ''" @click="selectOne2(item.name)">
{{ item.name + '-' + item.num + '项' }}
<div
class="name"
v-for="(item, index) in jcList.slice(0, 5)"
:key="item.name"
:class="index == 2 ? 'name-last' : ''"
@click="selectOne2(item.name)"
>
{{
item.name +
'-' +
item.num +
(item.name == '会客厅'
? '间'
: item.name == '视频会议'
? '个'
: '项')
}}
</div>
<div class="btn" @click="jumpPage('基础设施')">查看更多</div>
</div>
<div class="item">
<div class="sj">数据资源</div>
<div class="name" v-for="(item, index) in sjList" :key="item.id" :class="index == 4 ? 'name-last' : ''"
@click="selectOne3(item.name)">
<div
class="name"
v-for="(item, index) in sjList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne3(item.name)"
>
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('数据资源')">查看更多</div>
</div>
<div class="item">
<div class="zs">知识库</div>
<div class="name" v-for="(item, index) in zsList" :key="item.id" :class="index == 4 ? 'name-last' : ''"
@click="openHref(item)">
<div
class="name"
v-for="(item, index) in zsList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="openHref(item)"
>
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('知识库')">查看更多</div>
@ -51,29 +85,29 @@
</div>
</template>
<script setup>
import {
import {
pageWithAttrs,
getDataResource,
selectInfrastructureList,
selectCollectComponentList,
selectCollectResourceList
} from '@/api/home.js'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
// const jcList = ref([])
const paramsGetResources = {
selectCollectResourceList,
} from '@/api/home.js'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
// const jcList = ref([])
const paramsGetResources = {
districtId: '',
pageNum: 1,
pageSize: 5,
@ -82,19 +116,19 @@ const paramsGetResources = {
infoList: [],
orderField: 'total', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const interfaceSuccess = ref(0)
const object = reactive({
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const interfaceSuccess = ref(0)
const object = reactive({
yyNum: '',
zjNum: '',
jcNum: '',
sjNum: '',
zsNum: '',
})
const getAppResources = (type, obj) => {
})
const getAppResources = (type, obj) => {
paramsGetResources.type = type
if (type === '数据资源' && !whoShow1.value.itShowBaoTou) {
getDataResource({
@ -137,7 +171,7 @@ const getAppResources = (type, obj) => {
if (type == '基础设施') {
jcList.value = []
selectInfrastructureList().then((res) => {
console.log('基础设施------res------>', res);
console.log('基础设施------res------>', res)
for (const key in res.data.data) {
if (whoShow1.value.itShowXiHaiAn) {
if (key === '视频资源') {
@ -146,8 +180,7 @@ const getAppResources = (type, obj) => {
num: res.data.data[key],
})
}
}
else {
} else {
jcList.value.push({
name: key,
num: res.data.data[key],
@ -184,25 +217,23 @@ const getAppResources = (type, obj) => {
})
}
})
}
else if (type == '组件服务') {
} else if (type == '组件服务') {
zjList.value = []
selectCollectComponentList().then((res) => {
console.log('组件服务----res-------->', res);
console.log('组件服务----res-------->', res)
for (const key in res.data.data) {
console.log('key------------>', key);
console.log('key------------>', key)
zjList.value.push({
name: key,
num: res.data.data[key],
})
}
console.log('zjList------------>', zjList);
console.log('zjList------------>', zjList)
})
}
else if (type == '应用资源') {
} else if (type == '应用资源') {
yyList.value = []
selectCollectResourceList().then((res) => {
console.log('应用资源---res--------->', res);
console.log('应用资源---res--------->', res)
for (const key in res.data.data) {
yyList.value.push({
name: key,
@ -210,8 +241,7 @@ const getAppResources = (type, obj) => {
})
}
})
}
else {
} else {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('object个数======>', type)
obj.value = res.data.data.records
@ -232,10 +262,10 @@ const getAppResources = (type, obj) => {
})
}
}
}
}
// todo
const getSoldierData = (name) => {
// todo
const getSoldierData = (name) => {
let _params = {
type: name,
page: 1,
@ -254,9 +284,9 @@ const getSoldierData = (name) => {
reject(err)
})
})
}
}
const openHref = (item) => {
const openHref = (item) => {
console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo')
browsingInsert({ resourceId: item.id }).then((res) => {
@ -274,17 +304,17 @@ const openHref = (item) => {
})
}
window.open(item.link)
}
const assignmentMethod = (type, res) => {
}
const assignmentMethod = (type, res) => {
object[type] = res.data.data.total
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
function jumpPage(type) {
function jumpPage(type) {
// store
store.commit('home/selectCardsData', {
selectCardsnum: type,
@ -300,8 +330,8 @@ function jumpPage(type) {
select: type,
},
})
}
const selectOne = (id) => {
}
const selectOne = (id) => {
console.log('点击===============》', id)
router.push({
path: '/details',
@ -309,8 +339,8 @@ const selectOne = (id) => {
id: id,
},
})
}
const selectOne1 = (name) => {
}
const selectOne1 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
@ -318,8 +348,8 @@ const selectOne1 = (name) => {
select: '组件服务',
},
})
}
const selectOne11 = (name) => {
}
const selectOne11 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
@ -327,15 +357,15 @@ const selectOne11 = (name) => {
select: '应用资源',
},
})
}
const selectOne2 = (name) => {
let names=''
if(name ==='云资源'){
names='政务云资源'
} else if(name ==='会客厅'){
names='城市云脑会客厅'
}else{
names=name
}
const selectOne2 = (name) => {
let names = ''
if (name === '云资源') {
names = '政务云资源'
} else if (name === '会客厅') {
names = '城市云脑会客厅'
} else {
names = name
}
router.push({
path: '/DetailsPageconetent',
@ -344,8 +374,8 @@ const selectOne2 = (name) => {
select: '基础设施',
},
})
}
const selectOne3 = (name) => {
}
const selectOne3 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
@ -354,10 +384,10 @@ const selectOne3 = (name) => {
select: '数据资源',
},
})
}
}
</script>
<style lang="less" scoped>
.capability-convergence {
.capability-convergence {
height: 7.2rem;
background: url('~@/assets/newHome/Convergence-bg.png') no-repeat;
background-size: 100%;
@ -482,5 +512,5 @@ const selectOne3 = (name) => {
}
}
}
}
}
</style>

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-07-12 09:42:44
* @LastEditors: hisense.liangjunhua
* @LastEditTime: 2022-08-04 10:41:06
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-26 18:15:01
* @Description:我的申请 能力申请 查看详情
-->
<template>
@ -52,29 +52,47 @@
<span class="img"></span>
<span>{{ item.name }}</span>
</div>
<div style="
<div
style="
display: flex;
justify-content: space-between;
align-items: center;
">
"
>
<div class="oddNumbers">子单号{{ item.instanceId }}</div>
<div style="display: flex; align-items: center">
<a-button type="primary" @click="modify(props.refObj.id, item)" v-if="item.backToFirst">
<a-button
type="primary"
@click="modify(props.refObj.id, item)"
v-if="item.backToFirst"
>
修改
</a-button>
<a-popconfirm class="aaa" v-if="!item.ended" title="是否撤回此流程?" ok-text="" cancel-text=""
@confirm="endThis(item.instanceId)" @cancel="cancel">
<a-popconfirm
class="aaa"
v-if="!item.ended"
title="是否撤回此流程?"
ok-text="是"
cancel-text="否"
@confirm="endThis(item.instanceId)"
@cancel="cancel"
>
<a-button type="primary" danger style="margin-left: 10px">
撤回申请
</a-button>
</a-popconfirm>
</div>
</div>
<div class="box" v-if="item.list.length > 0">
<div class="ability" v-for="val in item.list" :key="val.id"
:class="item.approveStatus === '通过' ? 'clickCursor' : ''">
<div class="left" :class="
<div
class="ability"
v-for="val in item.list"
:key="val.id"
:class="item.approveStatus === '通过' ? 'clickCursor' : ''"
>
<div
class="left"
:class="
val.type == '应用资源'
? 'yyzy'
: val.infoList.filter(
@ -94,7 +112,8 @@
)[0].attrValue == '业务组件'
? 'ywzj'
: 'yyzy'
"></div>
"
></div>
<div class="right">
<div class="ability-top">
<div class="name">
@ -126,6 +145,13 @@
</div>
</div>
<div></div>
<a-button
type="primary"
v-if="item.approveStatus === '通过'"
@click.stop="switchFunction(item)"
>
查看详情
</a-button>
<!-- <div class="btn" v-if="val.type == '组件服务'">技术文档</div> -->
</div>
<div class="ability-bottom">
@ -134,17 +160,19 @@
申请结果{{
item.ended ? item.approveStatus || '审核完成' : '审核中'
}}
<a-button v-if="
<a-button
v-if="
item.approveStatus === '通过' &&
val.infoList.filter(
(item) => item.attrType == '上传附件'
)[0]
" @click.stop="downloadFile(item, '附件下载')" class="DownloadAttachment">
"
@click.stop="downloadFile(item, '附件下载')"
class="DownloadAttachment"
>
附件下载
</a-button>
<a-button v-if="item.approveStatus === '通过'" @click.stop="switchFunction(item)">
查看详情
</a-button>
</div>
</div>
</div>
@ -160,31 +188,49 @@
<span class="type">基础设施</span>
</div>
<div>
<a-button type="primary" v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn"
@click.stop="openVideo(val)">
<a-button
type="primary"
v-if="
item.approveStatus == '通过' && whoShow1.itShowXiHaiAn
"
@click.stop="openVideo(val)"
>
视频预览
</a-button>
<div class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && item.ended">该流程已终止
</div>
<!-- <div class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && item.ended">该流程已终止
</div> -->
</div>
</div>
<div class="ability-bottom">
<div class="dec2">位置{{ val.nodeName }}</div>
<div class="result" v-if="item.approveStatus == '通过'">
申请结果
<span>列表地址</span><span style="cursor: pointer;" @click="openView(backUrl +
'resource/getApplyCameraList/' +
item.instanceId)">{{
<span>列表地址</span>
<span
style="cursor: pointer"
@click="
openView(
backUrl +
'resource/getApplyCameraList/' +
item.instanceId }}</span>
item.instanceId
)
"
>
{{
backUrl + 'resource/getApplyCameraList/' + item.instanceId
}}
</span>
<span>视频流地址</span>
<span style="cursor: pointer" @click="openView(backUrl +
'resource/hls/getHls/?key=' +
val.channelId)">{{
backUrl +
'resource/hls/getHls/?key=' +
val.channelId}}</span>
<span
style="cursor: pointer"
@click="
openView(
backUrl + 'resource/hls/getHls/?key=' + val.channelId
)
"
>
{{ backUrl + 'resource/hls/getHls/?key=' + val.channelId }}
</span>
</div>
</div>
</div>
@ -192,44 +238,52 @@
</div>
</div>
</div>
<!-- 单个预览弹窗 -->
<a-modal wrapClassName="single-preview-modal" v-model:visible="visible" title="视频预览" :width="960" destroyOnClose>
<a-modal
wrapClassName="single-preview-modal"
v-model:visible="visible"
title="视频预览"
:width="960"
destroyOnClose
>
<template #footer></template>
<div style="width: 100%; display: flex; justify-content: center">
<div style="width: 100%; height: 100%;position: relative">
<div style="width: 100%; height: 100%; position: relative">
<!-- 预览视频--遮罩 -->
<div class="waterMark waterMark-left-top">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-top">{{userInfo.realNameShow}}</div>
<div class="waterMark waterMark-left-bottom">{{userInfo.usernameShow}}</div>
<div class="waterMark waterMark-right-bottom">{{userInfo.realNameShow}}</div>
<div class="waterMark waterMark-left-top">
{{ userInfo.usernameShow }}
</div>
<div class="waterMark waterMark-right-top">
{{ userInfo.realNameShow }}
</div>
<div class="waterMark waterMark-left-bottom">
{{ userInfo.usernameShow }}
</div>
<div class="waterMark waterMark-right-bottom">
{{ userInfo.realNameShow }}
</div>
<vue3VideoPlay v-bind="options" />
</div>
</div>
</a-modal>
</div>
</template>
<script setup>
import { ref, defineProps, reactive, onMounted } from 'vue'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
import { endProcess, getApplyForm } from '@/api/personalCenter.js'
import { useRouter } from 'vue-router'
import {
getStreamByChannelCode,
} from '@/api/videoSurveillance'
import {
getUser,
} from '@/api/home'
const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({
import { ref, defineProps, reactive, onMounted } from 'vue'
import mybus from '@/myplugins/mybus'
import { message } from 'ant-design-vue'
import { endProcess, getApplyForm } from '@/api/personalCenter.js'
import { useRouter } from 'vue-router'
import { getStreamByChannelCode } from '@/api/videoSurveillance'
import { getUser } from '@/api/home'
const router = useRouter()
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const props = defineProps({
refObj: { type: Object, default: null },
})
const whoShow1 = ref(whoShow)
let visible = ref(false)
const options = reactive({
})
const whoShow1 = ref(whoShow)
let visible = ref(false)
const options = reactive({
width: '912px', //
height: '513px', //
color: '#409eff', //
@ -255,26 +309,25 @@ const options = reactive({
'pageFullScreen',
'fullScreen',
], //,
})
const dept = reactive({})
// eslint-disable-next-line no-undef
if (infrastructure) {
})
const dept = reactive({})
// eslint-disable-next-line no-undef
if (infrastructure) {
// eslint-disable-next-line no-undef
dept.deptId = infrastructure.deptId
// eslint-disable-next-line no-undef
dept.deptName = infrastructure.deptName
}
const showThis = () => {
}
const showThis = () => {
window.open(
window.SITE_CONFIG.previewUrl +
'hisense_office/onlinePreview?url=' +
btoa(encodeURI(props.refObj.enclosure))
)
}
const showArr = ref([])
console.log(props.refObj, '=====================================')
const endThis = (instanceId) => {
}
const showArr = ref([])
console.log(props.refObj, '=====================================')
const endThis = (instanceId) => {
endProcess({ instanceId: instanceId }).then((res) => {
if (res.data.code == 0) {
message.success('撤回申请成功!')
@ -283,8 +336,8 @@ const endThis = (instanceId) => {
message.warning('撤回申请失败!')
}
})
}
const modify = (id, item) => {
}
const modify = (id, item) => {
getApplyForm(id).then((res) => {
console.log('修改==============>', res.data.data, item)
if (item.list.length > 0) {
@ -347,8 +400,8 @@ const modify = (id, item) => {
})
}
})
}
if (props.refObj.resourceApplication) {
}
if (props.refObj.resourceApplication) {
showArr.value = []
for (const key in props.refObj.resourceApplication) {
if (props.refObj.resourceApplication[key].length > 0) {
@ -372,8 +425,8 @@ if (props.refObj.resourceApplication) {
showArr.value.push(obj)
}
}
}
const switchFunction = (data) => {
}
const switchFunction = (data) => {
if (data.approveStatus === '通过') {
let id = data.list[0].id
const applypage = router.resolve({
@ -384,8 +437,8 @@ const switchFunction = (data) => {
})
window.open(applypage.href, '_blank')
}
}
const downloadFile = (data, name) => {
}
const downloadFile = (data, name) => {
let path = data.list[0].infoList.filter(
(item) => item.attrType === '上传附件'
)[0].attrValue
@ -414,10 +467,9 @@ const downloadFile = (data, name) => {
URL.revokeObjectURL(url)
}
}
}
//
const openVideo = (item) => {
}
//
const openVideo = (item) => {
console.log('打开视频', item)
if (item && item.status != 1) {
return message.error('当前视频离线不可预览!')
@ -425,81 +477,77 @@ const openVideo = (item) => {
const param = {
key: item.cameraId,
}
getStreamByChannelCode(param).then((res) => {
console.log('视频预览------------>', res);
getStreamByChannelCode(param)
.then((res) => {
console.log('视频预览------------>', res)
console.log(res)
visible.value = true
options.src = res.data.data || ''
}).catch(err => {
})
.catch((err) => {
message.error(err)
})
// --
// visible.value = true
// options.src = 'http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8'
}
onMounted(() => {
}
onMounted(() => {
handleUser()
})
//
const userInfo = ref(null)
const handleUser = () => {
getUser().then(res => {
console.log('res-----获取用户信息------->', res);
})
//
const userInfo = ref(null)
const handleUser = () => {
getUser()
.then((res) => {
console.log('res-----获取用户信息------->', res)
if (res.data.code != 0) {
return message.warning(res.data.msg)
}
userInfo.value = res.data.data || {}
userInfo.value.usernameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.username || '');
userInfo.value.realNameShow = '西海岸能力超市' + (userInfo.value.deptName || '') + (userInfo.value.realName || '');
}).catch(err => {
userInfo.value.usernameShow =
'西海岸能力超市' +
(userInfo.value.deptName || '') +
(userInfo.value.username || '')
userInfo.value.realNameShow =
'西海岸能力超市' +
(userInfo.value.deptName || '') +
(userInfo.value.realName || '')
})
.catch((err) => {
message.warning(err)
})
}
const openView = (url) => {
}
const openView = (url) => {
window.open(url, '_blank')
}
}
</script>
<style lang="less" scoped>
.aaa{
.aaa {
margin-right: 30px;
}
}
:deep(.ant-popover-inner) {
position: fixed !important;
margin-right: 100px;
}
.title {
.title {
font-size: 0.18rem;
color: #000;
font-weight: bold;
margin-bottom: 0.2rem;
padding-left: 0.1rem;
border-left: 0.06rem #0058e1 solid;
}
.top {
}
.top {
margin-bottom: 0.1rem;
.main {
background: #eee;
padding: 0.2rem 0.2rem 0.1rem;
p {
display: flex;
justify-content: space-between;
&>span {
& > span {
width: 100%;
}
.enclosure {
width: 95%;
padding: 0.05rem 0.1rem;
@ -508,33 +556,28 @@ const openView = (url) => {
justify-content: space-between;
margin-top: 0.05rem;
}
.btn:hover {
color: #0058e1;
cursor: pointer;
}
}
.item {
span {
width: 2.5rem;
}
}
}
}
.bottom {
}
.bottom {
.main {
.item {
border-top: 1px #eee solid;
.deptName {
color: #0058e1;
font-size: 0.16rem;
margin-top: 0.1rem;
display: flex;
align-items: center;
.img {
width: 0.05rem;
height: 0.05rem;
@ -543,20 +586,16 @@ const openView = (url) => {
margin-right: 0.1rem;
}
}
.oddNumbers {
margin: 0.1rem 0 0 0.15rem;
}
.box {
margin-left: 0.1rem;
.ability {
height: 1.6rem;
display: flex;
border-bottom: 1px #eee solid;
padding: 0.1rem 0;
.left {
display: inline-block;
width: 1.1rem;
@ -565,37 +604,30 @@ const openView = (url) => {
background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%;
}
.sxt {
background: url('~@/assets/home/sxt_square.png') no-repeat;
background-size: 100%;
}
.yyzy {
background: url('~@/assets/home/yyzy_square.png') no-repeat;
background-size: 100%;
}
.znsf {
background: url('~@/assets/home/znsf_square.png') no-repeat;
background-size: 100%;
}
.tcfw {
background: url('~@/assets/home/tcfw_square.png') no-repeat;
background-size: 100%;
}
.kfzj {
background: url('~@/assets/home/kfzj_square.png') no-repeat;
background-size: 100%;
}
.ywzj {
background: url('~@/assets/home/ywzj_square.png') no-repeat;
background-size: 100%;
}
.btn {
cursor: pointer;
color: #0087ff;
@ -604,22 +636,18 @@ const openView = (url) => {
border: 1px #0087ff solid;
border-radius: 0.2rem;
}
.right {
flex: 1;
margin-left: 0.15rem;
.ability-top {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.name {
width: 6rem;
height: 0.2rem;
display: flex;
.channelName {
max-width: 5rem;
height: 0.2rem;
@ -630,7 +658,6 @@ const openView = (url) => {
-webkit-box-orient: vertical;
word-break: break-all;
}
.type {
background: #0087ff;
color: #fff;
@ -641,10 +668,8 @@ const openView = (url) => {
}
}
}
.ability-bottom {
margin-top: 0.15rem;
// display: flex;
// justify-content: space-between;
.dec {
@ -657,7 +682,6 @@ const openView = (url) => {
-webkit-box-orient: vertical;
word-break: break-all;
}
.dec2 {
width: 7rem;
height: 0.22rem;
@ -668,7 +692,6 @@ const openView = (url) => {
-webkit-box-orient: vertical;
word-break: break-all;
}
// .result:hover {
// color: #0058e1;
// cursor: pointer;
@ -678,75 +701,63 @@ const openView = (url) => {
}
}
}
.DownloadAttachment {
position: absolute;
right: 10px;
top: -150px;
}
.DownloadAttachment2 {
position: absolute;
right: 10px;
top: -110px;
}
}
.clickCursor {
cursor: pointer;
}
}
}
}
}
.single-preview-modal {
}
.single-preview-modal {
.ant-modal-header {
background: url(~@/assets/home/video-background.png) no-repeat;
background-size: cover;
}
.ant-modal-title {
font-size: 0.16rem;
font-weight: 500;
color: #ffffff;
}
.anticon {
color: #ffffff;
}
}
//
.waterMark-left-top {
}
//
.waterMark-left-top {
left: 50px;
top: 100px;
text-align: left;
}
//
.waterMark-right-top {
}
//
.waterMark-right-top {
right: 50px;
top: 100px;
text-align: right;
}
//
.waterMark-left-bottom {
}
//
.waterMark-left-bottom {
left: 50px;
bottom: 100px;
text-align: left;
}
//
.waterMark-right-bottom {
}
//
.waterMark-right-bottom {
right: 50px;
bottom: 100px;
text-align: right;
}
.waterMark {
}
.waterMark {
position: absolute;
z-index: 99999999;
color: #0058e1;
@ -755,6 +766,5 @@ const openView = (url) => {
opacity: 0.4;
transform: rotate(-25deg);
width: 470px;
}
}
</style>

View File

@ -208,6 +208,7 @@
onBeforeUnmount,
h,
defineProps,
nextTick,
} from 'vue'
import {
getMyProcessInstancePage,
@ -252,16 +253,19 @@
typeList.value.push('设备申请')
}
const typeStrObj = {
能力上架: 'resourcemountapply',
能力下架: 'resourcundercarriageapply',
能力需求: 'abilitydemandapply',
需求评论: 'comment_review',
'能力上架': 'resourcemountapply',
'能力下架': 'resourcundercarriageapply',
'能力需求': 'abilitydemandapply',
'需求评论': 'comment_review',
}
let tabList = ref(['全部', '审核中', '审核完成'])
const contentList = 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
}
const videoVisible = ref(false)
const numFlag = ref(true)
const columns = ref([
@ -306,7 +310,7 @@
ended.value = ''
page.value = 1
typeIndex.value = index
typeName.value = item
typeName.value = item;
getApplyList()
}
@ -565,7 +569,6 @@
params.processDefinitionKey = processDefinitionKey.value
getMyProcessInstancePage(params).then((res) => {
contentList.data = []
// initNum(name.value)
console.log(res.data.data.list)
contentList.data = res.data.data.list
total.value = res.data.data.total

View File

@ -9,83 +9,38 @@
<div class="form-container">
<div v-if="applySuccess">
<div class="title">申请人信息</div>
<a-form
ref="formRef"
:model="formName"
name="basic"
:label-col="{ style: { width: '106px' } }"
:wrapper-col="{ style: { width: '230px' } }"
labelAlign="left"
autocomplete="off"
>
<a-form ref="formRef" :model="formName" name="basic" :label-col="{ style: { width: '106px' } }"
:wrapper-col="{ style: { width: '230px' } }" labelAlign="left" autocomplete="off">
<div class="base-info">
<a-form-item
label="申请人"
name="applyUserName"
:rules="[{ required: true, message: '请输入申请人' }]"
>
<a-input
placeholder="请输入申请人"
v-model:value="formName.applyUserName"
/>
<a-form-item label="申请人" name="applyUserName" :rules="[{ required: true, message: '请输入申请人' }]">
<a-input placeholder="请输入申请人" v-model:value="formName.applyUserName" />
</a-form-item>
<a-form-item
style="margin: 0 22px"
label="申请人电话"
name="applyUserPhone"
:rules="[
<a-form-item style="margin: 0 22px" label="申请人电话" name="applyUserPhone" :rules="[
{
required: true,
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
},
]"
>
<a-input
placeholder="请输入申请人电话"
v-model:value="formName.applyUserPhone"
/>
]">
<a-input placeholder="请输入申请人电话" v-model:value="formName.applyUserPhone" />
</a-form-item>
<a-form-item
label="申请单位"
name="applyUserDeptName"
:rules="[{ required: true, message: '请输入申请单位' }]"
>
<a-input
placeholder="请输入申请单位"
v-model:value="formName.applyUserDeptName"
/>
<a-form-item label="申请单位" name="applyUserDeptName" :rules="[{ required: true, message: '请输入申请单位' }]">
<a-input placeholder="请输入申请单位" v-model:value="formName.applyUserDeptName" />
</a-form-item>
</div>
<div class="title">需求信息</div>
<a-form-item
style="margin-bottom: 10px"
label="需求标题"
name="demandSubject"
:rules="[{ required: true, message: '请输入需求标题' }]"
>
<a-input
style="width: 350px"
v-model:value="formName.demandSubject"
/>
<a-form-item style="margin-bottom: 10px" label="需求标题" name="demandSubject"
:rules="[{ required: true, message: '请输入需求标题' }]">
<a-input style="width: 350px" v-model:value="formName.demandSubject" />
</a-form-item>
<a-form-item
style="margin-bottom: 10px"
label="需求类型"
name="detailsType"
:rules="[{ required: true, message: '请选择需求类型' }]"
>
<a-select
ref="select"
v-model:value="formName.detailsType"
@focus="focus"
style="width: 200px"
>
<a-form-item style="margin-bottom: 10px" label="需求类型" name="detailsType"
:rules="[{ required: true, message: '请选择需求类型' }]">
<a-select ref="select" v-model:value="formName.detailsType" @focus="focus" style="width: 200px">
<a-select-option value="基础设施">基础设施</a-select-option>
<a-select-option value="数据资源">数据资源</a-select-option>
<a-select-option value="组件服务">组件服务</a-select-option>
@ -94,50 +49,24 @@
</a-select>
</a-form-item>
<a-form-item
label="应用领域"
name="detailsField"
style="width: 6.93rem"
:rules="[
<a-form-item label="应用领域" v-if="formName.detailsType === '应用资源' ||
formName.detailsType === '组件服务'" name="detailsField" style="width: 6.93rem" :rules="[
{
required:
formName.detailsType === '应用资源' ||
formName.detailsType === '组件服务'
? true
: false,
required: true,
message: '请选择应用领域',
},
]"
>
<a-select
:disabled="
formName.detailsType === '应用资源' ||
formName.detailsType === '组件服务'
? false
: true
"
v-model:value="formName.detailsField"
:options="applicationSceneOpthion"
mode="tags"
:size="size"
placeholder="请选择应用领域"
:filterOption="false"
:searchValue="false"
style="width: 5.87rem"
></a-select>
]">
<a-select v-model:value="formName.detailsField" :options="applicationSceneOpthion" mode="tags"
:size="size" placeholder="请选择应用领域" :filterOption="false" :searchValue="false" style="width: 5.87rem">
</a-select>
</a-form-item>
<!-- <a-form-item label="应用领域" name="detailsField" style="width: 350px"
:rules="[{ required: true, message: '请输入应用领域' }]">
<a-input placeholder="请输入应用领域" v-model:value="formName.detailsField" />
</a-form-item> -->
<a-form-item
style="margin-bottom: 10px"
label="需求描述"
name="demandDetails"
:rules="[{ required: true, message: '请输入需求描述' }]"
>
<a-textarea
style="
<a-form-item style="margin-bottom: 10px" label="需求描述" name="demandDetails"
:rules="[{ required: true, message: '请输入需求描述' }]">
<a-textarea style="
width: 500px;
height: 150px;
font-size: 16px;
@ -147,25 +76,12 @@
border-radius: 6px;
padding: 10px;
resize: none;
"
v-model:value="formName.demandDetails"
/>
" v-model:value="formName.demandDetails" />
</a-form-item>
<a-form-item
style="color: #666; font-size: 16px"
label="附件上传"
name="applyDoc"
>
<a-upload
v-model:file-list="fileList"
name="file"
:action="upLoadUrl"
:headers="headers"
@change="handleChange"
:maxCount="1"
>
<a-button
style="
<a-form-item style="color: #666; font-size: 16px" label="附件上传" name="applyDoc">
<a-upload v-model:file-list="fileList" name="file" :action="upLoadUrl" :headers="headers"
@change="handleChange" :maxCount="1">
<a-button style="
width: 100px;
height: 30px;
margin-right: 10px;
@ -176,8 +92,7 @@
border: 1px solid #bbd3ef;
padding: 0;
text-align: center;
"
>
">
<upload-outlined></upload-outlined>
文件上传
</a-button>
@ -188,8 +103,7 @@
</a-form-item>
<a-form-item :wrapper-col="{ offset: 8, span: 16 }">
<a-button
style="
<a-button style="
width: 80px;
height: 38px;
margin-right: 20px;
@ -200,15 +114,10 @@
border: none;
padding: 0;
text-align: center;
"
type="primary"
html-type="cancle"
@click="signOut"
>
" type="primary" html-type="cancle" @click="signOut">
退出申请
</a-button>
<a-button
style="
<a-button style="
width: 80px;
height: 38px;
background: #0087ff;
@ -218,11 +127,7 @@
border: none;
padding: 0;
text-align: center;
"
type="primary"
html-type="submit"
@click="processStartHandle()"
>
" type="primary" html-type="submit" @click="processStartHandle()">
提交申请
</a-button>
</a-form-item>
@ -245,21 +150,21 @@
</template>
<script>
import HomeHeader from '@/views/home/components/header'
import { reactive, ref } from 'vue'
import { message } from 'ant-design-vue'
// import { UploadOutlined } from '@ant-design/icons-vue'
import { getUser, getUserInfo, relaunch } from '@/api/home'
import {
import HomeHeader from '@/views/home/components/header'
import { reactive, ref } from 'vue'
import { message } from 'ant-design-vue'
// import { UploadOutlined } from '@ant-design/icons-vue'
import { getUser, getUserInfo, relaunch } from '@/api/home'
import {
demandApply,
getDemandForm,
updateDemandForm,
getCategoryTreePage,
} from '@/api/personalCenter'
// import { baseURL } from '@/config'
import { useRouter } from 'vue-router'
} from '@/api/personalCenter'
// import { baseURL } from '@/config'
import { useRouter } from 'vue-router'
export default {
export default {
name: '',
props: {},
components: {
@ -345,19 +250,21 @@
}
const fileList = ref([])
const subimtFlag = ref(true)
const processStartHandle = () => {
let detailsField = '';
if (formName.detailsField.length > 0) {
let detailsField = ''
formName.detailsField.map((item) => {
detailsField += item + ';'
})
formName.detailsField = detailsField
}
// copy
let _postData = JSON.parse(JSON.stringify(formName))
_postData.detailsField = detailsField;
if (id.value) {
updateDemandForm(formName).then((upres) => {
updateDemandForm(_postData).then((upres) => {
if (upres.data.code == 0) {
relaunch({ data: formName, taskId: taskId.value }).then((res) => {
relaunch({ data: _postData, taskId: taskId.value }).then((res) => {
console.log('驳回================>', res)
if (res.data.code == 0) {
message.success('重新发起流程成功!')
@ -373,22 +280,18 @@
}
})
} else {
if (subimtFlag.value) {
subimtFlag.value = false
formRef.value.validate().then(() => {
const detString = String(formName.detailsField)
formName.detailsField = detString
console.log(detString, formName.detailsField, 'detString')
demandApply(formName).then((res) => {
formRef.value.validate().then((valid) => {
const detString = String(_postData.detailsField)
_postData.detailsField = detString
console.log(detString, _postData.detailsField, 'detString')
demandApply(_postData).then((res) => {
applySuccess.value = false
message.success('操作成功!')
console.log('能力申请================>', res)
subimtFlag.value = true
})
})
}
}
}
return {
formRef,
@ -407,11 +310,11 @@
applicationSceneOpthion,
}
},
}
}
</script>
<style scoped lang="less">
#apply-container {
#apply-container {
background-color: #f5f8fc;
height: 100%;
width: 100%;
@ -484,11 +387,11 @@
font-weight: bold;
color: #000;
}
}
}
</style>
<style>
body,
html {
body,
html {
height: unset;
}
}
</style>

View File

@ -33,15 +33,16 @@ export default defineComponent({
imgActive: require('@/assets/personalCenter/applyactive.png'),
key: 'apply',
}
let menuList = [
car,
{
const push = {
title: '我的发布',
img: require('@/assets/personalCenter/push.png'),
imgActive: require('@/assets/personalCenter/pushactive.png'),
key: 'push',
},
}
let menuList = [
car,
apply,
push,
{
title: '我的收藏',
img: require('@/assets/personalCenter/collect.png'),
@ -69,7 +70,7 @@ export default defineComponent({
]
// 西
if (itShowXiHaiAn) {
menuList = [car, apply]
menuList = [car, apply, push]
}
const selectedKeys = ref(['apply'])

View File

@ -29,8 +29,8 @@ const productionGzipExtensions = [
'ico',
]
// gzip
const isPro = process.env.NODE_ENV === 'production'
// const isPro = false
// const isPro = process.env.NODE_ENV === 'production'
const isPro = false
if (donation) donationConsole()
const { version, author } = require('./package.json')
const Webpack = require('webpack')