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

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

3
.gitignore vendored
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,209 +1,92 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<el-form
:inline="true"
:model="dataForm"
@keyup.enter.native="getDataList()"
>
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input
v-model="dataForm.username"
placeholder="用户名"
clearable
></el-input>
<el-input v-model="dataForm.username" placeholder="用户名" clearable></el-input>
</el-form-item>
<el-form-item>
<el-input
v-model="dataForm.real_name"
placeholder="真实姓名"
clearable
></el-input>
<el-input v-model="dataForm.real_name" placeholder="真实姓名" clearable></el-input>
</el-form-item>
<el-form-item>
<ren-select
v-model="dataForm.gender"
dict-type="gender"
:placeholder="$t('user.gender')"
></ren-select>
<ren-select v-model="dataForm.gender" dict-type="gender" :placeholder="$t('user.gender')"></ren-select>
</el-form-item>
<el-form-item>
<el-select
v-model="dataForm.postId"
:placeholder="$t('user.postIdList')"
clearable
>
<el-option
:label="data.postName"
v-for="data in postList"
:key="data.id"
:value="data.id"
>{{ data.postName }}</el-option
>
<el-select v-model="dataForm.postId" :placeholder="$t('user.postIdList')" clearable>
<el-option :label="data.postName" v-for="data in postList" :key="data.id" :value="data.id">{{ data.postName
}}</el-option>
</el-select>
</el-form-item>
<el-form-item>
<ren-dept-tree
v-model="dataForm.deptId"
:placeholder="$t('dept.title')"
:query="true"
></ren-dept-tree>
<ren-dept-tree v-model="dataForm.deptId" :placeholder="$t('dept.title')" :query="true" ref="renDeptTree">
</ren-dept-tree>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getDataList()">{{
$t('query')
$t('query')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:save')"
type="primary"
@click="addOrUpdateHandle()"
>{{ $t('add') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:delete')"
type="danger"
@click="deleteHandle()"
>{{ $t('deleteBatch') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:delete')" type="danger" @click="deleteHandle()">{{ $t('deleteBatch')
}}</el-button>
</el-form-item>
<el-form-item>
<el-button
v-if="$hasPermission('sys:user:export')"
type="info"
@click="exportHandle()"
>{{ $t('export') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:export')" type="info" @click="exportHandle()">{{ $t('export') }}
</el-button>
</el-form-item>
<el-form-item>
<el-button @click="reset()">重置</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
style="width: 100%"
>
<el-table-column
type="selection"
header-align="center"
align="center"
width="50"
></el-table-column>
<el-table-column
prop="username"
:label="$t('user.username')"
sortable="custom"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="realName"
label="真实姓名"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="deptName"
:label="$t('user.deptName')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="email"
:label="$t('user.email')"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="mobile"
:label="$t('user.mobile')"
sortable="custom"
header-align="center"
align="center"
></el-table-column>
<el-table-column
prop="gender"
:label="$t('user.gender')"
sortable="custom"
header-align="center"
align="center"
>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle" style="width: 100%">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="username" :label="$t('user.username')" sortable="custom" header-align="center"
align="center"></el-table-column>
<el-table-column prop="realName" label="真实姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="deptName" :label="$t('user.deptName')" header-align="center" align="center">
</el-table-column>
<el-table-column prop="email" :label="$t('user.email')" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" :label="$t('user.mobile')" sortable="custom" header-align="center"
align="center"></el-table-column>
<el-table-column prop="gender" :label="$t('user.gender')" sortable="custom" header-align="center"
align="center">
<template slot-scope="scope">
{{ $getDictLabel('gender', scope.row.gender) }}
</template>
</el-table-column>
<el-table-column
prop="status"
:label="$t('user.status')"
sortable="custom"
header-align="center"
align="center"
>
<el-table-column prop="status" :label="$t('user.status')" sortable="custom" header-align="center"
align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.status === 0" size="small" type="danger">{{
$t('user.status0')
$t('user.status0')
}}</el-tag>
<el-tag v-else size="small" type="success">{{
$t('user.status1')
$t('user.status1')
}}</el-tag>
</template>
</el-table-column>
<el-table-column
prop="createDate"
:label="$t('user.createDate')"
sortable="custom"
header-align="center"
align="center"
width="180"
></el-table-column>
<el-table-column
:label="$t('handle')"
fixed="right"
header-align="center"
align="center"
width="150"
>
<el-table-column prop="createDate" :label="$t('user.createDate')" sortable="custom" header-align="center"
align="center" width="180"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button
v-if="$hasPermission('sys:user:update')"
type="text"
size="small"
@click="addOrUpdateHandle(scope.row.id)"
>{{ $t('update') }}</el-button
>
<el-button
v-if="$hasPermission('sys:user:delete')"
type="text"
size="small"
@click="deleteHandle(scope.row.id)"
>{{ $t('delete') }}</el-button
>
<el-button v-if="$hasPermission('sys:user:update')" type="text" size="small"
@click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('sys:user:delete')" type="text" size="small"
@click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle"
>
<el-pagination :current-page="page" :page-sizes="[10, 20, 50, 100]" :page-size="limit" :total="total"
layout="total, sizes, prev, pager, next, jumper" @size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update
v-if="addOrUpdateVisible"
ref="addOrUpdate"
@refreshDataList="getDataList"
></add-or-update>
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</el-card>
</template>
@ -214,7 +97,7 @@ import AddOrUpdate from './user-add-or-update'
import qs from 'qs'
export default {
mixins: [mixinViewModule],
data () {
data() {
return {
mixinViewModuleOptions: {
getDataListURL: '/sys/user/page',
@ -235,30 +118,33 @@ export default {
components: {
AddOrUpdate
},
created () {
created() {
this.getPostList()
},
methods: {
reset () {
reset() {
this.dataForm.username = ''
this.dataForm.real_name = ''
this.dataForm.deptId = ''
this.dataForm.postId = ''
this.dataForm.gender = ''
if (this.$refs.renDeptTree) {
this.$refs.renDeptTree.showDeptName = '';
}
this.$http
.get(
this.mixinViewModuleOptions.getDataListURL +
'?' +
qs.stringify({
page: 1,
limit: 10,
username: '',
deptId: '',
postId: '',
gender: ''
})
'?' +
qs.stringify({
page: 1,
limit: 10,
username: '',
deptId: '',
postId: '',
gender: ''
})
)
.then(({ data: res }) => {
this.dataForm.username = ''
this.dataForm.real_name = ''
this.dataForm.deptId = ''
this.dataForm.postId = ''
this.dataForm.gender = ''
if (res.code !== 0) {
this.dataList = []
this.total = 0
@ -279,7 +165,7 @@ export default {
this.dataListLoading = false
})
},
getPostList () {
getPostList() {
this.$http
.get('/sys/post/list')
.then(({ data: res }) => {
@ -288,7 +174,7 @@ export default {
}
this.postList = res.data
})
.catch(() => {})
.catch(() => { })
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -308,4 +308,4 @@ export function getDeviceDetail(deviceId) {
url: `/device/${deviceId}`,
method: 'get',
})
}
}

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 KiB

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,8 @@
<!--
* @Author: hisense.liangjunhua
* @Date: 2022-06-17 14:11:08
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-08-25 19:52:03
* @LastEditors: Light
* @LastEditTime: 2022-10-26 14:57:25
* @Description: 上架
-->
<template>
@ -95,7 +95,7 @@
disabled
v-model:value="val[attr.field]"
:showCount="true"
:maxlength="200"
:maxlength="1000"
:placeholder="'请填写' + attr.name"
v-else-if="attr.type == 'textArea'"
/>
@ -166,7 +166,7 @@
<a-textarea
v-model:value="val.note1"
:showCount="true"
:maxlength="200"
:maxlength="1000"
:placeholder="'请填写' + val.name"
v-else-if="val.type == 'textArea'"
/>
@ -203,7 +203,7 @@
</div>
</div>
</template>
<template v-else>
<div class="bottom">
<div
@ -270,7 +270,7 @@
v-else-if="item.type == 'textArea'"
v-model:value="item.note1"
:showCount="true"
:maxlength="200"
:maxlength="1000"
:placeholder="'请输入' + item.name"
@change="changeIiem(item.name, item.note1)"
/>
@ -703,7 +703,7 @@
data.value.list.push(item)
}
})
}
}
// else if (item.name === '') {
// if (!item.note1) {
// getUserInfo().then(({ data: res1 }) => {
@ -724,7 +724,7 @@
// } else {
// data.value.list.push(item)
// }
// }
// }
else if (item.name === '来源应用') {
queryApplicationRelByResourceId({
referenceId: 0,
@ -1132,290 +1132,290 @@
</script>
<style></style>
<style lang="less" scoped>
.put-on-the-shelf {
height: 6.8rem;
overflow: scroll;
display: flex;
flex-direction: column;
align-items: center;
padding: 0.5rem 1rem 0.25rem;
.Technical-text {
height: 0.3rem;
width: 1rem;
border: 0.01rem solid #bbd3ef;
border-radius: 0.06rem;
background: #edf4fc;
color: #0087ff;
font-size: 0.14rem;
text-align: center;
line-height: 0.3rem;
}
.Technical-text:hover {
cursor: pointer;
}
& > div {
width: 100%;
margin-top: 0.6rem;
.top {
color: #333333;
font-size: 0.22rem;
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 0.25rem;
div:first-child,
div:last-child {
width: 2.45rem;
height: 0.01rem;
background: #f0f0f0;
}
div:nth-child(2) {
margin: 0 0.3rem;
}
.put-on-the-shelf {
height: 6.8rem;
overflow: scroll;
display: flex;
flex-direction: column;
align-items: center;
padding: 0.5rem 1rem 0.25rem;
.Technical-text {
height: 0.3rem;
width: 1rem;
border: 0.01rem solid #bbd3ef;
border-radius: 0.06rem;
background: #edf4fc;
color: #0087ff;
font-size: 0.14rem;
text-align: center;
line-height: 0.3rem;
}
.Technical-text:hover {
cursor: pointer;
}
.bottom {
margin-top: 0.25rem;
& > div {
width: 100%;
margin-top: 0.6rem;
.items {
background: #fafafa;
padding: 0.1rem;
.top {
color: #333333;
font-size: 0.22rem;
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 0.25rem;
p {
display: flex;
justify-content: space-between;
div:first-child,
div:last-child {
width: 2.45rem;
height: 0.01rem;
background: #f0f0f0;
}
span:nth-of-type(1) {
width: 2rem;
div:nth-child(2) {
margin: 0 0.3rem;
}
}
.bottom {
margin-top: 0.25rem;
.items {
background: #fafafa;
padding: 0.1rem;
p {
display: flex;
justify-content: space-between;
span:nth-of-type(1) {
width: 2rem;
}
span:nth-of-type(2) {
width: 100%;
font-weight: 600;
}
}
span:nth-of-type(2) {
width: 100%;
p:nth-of-type(1) > span:nth-of-type(1) {
font-size: 0.18rem;
font-weight: 600;
}
}
p:nth-of-type(1) > span:nth-of-type(1) {
font-size: 0.18rem;
font-weight: 600;
}
}
.add {
cursor: pointer;
margin-top: 0.1rem;
font-size: 0.16rem;
color: #007efb;
}
.form {
margin-top: 0.2rem;
display: flex;
justify-content: flex-start;
align-items: center;
span:first-child {
width: 1.2rem;
.add {
cursor: pointer;
margin-top: 0.1rem;
font-size: 0.16rem;
color: #007efb;
}
:deep(.ant-input-textarea) {
width: 5.2rem;
.form {
margin-top: 0.2rem;
display: flex;
justify-content: flex-start;
align-items: center;
span:first-child {
width: 1.2rem;
}
:deep(.ant-input-textarea) {
width: 5.2rem;
}
:deep(.ant-radio-group) {
width: 5.2rem;
}
:deep(.ant-input-number) {
width: 2rem;
}
:deep(.ant-input) {
resize: none;
width: 5.2rem;
}
.ant-btn {
width: 1.6rem;
height: 0.32rem;
text-align: center;
background: #edf4fc;
color: #0087ff;
border: 0.01rem solid #bbd3ef;
border-radius: 0.06rem;
}
}
:deep(.ant-radio-group) {
width: 5.2rem;
}
.submit {
margin-top: 0.4rem;
font-size: 0.14rem;
display: flex;
justify-content: flex-end;
:deep(.ant-input-number) {
width: 2rem;
}
:deep(.ant-input) {
resize: none;
width: 5.2rem;
}
.ant-btn {
width: 1.6rem;
height: 0.32rem;
text-align: center;
background: #edf4fc;
color: #0087ff;
border: 0.01rem solid #bbd3ef;
border-radius: 0.06rem;
}
}
.submit {
margin-top: 0.4rem;
font-size: 0.14rem;
display: flex;
justify-content: flex-end;
.ant-btn {
width: 1.8rem;
height: 0.3rem;
text-align: center;
background: #d9ebff;
color: #0087ff;
border: 0.01rem solid #0087ff;
border-radius: 0.06rem;
.ant-btn {
width: 1.8rem;
height: 0.3rem;
text-align: center;
background: #d9ebff;
color: #0087ff;
border: 0.01rem solid #0087ff;
border-radius: 0.06rem;
}
}
}
}
}
& > div:nth-of-type(1) {
margin-top: 0;
}
}
.application-Area {
width: 5.2rem;
display: grid;
margin-top: -0.05rem;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
.application-Area-son {
cursor: pointer;
font-size: 0.14rem;
width: 0.9rem;
height: 0.26rem;
border-radius: 0.13rem;
color: #333333;
background: #f5f5f5;
border: 0.01rem #cccccc solid;
display: flex;
justify-content: center;
align-items: center;
margin-top: 0.1rem;
font-weight: 500;
}
.application-Area-down {
background: #0087ff;
color: #fff;
}
}
:deep(.ant-image-img) {
width: 100%;
height: 100%;
object-fit: contain;
}
:deep(.ant-modal) {
width: 9.6rem;
}
:deep(.ant-transfer-list) {
width: 39.5%;
height: 5.2rem;
}
:deep(.ant-transfer-operation) {
flex-direction: row-reverse;
margin: 0 0.3rem;
}
:deep(.ant-btn) {
width: 0.56rem;
height: 0.4rem;
border-radius: 0.04rem;
}
:deep(.ant-btn:first-child) {
margin-left: 0.04rem;
}
:deep(.ant-modal-footer) {
border: 0;
}
:deep(.ant-modal-header) {
border: 0;
}
:deep(.ant-modal-title) {
line-height: 0.24rem;
font-size: 0.18rem;
color: #303133;
}
:deep(.ant-transfer-list-header) {
background: #f5f7fa;
}
:deep(.ant-transfer-list-header-selected) {
display: flex;
width: 90%;
flex-direction: row-reverse;
justify-content: space-between;
align-items: center;
}
:deep(.ant-transfer-list-header-title) {
font-size: 0.16rem;
color: #303133;
font-weight: 400;
text-align: left;
}
:deep(.ant-transfer-list-header .ant-checkbox-wrapper) {
display: none !important;
}
:deep(.ant-upload-list-item-name) {
width: 1rem;
}
.del {
display: flex;
justify-content: flex-start;
align-items: center;
font-size: 0.14rem;
margin-left: 0.2rem;
.delImg {
cursor: pointer;
display: inline-block;
width: 0.16rem;
height: 0.18rem;
background: url(~@/assets/home/sf_del.png) no-repeat;
margin-right: 0.05rem;
}
div {
cursor: pointer;
}
}
.item {
position: relative;
span:first-child {
width: unset;
}
.box {
display: flex;
align-items: center;
// margin: 15px 0;
& > div:nth-of-type(1) {
width: 105px;
margin-top: 0;
}
}
.application-Area {
width: 5.2rem;
display: grid;
margin-top: -0.05rem;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
.application-Area-son {
cursor: pointer;
font-size: 0.14rem;
width: 0.9rem;
height: 0.26rem;
border-radius: 0.13rem;
color: #333333;
background: #f5f5f5;
border: 0.01rem #cccccc solid;
display: flex;
justify-content: center;
align-items: center;
margin-top: 0.1rem;
font-weight: 500;
}
.application-Area-down {
background: #0087ff;
color: #fff;
}
}
:deep(.ant-image-img) {
width: 100%;
height: 100%;
object-fit: contain;
}
:deep(.ant-modal) {
width: 9.6rem;
}
:deep(.ant-transfer-list) {
width: 39.5%;
height: 5.2rem;
}
:deep(.ant-transfer-operation) {
flex-direction: row-reverse;
margin: 0 0.3rem;
}
:deep(.ant-btn) {
width: 0.56rem;
height: 0.4rem;
border-radius: 0.04rem;
}
:deep(.ant-btn:first-child) {
margin-left: 0.04rem;
}
:deep(.ant-modal-footer) {
border: 0;
}
:deep(.ant-modal-header) {
border: 0;
}
:deep(.ant-modal-title) {
line-height: 0.24rem;
font-size: 0.18rem;
color: #303133;
}
:deep(.ant-transfer-list-header) {
background: #f5f7fa;
}
:deep(.ant-transfer-list-header-selected) {
display: flex;
width: 90%;
flex-direction: row-reverse;
justify-content: space-between;
align-items: center;
}
:deep(.ant-transfer-list-header-title) {
font-size: 0.16rem;
color: #303133;
font-weight: 400;
text-align: left;
}
:deep(.ant-transfer-list-header .ant-checkbox-wrapper) {
display: none !important;
}
:deep(.ant-upload-list-item-name) {
width: 1rem;
}
.del {
display: flex;
justify-content: flex-start;
align-items: center;
font-size: 0.14rem;
margin-left: 0.2rem;
.delImg {
cursor: pointer;
display: inline-block;
width: 0.16rem;
height: 0.18rem;
background: url(~@/assets/home/sf_del.png) no-repeat;
margin-right: 0.05rem;
}
div {
cursor: pointer;
}
}
.item {
position: relative;
span:first-child {
width: unset;
}
.box {
display: flex;
align-items: center;
// margin: 15px 0;
& > div:nth-of-type(1) {
width: 105px;
display: flex;
align-items: center;
}
.required {
color: #f56c6c;
margin-right: 3px;
}
}
.required {
.requiredTips {
font-size: 14px;
color: #f56c6c;
margin-right: 3px;
position: absolute;
bottom: -20px;
left: 110px;
}
}
.requiredTips {
font-size: 14px;
color: #f56c6c;
position: absolute;
bottom: -20px;
left: 110px;
}
}
</style>

View File

@ -1,31 +1,38 @@
<!-- 智能算法 -->
<template>
<div class="algorithm">
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
<div style="display: flex">
<div class="select">
<div class="top" @click="selectFlag = !selectFlag">
{{ typeName }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag">
<span class="light"></span>
<div @click="changeDeptType('全市')">全市</div>
<div @click="changeDeptType('市级')">市级</div>
<div @click="changeDeptType('区级')">区级</div>
<div @click="changeDeptType('企业')">企业</div>
</div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="getList2(val)">
{{ val }}
<div class="select">
<div class="top" @click="selectFlag2 = true">
{{ typeName2 }}
<div class="light"></div>
</div>
<div class="bottom" v-show="selectFlag2">
<span class="light"></span>
<div v-for="val in dictList" :key="val" @click="changeAreaFunction(val)">
{{ val }}
</div>
</div>
</div>
</div>
<div class="algorithm-class">
<div
v-for="(item, index) in dataList"
:key="`algorithm-${index}`"
class="algorithm-card"
>
<a-image
:src="algorithmCardPhoto(item.infoList, item)"
:width="525"
:height="275"
:fallback="imgSrc"
:preview="false"
></a-image>
<div v-for="(item, index) in dataList" :key="`algorithm-${index}`" class="algorithm-card">
<a-image :src="algorithmCardPhoto(item)" :width="525" :height="275" :fallback="imgSrc" :preview="false">
</a-image>
<a-tooltip>
<template #title>{{ item.name }}</template>
@ -39,248 +46,308 @@
</div>
</template>
<script setup>
import { getCategoryTreePage } from '@/api/personalCenter'
import { pageWithAttrs } from '@/api/abilityStatistics'
import { ref, onMounted, onBeforeUnmount } from 'vue'
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
if (val.dictLabel !== '其他') {
dictList.value.push(val.dictLabel)
}
})
import { getCategoryTreePage } from '@/api/personalCenter'
import { getGisByArea } from '@/api/home'
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
const deptType = ref(null)
const typeName = ref('全市')
const typeName2 = ref('全部')
const dictList = ref([])
const dataList = ref([])
const selectFlag2 = ref(false)
const selectFlag = ref(false)
getCategoryTreePage({
page: 1,
limit: 99,
dictTypeId: '1513712507692818433',
}).then((res) => {
dictList.value = ['全部']
res.data.data.list.map((val) => {
// if (val.dictLabel !== '') {
dictList.value.push(val.dictLabel)
// }
})
const params = {
deptIds: [],
districtId: '',
infoList: [{ attrType: '组件类型', attrValue: '智能算法' }],
orderField: 'pin_top',
orderType: 'DESC',
pageNum: 1,
pageSize: 9,
type: '组件服务',
}
const getList2 = (val) => {
typeName2.value = val
if (val == '全部') {
params.infoList = [{ attrType: '组件类型', attrValue: '智能算法' }]
} else {
params.infoList = [
{ attrType: '组件类型', attrValue: '智能算法' },
{ attrType: '应用领域', attrValue: val },
]
})
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
}
selectFlag2.value = false
pageWithAttrsFunction()
})
}
pageWithAttrsFunction()
//
const algorithmCardPhoto = (item) => {
let _arr = []
if(item.pic && typeof item.pic == 'string') {
_arr = JSON.parse(item.pic)
}
let algorithmclass = null
const imgSrc = ref(require('@/assets/capacitySquare/algorithm-photo.jpg'))
const dataLength = ref(true)
const isNoMore = ref(false)
let url = ref('')
const pageWithAttrsFunction = () => {
pageWithAttrs(params).then((res) => {
dataList.value = res.data.data.records
if (res.data.data.records.length < 9) {
let _img = _arr[0] && _arr[0].img || imgSrc.value;
console.log('_img------------>', _img);
return _img
}
//
const detailFunction = (id) => {
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
}
const algorithmFunction = (e) => {
var scrollTop = e.currentTarget.scrollTop
var windowHeight = e.currentTarget.clientHeight
var scrollHeight = e.currentTarget.scrollHeight
console.log(scrollTop, windowHeight, scrollHeight, '123')
if (
scrollTop + windowHeight <= scrollHeight + 1 &&
scrollTop + windowHeight >= scrollHeight - 1
) {
//
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
}
pageWithAttrsFunction()
//
const algorithmCardPhoto = (List, item) => {
let obj = List.filter((item) => item.attrType === '应用场景')[0]
if (obj && obj.attrValue != '') {
console.log(
item.name,
item.id,
obj.attrValue,
'----------------------------'
)
obj = JSON.parse(obj.attrValue)[0].img
}
return obj || ''
}
//
const detailFunction = (id) => {
window.open(window.SITE_CONFIG.previewUrl + `#/details?id=${id}`)
}
const algorithmFunction = (e) => {
var scrollTop = e.currentTarget.scrollTop
var windowHeight = e.currentTarget.clientHeight
var scrollHeight = e.currentTarget.scrollHeight
console.log(scrollTop, windowHeight, scrollHeight, '123')
if (
scrollTop + windowHeight <= scrollHeight + 1 &&
scrollTop + windowHeight >= scrollHeight - 1
) {
//
isNoMore.value = true
params.pageNum++
pageWithAttrs(params).then((res) => {
dataList.value.push(...res.data.data.records)
if (res.data.data.records.length < 9) {
dataLength.value = false
}
})
} else {
isNoMore.value = false
}
}
}
onMounted(() => {
algorithmclass = document.querySelector('.algorithm-class')
if (dataLength.value) {
//
algorithmclass.addEventListener('scroll', algorithmFunction, true)
//
const changeDeptType = (str) => {
if (str) {
if (algorithmclassDom) {
algorithmclassDom.scrollTop = 0;
}
switch (str) {
case '全市':
deptType.value = null
typeName.value = '全 市'
break
case '市级':
deptType.value = 2
typeName.value = '市 级'
break
case '区级':
deptType.value = 3
typeName.value = '区 级'
break
case '企业':
deptType.value = 4
typeName.value = '企 业'
break
}
params.pageNum = 1;
if(deptType.value !== null && deptType.value !== undefined) {
params.deptType = deptType.value;
}else {
if(Object.keys(params).includes('deptType')) {
delete params.deptType
}
}
}
selectFlag.value = false
getData(str)
}
const getData = (str) => {
getGisByArea(params).then((res) => {
const resData = res.data.data || {}
if (resData.list.length > 0 && resData.list.length < 9 && algorithmclassDom) {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
}
dataList.value = resData.list || []
nextTick(() => {
algorithmclassDom = document.querySelector('.algorithm-box')
if (str && algorithmclassDom) {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
}
})
})
onBeforeUnmount(() => {
algorithmclass.removeEventListener('scroll', algorithmFunction, true)
})
}
onMounted(() => {
algorithmclassDom = document.querySelector('.algorithm-class')
if (dataLength.value) {
//
algorithmclassDom.addEventListener('scroll', algorithmFunction, true)
}
})
onBeforeUnmount(() => {
algorithmclassDom.removeEventListener('scroll', algorithmFunction, true)
})
</script>
<style lang="less" scoped>
.algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
.algorithm {
.select {
margin: 0.1rem 0 0.1rem 0.2rem;
color: #fff;
font-size: 0.2rem;
font-family: webfont;
position: relative;
.top {
cursor: pointer;
width: 3.61rem;
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;
.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;
.light {
width: 0.56rem;
height: 3px;
position: absolute;
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png')
no-repeat;
background-size: 100%;
}
}
.bottom {
cursor: pointer;
.light {
width: 0.56rem;
height: 3px;
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;
border-top: 1px solid #aed5ff;
}
& > div:nth-of-type(1) {
border: none;
}
top: 0.4rem;
left: 1.52rem;
background: url('~@/assets/capacitySquare/select-light1.png') no-repeat;
background-size: 100%;
}
}
.algorithm-class {
// margin-top: 0.6rem;
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-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 {
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;
}
}
.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;
border-top: 1px solid #aed5ff;
}
&>div:nth-of-type(1) {
border: none;
}
}
.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;
}
}
.algorithm-class {
// margin-top: 0.6rem;
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-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 {
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>

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -88,9 +88,9 @@
v-else
placeholder="请选择归属部门"
v-model:value="formName.unit"
:getPopupContainer="(triggerNode) => triggerNode.parentNode"
show-search
:filterOption="true"
:getPopupContainer="(triggerNode) => triggerNode.parentNode"
show-search
:filterOption="true"
@change="deptIdChangeFunction"
>
<a-select-option
@ -811,10 +811,10 @@
const handleBlur = () => {
console.log('blur')
}
const arrId = []
const handleFocus = () => {
console.log('focus')
let arrId = []
for (var valueIndex of systemOptions2.value) {
console.log('focus', systemOptions2.value, systemOptions.value)
for (let valueIndex of systemOptions2.value) {
if (arrId.indexOf(valueIndex['value']) == -1) {
arrId.push(valueIndex['value'])
systemOptions.value.push(valueIndex)

File diff suppressed because it is too large Load Diff

View File

@ -230,13 +230,8 @@
</span>
</template>
</div>
<div
v-if="
selectCardsname === '打包模式'
"
class="label-content1"
>
发布时间
<div v-if="selectCardsname === '打包模式'" class="label-content1">
发布时间
<template v-if="item.createDate">
<span>
{{ item.createDate.substring(0, 10) + ' ' }}
@ -300,11 +295,13 @@
>
申请量{{ item.applyCount || 0 }}
</div>
<!-- 青岛不展示数据量 -->
<div
v-if="
selectCardsname === '数据资源' &&
selectCardsname !== '融合服务' &&
selectCardsname !== '赋能场景'
selectCardsname !== '赋能场景' &&
whoShow1.itShowXiHaiAn
"
>
数据量{{ item.sjlCount || 0 }}
@ -1004,7 +1001,7 @@
margin: 0 10px 0 0;
.header-right {
// display: flex;
// display: flex;
font-size: 14px;
color: #212121;

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -66,7 +66,7 @@
></path>
</svg>
<img class="icon-poylon" @click="areaMode()" src="~@/supermap/image/icon-poylon.png">
</div>
<video-play
v-if="openVideo"
@ -197,7 +197,7 @@
L.drawLocal.draw.handlers.polygon.tooltip.cont = '单击继续绘制形状'
L.drawLocal.draw.handlers.polygon.tooltip.end =
'单击继续绘制形状,双击结束绘制'
this.hiMap.mapObj.map.off('draw:created')
this.hiMap.mapObj.drawPolygon.enable()
this.hiMap.mapObj.map.once('draw:created', (e) => {

View File

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

View File

@ -8,40 +8,74 @@
<div class="bottom">
<div class="item">
<div class="zj">组件服务</div>
<div class="name" v-for="(item, index) in zjList.slice(0, 5)" :key="item.name"
:class="index == 4 ? 'name-last' : ''" @click="selectOne1(item.name)">
<div
class="name"
v-for="(item, index) in zjList.slice(0, 5)"
:key="item.name"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne1(item.name)"
>
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('组件服务')">查看更多</div>
</div>
<div class="item">
<div class="yy">应用资源</div>
<div class="name" v-for="(item, index) in yyList.slice(0, 5)" :key="item.name"
:class="index == 4 ? 'name-last' : ''" @click="selectOne11(item.name)">
<div
class="name"
v-for="(item, index) in yyList.slice(0, 5)"
:key="item.name"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne11(item.name)"
>
{{ item.name + '-' + item.num + '项' }}
</div>
<div class="btn" @click="jumpPage('应用资源')">查看更多</div>
</div>
<div class="item">
<div class="jc">基础设施</div>
<div class="name" v-for="(item, index) in jcList.slice(0, 5)" :key="item.name"
:class="index == 2 ? 'name-last' : ''" @click="selectOne2(item.name)">
{{ item.name + '-' + item.num + '项' }}
<div
class="name"
v-for="(item, index) in jcList.slice(0, 5)"
:key="item.name"
:class="index == 2 ? 'name-last' : ''"
@click="selectOne2(item.name)"
>
{{
item.name +
'-' +
item.num +
(item.name == '会客厅'
? '间'
: item.name == '视频会议'
? '个'
: '项')
}}
</div>
<div class="btn" @click="jumpPage('基础设施')">查看更多</div>
</div>
<div class="item">
<div class="sj">数据资源</div>
<div class="name" v-for="(item, index) in sjList" :key="item.id" :class="index == 4 ? 'name-last' : ''"
@click="selectOne3(item.name)">
<div
class="name"
v-for="(item, index) in sjList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="selectOne3(item.name)"
>
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('数据资源')">查看更多</div>
</div>
<div class="item">
<div class="zs">知识库</div>
<div class="name" v-for="(item, index) in zsList" :key="item.id" :class="index == 4 ? 'name-last' : ''"
@click="openHref(item)">
<div
class="name"
v-for="(item, index) in zsList"
:key="item.id"
:class="index == 4 ? 'name-last' : ''"
@click="openHref(item)"
>
{{ index + 1 }}-{{ item.name }}
</div>
<div class="btn" @click="jumpPage('知识库')">查看更多</div>
@ -51,436 +85,432 @@
</div>
</template>
<script setup>
import {
pageWithAttrs,
getDataResource,
selectInfrastructureList,
selectCollectComponentList,
selectCollectResourceList
} from '@/api/home.js'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
// const jcList = ref([])
const paramsGetResources = {
districtId: '',
pageNum: 1,
pageSize: 5,
type: '',
name: '',
infoList: [],
orderField: 'total', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const interfaceSuccess = ref(0)
const object = reactive({
yyNum: '',
zjNum: '',
jcNum: '',
sjNum: '',
zsNum: '',
})
const getAppResources = (type, obj) => {
paramsGetResources.type = type
if (type === '数据资源' && !whoShow1.value.itShowBaoTou) {
getDataResource({
serviceName: paramsGetResources.name || '', //
orderField: whoShow1.value.itShowQingDao ? 'fbrq' : 'createTime', //
orderType: paramsGetResources.orderType.toLowerCase(), //descasc
pageNum: paramsGetResources.pageNum, //
pageSize: paramsGetResources.pageSize, //
}).then((res) => {
console.log('数据资源==================>', res.data.data)
if (whoShow1.value.itShowQingDao) {
res.data.data.data.forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
obj.value = res.data.data.data || []
object.sjNum = res.data.data.rows
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
obj.value = res.data.data.list || []
object.sjNum = res.data.data.total
}
})
} else {
let type = paramsGetResources.type
import {
pageWithAttrs,
getDataResource,
selectInfrastructureList,
selectCollectComponentList,
selectCollectResourceList,
} from '@/api/home.js'
import { ref, reactive } from 'vue'
import { useRouter } from 'vue-router'
import { useStore } from 'vuex'
import { updateVisits, browsingInsert, getSoldierList } from '@/api/home'
import { message, Upload } from 'ant-design-vue'
import mybus from '@/myplugins/mybus'
const store = useStore()
const router = useRouter()
const zjList = ref([])
const jcList = ref([])
const sjList = ref([])
const yyList = ref([])
//
const zsList = ref([])
// const jcList = ref([])
const paramsGetResources = {
districtId: '',
pageNum: 1,
pageSize: 5,
type: '',
name: '',
infoList: [],
orderField: 'total', // total visits 访 applyCount score collectCount
orderType: 'DESC', // ASC DESC
}
console.log('dataShowdev==========================>', whoShow)
// eslint-disable-next-line no-undef
const whoShow1 = ref(whoShow)
const interfaceSuccess = ref(0)
const object = reactive({
yyNum: '',
zjNum: '',
jcNum: '',
sjNum: '',
zsNum: '',
})
const getAppResources = (type, obj) => {
paramsGetResources.type = type
if (type === '数据资源' && !whoShow1.value.itShowBaoTou) {
getDataResource({
serviceName: paramsGetResources.name || '', //
orderField: whoShow1.value.itShowQingDao ? 'fbrq' : 'createTime', //
orderType: paramsGetResources.orderType.toLowerCase(), //descasc
pageNum: paramsGetResources.pageNum, //
pageSize: paramsGetResources.pageSize, //
}).then((res) => {
console.log('数据资源==================>', res.data.data)
if (whoShow1.value.itShowQingDao) {
res.data.data.data.forEach((val) => {
val.id = val.guid // id
val.name = val.zyname //
val.sjlCount = val.sjcczl //
val.applyCount = val.syqk //
val.deptName = val.TGBM //
val.createDate = val.fbrq //
val.description = val.xgxt //
})
obj.value = res.data.data.data || []
object.sjNum = res.data.data.rows
} else if (whoShow1.value.itShowXiHaiAn) {
res.data.data.list.forEach((val) => {
val.id = val.serviceId // id
val.name = val.serviceName //
val.sjlCount = val.requestQuantity //
val.applyCount = val.requestCount //
val.deptName = val.departmentName //
val.createTime = val.createTime.split('.')[0]
val.createDate = val.createTime //
})
obj.value = res.data.data.list || []
object.sjNum = res.data.data.total
}
})
} else {
let type = paramsGetResources.type
if (type == '基础设施') {
jcList.value = []
selectInfrastructureList().then((res) => {
console.log('基础设施------res------>', res);
for (const key in res.data.data) {
if (whoShow1.value.itShowXiHaiAn) {
if (key === '视频资源') {
if (type == '基础设施') {
jcList.value = []
selectInfrastructureList().then((res) => {
console.log('基础设施------res------>', res)
for (const key in res.data.data) {
if (whoShow1.value.itShowXiHaiAn) {
if (key === '视频资源') {
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
} else {
jcList.value.push({
name: key,
num: res.data.data[key],
})
}
}
else {
jcList.value.push({
}
// jcList.value.push({
// name: '',
// num: 4,
// })
// 西-
if (whoShow1.value.itShowXiHaiAn) {
getSoldierData('无人机')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '无人机',
num: total,
})
})
.catch((err) => {
console.log('err--无人机---------->', err)
})
getSoldierData('单兵设备')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '单兵设备',
num: total,
})
})
.catch((err) => {
console.log('err--单兵设备---------->', err)
})
}
})
} else if (type == '组件服务') {
zjList.value = []
selectCollectComponentList().then((res) => {
console.log('组件服务----res-------->', res)
for (const key in res.data.data) {
console.log('key------------>', key)
zjList.value.push({
name: key,
num: res.data.data[key],
})
}
}
// jcList.value.push({
// name: '',
// num: 4,
// })
// 西-
if (whoShow1.value.itShowXiHaiAn) {
getSoldierData('无人机')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '无人机',
num: total,
})
console.log('zjList------------>', zjList)
})
} else if (type == '应用资源') {
yyList.value = []
selectCollectResourceList().then((res) => {
console.log('应用资源---res--------->', res)
for (const key in res.data.data) {
yyList.value.push({
name: key,
num: res.data.data[key],
})
.catch((err) => {
console.log('err--无人机---------->', err)
})
getSoldierData('单兵设备')
.then((res) => {
let { total = 0 } = res.data.data
jcList.value.push({
name: '单兵设备',
num: total,
})
})
.catch((err) => {
console.log('err--单兵设备---------->', err)
})
}
})
}
else if (type == '组件服务') {
zjList.value = []
selectCollectComponentList().then((res) => {
console.log('组件服务----res-------->', res);
for (const key in res.data.data) {
console.log('key------------>', key);
zjList.value.push({
name: key,
num: res.data.data[key],
})
}
console.log('zjList------------>', zjList);
})
}
else if (type == '应用资源') {
yyList.value = []
selectCollectResourceList().then((res) => {
console.log('应用资源---res--------->', res);
for (const key in res.data.data) {
yyList.value.push({
name: key,
num: res.data.data[key],
})
}
})
}
else {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('object个数======>', type)
obj.value = res.data.data.records
switch (type) {
case '组件服务':
assignmentMethod('zjNum', res)
break
case '应用资源':
assignmentMethod('yyNum', res)
break
case '基础设施':
assignmentMethod('jcNum', res)
break
case '知识库':
assignmentMethod('zsNum', res)
break
}
})
}
})
} else {
pageWithAttrs(paramsGetResources).then((res) => {
console.log('object个数======>', type)
obj.value = res.data.data.records
switch (type) {
case '组件服务':
assignmentMethod('zjNum', res)
break
case '应用资源':
assignmentMethod('yyNum', res)
break
case '基础设施':
assignmentMethod('jcNum', res)
break
case '知识库':
assignmentMethod('zsNum', res)
break
}
})
}
}
}
}
// todo
const getSoldierData = (name) => {
let _params = {
type: name,
page: 1,
limit: 10,
}
return new Promise((resolve, reject) => {
getSoldierList(_params)
.then((res) => {
resolve(res)
console.log('res---获取无人机、单兵设备--------->', res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
})
.catch((err) => {
reject(err)
})
})
}
const openHref = (item) => {
console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo')
browsingInsert({ resourceId: item.id }).then((res) => {
// console.log(res)
})
const arrList = ref([])
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
if (arrList.value.indexOf(item.id) === -1) {
arrList.value.push(item.id)
updateVisits({
id: item.id,
visits: item.visits || '0',
}).then(() => {
window.sessionStorage.setItem('visits', JSON.stringify(arrList.value))
// todo
const getSoldierData = (name) => {
let _params = {
type: name,
page: 1,
limit: 10,
}
return new Promise((resolve, reject) => {
getSoldierList(_params)
.then((res) => {
resolve(res)
console.log('res---获取无人机、单兵设备--------->', res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
})
.catch((err) => {
reject(err)
})
})
}
window.open(item.link)
}
const assignmentMethod = (type, res) => {
object[type] = res.data.data.total
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
function jumpPage(type) {
// store
store.commit('home/selectCardsData', {
selectCardsnum: type,
})
console.log(
'选中===================>',
store.getters['home/selectCardsnum']
)
// router.push({ path: '/DetailsPageconetent' })
router.push({
path: '/DetailsPageconetent',
query: {
select: type,
},
})
}
const selectOne = (id) => {
console.log('点击===============》', id)
router.push({
path: '/details',
query: {
id: id,
},
})
}
const selectOne1 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '组件服务',
},
})
}
const selectOne11 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '应用资源',
},
})
}
const selectOne2 = (name) => {
let names=''
if(name ==='云资源'){
names='政务云资源'
} else if(name ==='会客厅'){
names='城市云脑会客厅'
}else{
names=name
const openHref = (item) => {
console.log(item.id, 'wowowo')
console.log(item.visits, 'wowowo')
browsingInsert({ resourceId: item.id }).then((res) => {
// console.log(res)
})
const arrList = ref([])
arrList.value = JSON.parse(window.sessionStorage.getItem('visits'))
if (arrList.value.indexOf(item.id) === -1) {
arrList.value.push(item.id)
updateVisits({
id: item.id,
visits: item.visits || '0',
}).then(() => {
window.sessionStorage.setItem('visits', JSON.stringify(arrList.value))
})
}
window.open(item.link)
}
const assignmentMethod = (type, res) => {
object[type] = res.data.data.total
}
getAppResources('组件服务', zjList)
getAppResources('应用资源', yyList)
getAppResources('基础设施', jcList)
getAppResources('数据资源', sjList)
getAppResources('知识库', zsList)
function jumpPage(type) {
// store
store.commit('home/selectCardsData', {
selectCardsnum: type,
})
console.log(
'选中===================>',
store.getters['home/selectCardsnum']
)
// router.push({ path: '/DetailsPageconetent' })
router.push({
path: '/DetailsPageconetent',
query: {
select: type,
},
})
}
const selectOne = (id) => {
console.log('点击===============》', id)
router.push({
path: '/details',
query: {
id: id,
},
})
}
const selectOne1 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '组件服务',
},
})
}
const selectOne11 = (name) => {
router.push({
path: '/DetailsPageconetent',
query: {
type: name,
select: '应用资源',
},
})
}
const selectOne2 = (name) => {
let names = ''
if (name === '云资源') {
names = '政务云资源'
} else if (name === '会客厅') {
names = '城市云脑会客厅'
} else {
names = name
}
router.push({
path: '/DetailsPageconetent',
query: {
type: names,
select: '基础设施',
},
})
}
const selectOne3 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
query: {
str: name,
select: '数据资源',
},
})
}
router.push({
path: '/DetailsPageconetent',
query: {
type: names,
select: '基础设施',
},
})
}
const selectOne3 = (name) => {
console.log('点击===============》', name)
router.push({
path: '/DetailsPageconetent',
query: {
str: name,
select: '数据资源',
},
})
}
</script>
<style lang="less" scoped>
.capability-convergence {
height: 7.2rem;
background: url('~@/assets/newHome/Convergence-bg.png') no-repeat;
background-size: 100%;
display: flex;
justify-content: center;
.main {
width: 13rem;
margin-top: 1.8rem;
.capability-convergence {
height: 7.2rem;
background: url('~@/assets/newHome/Convergence-bg.png') no-repeat;
background-size: 100%;
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
.top {
font-size: 0.3rem;
color: #212121;
text-align: center;
.main {
width: 13rem;
margin-top: 1.8rem;
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
align-items: center;
.line {
width: 0.34rem;
height: 0.03rem;
background-color: #0058e1;
margin-top: 0.08rem;
.top {
font-size: 0.3rem;
color: #212121;
text-align: center;
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
align-items: center;
.line {
width: 0.34rem;
height: 0.03rem;
background-color: #0058e1;
margin-top: 0.08rem;
}
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 0.4rem;
.bottom {
display: flex;
justify-content: space-between;
margin-top: 0.4rem;
.item {
width: 2.44rem;
height: 3.91rem;
font-size: 0.16rem;
background-color: #fff;
border-radius: 0.02rem;
box-shadow: 0 0.05rem 0.2rem #ccc;
position: relative;
div:nth-of-type(1) {
height: 1.02rem;
line-height: 1.02rem;
font-size: 0.2rem;
color: #fff;
padding-left: 0.15rem;
background-size: 100%;
}
.jc {
background: url('~@/assets/newHome/Convergence-jc.png') no-repeat;
}
.sj {
background: url('~@/assets/newHome/Convergence-sj.png') no-repeat;
}
.zj {
background: url('~@/assets/newHome/Convergence-zj.png') no-repeat;
}
.yy {
background: url('~@/assets/newHome/Convergence-yy.png') no-repeat;
}
.zs {
background: url('~@/assets/newHome/Convergence-zs.png') no-repeat;
}
.name {
height: 0.47rem;
line-height: 0.47rem;
margin: 0 0.16rem;
border-bottom: 0.01rem solid #e9e9e9;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.name:hover {
color: #0058e1;
cursor: pointer;
}
.name-last {
border-bottom: none;
}
.btn {
cursor: pointer;
width: 0.8rem;
height: 0.24rem;
border: 0.01rem solid #0058e1;
font-size: 0.14rem;
color: #0058e1;
.item {
width: 2.44rem;
height: 3.91rem;
font-size: 0.16rem;
background-color: #fff;
border-radius: 0.02rem;
text-align: center;
margin-top: 0.1rem;
margin-left: 0.85rem;
position: absolute;
bottom: 0.2rem;
box-shadow: 0 0.05rem 0.2rem #ccc;
position: relative;
div:nth-of-type(1) {
height: 1.02rem;
line-height: 1.02rem;
font-size: 0.2rem;
color: #fff;
padding-left: 0.15rem;
background-size: 100%;
}
.jc {
background: url('~@/assets/newHome/Convergence-jc.png') no-repeat;
}
.sj {
background: url('~@/assets/newHome/Convergence-sj.png') no-repeat;
}
.zj {
background: url('~@/assets/newHome/Convergence-zj.png') no-repeat;
}
.yy {
background: url('~@/assets/newHome/Convergence-yy.png') no-repeat;
}
.zs {
background: url('~@/assets/newHome/Convergence-zs.png') no-repeat;
}
.name {
height: 0.47rem;
line-height: 0.47rem;
margin: 0 0.16rem;
border-bottom: 0.01rem solid #e9e9e9;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
word-break: break-all;
}
.name:hover {
color: #0058e1;
cursor: pointer;
}
.name-last {
border-bottom: none;
}
.btn {
cursor: pointer;
width: 0.8rem;
height: 0.24rem;
border: 0.01rem solid #0058e1;
font-size: 0.14rem;
color: #0058e1;
border-radius: 0.02rem;
text-align: center;
margin-top: 0.1rem;
margin-left: 0.85rem;
position: absolute;
bottom: 0.2rem;
}
.btn:hover {
background: rgba(0, 88, 225, 0.3);
color: #000;
}
}
.btn:hover {
background: rgba(0, 88, 225, 0.3);
color: #000;
.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:hover {
border-radius: 0.02rem;
border: 0.01rem solid #0058e1;
box-shadow: 0rem 0.08rem 0.2rem rgba(0, 88, 225, 0.3);
}
}
}
}
</style>

View File

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

View File

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

View File

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

View File

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