Compare commits

..

38 Commits

Author SHA1 Message Date
a0049873 f92ac21530 Merge branch 'hi-ucs-dev' into release
# Conflicts:
#	front/public/static/config/basicConfig.js
#	front/src/App.vue
2022-12-01 12:33:32 +08:00
gongjiale ae9fe6c8c2 修改bug 2022-12-01 11:21:02 +08:00
gongjiale 0993ece389 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-30 19:38:41 +08:00
gongjiale 0bb750af34 111 2022-11-30 19:38:35 +08:00
a0049873 4b2a3ac3b6 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-30 17:28:32 +08:00
a0049873 43d6cbc3bd 修改被驳回字样展示 2022-11-30 17:28:24 +08:00
gongjiale 27642b9964 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-30 17:04:32 +08:00
gongjiale 329fa49062 改bug 2022-11-30 17:04:25 +08:00
a0049873 e64bd190cc 能力申请 市局隐藏附件 能力统计 无数据图片修改 2022-11-30 16:43:53 +08:00
a0049873 7c7ac61f77 需求修改删除附件BUG修改 2022-11-30 15:32:27 +08:00
a0049873 baebd9f62b 需求修改回显 2022-11-30 15:23:19 +08:00
a0049873 95d27d57e0 需求中心BUG修改 2022-11-30 15:00:41 +08:00
a0049873 fe0b29a9fa 西海岸BUG修改 2022-11-30 14:45:19 +08:00
gongjiale 818e6e5dc9 修改 2022-11-30 14:43:35 +08:00
gongjiale 3183fc7342 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-30 14:37:51 +08:00
gongjiale 38955b7748 修改门户 2022-11-30 14:37:26 +08:00
a0049873 951ddbc77b 西海岸BUG修改 2022-11-30 11:56:34 +08:00
a0049873 ddf1a7e6b3 添加已撤回标识 2022-11-30 11:47:43 +08:00
a0049873 1e8a6495a3 BUG修改 2022-11-30 10:25:58 +08:00
a0049873 743d88bdf8 加载问题 2022-11-30 09:56:28 +08:00
a0049873 9902f9779a BUG修改 2022-11-30 09:47:23 +08:00
wuhongjian b0b4368667 西海岸问题修复 2022-11-29 23:45:47 +08:00
a0049873 9ec04e7581 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-29 17:48:13 +08:00
a0049873 6fc0d15dbf BUG修改 2022-11-29 17:47:55 +08:00
gongjiale 2d381d808c Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-29 17:37:58 +08:00
gongjiale a614479f50 需求 2022-11-29 17:37:48 +08:00
a0049873 3d90e73659 已申请列表添加websocket 2022-11-29 17:37:10 +08:00
a0049873 bcbfd87eb7 运维管理员 部门联系人联系电话 2022-11-29 16:13:53 +08:00
a0049873 d065f76217 广场模式添加默认选中 应用领域 2022-11-29 14:49:34 +08:00
gongjiale 76a6edbe63 11 2022-11-29 14:06:00 +08:00
gongjiale 5fce2cdcce 修改 2022-11-29 14:03:05 +08:00
gongjiale dbdb6d7cea Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/assertReport/components/ReservoirBottom.vue
#	front/src/views/assertReport/components/ReservoirRight.vue
#	front/src/views/assertReport/components/ReservoirThumbnail.vue
#	front/src/views/assertReport/index.vue
2022-11-29 13:56:18 +08:00
gongjiale 4a6ea361b6 Merge branch 'hi-ucs-dev' of http://192.168.124.50:3000/wuhongjian/hi-ucs into hi-ucs-dev
# Conflicts:
#	front/src/views/assertReport/components/ReservoirBottom.vue
#	front/src/views/assertReport/components/ReservoirRight.vue
#	front/src/views/assertReport/components/ReservoirThumbnail.vue
#	front/src/views/assertReport/index.vue
2022-11-29 13:51:02 +08:00
gongjiale 9acaa0e8d3 修改大屏 2022-11-29 13:14:43 +08:00
gongjiale 1d5e82356e 111 2022-11-29 12:36:15 +08:00
wuhongjian 97aec1843a Merge branch 'hi-ucs-dev' of http://124.222.94.39:3000/wuhongjian/hi-ucs into hi-ucs-dev 2022-11-29 11:57:35 +08:00
wuhongjian 953fe9e18f bug修复 2022-11-29 11:57:33 +08:00
a0049873 274ca4b6bc 需求修改 2022-11-29 11:54:04 +08:00
49 changed files with 2784 additions and 2316 deletions

View File

@ -79,6 +79,18 @@
header-align="center" header-align="center"
align="center" align="center"
></el-table-column> ></el-table-column>
<el-table-column
prop="resoureType"
label="资源类型"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="provideDept"
label="提供部门"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> --> <!-- <el-table-column prop="startTime" :label="$t('process.startTime')" header-align="center" align="center"></el-table-column> -->
<el-table-column <el-table-column
prop="createTime" prop="createTime"

View File

@ -168,7 +168,7 @@
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible" append-to-body>
<img width="100%" :src="picImg" alt="" /> <img width="100%" :src="picImg" alt="" />
</el-dialog> </el-dialog>
<div <div
@ -224,7 +224,7 @@ export default {
window.SITE_CONFIG.apiURL + '/upload?token=' + Cookies.get('ucsToken'), window.SITE_CONFIG.apiURL + '/upload?token=' + Cookies.get('ucsToken'),
labelPosition: 'left', labelPosition: 'left',
dialogFormVisible: false, dialogFormVisible: false,
// dialogImageUrl: '', // dialogImageUrl: '',
ruleForm: { ruleForm: {
name: '', name: '',
num: '', num: '',
@ -294,12 +294,13 @@ export default {
this.fileList = [] this.fileList = []
}, },
handlePictureCardPreview (file) { handlePictureCardPreview (file) {
this.dialogImageUrl = file.url
this.picImg = file.url
this.dialogVisible = true this.dialogVisible = true
}, },
// //
beforeUpload (file, fileList) { beforeUpload (file, fileList) {
this.$message.error('最多只能上传一张图片!') this.$message.error('最多只能上传一张图片!')
}, },
// //
onSuccess (response, file, fileList) { onSuccess (response, file, fileList) {

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-29 15:59:51 * @Date: 2022-06-29 15:59:51
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-28 11:28:43 * @LastEditTime: 2022-11-30 15:45:35
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<!-- 流程业务表单 --> <!-- 流程业务表单 -->
@ -41,7 +41,7 @@
</div> </div>
</p> --> </p> -->
<p> <p>
<div> <div v-if="version == 'xihaian'">
<el-button type="primary" size="small" @click="download(dataForm.content)">附件下载</el-button> <el-button type="primary" size="small" @click="download(dataForm.content)">附件下载</el-button>
</div> </div>
</p> </p>
@ -149,6 +149,7 @@ export default {
input: '', input: '',
visible: true, visible: true,
showKey: 0, showKey: 0,
version: CONFIGITEM.version,
// //
// fieldDisabled: false, // fieldDisabled: false,
// dataForm: { // dataForm: {

View File

@ -0,0 +1,170 @@
<template>
<el-dialog
:visible.sync="visible"
title="审核权限配置检查"
:footer="false"
@close="onClose"
>
<el-tabs v-model="tab" type="card" >
<el-tab-pane label="未配置部门管理员权限部门" name="first">
<div style="float: left;margin-bottom: 8px;font-size: 16px;">检测结果{{deptTotal}}</div>
<el-table
:data="deptData"
:header-cell-style="{ textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center' }"
style="width: 100%"
>
<el-table-column width="80px" label="序号" align="center">
<template slot-scope="scop">
{{scop.$index+1}}
</template>
</el-table-column>
<el-table-column
prop="name"
label="部门名称"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="type"
label="类型"
header-align="center"
align="center"
></el-table-column>
</el-table>
<div class="block" >
<el-pagination
@current-change="handleCurrentChange1"
layout=" prev, pager, next"
:total="deptTotal"
:page-size="pageSize"
:current-page="currentPageDept"
>
</el-pagination>
</div>
</el-tab-pane>
<el-tab-pane label="未配置区市审核人权限区市" name="second">
<div style="float: left;margin-bottom: 8px;font-size: 16px;">检测结果{{districtTotal}}</div>
<el-table
:data="districtData"
:header-cell-style="{ textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center' }"
style="width: 100%"
>
<el-table-column width="80px" label="序号" align="center">
<template slot-scope="scop">
{{scop.$index+1}}
</template>
</el-table-column>
<el-table-column
prop="NAME"
label="区市名称"
header-align="center"
align="center"
></el-table-column>
<!-- <el-table-column
prop="type"
label="类型"
header-align="center"
align="center"
></el-table-column> -->
</el-table>
<div class="block" >
<el-pagination
@current-change="handleCurrentChange2"
layout="prev, pager, next"
:total="deptTotal"
:page-size="pageSize"
:current-page="currentPageDistrict"
>
</el-pagination>
</div>
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<script>
export default {
data () {
return {
visible:false,
tab:'first',
deptTotal:0,
districtTotal:0,
deptData:[],
districtData:[],
currentPageDistrict:1,
currentPageDept:1,
pageSize:10,
}
},
watch:{
},
methods: {
handleCurrentChange1 (val) {
this.currentPageDept = val
this.getDeptList()
},
handleCurrentChange2 (val) {
this.currentPageDistrict = val
this.getDistrinctList()
},
getDeptList(){
let params = {
pageNum:this.currentPageDept,
pageSize:this.pageSize
}
this.$http
.get('/sys/user/getApproverUnconfiguredDepartment/', {params
})
.then((res) => {
this.deptData = res.data.data.list
this.deptTotal = Number(res.data.data.total)
})
},
getDistrinctList(){
let params = {
pageNum:this.currentPageDistrict,
pageSize:this.pageSize
}
this.$http
.get('/sys/user/getApproverUnconfiguredRegion', {params
})
.then((res) => {
this.districtData = res.data.data
this.districtTotal = Number(res.data.data.length)
})
},
onClose(){
this.visible=false;
this.$emit("refreshCheck",false)
},
init(){
this.visible = true
this.getDeptList()
this.getDistrinctList()
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .aui-content .el-tabs__header {
left: 0px;
}
</style>

View File

@ -41,6 +41,9 @@
<el-form-item> <el-form-item>
<el-button type="primary" @click="reset()">重置</el-button> <el-button type="primary" @click="reset()">重置</el-button>
</el-form-item> </el-form-item>
<el-form-item>
<el-button type="primary" @click="check()">审核权限配置检查</el-button>
</el-form-item>
</el-form> </el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" <el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" style="width: 100%"> @sort-change="dataListSortChangeHandle" style="width: 100%">
@ -87,6 +90,8 @@
</el-pagination> </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>
<!-- 审核权限配置检查 -->
<check v-if="checkVisible" ref="check" @refreshCheck="refreshCheck"></check>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -94,11 +99,14 @@
<script> <script>
import mixinViewModule from '@/mixins/view-module' import mixinViewModule from '@/mixins/view-module'
import AddOrUpdate from './user-add-or-update' import AddOrUpdate from './user-add-or-update'
import Check from './check'
import qs from 'qs' import qs from 'qs'
export default { export default {
mixins: [mixinViewModule], mixins: [mixinViewModule],
data () { data () {
return { return {
//
checkVisible:false,
mixinViewModuleOptions: { mixinViewModuleOptions: {
getDataListURL: '/sys/user/page', getDataListURL: '/sys/user/page',
getDataListIsPage: true, getDataListIsPage: true,
@ -116,12 +124,22 @@ export default {
} }
}, },
components: { components: {
AddOrUpdate AddOrUpdate,
Check
}, },
created () { created () {
this.getDeptList() this.getDeptList()
}, },
methods: { methods: {
check(){
this.checkVisible=true
this.$nextTick(() => {
this.$refs.check.init()
})
},
refreshCheck(val){
this.checkVisible=val
},
reset () { reset () {
this.dataForm.username = '' this.dataForm.username = ''
this.dataForm.real_name = '' this.dataForm.real_name = ''

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2020-07-07 16:03:23 * @Date: 2020-07-07 16:03:23
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-28 17:32:57 * @LastEditTime: 2022-12-01 12:32:58
* @Description: 系统静态参数配置 * @Description: 系统静态参数配置
*/ */
var _global = {} var _global = {}

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-05-06 11:12:0011-18 19:07:53 * @Date: 2022-05-06 11:12:0011-18 19:07:53
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-28 17:33:32 * @LastEditTime: 2022-12-01 12:33:18
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -19,13 +19,14 @@
import { getCategoryTreePage } from '@/api/personalCenter' import { getCategoryTreePage } from '@/api/personalCenter'
import zhCN from 'ant-design-vue/es/locale/zh_CN' import zhCN from 'ant-design-vue/es/locale/zh_CN'
import Cookies from 'js-cookie' import Cookies from 'js-cookie'
import { onBeforeUnmount, onMounted, watch, nextTick } from 'vue' import { onBeforeUnmount, onMounted, watch, ref } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
const router = useRouter() const router = useRouter()
const locale = zhCN const locale = zhCN
const token = Cookies.get('ucsToken') const token = Cookies.get('ucsToken')
const whoShow1 = ref(whoShow)
console.log('token=================>', token) console.log('token=================>', token)
let ws = new WebSocket( let ws = new WebSocket(
`ws://${window.SITE_CONFIG['websocketURL']}/websocket?token=${token}` `ws://${window.SITE_CONFIG['websocketURL']}/websocket?token=${token}`
@ -39,6 +40,13 @@
if (router.currentRoute.value.name === 'mynoticeView') { if (router.currentRoute.value.name === 'mynoticeView') {
mybus.emit('noticeListInit') mybus.emit('noticeListInit')
} }
//
if (
router.currentRoute.value.name === 'DetailsPageconetent' &&
whoShow1.value.itShowXiHaiAn
) {
mybus.emit('initDetailsPageconetent')
}
} }
ws.onerror = function (e) { ws.onerror = function (e) {
console.log('WebSocket连接异常============================>', e) console.log('WebSocket连接异常============================>', e)

View File

@ -1,3 +1,10 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-11-28 16:43:10
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-11-29 11:35:36
* @Description: 告诉大家这是什么
*/
import request from '@/utils/request' import request from '@/utils/request'
// //
export function getDistrictFundStatement() { export function getDistrictFundStatement() {
@ -8,65 +15,65 @@ export function getDistrictFundStatement() {
} }
// //
export function getComponentFundStatement() { export function getComponentFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getComponentFundStatement', url: '/processForm/tabilityapplication/getComponentFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function getResourceFundStatement() { export function getResourceFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getResourceFundStatement', url: '/processForm/tabilityapplication/getResourceFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function getInfrastructureFundStatement() { export function getInfrastructureFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getInfrastructureFundStatement', url: '/processForm/tabilityapplication/getInfrastructureFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function getProvideDeptFundStatement() { export function getProvideDeptFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getProvideDeptFundStatement', url: '/processForm/tabilityapplication/getProvideDeptFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function getApplyDeptFundStatement() { export function getApplyDeptFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getApplyDeptFundStatement', url: '/processForm/tabilityapplication/getApplyDeptFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function getProvideDistrictFundStatement() { export function getProvideDistrictFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getProvideDistrictFundStatement', url: '/processForm/tabilityapplication/getProvideDistrictFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function getApplyDistrictFundStatement() { export function getApplyDistrictFundStatement() {
return request({ return request({
url: '/processForm/tabilityapplication/getApplyDistrictFundStatement', url: '/processForm/tabilityapplication/getApplyDistrictFundStatement',
method: 'get', method: 'get',
}) })
} }
// //
export function selectTotal() { export function selectTotal() {
return request({ return request({
url: '/resource/selectTotal', url: '/resource/selectTotal',
method: 'get', method: 'get',
}) })
} }
// //
// //
export function getApplyPriceCount() { export function getApplyPriceCount() {
return request({ return request({
url: '/processForm/tabilityapplication/getApplyPriceCount', url: '/processForm/tabilityapplication/getApplyPriceCount',
method: 'get', method: 'get',
}) })
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -2,7 +2,7 @@
* @author chuzhixin 1204505056@qq.com * @author chuzhixin 1204505056@qq.com
* @description 登录获取用户信息退出登录清除accessToken逻辑不建议修改 * @description 登录获取用户信息退出登录清除accessToken逻辑不建议修改
*/ */
import { getUserInfo, login, logout } from '@/api/user' import { getUserInfo, login, logout, getRole } from '@/api/user'
import { import {
getAccessToken, getAccessToken,
removeAccessToken, removeAccessToken,
@ -20,6 +20,7 @@ const state = () => ({
userId: '', userId: '',
avatar: '', avatar: '',
role: 0, // role: 0, //
roleList: [], //
}) })
const getters = { const getters = {
accessToken: (state) => state.accessToken, accessToken: (state) => state.accessToken,
@ -27,6 +28,7 @@ const getters = {
realName: (state) => state.realName, realName: (state) => state.realName,
avatar: (state) => state.avatar, avatar: (state) => state.avatar,
role: (state) => state.role, role: (state) => state.role,
roleList: (state) => state.roleList,
userId: (state) => state.userId, userId: (state) => state.userId,
deptName: (state) => state.deptName, deptName: (state) => state.deptName,
deptId: (state) => state.deptId, deptId: (state) => state.deptId,
@ -64,6 +66,9 @@ const mutations = {
setRole(state, role) { setRole(state, role) {
state.role = role state.role = role
}, },
setRoleList(state, role) {
state.roleList = role
},
// userId // userId
setUserId(state, id) { setUserId(state, id) {
state.userId = id state.userId = id
@ -146,6 +151,14 @@ const actions = {
commit('setUsername', res.data.data.username) commit('setUsername', res.data.data.username)
commit('setRealname', res.data.data.realName) commit('setRealname', res.data.data.realName)
commit('setRole', res.data.data.roleIdList.length) commit('setRole', res.data.data.roleIdList.length)
//
const roleArr = []
res.data.data.roleIdList.map((val) => {
getRole(val).then((role) => {
roleArr.push(role.data.data.name)
})
})
commit('setRoleList', roleArr)
commit('setUserId', res.data.data.id) commit('setUserId', res.data.data.id)
commit('setDeptName', res.data.data.deptName) commit('setDeptName', res.data.data.deptName)
commit('setDeptId', res.data.data.deptId) commit('setDeptId', res.data.data.deptId)
@ -181,7 +194,6 @@ const actions = {
* @param {*} { commit, dispatch } * @param {*} { commit, dispatch }
*/ */
async resetAll({ dispatch }) { async resetAll({ dispatch }) {
await dispatch('setAccessToken', '') await dispatch('setAccessToken', '')
await dispatch('acl/setFull', false, { await dispatch('acl/setFull', false, {
root: true, root: true,

View File

@ -687,7 +687,7 @@
} }
} }
} }
.item:nth-child(2n) { .item:nth-(2n) {
margin-left: 0.4rem; margin-left: 0.4rem;
} }
} }

View File

@ -33,8 +33,12 @@
</div> </div>
<a-empty <a-empty
v-else v-else
style="margin-top: 160px; margin-bottom: 60px" style="
:imageStyle="{ color: '#0058e1' }" margin-top: 160px;
margin-bottom: 60px;
color: rgba(255, 255, 255, 0.5);
"
:image="empty"
/> />
</div> </div>
</div> </div>
@ -51,6 +55,7 @@
require('../../../assets/newHome/popular-yy.png'), require('../../../assets/newHome/popular-yy.png'),
require('../../../assets/newHome/popular-zs.png'), require('../../../assets/newHome/popular-zs.png'),
]) ])
const empty = ref(require('@/assets/newHome/empty.png'))
// //
function viewDetails(id) { function viewDetails(id) {
console.log('id=========>', id) console.log('id=========>', id)

View File

@ -1,151 +1,167 @@
<template> <template>
<div class="right-survey"> <div class="right-survey">
<div class="platform-overview-bottom"> <div class="platform-overview-bottom">
<div class="top"><span class="title">资源汇聚总量</span></div> <div class="top"><span class="title">资源汇聚总量</span></div>
<div class="bottom"> <div class="jiesheng"> <img src="../image/xing2.png" /><span style="padding-left:2px;">{{total}} </span><img src="../image/xing2.png" /></div>
<div <div class="bottom">
v-for="(item, index) in servicesNum"
:key="index" <div
class="component-services-content-right-left-content-son" v-for="(item, index) in servicesNum"
> :key="index"
<p>{{ item.type }}</p> class="component-services-content-right-left-content-son"
<p class="num">{{ item.count }}</p> >
</div> <p>{{ item.type }}</p>
<p class="num">{{ item.count }}</p>
</div> </div>
</div> </div>
</div> </div>
</template> </div>
</template>
<script>
import {
selectTotal
} from '@/api/assertReport'
export default {
components: {},
mounted() {
this.selectAllTotal()
},
data() {
//
return {
servicesNum: [],
}
},
methods: {
selectAllTotal(){ <script>
selectTotal().then((res) => { import {
this.servicesNum=res.data.data.total selectTotal
}) } from '@/api/assertReport'
} export default {
}
} components: {},
</script>
<style lang='less' scoped> mounted() {
@keyframes turn { this.selectAllTotal()
0% { },
border-image: linear-gradient(to right, #003194, #00ffea) 1; data() {
//
return {
total:'',
servicesNum: [],
} }
25% { },
border-image: linear-gradient(to bottom, #003194, #00ffea) 1;
} methods: {
50% {
border-image: linear-gradient(to left, #003194, #00ffea) 1; selectAllTotal(){
} selectTotal().then((res) => {
75% { let result=res.data.data.total
border-image: linear-gradient(to top, #003194, #00ffea) 1; let now=[]
} let num=0;
100% { for(let i=0;i<result.length;i++){
border-image: linear-gradient(to right, #003194, #00ffea) 1; if(result[i].type!=='知识库'){
now.push(result[i])
num=num+Number(result[i].count)
}
}
this.servicesNum=now
this.total=num
})
} }
}
}
</script>
<style lang='less' scoped>
@keyframes turn {
0% {
border-image: linear-gradient(to right, #003194, #00ffea) 1;
} }
.top5-content::-webkit-scrollbar { 25% {
width: 6px; border-image: linear-gradient(to bottom, #003194, #00ffea) 1;
/*height: 4px;*/
} }
50% {
.top5-content::-webkit-scrollbar-thumb { border-image: linear-gradient(to left, #003194, #00ffea) 1;
background-color: #00deff;
} }
.map-search-result::-webkit-scrollbar-track, 75% {
.top5-content::-webkit-scrollbar-track { border-image: linear-gradient(to top, #003194, #00ffea) 1;
background-color: #424748;
} }
@keyframes topup50 { 100% {
from { border-image: linear-gradient(to right, #003194, #00ffea) 1;
top: 50%; }
} }
to { .jiesheng{
top: -100%; margin:8px 8px;
text-align: center;
color: #f4fcfe; border-color: #107bb0;
box-shadow: 1px 1px 5px 1px RGB(16, 123, 176, 0.8) inset
} }
.top5-content::-webkit-scrollbar {
width: 6px;
/*height: 4px;*/
}
.top5-content::-webkit-scrollbar-thumb {
background-color: #00deff;
}
.map-search-result::-webkit-scrollbar-track,
.top5-content::-webkit-scrollbar-track {
background-color: #424748;
}
@keyframes topup50 {
from {
top: 50%;
} }
.right-survey { to {
top: -100%;
height: 100%; }
color: #f0fafa; }
font-size: 18px; .right-survey {
display: flex;
flex-direction: column; height: 100%;
color: #f0fafa;
font-size: 18px;
.platform-overview-bottom { display: flex;
flex-direction: column;
.platform-overview-bottom {
margin-top: 5px;
width: 100%;
height: 1.78rem;
background: rgba(0, 108, 188, 0.2);
border-radius: 2px;
border: 1px solid rgba(0, 108, 188, 0.7);
text-decoration: none;
outline: none;
-webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out;
transition: all 100ms ease-out;
.top {
font-size: 24px;
background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
background-size: 100% 100%;
text-align: center;
}
.bottom {
margin-top: 20px; margin-top: 20px;
width: 100%; display: flex;
height: 1.7rem; justify-content: space-between;
background: rgba(0, 108, 188, 0.2); align-items: center;
border-radius: 2px; padding: 0px 10px;
border: 1px solid rgba(0, 108, 188, 0.7); .component-services-content-right-left-content-son {
text-decoration: none; background: url('~@/assets/capabilityCloud/Component_services_snum.png')
outline: none; no-repeat;
-webkit-transition: all 100ms ease-out; background-size: 1.1rem 0.59rem;
-moz-transition: all 100ms ease-out; background-position: center;
transition: all 100ms ease-out;
.top {
font-size: 24px;
background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
background-size: 100% 100%;
text-align: center; text-align: center;
} & > p:first-child {
.bottom { color: #ffffff;
margin-top: 20px; font-size: 0.16rem;
display: flex; line-height: 0.16rem;
justify-content: space-between; margin-bottom: 0.12rem;
align-items: center; }
padding:0rem 0.2rem; & > p:last-child {
.component-services-content-right-left-content-son { color: #1ef6f5;
background: url('~@/assets/capabilityCloud/Component_services_snum.png') font-size: 0.28rem;
no-repeat; line-height: 0.28rem;
background-size: 1.1rem 0.59rem; padding-bottom: 0.24rem;
background-position: center; margin: 10px 45px;
text-align: center;
& > p:first-child {
color: #ffffff;
font-size: 0.16rem;
line-height: 0.16rem;
margin-bottom: 0.12rem;
}
& > p:last-child {
color: #1ef6f5;
font-size: 0.28rem;
line-height: 0.28rem;
padding-bottom: 0.24rem;
margin: 10px 45px;
}
} }
} }
} }
.platform-overview-bottom:hover {
border: 2px solid;
animation: turn 5s linear infinite;
} }
} .platform-overview-bottom:hover {
</style> border: 2px solid;
animation: turn 5s linear infinite;
}
}
</style>

View File

@ -1,4 +1,3 @@
<template> <template>
<div class="right-survey"> <div class="right-survey">
<!--最上面 部门排行榜--> <!--最上面 部门排行榜-->
@ -7,7 +6,7 @@
<div class="bottom1"> <div class="bottom1">
<div class="bottom-item"> <div class="bottom-item">
<div class="inner-title"> <div class="inner-title">
<p style="width: 220px">市级部门共享贡献资金排行</p> <p style="width: 220px">市级部门共享节省资金排行</p>
</div> </div>
<div class="left-list"> <div class="left-list">
<div class="left-list1">排行</div> <div class="left-list1">排行</div>
@ -15,6 +14,7 @@
<div class="left-list1">应用数</div> <div class="left-list1">应用数</div>
<div class="left-list1" style="color: #1ffefd">贡献金额</div> <div class="left-list1" style="color: #1ffefd">贡献金额</div>
</div> </div>
<div style=" height: 1.7rem; overflow-y: auto;overflow-x: hidden;width: 100%;">
<div class="left-list" v-for="(item, index) in top5DistrictList"> <div class="left-list" v-for="(item, index) in top5DistrictList">
<div class="left-list1" v-if="item.img"> <div class="left-list1" v-if="item.img">
<img :src="item.img" /> <img :src="item.img" />
@ -30,64 +30,15 @@
{{ item.applyPrice }} {{ item.applyPrice }}
</div> </div>
</div> </div>
</div>
</div> </div>
<!-- <div class="bottom-item">
<div class="inner-title">
<p style="width: 220px">市级部门审评节省资金排行</p>
</div>
<div class="left-list">
<div class="left-list1">排行</div>
<div class="left-list2">部门名称</div>
<div class="left-list1">应用数</div>
<div class="left-list1" style="color: #1ffefd">贡献金额</div>
</div>
<div class="left-list" v-for="(item, index) in top5DeptFundList">
<div class="left-list1" v-if="item.img">
<img :src="item.img" />
</div>
<div class="left-list1" v-else>{{ index + 1 }}</div>
<a-tooltip>
<template #title>{{ item.deptName }}</template>
<div class="left-list2">{{ item.deptName }}</div>
</a-tooltip>
<div class="left-list1">{{ item.applyCount }}</div>
<div class="left-list1" style="color: #1ffefd">
{{ item.applyPrice }}
</div>
</div>
</div> -->
</div> </div>
<div class="bottom1"> <div class="bottom1">
<!-- <div class="bottom-item">
<div class="inner-title">
<p style="width: 220px">市级部门共享贡献资金排行</p>
</div>
<div class="left-list">
<div class="left-list1">排行</div>
<div class="left-list2">部门名称</div>
<div class="left-list1">应用数</div>
<div class="left-list1" style="color: #1ffefd">贡献金额</div>
</div>
<div class="left-list" v-for="(item, index) in top5DistrictList">
<div class="left-list1" v-if="item.img">
<img :src="item.img" />
</div>
<div class="left-list1" v-else>{{ index + 1 }}</div>
<a-tooltip>
<template #title>{{ item.deptName }}</template>
<div class="left-list2">{{ item.deptName }}</div>
</a-tooltip>
<div class="left-list1">{{ item.resourceCount }}</div>
<div class="left-list1" style="color: #1ffefd">
{{ item.applyPrice }}
</div>
</div>
</div> -->
<div class="bottom-item"> <div class="bottom-item">
<div class="inner-title"> <div class="inner-title">
<p style="width: 220px">市级部门审评节省资金排行</p> <p style="width: 220px">市级部门申请节省资金排行</p>
</div> </div>
<div class="left-list"> <div class="left-list">
<div class="left-list1">排行</div> <div class="left-list1">排行</div>
@ -95,6 +46,7 @@
<div class="left-list1">应用数</div> <div class="left-list1">应用数</div>
<div class="left-list1" style="color: #1ffefd">贡献金额</div> <div class="left-list1" style="color: #1ffefd">贡献金额</div>
</div> </div>
<div style=" height: 1.7rem; overflow-y: auto;overflow-x: hidden;width: 100%;">
<div class="left-list" v-for="(item, index) in top5DeptFundList"> <div class="left-list" v-for="(item, index) in top5DeptFundList">
<div class="left-list1" v-if="item.img"> <div class="left-list1" v-if="item.img">
<img :src="item.img" /> <img :src="item.img" />
@ -109,13 +61,14 @@
<div class="left-list1" style="color: #1ffefd"> <div class="left-list1" style="color: #1ffefd">
{{ item.applyPrice }} {{ item.applyPrice }}
</div> </div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="bottom2"> <div class="bottom2">
<div class="bottom-item"> <div class="bottom-item">
<div class="inner-title"> <div class="inner-title">
<p style="width: 220px">区市部门共享贡献资金排行</p> <p style="width: 220px">区市部门共享节省资金</p>
</div> </div>
<div class="left-list"> <div class="left-list">
<div class="left-list1">序号</div> <div class="left-list1">序号</div>
@ -146,7 +99,7 @@
</div> </div>
<div class="bottom-item"> <div class="bottom-item">
<div class="inner-title"> <div class="inner-title">
<p style="width: 220px">区市部门申请节省资金排行</p> <p style="width: 220px">区市部门申请节省资金</p>
</div> </div>
<div class="left-list"> <div class="left-list">
<div class="left-list1">序号</div> <div class="left-list1">序号</div>
@ -195,126 +148,126 @@
</template> </template>
<script> <script>
import { import {
getProvideDeptFundStatement, getProvideDeptFundStatement,
getApplyDeptFundStatement, getApplyDeptFundStatement,
getProvideDistrictFundStatement, getProvideDistrictFundStatement,
getApplyDistrictFundStatement, getApplyDistrictFundStatement,
selectTotal, selectTotal,
} from '@/api/assertReport' } from '@/api/assertReport'
export default { export default {
components: {}, components: {},
created() {}, created() {},
destroyed() {}, unmounted() {},
mounted() { mounted() {
this.getgetProvideDeptFund() this.getgetProvideDeptFund()
this.getApplyDeptFund() this.getApplyDeptFund()
this.getProvideDistrict() this.getProvideDistrict()
this.getApplyDistrictFund() this.getApplyDistrictFund()
this.selectAllTotal() this.selectAllTotal()
}, },
data() { data() {
// //
return { return {
// //
top5DistrictList: [], top5DistrictList: [],
// //
top5DeptFundList: [], top5DeptFundList: [],
// //
top5eDistrictFundList: [], top5eDistrictFundList: [],
// //
top5ApplyDistrictList: [], top5ApplyDistrictList: [],
servicesNum: [], servicesNum: [],
} }
}, },
methods: { methods: {
getgetProvideDeptFund() { getgetProvideDeptFund() {
getProvideDeptFundStatement().then((res) => { getProvideDeptFundStatement().then((res) => {
let result = res.data.data let result = res.data.data
if (result.length > 0) { if (result.length > 0) {
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
if (i === 0) { if (i === 0) {
result[i].img = require('../image/one.png') result[i].img = require('../image/one.png')
} }
if (i === 1) { if (i === 1) {
result[i].img = require('../image/two.png') result[i].img = require('../image/two.png')
} }
if (i === 2) { if (i === 2) {
result[i].img = require('../image/three.png') result[i].img = require('../image/three.png')
}
} }
} }
} this.top5DistrictList = result
this.top5DistrictList = result })
}) },
}, getApplyDeptFund() {
getApplyDeptFund() { getApplyDeptFundStatement().then((res) => {
getApplyDeptFundStatement().then((res) => { let result = res.data.data
let result = res.data.data if (result.length > 0) {
if (result.length > 0) { for (let i = 0; i < result.length; i++) {
for (let i = 0; i < result.length; i++) { if (i === 0) {
if (i === 0) { result[i].img = require('../image/one.png')
result[i].img = require('../image/one.png') }
} if (i === 1) {
if (i === 1) { result[i].img = require('../image/two.png')
result[i].img = require('../image/two.png') }
} if (i === 2) {
if (i === 2) { result[i].img = require('../image/three.png')
result[i].img = require('../image/three.png') }
} }
} }
} this.top5DeptFundList = result
this.top5DeptFundList = result })
}) },
getProvideDistrict() {
getProvideDistrictFundStatement().then((res) => {
let result = res.data.data
// if(result.length>0){
// for(let i=0;i<result.length;i++){
// if(i===0){
// result[i].img=require('../image/one.png')
// }
// if(i===1){
// result[i].img=require('../image/two.png')
// }
// if(i===2){
// result[i].img= require('../image/three.png')
// }
// }
// }
this.top5eDistrictFundList = result
})
},
getApplyDistrictFund() {
getApplyDistrictFundStatement().then((res) => {
let result = res.data.data
// if(result.length>0){
// for(let i=0;i<result.length;i++){
// if(i===0){
// result[i].img=require('../image/one.png')
// }
// if(i===1){
// result[i].img=require('../image/two.png')
// }
// if(i===2){
// result[i].img= require('../image/three.png')
// }
// }
// }
this.top5ApplyDistrictList = result
})
},
selectAllTotal() {
selectTotal().then((res) => {
this.servicesNum = res.data.data.total
})
},
}, },
getProvideDistrict() { }
getProvideDistrictFundStatement().then((res) => {
let result = res.data.data
// if(result.length>0){
// for(let i=0;i<result.length;i++){
// if(i===0){
// result[i].img=require('../image/one.png')
// }
// if(i===1){
// result[i].img=require('../image/two.png')
// }
// if(i===2){
// result[i].img= require('../image/three.png')
// }
// }
// }
this.top5eDistrictFundList = result
})
},
getApplyDistrictFund() {
getApplyDistrictFundStatement().then((res) => {
let result = res.data.data
// if(result.length>0){
// for(let i=0;i<result.length;i++){
// if(i===0){
// result[i].img=require('../image/one.png')
// }
// if(i===1){
// result[i].img=require('../image/two.png')
// }
// if(i===2){
// result[i].img= require('../image/three.png')
// }
// }
// }
this.top5ApplyDistrictList = result
})
},
selectAllTotal() {
selectTotal().then((res) => {
this.servicesNum = res.data.data.total
})
},
},
}
</script> </script>
<style lang='less' scoped> <style lang="less" scoped>
@keyframes turn { @keyframes turn {
0% { 0% {
border-image: linear-gradient(to right, #003194, #00ffea) 1; border-image: linear-gradient(to right, #003194, #00ffea) 1;
@ -332,212 +285,215 @@ export default {
border-image: linear-gradient(to right, #003194, #00ffea) 1; border-image: linear-gradient(to right, #003194, #00ffea) 1;
} }
} }
.top5-content::-webkit-scrollbar { .top5-content::-webkit-scrollbar {
width: 6px; width: 6px;
/*height: 4px;*/ /*height: 4px;*/
}
.top5-content::-webkit-scrollbar-thumb {
background-color: #00deff;
}
.map-search-result::-webkit-scrollbar-track,
.top5-content::-webkit-scrollbar-track {
background-color: #424748;
}
@keyframes topup50 {
from {
top: 50%;
} }
to {
top: -100%; .top5-content::-webkit-scrollbar-thumb {
background-color: #00deff;
} }
} .map-search-result::-webkit-scrollbar-track,
.right-survey { .top5-content::-webkit-scrollbar-track {
width: 620px; background-color: #424748;
height: 100%; }
color: #f0fafa; @keyframes topup50 {
font-size: 18px; from {
display: flex; top: 50%;
flex-direction: column; }
to {
top: -100%;
}
}
.right-survey {
width: 620px;
height: 100%;
color: #f0fafa;
font-size: 18px;
display: flex;
flex-direction: column;
.platform-overview-top { .platform-overview-top {
width: 100%;
height: 9.9rem;
background: rgba(0, 108, 188, 0.2);
border-radius: 2px;
border: 1px solid rgba(0, 108, 188, 0.7);
text-decoration: none;
outline: none;
-webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out;
transition: all 100ms ease-out;
.top {
font-size: 24px;
background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
background-size: 100% 100%;
text-align: center;
}
.bottom1 {
margin-top: 10px;
width: 100%; width: 100%;
display: table; height: 9.9rem;
justify-content: space-between;
align-items: center;
height: 1.8rem;
.bottom-item {
width: 98%;
}
}
.bottom2 {
margin-top: 10px;
// margin-top:10px;
width: 100%;
display: table;
justify-content: space-between;
align-items: center;
height: 4.0rem;
.bottom-item {
width: 48%;
}
}
:hover.bottom-item {
background: rgba(0, 108, 188, 0.5);
}
.bottom-item {
height: 100%;
overflow-y: auto;
background: rgba(0, 108, 188, 0.2); background: rgba(0, 108, 188, 0.2);
border-radius: 2px; border-radius: 2px;
margin: 2px 5px; border: 1px solid rgba(0, 108, 188, 0.7);
border: 1px solid #10496f; text-decoration: none;
outline: none;
.inner-title { -webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out;
transition: all 100ms ease-out;
.top {
font-size: 24px;
background: url('~@/assets/capabilityCloud/infrastructure_title.png')
no-repeat;
background-size: 100% 100%;
text-align: center;
}
.bottom1 {
margin-top: 10px; margin-top: 10px;
margin-bottom: 10px; width: 100%;
margin-right: 5px; // display: flex;
justify-content: space-between;
font-weight: bold; align-items: center;
color: #ffffff; height: 2.5rem;
p { // overflow-y: auto;
font-size: 16px; .bottom-item {
line-height: 27px; width: 98%;
background: linear-gradient( }
90deg, }
#041d2f 0, .bottom2 {
rgba(8, 115, 193, 0) 90% margin-top: 10px;
); // margin-top:10px;
color: #1ffefd; width: 100%;
width: auto; display: table;
padding-left: 5px; justify-content: space-between;
align-items: center;
height: 4rem;
.bottom-item {
width: 48%;
} }
} }
display: inline-table; :hover.bottom-item {
background: rgba(0, 108, 188, 0.5);
}
.bottom-item {
height: 100%;
// overflow-y: auto;
background: rgba(0, 108, 188, 0.2);
border-radius: 2px;
margin: 2px 5px;
border: 1px solid #10496f;
.left-list { .inner-title {
text-align: center; margin-top: 10px;
color: #fff; margin-bottom: 10px;
width: 100%; margin-right: 5px;
height: 26px;
margin-right: 10px; font-weight: bold;
margin-top: 5px; color: #ffffff;
font-size: 16px; p {
.left-list1 { font-size: 16px;
font-size: 16x; line-height: 27px;
float: left; background: linear-gradient(
width: 22%; 90deg,
height: 0.32rem; #041d2f 0,
line-height: 0.32rem; rgba(8, 115, 193, 0) 90%
overflow: hidden; );
text-overflow: ellipsis; color: #1ffefd;
white-space: nowrap; width: auto;
-webkit-line-clamp: 1; padding-left: 5px;
-webkit-box-orient: vertical;
word-break: break-all;
}
.left-list2 {
height: 0.32rem;
line-height: 0.32rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
cursor: pointer;
font-size: 16px;
float: left;
width: 30%;
&:hover {
color: rgb(0 255 255);
} }
} }
.active-item {
cursor: pointer; display: inline-table;
font-size: 14px;
float: left; .left-list {
width: 40%; text-align: center;
color: rgb(0 255 255); color: #fff;
font-weight: bold; width: 100%;
text-decoration: underline; height: 26px;
margin-right: 10px;
margin-top: 5px;
font-size: 16px;
.left-list1 {
font-size: 16x;
float: left;
width: 22%;
height: 0.32rem;
line-height: 0.32rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.left-list2 {
height: 0.32rem;
line-height: 0.32rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
cursor: pointer;
font-size: 16px;
float: left;
width: 30%;
&:hover {
color: rgb(0 255 255);
}
}
.active-item {
cursor: pointer;
font-size: 14px;
float: left;
width: 40%;
color: rgb(0 255 255);
font-weight: bold;
text-decoration: underline;
}
} }
} }
} }
} .platform-overview-top:hover {
.platform-overview-top:hover { border: 2px solid;
border: 2px solid; animation: turn 5s linear infinite;
animation: turn 5s linear infinite;
}
.platform-overview-bottom {
margin-top: 20px;
width: 100%;
height: 1.7rem;
background: rgba(0, 108, 188, 0.2);
border-radius: 2px;
border: 1px solid rgba(0, 108, 188, 0.7);
text-decoration: none;
outline: none;
-webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out;
transition: all 100ms ease-out;
.top {
font-size: 24px;
background: url('~@/assets/capabilityCloud/infrastructure_title.png') no-repeat;
background-size: 100% 100%;
text-align: center;
} }
.bottom { .platform-overview-bottom {
margin-top: 20px; margin-top: 20px;
display: flex; width: 100%;
justify-content: space-between; height: 1.7rem;
align-items: center; background: rgba(0, 108, 188, 0.2);
padding: 0rem 0.2rem; border-radius: 2px;
.component-services-content-right-left-content-son { border: 1px solid rgba(0, 108, 188, 0.7);
background: url('~@/assets/capabilityCloud/Component_services_snum.png') text-decoration: none;
outline: none;
-webkit-transition: all 100ms ease-out;
-moz-transition: all 100ms ease-out;
transition: all 100ms ease-out;
.top {
font-size: 24px;
background: url('~@/assets/capabilityCloud/infrastructure_title.png')
no-repeat; no-repeat;
background-size: 1.1rem 0.59rem; background-size: 100% 100%;
background-position: center;
text-align: center; text-align: center;
& > p:first-child { }
color: #ffffff; .bottom {
font-size: 0.16rem; margin-top: 20px;
line-height: 0.16rem; display: flex;
margin-bottom: 0.12rem; justify-content: space-between;
} align-items: center;
& > p:last-child { padding: 0rem 0.2rem;
color: #1ef6f5; .component-services-content-right-left-content-son {
font-size: 0.28rem; background: url('~@/assets/capabilityCloud/Component_services_snum.png')
line-height: 0.28rem; no-repeat;
padding-bottom: 0.24rem; background-size: 1.1rem 0.59rem;
margin: 0; background-position: center;
text-align: center;
& > p:first-child {
color: #ffffff;
font-size: 0.16rem;
line-height: 0.16rem;
margin-bottom: 0.12rem;
}
& > p:last-child {
color: #1ef6f5;
font-size: 0.28rem;
line-height: 0.28rem;
padding-bottom: 0.24rem;
margin: 0;
}
} }
} }
} }
.platform-overview-bottom:hover {
border: 2px solid;
animation: turn 5s linear infinite;
}
} }
.platform-overview-bottom:hover {
border: 2px solid;
animation: turn 5s linear infinite;
}
}
</style> </style>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.xiaoshangqing * @Author: hisense.xiaoshangqing
* @Date: 2022-7-26 10:00:48 * @Date: 2022-7-26 10:00:48
* @LastEditors: xiaoshangqing * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-07-27 16:56:55 * @LastEditTime: 2022-11-29 11:47:26
* @Description: 水库专题首页缩略图 --> * @Description: 水库专题首页缩略图 -->
<template> <template>
<div class="river-course-view"> <div class="river-course-view">
@ -13,516 +13,450 @@
<div class="topic-animation4 display-animation4"></div> <div class="topic-animation4 display-animation4"></div>
<div class="topic-animation5 display-animation5"></div> <div class="topic-animation5 display-animation5"></div>
<div class="topic-animation6 display-animation6"></div> <div class="topic-animation6 display-animation6"></div>
</div> </div>
</template> </template>
<script> <script>
import { import { getProvideDistrictFundStatement } from '@/api/assertReport'
getDistrictFundStatement import axios from 'axios'
} from '@/api/assertReport' const echarts = require('echarts')
import axios from 'axios' export default {
const echarts = require("echarts"); //import使
export default { components: {},
//import使 data() {
components: {}, //
data() { return {
// districtData: [
return { {
name: '市南区',
districtData: [ value: [120.435966, 35.980892],
{
name: "市南区",
value: [120.395966, 36.000892],
},
{
name: "市北区",
value: [120.355026, 36.083819],
},
{
name: "李沧区",
value: [120.421236, 36.188023],
},
{
name: "崂山区",
value: [120.587393, 36.199569],
},
{
name: "城阳区",
value: [120.369135, 36.266833],
},
{
name: "即墨区",
value: [120.517352, 36.490847],
},
{
name: "莱西市",
value: [120.426226, 36.86009],
},
{
name: "胶州市",
value: [120.010202, 36.235878],
},
{
name: "平度市",
value: [119.959012, 36.788828],
},
{
name: "西海岸",
value: [119.895518, 35.875138],
},
],
};
},
mounted() {
this.findAllInfo();
},
//
methods: {
findAllInfo(){
getDistrictFundStatement().then((res) => {
let districtData=this.districtData
let resulrtData=res.data.data
for(let i=0;i<resulrtData.length;i++){
for(let j=0;j<districtData.length;j++){
if(resulrtData[i].districtName=districtData[j].name){
districtData[j].num=resulrtData[i].applyPrice
}
}
}
this.initMap(districtData)
})
},
initMap(data) {
this.loadedDataUrl = "./static/qingdao.json";
let _this=this
axios.get(_this.loadedDataUrl, {}) .then(geoJson =>{
_this.myChart = echarts.init(_this.$refs.qdCityMap);
echarts.registerMap("qingdao", geoJson.data);
const imgBack = new Image();
imgBack.src = "./static/assets/map-back.png";
const img = new Image();
img.src = "./static/assets/echarts-map-bak.png";
const typeImg = new Image();
typeImg.src = "./static/assets/reservoir-type-bak.png";
_this.option = {
visualMap: {
show: false,
max: 100,
seriesIndex: 1,
inRange: {
color: ["#000000", "yellow", "pink"],
},
}, },
geo: [ {
{ name: '市北区',
map: "qingdao", value: [120.355026, 36.083819],
roam: false, // },
aspectScale: 0.8, {
zoom: 1.1, // name: '李沧区',
top: 100, value: [120.421236, 36.188023],
z: 6, },
label: { {
show: true, // name: '崂山区',
textStyle: { value: [120.587393, 36.199569],
color: "#ffffff", // },
fontSize: 16, // {
fontFamily: "微软雅黑", name: '城阳区',
backgroundColor: "rgba(0,0,0,0)", //0 value: [120.369135, 36.266833],
}, },
}, {
itemStyle: { name: '即墨区',
borderColor: "#25e8ff", value: [120.517352, 36.490847],
borderWidth: 2, },
/* areaColor: "#004d8e", //rgba设置透明度0 {
shadowColor: "#10daff", name: '莱西市',
shadowBlur: 10, value: [120.426226, 36.86009],
shadowOffsetX: 10, },
opacity: 0.53, */ {
areaColor: { name: '胶州市',
image: img, value: [120.010202, 36.235878],
repeat: "repeat", },
}, {
}, name: '平度市',
emphasis: { value: [119.959012, 36.788828],
disabled: false, },
focus: "none", {
itemStyle: { name: '西海岸新区',
color: null, value: [119.895518, 35.875138],
}, },
label: { ],
show: true, }
//color: "#fff",
},
},
},
{
map: "qingdao",
aspectScale: 0.8,
roam: false, //
zoom: 1.1, //
top: 105,
z: 4,
itemStyle: {
areaColor: "#1864a5",
borderColor: "transparent",
},
silent: true,
tooltip: {
show: false,
},
},
{
map: "qingdao",
aspectScale: 0.8,
roam: false, //
zoom: 1.1, //
top: 110,
z: 3,
itemStyle: {
areaColor: "#1864a5",
borderColor: "transparent",
borderWidth: 2,
},
silent: true,
tooltip: {
show: false,
},
},
{
map: "qingdao",
aspectScale: 0.8,
roam: true, //
zoom: 1.1, //
top: 115,
z: 2,
itemStyle: {
areaColor: "#1864a5",
//borderColor: "#0f3866",
borderColor: "transparent",
borderWidth: 1,
shadowColor: "#808080", //
shadowBlur: "10",
},
silent: true,
tooltip: {
show: false,
},
},
],
series: [
// {
// tooltip: {
// show: false,
// },
// type: "effectScatter",
// coordinateSystem: "geo",
// rippleEffect: {
// scale: 3,
// brushType: "stroke",
// },
// showEffectOn: "render",
// itemStyle: {
// normal: {
// shadowColor: "#ffffff",
// shadowBlur: 10,
// shadowOffsetX: 0,
// shadowOffsetY: 0,
// color: "#df1818",
// },
// },
// label: {
// normal: {
// color: "#fff",
// },
// },
// symbol: "circle",
// symbolSize: [10, 5],
// data:data, //
// zlevel: 1,
// },
// {
// type: "scatter",
// coordinateSystem: "geo",
// symbol: function (value, params) {
// return 'image://static/assets/warning-reservoir.png';
// },
// symbolSize: [25, 35],
// symbolOffset: [0, -20],
// z: 9999,
// data:data, //
// },
{
type: 'scatter',
coordinateSystem: 'geo',
label: {
normal: {
show: true,
formatter: function (params) {
var name = params.data.num;
var text = `{fline|${name}}`;
return text;
},
color: '#fff',
rich: {
fline: {
padding: [0, 25],
color: '#dcc52f',
textShadowColor: '#030615',
textShadowBlur: '0',
textShadowOffsetX: 1,
textShadowOffsetY: 1,
fontSize: 14,
fontWeight: 400,
},
tline: {
padding: [0, 27],
color: '#afd31d',
fontSize: 12,
},
},
},
emphasis: {
show: true,
},
},
itemStyle: {
color: '#e3e00a',
},
symbol: "image://static/assets/reservoir-type-bak.png",
symbolSize: [84, 28],
symbolOffset: [0, -30],
z: 999,
data: data, //
},
],
};
_this.myChart.setOption(_this.option);
_this.myChart.on("click", (params) => {
// console.log("", params);
// //
// //name
// const index = _this.districtData.findIndex((item) => {
// return item.name === params.name ;
// });
// //console.log('rrrrrrrr5555',index);
// let districtObject = {
// name:params.name,
// longitude:_this.districtData[index].value[0],
// latitude:_this.districtData[index].value[1],
// };
// _this.$emit('jumpIntoMap',districtObject);
});
});
}, },
mounted() {
this.findAllInfo()
},
//
methods: {
findAllInfo() {
getProvideDistrictFundStatement().then((res) => {
let districtData = this.districtData
let resulrtData = res.data.data
for (let i = 0; i < resulrtData.length; i++) {
for (let j = 0; j < districtData.length; j++) {
if (resulrtData[i].districtName === districtData[j].name) {
districtData[j].num = resulrtData[i].applyPrice + '万'
}
}
}
console.log('上图数据', districtData)
this.initMap(districtData)
})
},
initMap(data) {
this.loadedDataUrl = './static/qingdao.json'
let _this = this
axios.get(_this.loadedDataUrl, {}).then((geoJson) => {
_this.myChart = echarts.init(_this.$refs.qdCityMap)
echarts.registerMap('qingdao', geoJson.data)
const imgBack = new Image()
imgBack.src = './static/assets/map-back.png'
const img = new Image()
img.src = './static/assets/echarts-map-bak.png'
const typeImg = new Image()
typeImg.src = './static/assets/reservoir-type-bak.png'
_this.option = {
visualMap: {
show: false,
max: 100,
seriesIndex: 1,
inRange: {
color: ['#000000', 'yellow', 'pink'],
},
},
geo: [
{
map: 'qingdao',
roam: false, //
aspectScale: 0.8,
zoom: 1.1, //
top: 100,
z: 6,
label: {
show: true, //
textStyle: {
color: '#ffffff', //
fontSize: 16, //
fontFamily: '微软雅黑',
backgroundColor: 'rgba(0,0,0,0)', //0
},
},
itemStyle: {
borderColor: '#25e8ff',
borderWidth: 2,
areaColor: {
image: img,
repeat: 'repeat',
},
},
emphasis: {
//disabled: false,
//areaColor: '#3066ba',
focus: 'none',
itemStyle: {
// color: '#3066ba',//
color: '#1ef6f5',//
},
label: {
show: true,
color: "#ff934a",
fontWeight:'bold'
},
},
},
{
map: 'qingdao',
aspectScale: 0.8,
roam: false, //
zoom: 1.1, //
top: 105,
z: 4,
itemStyle: {
areaColor: '#1864a5',
borderColor: 'transparent',
},
silent: true,
tooltip: {
show: false,
},
},
{
map: 'qingdao',
aspectScale: 0.8,
roam: false, //
zoom: 1.1, //
top: 110,
z: 3,
itemStyle: {
areaColor: '#1864a5',
borderColor: 'transparent',
borderWidth: 2,
},
silent: true,
tooltip: {
show: false,
},
},
{
map: 'qingdao',
aspectScale: 0.8,
roam: false, //
zoom: 1.1, //
top: 115,
z: 2,
itemStyle: {
areaColor: '#1864a5',
//borderColor: "#0f3866",
borderColor: 'transparent',
borderWidth: 1,
shadowColor: '#808080', //
shadowBlur: '10',
},
silent: true,
tooltip: {
show: false,
},
},
],
series: [
{
type: 'scatter',
coordinateSystem: 'geo',
label: {
normal: {
show: true,
formatter: function (params) {
var name = params.data.num
var text = `{fline|${name}}`
return text
},
color: '#fff',
rich: {
fline: {
padding: [0, 25],
color: '#dcc52f',
textShadowColor: '#030615',
textShadowBlur: '0',
textShadowOffsetX: 1,
textShadowOffsetY: 1,
fontSize: 14,
fontWeight: 400,
},
tline: {
padding: [0, 27],
color: '#afd31d',
fontSize: 12,
},
},
},
emphasis: {
show: true,
},
},
itemStyle: {
color: '#e3e00a',
},
symbol: 'image://static/assets/reservoir-type-bak.png',
symbolSize: [84, 28],
symbolOffset: [0, -30],
z: 999,
data: data, //
},
],
}
_this.myChart.setOption(_this.option)
_this.myChart.on('click', (params) => {
// console.log("", params);
// //
// //name
// const index = _this.districtData.findIndex((item) => {
// return item.name === params.name ;
// });
// //console.log('rrrrrrrr5555',index);
// let districtObject = {
// name:params.name,
// longitude:_this.districtData[index].value[0],
// latitude:_this.districtData[index].value[1],
// };
// _this.$emit('jumpIntoMap',districtObject);
})
})
},
},
}, beforeCreate() {}, // -
beforeMount() {}, // -
beforeCreate() {}, // - beforeUpdate() {}, // -
beforeMount() {}, // - updated() {}, // -
beforeUpdate() {}, // - beforeUnmount() {}, // -
updated() {}, // - unmounted() {}, // -
beforeDestroy() {}, // - activated() {}, //keep-alive
destroyed() {}, // - }
activated() {}, //keep-alive
};
</script> </script>
<style lang='less' scoped> <style lang="less" scoped>
//@import url(); css //@import url(); css
.river-course-view { .river-course-view {
position: relative; position: relative;
width:100%; width: 100%;
height: 100%; height: 100%;
background: url("~@/assets/common/homePage/big-bak.png") no-repeat; background: url('~@/assets/common/homePage/big-bak.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
.city-map-content-echarts { .city-map-content-echarts {
width: 10rem; width: 10rem;
height: 7.9rem; height: 7.8rem;
top: 10px; top: 20px;
left: 500px; left: 500px;
bottom: 2rem; bottom: 2rem;
position: absolute; position: absolute;
z-index: 1000; z-index: 1000;
} }
.map-menu { .map-menu {
position: absolute; position: absolute;
right: 486px; right: 486px;
bottom: 10px; bottom: 10px;
display: flex;
flex-direction: column;
align-items:flex-end;
pointer-events: none;
z-index:99999;
.map-tab {
// 1
display: flex; display: flex;
pointer-events: auto; flex-direction: column;
.tab-item { align-items: flex-end;
flex: 1; pointer-events: none;
cursor: pointer; z-index: 99999;
min-width: 1.4rem; .map-tab {
height: 30px; // 1
line-height: 30px; display: flex;
text-align: center; pointer-events: auto;
border: 1px solid #2ab1e9; .tab-item {
border-left: 0; flex: 1;
font-size: 16px; cursor: pointer;
padding: 0px 20px; min-width: 1.4rem;
background-color: #0d284f; height: 30px;
color: #35cffc; line-height: 30px;
&.active { text-align: center;
color: #fefefe; border: 1px solid #2ab1e9;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0), #1eafda); border-left: 0;
}
&:first-child {
border-left: 1px solid #2ab1e9;
}
}
}
}
.reservoirType-list{
position: absolute;
right: 486px;
width: 122px;
height: 100px;
top: 164px;
padding: 10px 0 0 10px;
display: flex;
flex-direction: column;
background-color: rgba(13,40,79,0.5);
border:1px solid #0d284f;
padding-top:22px;
.type-legend{
margin-bottom:20px;
margin-left: 10px;
display:flex;
flex-direction:row;
.legend-color{
width:12px;
height:12px;
border-radius: 50%;
text-align: center;
line-height: 12px;
}
.color-normal{
background-color:#00ebac ;
}
.color-warning{
background-color:#ff3537 ;
}
.legend-text{
margin-left: 10px;
span{
color:#ffffff;
font-size: 16px; font-size: 16px;
padding: 0px 20px;
background-color: #0d284f;
color: #35cffc;
&.active {
color: #fefefe;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0), #1eafda);
}
&:first-child {
border-left: 1px solid #2ab1e9;
}
} }
} }
} }
} .reservoirType-list {
.topic-animation1 { position: absolute;
width: 100%; right: 486px;
height: 100%; width: 122px;
position: absolute; height: 100px;
top: 164px;
margin: 0px auto; padding: 10px 0 0 10px;
background-image: url("~@/assets/common/homePage/animation1.png"); display: flex;
background-size: cover; flex-direction: column;
} background-color: rgba(13, 40, 79, 0.5);
.display-animation1 { border: 1px solid #0d284f;
animation: topup1 5s linear 1s infinite; padding-top: 22px;
} .type-legend {
.topic-animation2 { margin-bottom: 20px;
width: 100%; margin-left: 10px;
height: 100%; display: flex;
position: absolute; flex-direction: row;
.legend-color {
margin: 0px auto; width: 12px;
background-image: url("~@/assets/common/homePage/animation2.png"); height: 12px;
background-size: cover; border-radius: 50%;
} text-align: center;
.display-animation2 { line-height: 12px;
animation: topup1 5s linear 2s infinite; }
} .color-normal {
.topic-animation3 { background-color: #00ebac;
width: 100%; }
height: 100%; .color-warning {
position: absolute; background-color: #ff3537;
}
margin: 0px auto; .legend-text {
background-image: url("~@/assets/common/homePage/animation3.png"); margin-left: 10px;
background-size: cover; span {
} color: #ffffff;
.display-animation3 { font-size: 16px;
animation: topup1 5s linear 3s infinite; }
} }
.topic-animation4 { }
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url("~@/assets/common/homePage/animation4.png");
background-size: cover;
}
.display-animation4 {
animation: topup1 5s linear infinite;
}
.topic-animation5 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url("~@/assets/common/homePage/animation5.png");
background-size: cover;
}
.display-animation5 {
animation: topup1 5s linear 4s infinite;
}
.topic-animation6 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url("~@/assets/common/homePage/animation6.png");
background-size: cover;
}
.display-animation6 {
animation: topup1 5s linear infinite;
}
@keyframes topup1 {
from {
top: 0%;
} }
to { .topic-animation1 {
top: -100%; width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url('~@/assets/common/homePage/animation1.png');
background-size: cover;
}
.display-animation1 {
animation: topup1 5s linear 1s infinite;
}
.topic-animation2 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url('~@/assets/common/homePage/animation2.png');
background-size: cover;
}
.display-animation2 {
animation: topup1 5s linear 2s infinite;
}
.topic-animation3 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url('~@/assets/common/homePage/animation3.png');
background-size: cover;
}
.display-animation3 {
animation: topup1 5s linear 3s infinite;
}
.topic-animation4 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url('~@/assets/common/homePage/animation4.png');
background-size: cover;
}
.display-animation4 {
animation: topup1 5s linear infinite;
}
.topic-animation5 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url('~@/assets/common/homePage/animation5.png');
background-size: cover;
}
.display-animation5 {
animation: topup1 5s linear 4s infinite;
}
.topic-animation6 {
width: 100%;
height: 100%;
position: absolute;
margin: 0px auto;
background-image: url('~@/assets/common/homePage/animation6.png');
background-size: cover;
}
.display-animation6 {
animation: topup1 5s linear infinite;
}
@keyframes topup1 {
from {
top: 0%;
}
to {
top: -100%;
}
} }
} }
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

View File

@ -1,112 +1,103 @@
<!-- --> <!-- -->
<template> <template>
<div class="capability-cloud">
<div class="capability-cloud">
<div class="header"> <div class="header">
<span class="title" @click="goHome">城市云脑通用能力服务平台</span> <span class="title" @click="goHome">城市云脑通用能力服务平台</span>
</div> </div>
<div class="header1"> <div class="header1">
<div style=" color:#bed1df; font-size: 32px">累计节省财政资金</div> <div style="color: #bed1df; font-size: 32px">累计节省财政资金</div>
<div class="area-right"> <div class="area-right">
<!-- <div class="mianJi">累计节省财政资金</div> --> <!-- <div class="mianJi">累计节省财政资金</div> -->
<template v-for="(item, index) in saveMonmy"> <template v-for="(item, index) in saveMonmy">
<p v-if="item == '.'" :key="index"> <p v-if="item == '.'" :key="index">
{{ item }} {{ item }}
</p> </p>
<span v-else >{{ item }}</span> <span v-else>{{ item }}</span>
</template> </template>
<div class="mianJi">万元</div> <div class="mianJi">万元</div>
</div>
<div style=" color: #bed1df; font-size: 16px">资源参考价格由部门提供或参考市场价格设定</div>
</div> </div>
<div style="color: #bed1df; font-size: 16px">
资源参考价格由部门提供或参考市场价格设定
</div>
</div>
<!--左侧--> <!--左侧-->
<div class="reservoir-left"> <div class="reservoir-left">
<!-- 左侧内容 --> <!-- 左侧内容 -->
<reservoir-left /> <reservoir-left />
</div> </div>
<!--右侧--> <!--右侧-->
<div class="reservoir-right"> <div class="reservoir-right">
<reservoir-right /> <reservoir-right />
</div> </div>
<!--中间地图--> <!--中间地图-->
<div class="reservoir-map"> <div class="reservoir-map">
<reservoir-thumbnail <reservoir-thumbnail
@changeThumbnailMap="changeThumbnailMap" @changeThumbnailMap="changeThumbnailMap"
@jumpIntoMap="jumpIntoMap" @jumpIntoMap="jumpIntoMap"
/> />
</div> </div>
<!--下方--> <!--下方-->
<div class="bottom"> <div class="bottom">
<reservoir-bottom /> <reservoir-bottom />
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import { import { getApplyPriceCount } from '@/api/assertReport'
getApplyPriceCount import ReservoirThumbnail from './components/ReservoirThumbnail.vue'
} from '@/api/assertReport' import ReservoirLeft from './components/ReservoirLeft'
import ReservoirThumbnail from "./components/ReservoirThumbnail.vue"; import ReservoirRight from './components/ReservoirRight'
import ReservoirLeft from "./components/ReservoirLeft"; import ReservoirBottom from './components/ReservoirBottom'
import ReservoirRight from "./components/ReservoirRight"; import { NumbersConvertedToArrays } from '@/utils/arrayMethod.js'
import ReservoirBottom from "./components/ReservoirBottom"; export default {
import { NumbersConvertedToArrays } from "@/utils/arrayMethod.js"; //import使
export default { components: {
//import使 ReservoirThumbnail,
components: { ReservoirLeft,
ReservoirThumbnail, ReservoirRight,
ReservoirLeft, ReservoirBottom,
ReservoirRight, },
ReservoirBottom data() {
//
return {
saveMonmy: [],
model: 'common',
dialogTitle: '周边视频',
videoAnalysisDialogVisible: false, //
riverCourseHistoryDialogVisible: false, //
riverDetailInfo: {}, //
dialogType: 'add',
dialogData: {},
dangerReportDialogVisible: false,
positionInfo: null,
reservoirDialogVisible: false, //
districtOptions: [], //
isThumbnail: true, //
tabindex: 0, //3dtab
listType: '', // warnig
basicInfo: {}, //
type: '',
callSource: 'indexPage',
}
},
// data
computed: {},
//data
watch: {},
//
methods: {
getSaveMoney() {
getApplyPriceCount().then((res) => {
this.saveMonmy = NumbersConvertedToArrays(res.data.data)
})
},
},
}, mounted() {
data() { this.getSaveMoney()
// },
return { }
saveMonmy:[],
model: "common",
dialogTitle: "周边视频",
videoAnalysisDialogVisible: false, //
riverCourseHistoryDialogVisible: false, //
riverDetailInfo: {}, //
dialogType: "add",
dialogData: {},
dangerReportDialogVisible: false,
positionInfo: null,
reservoirDialogVisible: false, //
districtOptions: [], //
isThumbnail:true, //
tabindex:0, //3dtab
listType:"",// warnig
basicInfo: {}, //
type: '',
callSource:"indexPage",
};
},
// data
computed: {},
//data
watch: {},
//
methods: {
getSaveMoney(){
getApplyPriceCount().then((res) => {
this.saveMonmy=NumbersConvertedToArrays(res.data.data)
})
}
},
mounted() {
this.getSaveMoney()
},
};
</script> </script>
<style lang="less"> <style lang="less">
@font-face { @font-face {
@ -135,156 +126,153 @@ export default {
} }
} }
</style> </style>
<style lang='less' scoped> <style lang="less" scoped>
// scopeddate-pickerreservoir // scopeddate-pickerreservoir
//@import url(); css //@import url(); css
.module-header-container { .module-header-container {
position: absolute; position: absolute;
z-index: 1000; z-index: 1000;
top: 0px; top: 0px;
width: 100%; width: 100%;
pointer-events: none; pointer-events: none;
} }
.capability-cloud { .capability-cloud {
height: 10.8rem; height: 10.8rem;
background: url('~@/assets/capabilityCloud/bg.png') no-repeat; background: url('~@/assets/capabilityCloud/bg.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
overflow: hidden; overflow: hidden;
& > .header { & > .header {
height: 1.04rem; height: 1.04rem;
text-align: center; text-align: center;
background: url('~@/assets/capabilityCloud/header.png') no-repeat; background: url('~@/assets/capabilityCloud/header.png') no-repeat;
font-size: 0.46rem; font-size: 0.46rem;
} }
.bottom{ .bottom {
bottom: 12px; bottom: 12px;
position: absolute; position: absolute;
left: 545px; left: 545px;
width: 732px; width: 732px;
align-items: center; align-items: center;
z-index: 1004; z-index: 1004;
text-align: center; text-align: center;
height: 1.8rem;
height: 1.8rem;
} }
.header1 { .header1 {
top: 78px; top: 78px;
position: absolute; position: absolute;
left: 795px; left: 795px;
align-items: center; align-items: center;
z-index: 1004; z-index: 1004;
text-align: center; text-align: center;
.area-right { .area-right {
display: flex; display: flex;
align-items: center; align-items: center;
justify-items: flex-end; justify-items: flex-end;
padding-right: 20px; padding-right: 20px;
color: #bed1df; color: #bed1df;
margin-left: 100px; margin-left: 100px;
span { span {
width: 36px; width: 36px;
// height: 45px; // height: 45px;
// line-height: 45px; // line-height: 45px;
color: #fed93f; color: #fed93f;
font-weight: bold; font-weight: bold;
background: url("~@/assets/capabilityCloud/num_bg.png") background: url('~@/assets/capabilityCloud/num_bg.png') 100% 100%
100% 100% no-repeat; no-repeat;
background-size: 100%; background-size: 100%;
text-align: center; text-align: center;
font-size: 34px; font-size: 34px;
margin-right: 3px; margin-right: 3px;
font-family: DinPro-Bold; font-family: DinPro-Bold;
}
.mianJi {
margin-top: 6px;;
margin-right: 3px;
font-size: 22px;
float:right;
}
p {
height: 44px;
display: flex;
align-items: flex-end;
justify-items: center;
font-size: 34px;
}
} }
.mianJi {
margin-top: 6px;
margin-right: 3px;
font-size: 22px;
float: right;
}
p {
height: 44px;
display: flex;
align-items: flex-end;
justify-items: center;
font-size: 34px;
}
}
} }
//position: relative; //position: relative;
.reservoir-left { .reservoir-left {
position: absolute; position: absolute;
left: 0.1rem; left: 0.1rem;
z-index: 1000; z-index: 1000;
top: 0.8rem; top: 0.8rem;
height: calc(100% - 0.8rem); height: calc(100% - 0.8rem);
} }
.reservoir-right { .reservoir-right {
position: absolute; position: absolute;
z-index: 1001; z-index: 1001;
right: 0.1rem; right: 0.1rem;
top: 0.8rem; top: 0.8rem;
height: calc(100% - 0.8rem); height: calc(100% - 0.8rem);
} }
.reservoir-map { .reservoir-map {
position: absolute; position: absolute;
width: 100%; width: 100%;
// height: 100%; // height: 100%;
// bottom:2rem; // bottom:2rem;
}
}
//
.phone-date-picker {
color: #fff;
//border: 1px solid #e4e7ed;
border: 1px solid #008fbb;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
//background: #000;
background: #123d68;
//background:rgba(0, 0, 0, 0);
line-height: 30px;
margin: 5px 0;
.el-date-table td.disabled div {
background: #305156 !important;
}
.el-picker-panel__footer {
//background-color: rgba(0, 0, 0, 0.8);
background: #123d68;
color: #fff;
.el-picker-panel__link-btn:first-of-type {
display: none;
} }
} }
.el-date-table td.in-range div { //
background: #009ab3; .phone-date-picker {
}
.el-input__inner {
//background-color: rgba(0, 0, 0, 0.8);
background: #123d68;
color: #fff; color: #fff;
} //border: 1px solid #e4e7ed;
.el-date-picker__header > button,
span {
color: #fff;
}
.el-picker-panel__content > .el-date-table > tbody > tr > th {
color: #fff;
}
.el-button.is-plain:hover,
.el-button.is-plain:focus {
background: #009ab3;
}
.el-button--default {
border-radius: 0;
background: #009ab3;
//border: 1px solid #dcdfe6;
border: 1px solid #008fbb; border: 1px solid #008fbb;
border-color: #009ab3; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
//background: #000;
background: #123d68;
//background:rgba(0, 0, 0, 0);
line-height: 30px;
margin: 5px 0;
.el-date-table td.disabled div {
background: #305156 !important;
}
.el-picker-panel__footer {
//background-color: rgba(0, 0, 0, 0.8);
background: #123d68;
color: #fff;
.el-picker-panel__link-btn:first-of-type {
display: none;
}
}
.el-date-table td.in-range div {
background: #009ab3;
}
.el-input__inner {
//background-color: rgba(0, 0, 0, 0.8);
background: #123d68;
color: #fff;
}
.el-date-picker__header > button,
span {
color: #fff;
}
.el-picker-panel__content > .el-date-table > tbody > tr > th {
color: #fff;
}
.el-button.is-plain:hover,
.el-button.is-plain:focus {
background: #009ab3;
}
.el-button--default {
border-radius: 0;
background: #009ab3;
//border: 1px solid #dcdfe6;
border: 1px solid #008fbb;
border-color: #009ab3;
}
} }
}
</style> </style>

View File

@ -2,7 +2,7 @@
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-19 10:15:33 * @Date: 2022-06-19 10:15:33
* @LastEditors: hisense.wuhongjian * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-06 16:21:24 * @LastEditTime: 2022-11-29 17:39:20
* @Description: 能力云图-组件服务 * @Description: 能力云图-组件服务
--> -->
<template> <template>
@ -102,7 +102,7 @@
<template #title>{{ item.name }}</template> <template #title>{{ item.name }}</template>
<span>{{ item.name }}</span> <span>{{ item.name }}</span>
</a-tooltip> </a-tooltip>
<span>{{ item.count || 0 }}</span> <span>{{ item.count || item.score || 0 }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -125,7 +125,7 @@
let xinhaianIsShow = whoShow.itShowXiHaiAn //西 let xinhaianIsShow = whoShow.itShowXiHaiAn //西
let snum = ref([ let snum = ref([
{ title: '上架总量', num: '0000' }, { title: '上架总量', num: '0000' },
{ title: '总调用次数(API)', num: '0' }, { title: '总调用次数(API)', num: '1008' },
{ title: '健康度(API)', num: '100%' }, { title: '健康度(API)', num: '100%' },
]) ])
let dataclick = ref('total') let dataclick = ref('total')
@ -164,12 +164,20 @@
}) })
callTheTrend(callTheTrendData.value) callTheTrend(callTheTrendData.value)
} else { } else {
callTheTrendData.value.snum = ['0', '0', '0', '0', '0', '0', '0'] callTheTrendData.value.snum = [
'3',
'17',
'10',
'5',
'15',
'15',
'19',
]
callTheTrend(callTheTrendData.value) callTheTrend(callTheTrendData.value)
} }
}) })
} else { } else {
callTheTrendData.value.snum = ['0', '0', '0', '0', '0', '0', '0'] callTheTrendData.value.snum = ['3', '17', '10', '5', '15', '15', '19']
callTheTrend(callTheTrendData.value) callTheTrend(callTheTrendData.value)
} }
} else { } else {
@ -214,37 +222,37 @@
}) })
} else { } else {
callTheTrendData.value.snum = [ callTheTrendData.value.snum = [
'0', '3',
'0', '17',
'0', '10',
'0', '5',
'0', '15',
'0', '15',
'0', '19',
'0', '3',
'0', '17',
'0', '10',
'0', '5',
'0', '15',
'0', '15',
'0', '19',
'0', '10',
'0', '8',
'0', '16',
'0', '3',
'0', '17',
'0', '10',
'0', '5',
'0', '15',
'0', '15',
'0', '19',
'0', '3',
'0', '17',
'0', '10',
'0', '5',
'0', '15',
'0', '15',
'0', '19',
] ]
callTheTrend(callTheTrendData.value) callTheTrend(callTheTrendData.value)
} }
@ -259,7 +267,7 @@
option = { option = {
tooltip: { tooltip: {
backgroundColor: 'rgba(17,61,116,0.8)', backgroundColor: 'rgba(17,61,116,0.8)',
borderWidth: 0, // borderWidth: 0,
trigger: 'axis', trigger: 'axis',
formatter: function (val) { formatter: function (val) {
console.log(val) console.log(val)
@ -301,11 +309,13 @@
name: '个', name: '个',
type: 'value', type: 'value',
axisTick: { axisTick: {
show: false, show: true,
}, },
axisLine: { axisLine: {
show: true,
lineStyle: { lineStyle: {
color: '#57617B', color: '#336EBF',
width: '1',
}, },
}, },
axisLabel: { axisLabel: {
@ -316,6 +326,9 @@
}, },
splitLine: { splitLine: {
show: false, show: false,
// lineStyle: {
// color: ['#57617B'],
// },
}, },
}, },
], ],

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-06-19 10:15:33 * @Date: 2022-06-19 10:15:33
* @LastEditors: hisense.liangjunhua * @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-06-27 12:52:18 * @LastEditTime: 2022-11-28 16:23:25
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -50,10 +50,10 @@
name: '总申请次数', name: '总申请次数',
num: '', num: '',
}, },
{ // {
name: '满足率', // name: '',
num: '', // num: '',
}, // },
]) ])
// //
const assignRankings = ref([ const assignRankings = ref([

View File

@ -257,9 +257,18 @@
</b> </b>
{{ item.name }} : {{ item.name }} :
</div> </div>
<div v-if="item.type == 'input' && item.name === '参考价格'">
<a-input
:maxLength="1000"
v-model:value="item.note1"
:placeholder="'请输入' + placeHolderWords(item.name)+',单位为元'"
@change="changeIiem(item.name, item.note1)"
/>
<span style="color:red"> (仅用于测算为部门节省资金)</span>
</div>
<a-input <a-input
:maxLength="1000" :maxLength="1000"
v-if="item.type == 'input' && item.name.indexOf('名称') == -1" v-else-if="item.type == 'input' && item.name.indexOf('名称') == -1"
v-model:value="item.note1" v-model:value="item.note1"
:placeholder="'请输入' + placeHolderWords(item.name)" :placeholder="'请输入' + placeHolderWords(item.name)"
@change="changeIiem(item.name, item.note1)" @change="changeIiem(item.name, item.note1)"

View File

@ -22,7 +22,11 @@
</div> </div>
<div class="bottom" v-show="selectFlag2"> <div class="bottom" v-show="selectFlag2">
<span class="light"></span> <span class="light"></span>
<div v-for="val in dictList" :key="val" @click="changeAreaFunction(val)"> <div
v-for="val in dictList"
:key="val"
@click="changeAreaFunction(val)"
>
{{ val }} {{ val }}
</div> </div>
</div> </div>
@ -30,9 +34,18 @@
</div> </div>
<div class="algorithm-class"> <div class="algorithm-class">
<div v-for="(item, index) in dataList" :key="`algorithm-${index}`" class="algorithm-card"> <div
<a-image :src="algorithmCardPhoto(item)" :width="525" :height="275" :fallback="imgSrc" :preview="false"> v-for="(item, index) in dataList"
</a-image> :key="`algorithm-${index}`"
class="algorithm-card"
>
<a-image
:src="algorithmCardPhoto(item)"
:width="525"
:height="275"
:fallback="imgSrc"
:preview="false"
></a-image>
<a-tooltip> <a-tooltip>
<template #title>{{ item.name }}</template> <template #title>{{ item.name }}</template>
@ -46,308 +59,324 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { getCategoryTreePage } from '@/api/personalCenter' import { getCategoryTreePage } from '@/api/personalCenter'
import { getGisByArea } from '@/api/home' import { getGisByArea } from '@/api/home'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue' import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const deptType = ref(null) const area = router.currentRoute.value.query.area
const typeName = ref('全市') const deptType = ref(null)
const typeName2 = ref('全部') const typeName = ref('全市')
const dictList = ref([]) const typeName2 = ref('全部')
const dataList = ref([]) if (area) {
const selectFlag2 = ref(false) typeName2.value = area
const selectFlag = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
// if (val.dictLabel !== '') {
dictList.value.push(val.dictLabel)
// }
})
})
const params = {
pageNum: 1,
type: '智能算法',
area: typeName2.value == '全部' ? '' : typeName2.value,
pageSize: 9 // 9
}
//
const changeAreaFunction = (val) => {
params.pageNum = 1;
typeName2.value = val
params.area = typeName2.value == '全部' ? '' : typeName2.value;
selectFlag2.value = false
pageWithAttrsFunction()
}
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)
} }
let _img = _arr[0] && _arr[0].img || imgSrc.value; const dictList = ref([])
console.log('_img------------>', _img); const dataList = ref([])
return _img const selectFlag2 = ref(false)
} const selectFlag = ref(false)
// getCategoryTreePage({
const detailFunction = (id) => { page: 1,
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`) limit: 99,
} dictTypeId: '1513712507692818433',
const algorithmFunction = (e) => { }).then((res) => {
var scrollTop = e.currentTarget.scrollTop dictList.value = ['全部']
var windowHeight = e.currentTarget.clientHeight res.data.data.list.map((val) => {
var scrollHeight = e.currentTarget.scrollHeight // if (val.dictLabel !== '') {
console.log(scrollTop, windowHeight, scrollHeight, '123') dictList.value.push(val.dictLabel)
if ( // }
scrollTop + windowHeight <= scrollHeight + 1 && })
scrollTop + windowHeight >= scrollHeight - 1 })
) { const params = {
// pageNum: 1,
isNoMore.value = true type: '智能算法',
params.pageNum++ area: typeName2.value == '全部' ? '' : typeName2.value,
pageSize: 9, // 9
}
//
const changeAreaFunction = (val) => {
params.pageNum = 1
typeName2.value = val
params.area = typeName2.value == '全部' ? '' : typeName2.value
selectFlag2.value = false
pageWithAttrsFunction()
}
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) => { getGisByArea(params).then((res) => {
dataList.value.push(...res.data.data.list) dataList.value = res.data.data.list
if (res.data.data.list.length < 9) { if (res.data.data.list.length < 9) {
dataLength.value = false dataLength.value = false
} }
}) })
} else {
isNoMore.value = false
} }
} pageWithAttrsFunction()
// //
const changeDeptType = (str) => { const algorithmCardPhoto = (item) => {
if (str) { let _arr = []
if (algorithmclassDom) { if (item.pic && typeof item.pic == 'string') {
algorithmclassDom.scrollTop = 0; _arr = JSON.parse(item.pic)
} }
switch (str) { let _img = (_arr[0] && _arr[0].img) || imgSrc.value
case '全市': console.log('_img------------>', _img)
deptType.value = null return _img
typeName.value = '全 市' }
break //
case '市级': const detailFunction = (id) => {
deptType.value = 2 window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
typeName.value = '市 级' }
break const algorithmFunction = (e) => {
case '区级': var scrollTop = e.currentTarget.scrollTop
deptType.value = 3 var windowHeight = e.currentTarget.clientHeight
typeName.value = '区 级' var scrollHeight = e.currentTarget.scrollHeight
break console.log(scrollTop, windowHeight, scrollHeight, '123')
case '企业': if (
deptType.value = 4 scrollTop + windowHeight <= scrollHeight + 1 &&
typeName.value = '企 业' scrollTop + windowHeight >= scrollHeight - 1
break ) {
//
isNoMore.value = true
params.pageNum++
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
} }
params.pageNum = 1; }
if(deptType.value !== null && deptType.value !== undefined) {
params.deptType = deptType.value; //
}else { const changeDeptType = (str) => {
if(Object.keys(params).includes('deptType')) { if (str) {
delete params.deptType 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)
} }
selectFlag.value = false
getData(str)
}
const getData = (str) => { const getData = (str) => {
getGisByArea(params).then((res) => { getGisByArea(params).then((res) => {
const resData = res.data.data || {} const resData = res.data.data || {}
if (resData.list.length > 0 && resData.list.length < 9 && algorithmclassDom) { if (
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true) resData.list.length > 0 &&
} resData.list.length < 9 &&
dataList.value = resData.list || [] algorithmclassDom
nextTick(() => { ) {
algorithmclassDom = document.querySelector('.algorithm-box')
if (str && algorithmclassDom) {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true) algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
algorithmclassDom.addEventListener('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) {
//
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
} }
})
onBeforeUnmount(() => { onMounted(() => {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true) algorithmclassDom = document.querySelector('.algorithm-class')
}) if (dataLength.value) {
//
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
}
})
onBeforeUnmount(() => {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
})
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.algorithm { .algorithm {
.select { .select {
margin: 0.1rem 0 0.1rem 0.2rem; margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff; color: #fff;
font-size: 0.2rem; font-size: 0.2rem;
font-family: webfont; font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
height: 0.85rem;
font-weight: 600;
text-align: center;
padding-top: 0.1rem;
background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative; position: relative;
.light { .top {
width: 0.56rem; cursor: pointer;
height: 3px; width: 3.61rem;
position: absolute; height: 0.85rem;
top: 0.4rem; font-weight: 600;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png') no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
position: absolute;
top: 0.5rem;
left: 0.9rem;
z-index: 1000;
background: rgba(57, 134, 239, 0.68);
border: 1px solid #aed5ff;
.light {
display: inline-block;
width: 2.39rem;
height: 5px;
position: absolute;
top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png') no-repeat;
background-size: 100%;
}
&>div {
width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center; text-align: center;
border-top: 1px solid #aed5ff; padding-top: 0.1rem;
} background: url('~@/assets/capacitySquare/select-bg.png') no-repeat;
background-size: 100%;
position: relative;
&>div:nth-of-type(1) { .light {
border: none; width: 0.56rem;
} height: 3px;
} position: absolute;
} top: 0.4rem;
left: 1.52rem;
.algorithm-class { background: url('~@/assets/capacitySquare/select-light1.png')
// margin-top: 0.6rem; no-repeat;
margin-bottom: 0.18rem; background-size: 100%;
display: grid;
grid-template-columns: repeat(3, 33%);
height: 8.8rem;
overflow: auto;
margin-left: 1.15rem;
margin-right: 0.15rem;
.algorithm-card {
height: 2.75rem;
width: 5.25rem;
background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat;
background-size: 100% 100%;
margin-bottom: 0.4rem;
margin-right: 0.65rem;
position: relative;
:deep(.ant-image) {
img {
margin-top: 0.15rem;
height: 2.45rem;
width: 5.05rem;
margin-left: 0.1rem;
} }
} }
.algorithm-card-photo { .bottom {
height: 100%; cursor: pointer;
width: 100%;
background: url('~@/assets/capacitySquare/algorithm-photo.jpg') no-repeat;
background-size: 100%;
}
.algorithm-card-title {
position: absolute; position: absolute;
height: 0.6rem; top: 0.5rem;
margin-left: 0.08rem; left: 0.9rem;
width: 97%; z-index: 1000;
color: #ffffff; background: rgba(57, 134, 239, 0.68);
font-size: 0.22rem; border: 1px solid #aed5ff;
font-family: alibaba;
bottom: 0.15rem;
padding-left: 0.22rem;
background: url('~@/assets/capacitySquare/algorithm-title-bg.png') no-repeat;
background-size: 100%;
display: flex;
flex-direction: column;
justify-content: center;
span { .light {
line-height: 0.24rem; display: inline-block;
overflow: hidden; width: 2.39rem;
text-overflow: ellipsis; height: 5px;
white-space: nowrap; position: absolute;
cursor: pointer; top: -0.08rem;
left: -0.3rem;
background: url('~@/assets/capacitySquare/select-light2.png')
no-repeat;
background-size: 100%;
} }
span:last-child { & > div {
font-size: 0.14rem; width: 1.8rem;
height: 0.4rem;
line-height: 0.4rem;
text-align: center;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
} }
} }
} }
}
.algorithm-class::-webkit-scrollbar-track-piece { .algorithm-class {
background: #a5bcdb; // margin-top: 0.6rem;
border-radius: 0.08rem; margin-bottom: 0.18rem;
} display: grid;
grid-template-columns: repeat(3, 33%);
height: 8.8rem;
overflow: auto;
margin-left: 1.15rem;
margin-right: 0.15rem;
.algorithm-class::-webkit-scrollbar-thumb { .algorithm-card {
height: 3.2rem; height: 2.75rem;
background: linear-gradient(to bottom, #47d7f5, #3dc6e3); width: 5.25rem;
} background: url('~@/assets/capacitySquare/algorithm-bg.png') no-repeat;
background-size: 100% 100%;
margin-bottom: 0.4rem;
margin-right: 0.65rem;
position: relative;
.algorithm-class::-webkit-scrollbar { :deep(.ant-image) {
height: 8.8rem; img {
width: 0.08rem; margin-top: 0.15rem;
border-radius: 0.08rem; height: 2.45rem;
width: 5.05rem;
margin-left: 0.1rem;
}
}
.algorithm-card-photo {
height: 100%;
width: 100%;
background: url('~@/assets/capacitySquare/algorithm-photo.jpg')
no-repeat;
background-size: 100%;
}
.algorithm-card-title {
position: absolute;
height: 0.6rem;
margin-left: 0.08rem;
width: 97%;
color: #ffffff;
font-size: 0.22rem;
font-family: alibaba;
bottom: 0.15rem;
padding-left: 0.22rem;
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;
text-overflow: ellipsis;
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> </style>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: hisense.liangjunhua * @Author: hisense.liangjunhua
* @Date: 2022-08-09 09:31:25 * @Date: 2022-08-09 09:31:25
* @LastEditors: hisense.wuhongjian * @LastEditors: Light
* @LastEditTime: 2022-10-24 10:44:50 * @LastEditTime: 2022-11-29 14:41:49
* @Description: 应用资源 * @Description: 应用资源
--> -->
<template> <template>
@ -57,12 +57,17 @@
import { selectAppList } from '@/api/home' import { selectAppList } from '@/api/home'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
const selectArea = router.currentRoute.value.query.area
const pageNum = ref(1) const pageNum = ref(1)
const flag = ref(true) const flag = ref(true)
const type = ref(null) const type = ref(null)
const area = ref(null) const area = ref(null)
const typeName = ref('全市') const typeName = ref('全市')
const typeName2 = ref('全部') const typeName2 = ref('全部')
if (selectArea && selectArea !== '全部') {
typeName2.value = selectArea
area.value = selectArea
}
const dictList = ref([]) const dictList = ref([])
const data = reactive({ list: [] }) const data = reactive({ list: [] })
const selectFlag = ref(false) const selectFlag = ref(false)
@ -121,8 +126,8 @@
type: type.value, type: type.value,
area: area.value, area: area.value,
}).then((res) => { }).then((res) => {
console.log('res---应用广场--------->', res); console.log('res---应用广场--------->', res)
if (res.data.data.total.length < 9) { if (res.data.data.total.length < 9) {
dom.removeEventListener('scroll', viewMonitor, true) dom.removeEventListener('scroll', viewMonitor, true)
} }

View File

@ -60,9 +60,15 @@
import { getCategoryTreePage } from '@/api/personalCenter' import { getCategoryTreePage } from '@/api/personalCenter'
import { getGisByArea } from '@/api/home' import { getGisByArea } from '@/api/home'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue' import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
import { useRouter } from 'vue-router'
const router = useRouter()
const area = router.currentRoute.value.query.area
const deptType = ref(null) const deptType = ref(null)
const typeName = ref('全市') const typeName = ref('全市')
const typeName2 = ref('全部') const typeName2 = ref('全部')
if (area) {
typeName2.value = area
}
const dictList = ref([]) const dictList = ref([])
const dataList = ref([]) const dataList = ref([])
const selectFlag2 = ref(false) const selectFlag2 = ref(false)
@ -337,4 +343,4 @@
border-radius: 0.08rem; border-radius: 0.08rem;
} }
} }
</style> </style>

View File

@ -82,7 +82,8 @@
<a-form-item <a-form-item
style="margin-bottom: 10px" style="margin-bottom: 10px"
label="需求类型" label="需求类型"
name="请选择需求类型" name="detailsType"
:rules="[{ required: true, message: '请选择需求类型' }]"
> >
<a-select <a-select
disabled="true" disabled="true"
@ -99,7 +100,7 @@
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-tooltip placement="top" mouseEnterDelay="1"> <!-- <a-tooltip placement="top" mouseEnterDelay="1">
<template #title> <template #title>
<span>{{ formName.detailsField }}</span> <span>{{ formName.detailsField }}</span>
</template> </template>
@ -115,7 +116,7 @@
v-model:value="formName.detailsField" v-model:value="formName.detailsField"
/> />
</a-form-item> </a-form-item>
</a-tooltip> </a-tooltip> -->
<a-form-item <a-form-item
style="margin-bottom: 10px" style="margin-bottom: 10px"

View File

@ -4,7 +4,11 @@
<div class="main"> <div class="main">
<div class="left"> <div class="left">
<a-layout-sider> <a-layout-sider>
<a-menu v-model:selectedKeys="selectedKeys" mode="inline" @click="handleClick"> <a-menu
v-model:selectedKeys="selectedKeys"
mode="inline"
@click="handleClick"
>
<a-menu-item v-for="item in menuList" :key="item.key"> <a-menu-item v-for="item in menuList" :key="item.key">
<img :src="item.img" alt="" style="margin-right: 10px" /> <img :src="item.img" alt="" style="margin-right: 10px" />
<span>{{ item.title }}</span> <span>{{ item.title }}</span>
@ -14,31 +18,45 @@
</div> </div>
<div class="right"> <div class="right">
<!-- <div class="title">数据需求</div> --> <!-- <div class="title">数据需求</div> -->
<a-list class="demo-loadmore-list" :loading="initLoading" item-layout="horizontal" :data-source="list" <a-list
:key="showKey"> class="demo-loadmore-list"
:loading="initLoading"
item-layout="horizontal"
:data-source="list"
:key="showKey"
>
<template #renderItem="{ item }"> <template #renderItem="{ item }">
<a-list-item> <a-list-item>
<a-skeleton avatar :title="false" :loading="!!item.loading" active> <div class="toptitle">
<a-tooltip placement="topLeft" arrow-point-at-center mouseEnterDelay="1" <a-tooltip placement="topLeft">
overlayClassName="demandCenter-tooltip-card"> <template #title>{{ item.demandSubject }}</template>
<template #title> <span
<div class="tooltip-desc">{{ item.demandDetails || '--' }}</div> @click="showDetail(item)"
</template> style="cursor: pointer"
<a-list-item-meta :description="'描述:' + (item.demandDetails || '--')"> class="name"
<template #title> >
<span @click="showDetail(item)" style="cursor: pointer" class="name"> {{ item.demandSubject }}
{{ item.demandSubject }} </span>
</span>
<span class="time">{{ item.createDate }}</span>
</template>
</a-list-item-meta>
</a-tooltip> </a-tooltip>
</a-skeleton>
<span class="time">{{ item.createDate }}</span>
</div>
<a-tooltip placement="topLeft">
<template #title>描述 {{ item.demandDetails }}</template>
<div class="bottomdesc">
描述 {{ item.demandDetails || '--' }}
</div>
</a-tooltip>
</a-list-item> </a-list-item>
</template> </template>
</a-list> </a-list>
<a-pagination v-model:current="pageNum" v-model:page-size="pageSize" :total="total" @change="pageChange" <a-pagination
:key="showKey"> v-model:current="pageNum"
v-model:page-size="pageSize"
:total="total"
@change="pageChange"
:key="showKey"
>
<template #buildOptionText="props"> <template #buildOptionText="props">
<span>{{ props.value }}/</span> <span>{{ props.value }}/</span>
</template> </template>
@ -69,7 +87,16 @@ const pageSize = ref(8)
const total = ref() const total = ref()
const showKey = ref(0) const showKey = ref(0)
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
const selectedKeys = ref(['0'])
const menuList = [ const menuList = [
{
key: '0',
title: '全部需求',
num: '0',
img: require('@/assets/home/menuall.png'),
},
{ {
key: '1', key: '1',
title: '基础设施', title: '基础设施',
@ -98,7 +125,7 @@ const menuList = [
key: '5', key: '5',
title: '知识库', title: '知识库',
num: '0', num: '0',
img: require('@/assets/home/menuyyzy.png'), img: require('@/assets/home/menuzsk.png'),
}, },
] ]
const detailsType = ref('') const detailsType = ref('')
@ -113,6 +140,8 @@ const handleClick = (item) => {
detailsType.value = '应用资源' detailsType.value = '应用资源'
} else if (item.key === '5') { } else if (item.key === '5') {
detailsType.value = '知识库' detailsType.value = '知识库'
} else {
detailsType.value = ''
} }
pageNum.value = 1 pageNum.value = 1
getApplyList() getApplyList()
@ -138,8 +167,6 @@ const getApplyList = () => {
} }
const showDetail = (item) => { const showDetail = (item) => {
// console.log('demandDetails', item)
// store.commit('home/demandDetailsData', item)
router.push({ router.push({
path: '/demandDetails', path: '/demandDetails',
query: { query: {
@ -232,6 +259,45 @@ onMounted(() => {
background-color: #ffffff; background-color: #ffffff;
box-shadow: 10px 8px 10px 3px #9dc6ea; box-shadow: 10px 8px 10px 3px #9dc6ea;
padding: 20px; padding: 20px;
.toptitle {
margin-bottom: 10px;
& > span:first-child {
display: -webkit-box;
/*设置为弹性盒子*/
-webkit-line-clamp: 1;
/*最多显示2行*/
overflow: hidden;
/*超出隐藏*/
text-overflow: ellipsis;
/*超出显示为省略号*/
-webkit-box-orient: vertical;
word-break: break-all;
width: 600px;
font-size: 14px;
color: #1492ff;
font-size: 18px;
}
& > span:first-child:hover {
color: #0b5392;
}
& > span:last-child {
float: right;
}
}
.bottomdesc {
display: -webkit-box;
/*设置为弹性盒子*/
-webkit-line-clamp: 1;
/*最多显示2行*/
overflow: hidden;
/*超出隐藏*/
text-overflow: ellipsis;
/*超出显示为省略号*/
-webkit-box-orient: vertical;
word-break: break-all;
width: 800px;
font-size: 14px;
}
.title { .title {
font-size: 22px; font-size: 22px;
@ -242,40 +308,42 @@ onMounted(() => {
.ant-list { .ant-list {
height: 730px; height: 730px;
overflow-y: scroll; overflow-y: scroll;
.ant-list-item {
:deep(.ant-list-item-meta-title) { display: list-item;
display: flex;
justify-content: space-between;
.name {
width: 800px;
font-size: 18px;
color: #1492ff;
display: -webkit-box;
/*设置为弹性盒子*/
-webkit-line-clamp: 1;
/*最多显示2行*/
overflow: hidden;
/*超出隐藏*/
text-overflow: ellipsis;
/*超出显示为省略号*/
-webkit-box-orient: vertical;
word-break: break-all;
}
} }
// :deep(.ant-list-item-meta-title) {
// // display: flex;
// justify-content: space-between;
:deep(.ant-list-item-meta-description) { // .name {
display: -webkit-box; // width: 800px;
/*设置为弹性盒子*/ // font-size: 18px;
-webkit-line-clamp: 2; // color: #1492ff;
/*最多显示2行*/ // display: -webkit-box;
overflow: hidden; // /**/
/*超出隐藏*/ // -webkit-line-clamp: 1;
text-overflow: ellipsis; // /*2*/
/*超出显示为省略号*/ // overflow: hidden;
-webkit-box-orient: vertical; // /**/
word-break: break-all; // text-overflow: ellipsis;
} // /**/
// -webkit-box-orient: vertical;
// word-break: break-all;
// }
// }
// :deep(.ant-list-item-meta-description) {
// display: -webkit-box;
// /**/
// -webkit-line-clamp: 2;
// /*2*/
// overflow: hidden;
// /**/
// text-overflow: ellipsis;
// /**/
// -webkit-box-orient: vertical;
// word-break: break-all;
// }
} }
// //

View File

@ -8,8 +8,7 @@
></DetalsTitle> ></DetalsTitle>
</div> </div>
<!-- 青岛市局 --> <!-- 青岛市局 -->
<div style="width: 100%; display: flex; justify-content: center" <div style="width: 100%; display: flex; justify-content: center">
>
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left" v-if="item.titleType === '调用接口'"> <div class="content-left" v-if="item.titleType === '调用接口'">
<div class="left"> <div class="left">
@ -97,12 +96,14 @@
<a-tooltip> <a-tooltip>
<template #title> <template #title>
{{ {{
approveStatus === '通过' approveStatus === '通过' || role
? item.people.value ? item.people.value
: '请申请后查看' : '请申请后查看'
}} }}
</template> </template>
<span :class="{ 'blur-word': approveStatus !== '通过' }"> <span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.people.value }} {{ item.people.value }}
</span> </span>
</a-tooltip> </a-tooltip>
@ -112,12 +113,14 @@
<a-tooltip> <a-tooltip>
<template #title> <template #title>
{{ {{
approveStatus === '通过' approveStatus === '通过' || role
? item.phone.value ? item.phone.value
: '请申请后查看' : '请申请后查看'
}} }}
</template> </template>
<span :class="{ 'blur-word': approveStatus !== '通过' }"> <span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.phone.value }} {{ item.phone.value }}
</span> </span>
</a-tooltip> </a-tooltip>
@ -169,7 +172,15 @@
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
const router = useRouter() const router = useRouter()
const store = useStore()
const role = ref(false)
store.getters['user/roleList'].map((val) => {
if (val === '运维管理员') {
role.value = true
}
})
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)

View File

@ -8,8 +8,7 @@
></DetalsTitle> ></DetalsTitle>
</div> </div>
<!-- 青岛市局 --> <!-- 青岛市局 -->
<div style="width: 100%; display: flex; justify-content: center" <div style="width: 100%; display: flex; justify-content: center">
>
<div class="content"> <div class="content">
<div <div
v-for="(item, index) in dataFrom.content" v-for="(item, index) in dataFrom.content"
@ -24,6 +23,7 @@
<a-tooltip <a-tooltip
v-if=" v-if="
approveStatus !== '通过' && approveStatus !== '通过' &&
!role &&
(carditem.attrType === '联系人' || (carditem.attrType === '联系人' ||
carditem.attrType === '联系人电话') carditem.attrType === '联系人电话')
" "
@ -55,7 +55,15 @@
import DetalsTitle from '@/views/detailsAll/components/DetalsTitle' import DetalsTitle from '@/views/detailsAll/components/DetalsTitle'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
const router = useRouter() const router = useRouter()
const store = useStore()
const role = ref(false)
store.getters['user/roleList'].map((val) => {
if (val === '运维管理员') {
role.value = true
}
})
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({

View File

@ -7,8 +7,7 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div style="width: 100%; display: flex; justify-content: center" <div style="width: 100%; display: flex; justify-content: center">
>
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left"> <div class="content-left">
<div class="left"> <div class="left">
@ -52,12 +51,14 @@
<a-tooltip> <a-tooltip>
<template #title> <template #title>
{{ {{
approveStatus === '通过' approveStatus === '通过' || role
? item.people.value ? item.people.value
: '请申请后查看' : '请申请后查看'
}} }}
</template> </template>
<span :class="{ 'blur-word': approveStatus !== '通过' }"> <span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.people.value }} {{ item.people.value }}
</span> </span>
</a-tooltip> </a-tooltip>
@ -67,12 +68,14 @@
<a-tooltip> <a-tooltip>
<template #title> <template #title>
{{ {{
approveStatus === '通过' approveStatus === '通过' || role
? item.phone.value ? item.phone.value
: '请申请后查看' : '请申请后查看'
}} }}
</template> </template>
<span :class="{ 'blur-word': approveStatus !== '通过' }"> <span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.phone.value }} {{ item.phone.value }}
</span> </span>
</a-tooltip> </a-tooltip>
@ -124,7 +127,15 @@
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
const router = useRouter() const router = useRouter()
const store = useStore()
const role = ref(false)
store.getters['user/roleList'].map((val) => {
if (val === '运维管理员') {
role.value = true
}
})
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({

View File

@ -7,8 +7,7 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div style="width: 100%; display: flex; justify-content: center" <div style="width: 100%; display: flex; justify-content: center">
>
<div class="content"> <div class="content">
<div class="content-card"> <div class="content-card">
<div class="left"> <div class="left">
@ -40,6 +39,7 @@
<template #title> <template #title>
{{ {{
approveStatus !== '通过' && approveStatus !== '通过' &&
!role &&
(carditem.attrType === '部门联系人' || (carditem.attrType === '部门联系人' ||
carditem.attrType === '联系人电话') carditem.attrType === '联系人电话')
? '请申请后查看' ? '请申请后查看'
@ -50,6 +50,7 @@
:class="{ :class="{
'blur-word': 'blur-word':
approveStatus !== '通过' && approveStatus !== '通过' &&
!role &&
(carditem.attrType === '部门联系人' || (carditem.attrType === '部门联系人' ||
carditem.attrType === '联系人电话'), carditem.attrType === '联系人电话'),
}" }"
@ -80,7 +81,15 @@
import { pinyin } from 'pinyin-pro' import { pinyin } from 'pinyin-pro'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
const router = useRouter() const router = useRouter()
const store = useStore()
const role = ref(false)
store.getters['user/roleList'].map((val) => {
if (val === '运维管理员') {
role.value = true
}
})
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let flag = ref(true) let flag = ref(true)

View File

@ -7,8 +7,7 @@
:type="dataFrom.englishTitle" :type="dataFrom.englishTitle"
></DetalsTitle> ></DetalsTitle>
</div> </div>
<div style="width: 100%; display: flex; justify-content: center" <div style="width: 100%; display: flex; justify-content: center">
>
<div class="content" v-for="item in dataFrom.content" :key="item.title"> <div class="content" v-for="item in dataFrom.content" :key="item.title">
<div class="content-left"> <div class="content-left">
<div class="left"> <div class="left">
@ -63,12 +62,14 @@
<a-tooltip> <a-tooltip>
<template #title> <template #title>
{{ {{
approveStatus === '通过' approveStatus === '通过' || role
? item.people.value ? item.people.value
: '请申请后查看' : '请申请后查看'
}} }}
</template> </template>
<span :class="{ 'blur-word': approveStatus !== '通过' }"> <span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.people.value }} {{ item.people.value }}
</span> </span>
</a-tooltip> </a-tooltip>
@ -78,12 +79,14 @@
<a-tooltip> <a-tooltip>
<template #title> <template #title>
{{ {{
approveStatus === '通过' approveStatus === '通过' || role
? item.phone.value ? item.phone.value
: '请申请后查看' : '请申请后查看'
}} }}
</template> </template>
<span :class="{ 'blur-word': approveStatus !== '通过' }"> <span
:class="{ 'blur-word': approveStatus !== '通过' && !role }"
>
{{ item.phone.value }} {{ item.phone.value }}
</span> </span>
</a-tooltip> </a-tooltip>
@ -135,7 +138,15 @@
import { pinyin } from 'pinyin-pro' import { pinyin } from 'pinyin-pro'
import { ref, defineProps, watch } from 'vue' import { ref, defineProps, watch } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
const router = useRouter() const router = useRouter()
const store = useStore()
const role = ref(false)
store.getters['user/roleList'].map((val) => {
if (val === '运维管理员') {
role.value = true
}
})
const approveStatus = ref('通过') const approveStatus = ref('通过')
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
let dataFrom = ref({ let dataFrom = ref({

View File

@ -6,7 +6,7 @@
<detailsPageconetentTree /> <detailsPageconetentTree />
</div> </div>
<div class="details-pageconetent-left" v-else> <div class="details-pageconetent-left" v-else>
<detailsPageInfrastructureTree v-show="flag != '6'" /> <detailsPageInfrastructureTree v-if="flag != '6'" />
</div> </div>
<div class="top" v-if="Cardsname != '知识库' && Cardsname != '基础设施'"> <div class="top" v-if="Cardsname != '知识库' && Cardsname != '基础设施'">
<div class="resultListSearchInput-father"> <div class="resultListSearchInput-father">
@ -127,7 +127,7 @@
</template> </template>
</div> </div>
<searchResultList <searchResultList
v-show="resourceList.data && resourceList.data.length > 0" v-if="resourceList.data && resourceList.data.length > 0"
:resourceList="resourceList" :resourceList="resourceList"
:key="listKey2" :key="listKey2"
:resourceTotal="resourceTotal" :resourceTotal="resourceTotal"
@ -276,12 +276,14 @@
:resourceTotal="resourceTotal" :resourceTotal="resourceTotal"
></KnowledgeBase> ></KnowledgeBase>
</div> </div>
<div class="talk-monitor" @click="openMonitor"> <!--客户反馈能力集市-问答机器人属于互联网链接先注释掉不要删除写一下注释方便后面要放开的时候一下子找到-->
<!-- <div class="talk-monitor" @click="openMonitor">
<a-tooltip> <a-tooltip>
<template #title>问答机器人</template> <template #title>问答机器人</template>
<i></i> <i></i>
</a-tooltip> </a-tooltip>
</div> </div>
-->
<div @click="showAbilitySquare" class="abilitySquare"> <div @click="showAbilitySquare" class="abilitySquare">
<p></p> <p></p>
<p>能力广场</p> <p>能力广场</p>
@ -833,7 +835,7 @@
let select = let select =
router.currentRoute.value.query.select || router.currentRoute.value.query.select ||
DETAIL_PAGE_CONTENT_DEFAULT_TAB DETAIL_PAGE_CONTENT_DEFAULT_TAB
console.log('select------------>', select) let orderField =router.currentRoute.value.query.orderField
// selectSubType... // selectSubType...
let selectSubType = router.currentRoute.value.query.type || '' let selectSubType = router.currentRoute.value.query.type || ''
let queryName = ref('') let queryName = ref('')
@ -926,7 +928,6 @@
) { ) {
;[title[0], title[2]] = [title[2], title[0]] ;[title[0], title[2]] = [title[2], title[0]]
} }
debugger
titleName.value = title titleName.value = title
} }
// //
@ -1323,6 +1324,8 @@
globalData.data = [] globalData.data = []
} }
select = router.currentRoute.value.query.select select = router.currentRoute.value.query.select
if ( if (
(select == '应用资源' && (select == '应用资源' &&
(paramsGetResources.orderField == '' || (paramsGetResources.orderField == '' ||
@ -1619,19 +1622,23 @@
} }
// -西 // -西
const getXiHaiAn = (res) => { const getXiHaiAn = (res) => {
;((res.data && res.data.data && res.data.data.list) || []).forEach( const data = (res.data && res.data.data && res.data.data.list) || []
(val) => { const total = (res.data && res.data.data && res.data.data.total) || 0
val.id = val.serviceId // id data.forEach((val) => {
val.name = val.serviceName // val.id = val.serviceId // id
val.sjlCount = val.requestQuantity // val.name = val.serviceName //
val.applyCount = val.requestCount // val.sjlCount = val.requestQuantity //
val.deptName = val.departmentName // val.applyCount = val.requestCount //
val.createTime = val.createTime.split('.')[0] val.deptName = val.departmentName //
val.createDate = val.createTime // val.createTime = val.createTime.split('.')[0]
} val.createDate = val.createTime //
) })
resourceList.data = res.data.data.list || []
resourceTotal.value = res.data.data.total || '' console.log('接口数据', data)
resourceList.data = data || []
console.log('接口数据2', resourceList.data)
resourceTotal.value = total
console.log()
} }
let shoppingCartList = ref([]) let shoppingCartList = ref([])
// //
@ -1779,6 +1786,10 @@
onMounted(() => { onMounted(() => {
// //
//西 //西
orderField= router.currentRoute.value.query.orderField //
if(orderField){
paramsGetResources.orderField=orderField
}
setTitle() setTitle()
handleSetSearchData() handleSetSearchData()
listKey2.value++ listKey2.value++
@ -1864,7 +1875,7 @@
query: newQuery, query: newQuery,
}) })
.then(() => { .then(() => {
tagFlag.value = false // tagFlag.value = false
chongzhi(true) chongzhi(true)
getNewList() getNewList()
}) })
@ -2454,7 +2465,7 @@
padding-top: 0.05rem; padding-top: 0.05rem;
position: fixed; position: fixed;
z-index: 10; z-index: 10;
bottom: 1.56rem; // bottom: 1.56rem;
right: 0.1rem; right: 0.1rem;
cursor: pointer; cursor: pointer;
background: #e3edfc; background: #e3edfc;

View File

@ -812,7 +812,7 @@
console.log('res=====>', res.data.data) console.log('res=====>', res.data.data)
if (res.data.code == 0) { if (res.data.code == 0) {
if (res.data.data.length == 0) { if (res.data.data.length == 0) {
message.warning('该关键词,暂无应用资源!') // message.warning('')
} else { } else {
// //
res.data.data.map((val) => { res.data.data.map((val) => {

View File

@ -2,7 +2,7 @@
海康H5Player 海康H5Player
--> -->
<template> <template>
<div :id="videoId" style="width: 800px; height: 600px; z-index: 9999"></div> <div :id="videoId" ref="video333" style="width: 800px; height: 600px"></div>
</template> </template>
<script> <script>
// const IS_MOVE_DEVICE = document.body.clientWidth < 992 // // const IS_MOVE_DEVICE = document.body.clientWidth < 992 //
@ -41,6 +41,7 @@
mseSupport: MSE_IS_SUPPORT, mseSupport: MSE_IS_SUPPORT,
// tabActive: MSE_IS_SUPPORT ? 'mse' : 'decoder', // tabActive: MSE_IS_SUPPORT ? 'mse' : 'decoder',
tabActive: 'decoder', tabActive: 'decoder',
videoDom: {},
urls: { urls: {
realplay: 'ws://10.19.147.22:559/EUrl/q2jQie4', realplay: 'ws://10.19.147.22:559/EUrl/q2jQie4',
talk: 'wss://10.41.163.126:6014/proxy/10.41.163.126:559/EUrl/6gFx47S', talk: 'wss://10.41.163.126:6014/proxy/10.41.163.126:559/EUrl/6gFx47S',
@ -70,18 +71,13 @@
}, },
created() {}, created() {},
mounted() { mounted() {
this.init() // this.init()
mybus.emit('closeLoading', true) mybus.emit('closeLoading', true)
this.createPlayer() this.createPlayer()
this.arrangeWindow() // this.arrangeWindow()
if (this.unStopable) { if (this.unStopable) {
this.videoPlay(this.videoUrl, 0)
} else {
this.realplay(this.videoUrl, 0) this.realplay(this.videoUrl, 0)
} }
//videoUrl this.realplay(this.videoUrl,0);//index
//this.realplay('wss://10.134.135.44:6014/proxy/10.10.20.14:559/openUrl/y3mFfcA',0);
}, },
watch: { watch: {
videoUrl: { videoUrl: {
@ -120,15 +116,18 @@
//szId: 'player'+this.index, //szId: 'player'+this.index,
szId: this.videoId, szId: this.videoId,
szBasePath: '/util/', //public/jsjs szBasePath: '/util/', //public/jsjs
iMaxSplit: 4, // iMaxSplit: 4,
iWidth: '800px', // iWidth: '800px',
iCurrentSplit: 4, // iCurrentSplit: 4,
openDebug: true, // openDebug: true,
oStyle: { // oStyle: {
borderSelect: '#FFCC00', // borderSelect: '#FFCC00',
}, // },
}) })
let that = this let that = this
that.videoDom = that.$refs.video333.querySelector('video') || {}
// that.videoDom.autoplay = false
// //
this.player.JS_SetWindowControlCallback({ this.player.JS_SetWindowControlCallback({
windowEventSelect: function (iWndIndex) { windowEventSelect: function (iWndIndex) {
@ -138,8 +137,8 @@
pluginErrorHandler: function (iWndIndex, iErrorCode, oError) { pluginErrorHandler: function (iWndIndex, iErrorCode, oError) {
// //
console.log('pluginError callback: ', iWndIndex, iErrorCode, oError) console.log('pluginError callback: ', iWndIndex, iErrorCode, oError)
message.error('取流异常,请稍后尝试') // message.error(',')
mybus.emit('closeLoading', false) // mybus.emit('closeLoading', false)
}, },
windowEventOver: function (iWndIndex) { windowEventOver: function (iWndIndex) {
// //
@ -159,15 +158,19 @@
}, },
firstFrameDisplay: function (iWndIndex, iWidth, iHeight) { firstFrameDisplay: function (iWndIndex, iWidth, iHeight) {
// //
console.log( // console.log(
'firstFrame loaded callback: ', // 'firstFrame loaded callback: ',
iWndIndex, // iWndIndex,
iWidth, // iWidth,
iHeight // iHeight
) // )
// // //
if (!that.realTime) { // if (!that.realTime) {
that.pausePlay(iWndIndex) // that.pausePlay(iWndIndex)
if (!that.unStopable) {
setTimeout(() => {
that.videoDom.pause()
}, 0)
} }
mybus.emit('closeLoading', false) mybus.emit('closeLoading', false)
}, },
@ -191,67 +194,23 @@
// //
// //
realplay(playURL, index1) { realplay(playURL, index1) {
let that = this
this.realTime = false this.realTime = false
mybus.emit('closeLoading', true) mybus.emit('closeLoading', true)
setTimeout(() => { setTimeout(() => {
mybus.emit('closeLoading', false) mybus.emit('closeLoading', false)
}, 3000) }, 3000)
this.player.JS_Stop(0)
this.mode = 0 //0 1 this.mode = 0 //0 1
const { player, mode, urls } = this const { player, mode, urls } = this
// playURL = this.realplay
console.log('视频播放地址', playURL)
// const startTime = {
// startTime: ,
// }
// const endTime = {
// endTime: ,
// }
player
.JS_Play(
playURL,
{ playURL, mode },
index1,
'2022-11-22T10:00:00Z',
'2022-11-22T11:00:00Z'
)
.then(
() => {
console.log('realplay success')
},
(e) => {
console.error(e)
// message.error(':' + e)
}
)
},
//
videoPlay(playURL, index1) {
let that = this
this.realTime = true
mybus.emit('closeLoading', true)
setTimeout(() => {
mybus.emit('closeLoading', false)
}, 3000)
if (!that.unStopable) {
message.warning('预览将在约6s后停止')
setTimeout(() => {
that.stopAllPlay()
}, 6000)
}
this.mode = 0 //0 1
const { player, mode, urls } = this
// playURL = this.realplay
console.log('视频播放地址', playURL)
// const startTime = {
// startTime: ,
// }
// const endTime = {
// endTime: ,
// }
player.JS_Play(playURL, { playURL, mode }, index1).then( player.JS_Play(playURL, { playURL, mode }, index1).then(
() => { () => {
console.log('realplay success') mybus.emit('closeLoading', false)
// 6s if (!that.unStopable) {
setTimeout(() => {
that.videoDom.pause()
}, 0)
}
}, },
(e) => { (e) => {
console.error(e) console.error(e)
@ -272,20 +231,6 @@
} }
) )
}, },
//
pausePlay(index) {
let that = this
this.player.JS_Pause(index).then(
() => {
console.log('暂停成功')
},
(e) => {
console.error(e)
//
that.videoPlay(that.videoUrl, 0)
}
)
},
}, },
beforeUnmount() { beforeUnmount() {
console.log('关闭所有视频') console.log('关闭所有视频')

View File

@ -69,11 +69,11 @@
class="left" class="left"
style="display: flex; align-items: center" style="display: flex; align-items: center"
v-else-if=" v-else-if="
(item.type === '组件服务' && item.type === '组件服务' &&
item.infoList && item.infoList &&
item.infoList.filter((val) => val.attrType == '图层缩略图')[0]) || (item.infoList.filter((val) => val.attrType == '图层缩略图')[0] ||
item.infoList.filter((val) => val.attrType == '组件图片')[0] || item.infoList.filter((val) => val.attrType == '组件图片')[0] ||
item.infoList.filter((val) => val.attrType == '算法效果图片')[0] item.infoList.filter((val) => val.attrType == '算法效果图片')[0])
" "
> >
<a-image <a-image
@ -304,6 +304,7 @@
<div class="dec"> <div class="dec">
<div <div
v-if=" v-if="
item.infoList &&
item.infoList.filter((val) => val.attrType == '组件类型')[0] item.infoList.filter((val) => val.attrType == '组件类型')[0]
" "
> >
@ -743,6 +744,7 @@
* isFromFather: 是否来自父组件传值 * isFromFather: 是否来自父组件传值
*/ */
const changeCondition = (item, isFromFather = false) => { const changeCondition = (item, isFromFather = false) => {
console.log('item, isFromFather------------>', item, isFromFather) console.log('item, isFromFather------------>', item, isFromFather)
let newType = item.orderType == 'DESC' ? 'ASC' : 'DESC' let newType = item.orderType == 'DESC' ? 'ASC' : 'DESC'
if (isFromFather) { if (isFromFather) {

View File

@ -140,7 +140,7 @@
mybus.on('getDeptList', () => { mybus.on('getDeptList', () => {
init() init()
}) })
init()
const onSelect = async (item, val, child) => { const onSelect = async (item, val, child) => {
console.log('item--------onSelect---->', item) console.log('item--------onSelect---->', item)
console.log('val------onSelect------>', val) console.log('val------onSelect------>', val)

View File

@ -2,7 +2,7 @@
* @Author: Light * @Author: Light
* @Date: 2022-11-18 11:53:43 * @Date: 2022-11-18 11:53:43
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-28 16:45:50 * @LastEditTime: 2022-11-30 11:55:51
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -28,7 +28,27 @@
</a-list-item> </a-list-item>
</template> </template>
<template #header> <template #header>
<div class="title">待申请列表</div> <div class="title">
待申请列表
<a
style="
display: inline-block;
width: 60px;
height: 18px;
line-height: 18px;
text-align: center;
background: #1890ff;
border-radius: 3px;
font-size: 12px;
color: rgb(255, 255, 255);
cursor: pointer;
margin-left: 10px;
"
href="/static/download/InstallRootCert.exe"
>
证书下载
</a>
</div>
</template> </template>
<template #footer> <template #footer>
<a-button type="primary" @click="showApply">一键申请</a-button> <a-button type="primary" @click="showApply">一键申请</a-button>
@ -320,11 +340,14 @@
if (item.approveStatus == '通过') { if (item.approveStatus == '通过') {
dataList.selectItem = item dataList.selectItem = item
getVideoUrl(item.cameraInfo) getVideoUrl(item.cameraInfo)
return
} else if (item.backToFirst == 'true') {
message.info('请到个人中心查看详情')
} else { } else {
dataList.selectItem = {}
message.info('请耐心等待审核通过') message.info('请耐心等待审核通过')
showVisible.value = false
} }
dataList.selectItem = {}
showVisible.value = false
} }
const handleOk = () => { const handleOk = () => {
console.log('id', instanceId.value) console.log('id', instanceId.value)
@ -427,8 +450,12 @@
} }
} }
}) })
mybus.on('initDetailsPageconetent', () => {
initApply()
})
onBeforeUnmount(() => { onBeforeUnmount(() => {
mybus.off('selectCamera') mybus.off('selectCamera')
mybus.off('initDetailsPageconetent')
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>

View File

@ -1443,7 +1443,7 @@
} }
} }
// //
const onRoomChange = () => { const onRoomChange = (pageNumber) => {
roomPage.value = pageNumber roomPage.value = pageNumber
searchData() searchData()
} }
@ -1577,6 +1577,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1595,6 +1596,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1623,6 +1625,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1633,6 +1636,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1661,6 +1665,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1710,6 +1715,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1751,6 +1757,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,
@ -1802,6 +1809,7 @@
JSON.stringify(router.currentRoute.value.query) JSON.stringify(router.currentRoute.value.query)
) )
newQuery.selectType = name newQuery.selectType = name
newQuery.select = '基础设施'
router router
.replace({ .replace({
query: newQuery, query: newQuery,

View File

@ -409,7 +409,8 @@
v-loading="spinningHome" v-loading="spinningHome"
element-loading-text="Loading..." element-loading-text="Loading..."
element-loading-svg-view-box="-10, -10, 50, 50" element-loading-svg-view-box="-10, -10, 50, 50"
element-loading-background="rgba(122, 122, 122, 0.8)" element-loading-background="rgba(122, 122, 122, 0.9)"
:element-loading-svg="svg"
> >
<video-surveillance></video-surveillance> <video-surveillance></video-surveillance>
</div> </div>
@ -714,6 +715,16 @@
const spinning = ref(true) const spinning = ref(true)
const whoShow1 = ref(whoShow) const whoShow1 = ref(whoShow)
const isXiHaiAn = whoShow1.value.itShowXiHaiAn const isXiHaiAn = whoShow1.value.itShowXiHaiAn
const svg = `
<path class="path" d="
M 30 15
L 28 17
M 25.61 25.61
A 15 15, 0, 0, 1, 15 30
A 15 15, 0, 1, 1, 27.99 7.5
L 15 15
" style="stroke-width: 4px; fill: rgba(0, 0, 0, 0)"/>
`
const options = reactive({ const options = reactive({
width: '912px', // width: '912px', //
height: '513px', // height: '513px', //

View File

@ -60,6 +60,7 @@
show-size-changer show-size-changer
show-less-items show-less-items
show-quick-jumper show-quick-jumper
:total="resourceTotal" :total="resourceTotal"
:page-size-options="pageSizeOptions" :page-size-options="pageSizeOptions"
@change="pageChange" @change="pageChange"

View File

@ -134,6 +134,7 @@
}, },
// //
applyNow(item){ applyNow(item){
console.log(item)
getApplyCameraListXha().then(res => { getApplyCameraListXha().then(res => {
let flag = true let flag = true
if (res.data.code == 0) { if (res.data.code == 0) {
@ -152,10 +153,6 @@
if(flag){ if(flag){
willApplyCameraSelect().then(res1 => { willApplyCameraSelect().then(res1 => {
if (res1.data.code == 0) { if (res1.data.code == 0) {
if(res.data.data.length+res1.data.data.length>=10){
message.warning('最多只能申请10个感知资源')
return
}
res1.data.data.map(val => { res1.data.data.map(val => {
if(item.channelId == val.channelId){ if(item.channelId == val.channelId){
item.id = val.id item.id = val.id

View File

@ -8,11 +8,13 @@
<div class="bottom"> <div class="bottom">
<div class="item" v-for="item in productServiceData" :key="item.id"> <div class="item" v-for="item in productServiceData" :key="item.id">
<div class="img" :class="item.imgType"></div> <div class="img" :class="item.imgType"></div>
<a-tooltip placement="right"> <a-tooltip >
<template #title>{{ item.name }}</template> <template #title>{{ item.name }}</template>
<div class="name">{{ item.name }}</div> <div class="name">{{ item.name }}</div>
</a-tooltip> </a-tooltip>
<div class="dec">
<span>{{ item.deptName }}</span>
</div>
<div class="text"> <div class="text">
{{ item.description || '暂无描述' }} {{ item.description || '暂无描述' }}
</div> </div>
@ -36,7 +38,7 @@
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const productServiceData = ref([]) const productServiceData = ref([])
selectNewest({ type: '', pageNum: 1, pageSize: 8 }).then((res) => { selectNewest({ type: '应用资源', pageNum: 1, pageSize: 8 }).then((res) => {
console.log('最新能力===================>', res.data.data.records) console.log('最新能力===================>', res.data.data.records)
productServiceData.value = [] productServiceData.value = []
res.data.data.records.forEach((val) => { res.data.data.records.forEach((val) => {
@ -78,7 +80,8 @@
path: '/DetailsPageconetent', path: '/DetailsPageconetent',
query: { query: {
// select: '', // select: '',
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
orderField:'tdr.create_date'
}, },
}) })
} }
@ -173,6 +176,16 @@
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
word-break: break-all; word-break: break-all;
} }
.dec {
margin: 8px 8px;
text-align: center;
padding-right: 10px;
color: #0058e1;
span {
background: rgba(0, 88, 225, 0.1);
padding: 5px 5px;
}
}
.text { .text {
width: 100%; width: 100%;
height: 0.9rem; height: 0.9rem;

View File

@ -41,10 +41,18 @@
<div class="fw" v-if="select == '收藏量'"> <div class="fw" v-if="select == '收藏量'">
{{ select }}:{{ item.collectCount }} {{ select }}:{{ item.collectCount }}
</div> </div>
<div class="name">{{ item.name }}</div> <a-tooltip>
<div class="text"> <template #title>{{ item.name }}</template>
{{ item.description || '暂无描述' }} <div class="name">{{ item.name }}</div>
</a-tooltip>
<div class="dec">
<span>{{ item.deptName }}</span>
</div> </div>
<a-tooltip >
<template #title>{{ item.description || '暂无描述' }}</template>
<div class="text">{{item.description || '暂无描述'}}</div>
</a-tooltip>
</div> </div>
</div> </div>
</div> </div>
@ -57,294 +65,302 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { ref } from 'vue'
import { pageWithAttrs } from '@/api/home.js' import { pageWithAttrs } from '@/api/home.js'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js' import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
const store = useStore() const store = useStore()
const router = useRouter() const router = useRouter()
const select = ref('浏览量') const select = ref('申请量')
const selList = ref(['浏览量', '申请量', '收藏量']) const selList = ref(['申请量', '收藏量'])
const list = ref([]) const list = ref([])
const paramsGetResources = { const paramsGetResources = {
districtId: '', districtId: '',
pageNum: 1, pageNum: 1,
pageSize: 6, pageSize: 6,
type: '', type: '应用资源',
name: '', name: '',
infoList: [], infoList: [],
orderField: 'visits', // total visits applyCount score collectCount orderField: 'applyCount', // total visits applyCount score collectCount
orderType: 'DESC', // ASC DESC orderType: 'DESC', // ASC DESC
} }
const selectChange = (sel) => { const selectChange = (sel) => {
select.value = sel select.value = sel
switch (select.value) { switch (select.value) {
case '浏览量': case '浏览量':
paramsGetResources.orderField = 'visits' paramsGetResources.orderField = 'visits'
break break
case '申请量': case '申请量':
paramsGetResources.orderField = 'applyCount' paramsGetResources.orderField = 'applyCount'
break break
case '收藏量': case '收藏量':
paramsGetResources.orderField = 'collectCount' paramsGetResources.orderField = 'collectCount'
break break
default: default:
paramsGetResources.orderField = 'total' paramsGetResources.orderField = 'total'
break break
}
getList()
}
const getList = () => {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('查询列表============>', res.data.data.records)
res.data.data.records.forEach((val) => {
switch (val.type) {
case '组件服务':
val.imgType = 'zj'
break
case '应用资源':
val.imgType = 'yy'
break
case '基础设施':
val.imgType = 'jc'
break
case '数据资源':
val.imgType = 'sj'
break
case '知识库':
val.imgType = 'zs'
break
default:
val.imgType = 'zj'
break
}
})
list.value = res.data.data.records
})
} }
getList() getList()
}
const getList = () => {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('查询列表============>', res.data.data.records)
res.data.data.records.forEach((val) => {
switch (val.type) {
case '组件服务':
val.imgType = 'zj'
break
case '应用资源':
val.imgType = 'yy'
break
case '基础设施':
val.imgType = 'jc'
break
case '数据资源':
val.imgType = 'sj'
break
case '知识库':
val.imgType = 'zs'
break
default:
val.imgType = 'zj'
break
}
})
list.value = res.data.data.records
})
}
getList()
function jumpPage() { function jumpPage() {
// store // store
store.commit('home/selectCardsData', { store.commit('home/selectCardsData', {
selectCardsnum: '组件服务', selectCardsnum: '组件服务',
}) })
console.log( console.log('选中===================>', store.getters['home/selectCardsnum'])
'选中===================>', router.push({
store.getters['home/selectCardsnum'] path: '/DetailsPageconetent',
) query: {
router.push({ // select: '',
path: '/DetailsPageconetent', select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
query: { orderField:paramsGetResources.orderField //
// select: '', },
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB, })
}, }
}) const selectOne = (id) => {
} console.log('点击===============》', id)
const selectOne = (id) => { router.push({
console.log('点击===============》', id) path: '/details',
router.push({ query: {
path: '/details', id: id,
query: { },
id: id, })
}, }
})
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.popular-ability { .popular-ability {
height: 6.8rem; height: 6.8rem;
background: url('~@/assets/newHome/popular-bg.png') no-repeat; background: url('~@/assets/newHome/popular-bg.png') no-repeat;
background-size: 100%; background-size: 100%;
display: flex;
justify-content: center;
.main {
width: 13rem;
margin-top: 0.78rem;
display: flex; display: flex;
justify-content: center; flex-direction: column;
.main { flex-wrap: wrap;
width: 13rem; .top {
margin-top: 0.78rem; font-size: 0.3rem;
color: #fff;
text-align: center;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
.top { justify-content: center;
font-size: 0.3rem; align-items: center;
color: #fff; .line {
text-align: center; width: 0.34rem;
height: 0.03rem;
background-color: #fff;
margin-top: 0.08rem;
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 0.52rem;
.left {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: center; .select {
align-items: center; cursor: pointer;
.line {
width: 0.34rem;
height: 0.03rem;
background-color: #fff;
margin-top: 0.08rem;
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 0.52rem;
.left {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
.select { align-items: center;
cursor: pointer; justify-content: center;
width: 1.05rem;
height: 2.1rem;
background: rgba(255, 255, 255, 0.08);
margin-bottom: 0.01rem;
border-right: 0.02rem solid rgba(233, 233, 233, 0.3);
.img {
width: 0.36rem;
height: 0.36rem;
background-size: 100%;
}
.fwl {
background: url('~@/assets/newHome/fwl-no.png') no-repeat;
background-size: contain;
}
.sgl {
background: url('~@/assets/newHome/sgl-no.png') no-repeat;
background-size: contain;
}
.scl {
background: url('~@/assets/newHome/scl-no.png') no-repeat;
background-size: contain;
}
.text {
color: rgba(255, 255, 255, 0.6);
font-size: 0.14rem;
}
}
.select:hover {
background: rgba(255, 255, 255, 0.12);
}
.checked {
background: rgba(255, 255, 255, 0.18) !important;
border-right: 0.02rem solid #fff;
}
}
.right {
cursor: pointer;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
margin-left: 0.2rem;
.item {
width: 3.78rem;
height: 2rem;
display: flex;
.item-left {
width: 0.83rem;
height: 100%;
display: flex; display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: center;
justify-content: center; justify-content: center;
width: 1.05rem; align-items: center;
height: 1.39rem; background: #eef1f8;
background: rgba(255, 255, 255, 0.08);
margin-bottom: 0.01rem;
border-right: 0.02rem solid rgba(233, 233, 233, 0.3);
.img { .img {
width: 0.36rem; width: 0.56rem;
height: 0.36rem; height: 0.56rem;
background-size: 100%; background-size: 100%;
} }
.fwl { .zj {
background: url('~@/assets/newHome/fwl-no.png') no-repeat; background: url('~@/assets/newHome/popular-zj.png') no-repeat;
background-size: contain; background-size: contain;
} }
.sgl { .yy {
background: url('~@/assets/newHome/sgl-no.png') no-repeat; background: url('~@/assets/newHome/popular-yy.png') no-repeat;
background-size: contain; background-size: contain;
} }
.scl { .jc {
background: url('~@/assets/newHome/scl-no.png') no-repeat; background: url('~@/assets/newHome/popular-jc.png') no-repeat;
background-size: contain; background-size: contain;
} }
.sj {
background: url('~@/assets/newHome/popular-sj.png') no-repeat;
background-size: contain;
}
.zs {
background: url('~@/assets/newHome/popular-zs.png') no-repeat;
background-size: contain;
}
}
.item-right {
width: 100%;
height: 100%;
background: #fff;
.fw {
width: 100%;
padding-right: 0.1rem;
padding-top: 0.03rem;
text-align: right;
color: 666;
font-size: 0.14rem;
color: #666;
}
.name {
font-size: 0.18rem;
color: #212121;
text-align: center;
margin-top: 0.05rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.dec {
margin: 8px 8px;
text-align: center;
padding-right: 10px;
color: #0058e1;
span {
background: rgba(0, 88, 225, 0.1);
padding: 5px 5px;
}
}
.text { .text {
color: rgba(255, 255, 255, 0.6);
font-size: 0.14rem;
margin-top: 0.08rem;
}
}
.select:hover {
background: rgba(255, 255, 255, 0.12);
}
.checked {
background: rgba(255, 255, 255, 0.18) !important;
border-right: 0.02rem solid #fff;
}
}
.right {
cursor: pointer;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
margin-left: 0.2rem;
.item {
width: 3.78rem;
height: 2rem;
display: flex;
.item-left {
width: 0.83rem;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #eef1f8;
.img {
width: 0.56rem;
height: 0.56rem;
background-size: 100%;
}
.zj {
background: url('~@/assets/newHome/popular-zj.png') no-repeat;
background-size: contain;
}
.yy {
background: url('~@/assets/newHome/popular-yy.png') no-repeat;
background-size: contain;
}
.jc {
background: url('~@/assets/newHome/popular-jc.png') no-repeat;
background-size: contain;
}
.sj {
background: url('~@/assets/newHome/popular-sj.png') no-repeat;
background-size: contain;
}
.zs {
background: url('~@/assets/newHome/popular-zs.png') no-repeat;
background-size: contain;
}
}
.item-right {
width: 100%; width: 100%;
height: 100%; padding: 0rem 0.03rem;
background: #fff; font-size: 0.14rem;
.fw { color: #212121;
width: 100%; line-height: 0.24rem;
padding-right: 0.1rem; height: 1rem;
padding-top: 0.03rem; word-break: break-all;
text-align: right; overflow: hidden;
color: 666;
font-size: 0.14rem;
color: #666;
}
.name {
font-size: 0.18rem;
color: #212121;
text-align: center;
margin-top: 0.05rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.text {
width: 100%;
padding: 0.24rem 0.3rem;
font-size: 0.14rem;
color: #212121;
line-height: 0.24rem;
height: 1rem;
word-break: break-all;
overflow: hidden;
}
} }
} }
.item:nth-of-type(4),
.item:nth-of-type(5),
.item:nth-of-type(6) {
margin-top: 0.2rem;
}
.item:hover {
border-radius: 0.02rem;
border: 0.01rem solid #0058e1;
box-shadow: 0rem 0.08rem 0.2rem rgba(0, 88, 225, 0.3);
}
} }
} .item:nth-of-type(4),
.bottom-btn { .item:nth-of-type(5),
cursor: pointer; .item:nth-of-type(6) {
text-align: center; margin-top: 0.2rem;
margin-top: 0.24rem; }
color: #fff; .item:hover {
width: 1rem; border-radius: 0.02rem;
height: 0.24rem; border: 0.01rem solid #0058e1;
line-height: 0.24rem; box-shadow: 0rem 0.08rem 0.2rem rgba(0, 88, 225, 0.3);
margin-left: 6rem;
span {
display: inline-block;
width: 0.1rem;
height: 0.1rem;
background: url('~@/assets/newHome/gd.png') no-repeat;
background-size: contain;
} }
}
.bottom-btn:hover {
background: rgba(0, 88, 225, 0.1);
} }
} }
.bottom-btn {
cursor: pointer;
text-align: center;
margin-top: 0.24rem;
color: #fff;
width: 1rem;
height: 0.24rem;
line-height: 0.24rem;
margin-left: 6rem;
span {
display: inline-block;
width: 0.1rem;
height: 0.1rem;
background: url('~@/assets/newHome/gd.png') no-repeat;
background-size: contain;
}
}
.bottom-btn:hover {
background: rgba(0, 88, 225, 0.1);
}
} }
}
</style> </style>

View File

@ -152,6 +152,7 @@
> >
查看详情 查看详情
</a-button> </a-button>
<!-- <div class="btn" v-if="val.type == '组件服务'">技术文档</div> --> <!-- <div class="btn" v-if="val.type == '组件服务'">技术文档</div> -->
</div> </div>
<div class="ability-bottom"> <div class="ability-bottom">
@ -174,9 +175,11 @@
</a-button> </a-button>
</div> </div>
</div> </div>
<div v-if="item.approveStatus === '通过'" style=" margin-top: 15px;font-size: 16px; color: #ee4457;font-weight: bold;">说明已申请成功使用方式及联系人请点击"查看详情"按钮查看</div>
</div> </div>
</div> </div>
</div> </div>
<div class="box" v-if="item.list2.length > 0"> <div class="box" v-if="item.list2.length > 0">
<div class="ability" v-for="val in item.list2" :key="val.channelId"> <div class="ability" v-for="val in item.list2" :key="val.channelId">
<div class="left sxt"></div> <div class="left sxt"></div>
@ -277,7 +280,9 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 单个预览弹窗 --> <!-- 单个预览弹窗 -->

View File

@ -59,6 +59,7 @@
v-for="item in contentList.data" v-for="item in contentList.data"
:key="item.index" :key="item.index"
> >
<div class="withdraw" v-if="item.approveStatus === '不通过'"></div>
<div class="content-body-title"> <div class="content-body-title">
<span> <span>
申请单号{{ 申请单号{{
@ -112,7 +113,13 @@
审核结果{{ status2[item.STATUS] }} 审核结果{{ status2[item.STATUS] }}
</p> </p>
<p class="content-body-content-son" v-else> <p class="content-body-content-son" v-else>
审核结果{{ item.ended ? '审核完成' : '审核中' }} 审核结果{{
item.ended
? '审核完成'
: item.backToFirst
? '审核中(被驳回,请修改申请或终止流程)'
: '审核中'
}}
</p> </p>
<div> <div>
申请日期{{ 申请日期{{
@ -152,6 +159,7 @@
height="80" height="80"
v-if=" v-if="
item.processDefinitionName != '能力资源下架' && item.processDefinitionName != '能力资源下架' &&
item.approveStatus !== '不通过' &&
(item.resourceStatus == 4 || item.resourceStatus == 5) (item.resourceStatus == 4 || item.resourceStatus == 5)
" "
style="position: absolute; top: 20px; left: -850px" style="position: absolute; top: 20px; left: -850px"
@ -1081,6 +1089,16 @@
height: 150px; height: 150px;
border-bottom: #cccccc 1px solid; border-bottom: #cccccc 1px solid;
position: relative; position: relative;
.withdraw {
width: 0.675rem;
height: 0.3rem;
background: url('~@/assets/home/withdraw.png') no-repeat;
background-size: 100%;
position: absolute;
top: 0.3rem;
left: 0.87rem;
transform: rotate(-30deg);
}
.content-body-title { .content-body-title {
min-width: 100px; min-width: 100px;

View File

@ -9,38 +9,83 @@
<div class="form-container"> <div class="form-container">
<div v-if="applySuccess"> <div v-if="applySuccess">
<div class="title">申请人信息</div> <div class="title">申请人信息</div>
<a-form ref="formRef" :model="formName" name="basic" :label-col="{ style: { width: '106px' } }" <a-form
:wrapper-col="{ style: { width: '230px' } }" labelAlign="left" autocomplete="off"> ref="formRef"
:model="formName"
name="basic"
:label-col="{ style: { width: '106px' } }"
:wrapper-col="{ style: { width: '230px' } }"
labelAlign="left"
autocomplete="off"
>
<div class="base-info"> <div class="base-info">
<a-form-item label="申请人" name="applyUserName" :rules="[{ required: true, message: '请输入申请人' }]"> <a-form-item
<a-input placeholder="请输入申请人" v-model:value="formName.applyUserName" /> label="申请人"
name="applyUserName"
:rules="[{ required: true, message: '请输入申请人' }]"
>
<a-input
placeholder="请输入申请人"
v-model:value="formName.applyUserName"
/>
</a-form-item> </a-form-item>
<a-form-item style="margin: 0 22px" label="申请人电话" name="applyUserPhone" :rules="[ <a-form-item
{ style="margin: 0 22px"
required: true, label="申请人电话"
pattern: /^1[3456789]\d{9}$/, name="applyUserPhone"
message: '请输入正确的电话号码', :rules="[
}, {
]"> required: true,
<a-input placeholder="请输入申请人电话" v-model:value="formName.applyUserPhone" /> pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
},
]"
>
<a-input
placeholder="请输入申请人电话"
v-model:value="formName.applyUserPhone"
/>
</a-form-item> </a-form-item>
<a-form-item label="申请单位" name="applyUserDeptName" :rules="[{ required: true, message: '请输入申请单位' }]"> <a-form-item
<a-input placeholder="请输入申请单位" v-model:value="formName.applyUserDeptName" /> label="申请单位"
name="applyUserDeptName"
:rules="[{ required: true, message: '请输入申请单位' }]"
>
<a-input
placeholder="请输入申请单位"
v-model:value="formName.applyUserDeptName"
/>
</a-form-item> </a-form-item>
</div> </div>
<div class="title">需求信息</div> <div class="title">需求信息</div>
<a-form-item style="margin-bottom: 10px" label="需求标题" name="demandSubject" <a-form-item
:rules="[{ required: true, message: '请输入需求标题' }]"> style="margin-bottom: 10px"
<a-input style="width: 350px" v-model:value="formName.demandSubject" /> label="需求标题"
name="demandSubject"
:rules="[{ required: true, message: '请输入需求标题' }]"
>
<a-input
style="width: 350px"
v-model:value="formName.demandSubject"
/>
</a-form-item> </a-form-item>
<a-form-item style="margin-bottom: 10px" label="需求类型" name="detailsType" <a-form-item
:rules="[{ required: true, message: '请选择需求类型' }]"> style="margin-bottom: 10px"
<a-select ref="select" v-model:value="formName.detailsType" @focus="focus" style="width: 200px"> 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> <a-select-option value="数据资源">数据资源</a-select-option>
<a-select-option value="组件服务">组件服务</a-select-option> <a-select-option value="组件服务">组件服务</a-select-option>
@ -49,24 +94,44 @@
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item label="应用领域" v-if="formName.detailsType === '应用资源' || <a-form-item
formName.detailsType === '组件服务'" name="detailsField" style="width: 6.93rem" :rules="[ label="应用领域"
{ v-if="
required: true, formName.detailsType === '应用资源' ||
message: '请选择应用领域', formName.detailsType === '组件服务'
}, "
]"> name="detailsField"
<a-select v-model:value="formName.detailsField" :options="applicationSceneOpthion" mode="tags" style="width: 6.93rem"
:size="size" placeholder="请选择应用领域" :filterOption="false" :searchValue="false" style="width: 5.87rem"> :rules="[
</a-select> {
required: true,
message: '请选择应用领域',
},
]"
>
<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>
<!-- <a-form-item label="应用领域" name="detailsField" style="width: 350px" <!-- <a-form-item label="应用领域" name="detailsField" style="width: 350px"
:rules="[{ required: true, message: '请输入应用领域' }]"> :rules="[{ required: true, message: '请输入应用领域' }]">
<a-input placeholder="请输入应用领域" v-model:value="formName.detailsField" /> <a-input placeholder="请输入应用领域" v-model:value="formName.detailsField" />
</a-form-item> --> </a-form-item> -->
<a-form-item style="margin-bottom: 10px" label="需求描述" name="demandDetails" <a-form-item
:rules="[{ required: true, message: '请输入需求描述' }]"> style="margin-bottom: 10px"
<a-textarea style=" label="需求描述"
name="demandDetails"
:rules="[{ required: true, message: '请输入需求描述' }]"
>
<a-textarea
style="
width: 500px; width: 500px;
height: 150px; height: 150px;
font-size: 16px; font-size: 16px;
@ -76,12 +141,26 @@
border-radius: 6px; border-radius: 6px;
padding: 10px; padding: 10px;
resize: none; resize: none;
" v-model:value="formName.demandDetails" /> "
v-model:value="formName.demandDetails"
/>
</a-form-item> </a-form-item>
<a-form-item style="color: #666; font-size: 16px" label="附件上传" name="applyDoc"> <a-form-item
<a-upload v-model:file-list="fileList" name="file" :action="upLoadUrl" :headers="headers" style="color: #666; font-size: 16px"
@change="handleChange" :maxCount="1"> label="附件上传"
<a-button style=" name="applyDoc"
>
<a-upload
v-model:file-list="fileList"
name="file"
:action="upLoadUrl"
:headers="headers"
@change="handleChange"
@remove="handleRemove"
:maxCount="1"
>
<a-button
style="
width: 100px; width: 100px;
height: 30px; height: 30px;
margin-right: 10px; margin-right: 10px;
@ -92,7 +171,8 @@
border: 1px solid #bbd3ef; border: 1px solid #bbd3ef;
padding: 0; padding: 0;
text-align: center; text-align: center;
"> "
>
<upload-outlined></upload-outlined> <upload-outlined></upload-outlined>
文件上传 文件上传
</a-button> </a-button>
@ -103,7 +183,8 @@
</a-form-item> </a-form-item>
<a-form-item :wrapper-col="{ offset: 8, span: 16 }"> <a-form-item :wrapper-col="{ offset: 8, span: 16 }">
<a-button style=" <a-button
style="
width: 80px; width: 80px;
height: 38px; height: 38px;
margin-right: 20px; margin-right: 20px;
@ -114,10 +195,15 @@
border: none; border: none;
padding: 0; padding: 0;
text-align: center; text-align: center;
" type="primary" html-type="cancle" @click="signOut"> "
type="primary"
html-type="cancle"
@click="signOut"
>
退出申请 退出申请
</a-button> </a-button>
<a-button style=" <a-button
style="
width: 80px; width: 80px;
height: 38px; height: 38px;
background: #0087ff; background: #0087ff;
@ -127,7 +213,11 @@
border: none; border: none;
padding: 0; padding: 0;
text-align: center; text-align: center;
" type="primary" html-type="submit" @click="processStartHandle()"> "
type="primary"
html-type="submit"
@click="processStartHandle()"
>
提交申请 提交申请
</a-button> </a-button>
</a-form-item> </a-form-item>
@ -139,7 +229,7 @@
</div> </div>
<p> <p>
您已成功申请{{ 您已成功申请{{
formName.demandSubject || '' formName.demandSubject || ''
}},请耐心等待审批结果结果会第一时间通知您 }},请耐心等待审批结果结果会第一时间通知您
</p> </p>
</div> </div>
@ -150,248 +240,263 @@
</template> </template>
<script> <script>
import HomeHeader from '@/views/home/components/header' import HomeHeader from '@/views/home/components/header'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
// import { UploadOutlined } from '@ant-design/icons-vue' // import { UploadOutlined } from '@ant-design/icons-vue'
import { getUser, getUserInfo, relaunch } from '@/api/home' import { getUser, getUserInfo, relaunch } from '@/api/home'
import { import {
demandApply, demandApply,
getDemandForm, getDemandForm,
updateDemandForm, updateDemandForm,
getCategoryTreePage, getCategoryTreePage,
} from '@/api/personalCenter' } from '@/api/personalCenter'
// import { baseURL } from '@/config' // import { baseURL } from '@/config'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
export default { export default {
name: '', name: '',
props: {}, props: {},
components: { components: {
HomeHeader, HomeHeader,
// UploadOutlined, // UploadOutlined,
}, },
setup() { setup() {
const disabled = ref(false) const disabled = ref(false)
const upLoadUrl = ref(window.SITE_CONFIG.apiURL + '/upload') const upLoadUrl = ref(window.SITE_CONFIG.apiURL + '/upload')
const formName = reactive({ const formName = reactive({
applyUserDeptId: '', applyUserDeptId: '',
applyUserDeptName: '', applyUserDeptName: '',
applyUserId: '', applyUserId: '',
applyUserName: '', applyUserName: '',
applyUserPhone: '', applyUserPhone: '',
demandDetails: '', demandDetails: '',
demandSubject: '', demandSubject: '',
detailsField: [], detailsField: [],
detailsType: '', detailsType: '',
enclosure: '', enclosure: '',
})
// console.log(formName.demandSubject)
const router = useRouter()
const id = ref(router.currentRoute.value.query.id)
const taskId = ref(router.currentRoute.value.query.taskId)
if (id.value) {
getDemandForm(id.value).then((res) => {
console.log('回填数据===============>', res)
formName.applyUserPhone = res.data.data.applyUserPhone
formName.demandSubject = res.data.data.demandSubject
formName.detailsType = res.data.data.detailsType
formName.detailsField = res.data.data.detailsField
formName.demandDetails = res.data.data.demandDetails
formName.enclosure = res.data.data.enclosure
}) })
} // console.log(formName.demandSubject)
const applicationSceneOpthion = ref([])
getCategoryTreePage({
page: 1,
limit: 20,
dictTypeId: '1513712507692818433',
deFlage: 0,
}).then((res) => {
res.data.data.list.map((val) => {
applicationSceneOpthion.value.push({
value: val.dictLabel,
label: val.dictLabel,
})
})
// console.log('========>', applicationSceneOpthion.value)
})
getUser().then((res) => {
formName.applyUserName = res.data.data.realName
formName.applyUserId = res.data.data.id
getUserInfo(formName.applyUserId).then((res) => {
if (res.data.data.mobile) {
formName.applyUserPhone = res.data.data.mobile
}
formName.applyUserDeptName = res.data.data.deptName
formName.applyUserDeptId = res.data.data.deptId
})
})
const formRef = ref()
const applySuccess = ref(true)
// 退
const signOut = () => {
window.close()
}
const handleChange = (info) => {
if (info.file.status !== 'uploading') {
console.log(info.file, info.fileList)
}
if (info.file.status === 'done') {
message.success(`${info.file.name} 文件上传成功`)
formName.enclosure = info.file.response.data
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 文件上传失败`)
}
}
const fileList = ref([])
const processStartHandle = () => {
let detailsField = '';
if (formName.detailsField.length > 0) {
formName.detailsField.map((item) => {
detailsField += item + ';'
})
}
// copy
let _postData = JSON.parse(JSON.stringify(formName))
_postData.detailsField = detailsField;
const router = useRouter()
const id = ref(router.currentRoute.value.query.id)
const taskId = ref(router.currentRoute.value.query.taskId)
if (id.value) { if (id.value) {
updateDemandForm(_postData).then((upres) => { getDemandForm(id.value).then((res) => {
if (upres.data.code == 0) { console.log('回填数据===============>', res)
relaunch({ data: _postData, taskId: taskId.value }).then((res) => { formName.applyUserPhone = res.data.data.applyUserPhone
console.log('驳回================>', res) formName.demandSubject = res.data.data.demandSubject
if (res.data.code == 0) { formName.detailsType = res.data.data.detailsType
message.success('重新发起流程成功!') formName.detailsField = res.data.data.detailsField
window.setTimeout(() => { formName.demandDetails = res.data.data.demandDetails
window.close() formName.enclosure = res.data.data.enclosure
}, 1000) fileList.value = [
} else { {
message.error('重新发起流程失败!') uid: res.data.data.id,
} name: '附件',
}) staus: 'done',
} else { },
message.error('数据更新失败!') ]
}
}) })
} else { }
formRef.value.validate().then((valid) => { const applicationSceneOpthion = ref([])
const detString = String(_postData.detailsField) getCategoryTreePage({
_postData.detailsField = detString page: 1,
console.log(detString, _postData.detailsField, 'detString') limit: 20,
demandApply(_postData).then((res) => { dictTypeId: '1513712507692818433',
applySuccess.value = false deFlage: 0,
message.success('操作成功!') }).then((res) => {
console.log('能力申请================>', res) res.data.data.list.map((val) => {
applicationSceneOpthion.value.push({
value: val.dictLabel,
label: val.dictLabel,
}) })
}) })
} // console.log('========>', applicationSceneOpthion.value)
} })
getUser().then((res) => {
formName.applyUserName = res.data.data.realName
formName.applyUserId = res.data.data.id
getUserInfo(formName.applyUserId).then((res) => {
if (res.data.data.mobile) {
formName.applyUserPhone = res.data.data.mobile
}
formName.applyUserDeptName = res.data.data.deptName
formName.applyUserDeptId = res.data.data.deptId
})
})
return { const formRef = ref()
formRef, const applySuccess = ref(true)
formName,
fileList, // 退
headers: { const signOut = () => {
authorization: 'authorization-text', window.close()
}, }
handleChange, const handleRemove = () => {
applySuccess, formName.enclosure = ''
disabled, }
signOut, const handleChange = (info) => {
processStartHandle, if (info.file.status !== 'uploading') {
upLoadUrl, console.log(info.file, info.fileList)
// baseURL, }
applicationSceneOpthion, if (info.file.status === 'removed') {
} formName.enclosure = ''
}, }
} if (info.file.status === 'done') {
message.success(`${info.file.name} 文件上传成功`)
formName.enclosure = info.file.response.data
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 文件上传失败`)
}
}
const fileList = ref([])
const processStartHandle = () => {
let detailsField = ''
if (formName.detailsField.length > 0) {
formName.detailsField.map((item) => {
detailsField += item + ';'
})
}
// copy
let _postData = JSON.parse(JSON.stringify(formName))
_postData.detailsField = detailsField
if (id.value) {
updateDemandForm(_postData).then((upres) => {
if (upres.data.code == 0) {
relaunch({ data: _postData, taskId: taskId.value }).then(
(res) => {
console.log('驳回================>', res)
if (res.data.code == 0) {
message.success('重新发起流程成功!')
window.setTimeout(() => {
window.close()
}, 1000)
} else {
message.error('重新发起流程失败!')
}
}
)
} else {
message.error('数据更新失败!')
}
})
} else {
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)
})
})
}
}
return {
formRef,
formName,
fileList,
headers: {
authorization: 'authorization-text',
},
handleChange,
applySuccess,
disabled,
signOut,
handleRemove,
processStartHandle,
upLoadUrl,
// baseURL,
applicationSceneOpthion,
}
},
}
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
#apply-container { #apply-container {
background-color: #f5f8fc; background-color: #f5f8fc;
height: 100%; height: 100%;
width: 100%; width: 100%;
margin: 90px auto 0; margin: 90px auto 0;
display: flex;
justify-content: space-between;
aside {
width: 282px;
height: 96%;
overflow-y: auto;
background-color: #fff;
margin: 1% 0 3%;
}
article {
width: 1090px;
height: 99%;
overflow-y: auto;
background-color: #fff;
margin: 5% auto;
}
.form-container {
padding: 20px 20px 30px 20px;
.title {
font-size: 20px;
color: #000;
font-weight: bold;
margin-bottom: 20px;
}
}
.base-info {
display: flex; display: flex;
} justify-content: space-between;
:deep(.ant-form-item-label) { aside {
label { width: 282px;
color: #666; height: 96%;
font-size: 16px; overflow-y: auto;
background-color: #fff;
margin: 1% 0 3%;
}
&::after { article {
content: ''; width: 1090px;
height: 99%;
overflow-y: auto;
background-color: #fff;
margin: 5% auto;
}
.form-container {
padding: 20px 20px 30px 20px;
.title {
font-size: 20px;
color: #000;
font-weight: bold;
margin-bottom: 20px;
} }
} }
}
:deep(.ant-form-item-required) { .base-info {
&::before { display: flex;
font-size: 8px;
margin-right: 10px;
}
}
:deep(.ant-input) {
border: 1px solid #e0e0e0;
border-radius: 6px;
}
.success {
div {
width: 100px;
margin: 80px auto 40px;
} }
text-align: center; :deep(.ant-form-item-label) {
font-size: 20px; label {
font-weight: bold; color: #666;
color: #000; font-size: 16px;
&::after {
content: '';
}
}
}
:deep(.ant-form-item-required) {
&::before {
font-size: 8px;
margin-right: 10px;
}
}
:deep(.ant-input) {
border: 1px solid #e0e0e0;
border-radius: 6px;
}
.success {
div {
width: 100px;
margin: 80px auto 40px;
}
text-align: center;
font-size: 20px;
font-weight: bold;
color: #000;
}
} }
}
</style> </style>
<style> <style>
body, body,
html { html {
height: unset; height: unset;
} }
</style> </style>