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

This commit is contained in:
gongjiale 2022-10-19 10:45:54 +08:00
commit 7a0d2ba101
31 changed files with 3303 additions and 2437 deletions

View File

@ -107,7 +107,6 @@ export default {
} else {
this.total = this.mixinViewModuleOptions.getDataListIsPage ? res.data.total : 0
}
console.log('数据列表', this.dataList, this.mixinViewModuleOptions.getDataListURL)
if (this.dataList[0].type === '组件服务') {
this.dataList.map(val => {

View File

@ -104,7 +104,7 @@ router.beforeEach((to, from, next) => {
Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
window.SITE_CONFIG.menuList = res.data
window.SITE_CONFIG.menuList = res.data.filter(item => item.site === 0)
fnAddDynamicMenuRoutes(window.SITE_CONFIG.menuList)
next({ ...to, replace: true })
}).catch(() => {

View File

@ -1,12 +1,12 @@
/*
* @Author: hisense.guoyue
* @Date: 2022-08-23 10:30:11
* @LastEditors: hisense.guoyue
* @LastEditTime: 2022-10-02 14:47:05
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-18 17:44:33
* @Description: 判断当前环境是西海岸还是青岛市局
*/
const returnLocationStr = () => {
return CONFIGITEM.version
return CONFIGITEM.version === 'xihaian' ? 'xihaian' : 'qingdao'
}
export default returnLocationStr

View File

@ -1,8 +1,8 @@
<!--
* @Author: kongjun qdkongjun@gmail.com
* @Date: 2022-06-20 09:29:59
* @LastEditors: kongjun qdkongjun@gmail.com
* @LastEditTime: 2022-06-22 10:04:56
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-18 15:46:51
* @FilePath: \back\src\views\main-sidebar.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@ -35,63 +35,72 @@
<script>
import http from '@/utils/request'
import SubMenu from "./main-sidebar-sub-menu";
import returnLocationStr from '@/utils/location';
import SubMenu from './main-sidebar-sub-menu'
import returnLocationStr from '@/utils/location'
import bus from '@/views/bus.js'
export default {
data() {
data () {
return {
numObject:{}
};
numObject: {}
}
},
components: {
SubMenu,
SubMenu
},
created() {
created () {
this.getNum()
//this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
// this.$store.state.sidebarMenuList = window.SITE_CONFIG.menuList
//
bus.$off('updateTaskNum')
bus.$on('updateTaskNum', () => {
this.getNum()
})
},
methods: {
getNum(){
getNum () {
http.get('/act/task/myToDoTaskNum').then(({ data: res }) => {
this.numObject=res.data
let menuList= window.SITE_CONFIG["menuList"];
for(var i=0;i<menuList.length;i++){
let menu=menuList[i];
if(menu.id=='1541261628388888578'){//
let daibanNum=0
for(let j=0;j<menu.children.length;j++){
let children=menu.children[j]
if(children.id=="1541261780432408577"){// v2
//西 v2 v3
children.total= returnLocationStr() == 'qingdao' ? Number(this.numObject.abilityprocess_v3) : Number(this.numObject.abilityprocess_v2)
daibanNum=Number(daibanNum)+Number(children.total)
} if(children.id=="1559376285703081986"){//
children.total=Number(this.numObject.meetingroom_book)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545292602084827138"){//
children.total=Number(this.numObject.resourcemountapply)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545312045695377410"){//
children.total=Number(this.numObject.abilitydemandapply)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545313018614521857"){//
children.total=Number(this.numObject.resourcundercarriageapply)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1545313754106699777"){//
children.total=Number(this.numObject.comment_review)
daibanNum=Number(daibanNum)+Number(children.total)
}if(children.id=="1554294862931562498"){//
children.total=0
daibanNum=Number(daibanNum)+Number(children.total)
this.numObject = res.data
const menuList = window.SITE_CONFIG.menuList
console.log('menuList====>', menuList)
console.log('this.numObject====>', this.numObject)
for (var i = 0; i < menuList.length; i++) {
const menu = menuList[i]
if (menu.id == '1541261628388888578') { //
let daibanNum = 0
for (let j = 0; j < menu.children.length; j++) {
const children = menu.children[j]
if (children.id == '1541261780432408577') { // v2
// 西 v2 v3
children.total = returnLocationStr() == 'qingdao' ? Number(this.numObject.abilityprocess_v3) : Number(this.numObject.abilityprocess_v2)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1559376285703081986') { //
children.total = Number(this.numObject.meetingroom_book)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1545292602084827138') { //
children.total = Number(this.numObject.resourcemountapply)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1545312045695377410') { //
children.total = Number(this.numObject.abilitydemandapply)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1545313018614521857') { //
children.total = Number(this.numObject.resourcundercarriageapply)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1545313754106699777') { //
children.total = Number(this.numObject.comment_review)
daibanNum = Number(daibanNum) + Number(children.total)
} if (children.id == '1554294862931562498') { //
children.total = 0
daibanNum = Number(daibanNum) + Number(children.total)
}
}
menu.total=daibanNum
menu.total = daibanNum
}
}
this.$store.state.sidebarMenuList=menuList
})
this.$store.state.sidebarMenuList = menuList
})
}
}};
}
}
</script>
<style scoped lang="scss">
.aui-sidebar {

View File

@ -116,7 +116,6 @@ import CommonQuestion from '../components/common-question.vue'
import InfrastructureModal from './components/infrastructure-modal.vue'
import Cookies from 'js-cookie'
import upload from '@/views/modules/components/upload'
const btnArray = ['基本信息', '场景痛点', '解决方案', '组合能力', '更多能力', '使用步骤']
// \
export const getJson = (type) => {
@ -163,7 +162,6 @@ export const modalTypeText = {
}
export const getFuseResourceList = (abilityListObj) => {
console.log('abilityListObjabilityListObj',abilityListObj);
const arr = []
let length = 0
for (const key in abilityListObj) {
@ -176,7 +174,7 @@ export const getFuseResourceList = (abilityListObj) => {
resourceId: v.id,
type: key,
sequence: index,
resourceName:v.resourceName,
resourceName:v.resourceName|| v.name ,
deptName:v.deptName,
})
})
@ -331,9 +329,10 @@ export default {
},
//
updateDataForm (data) {
console.log('datadatadata',data);
//console.log('datadatadata',data);
if (Object.keys(this.getListParams).includes(data.title)) {
this.abilityListObj[data.title] = data.list
console.log(' this.abilityListObj[data.title]3333', this.abilityListObj[data.title]);
} else {
// 使
this.operateFuseAttrList(data.title, data)
@ -363,6 +362,7 @@ export default {
//
dataFormSubmitHandle: debounce(
function () {
console.log('this.dataForm------表单提交------>111111', this.dataForm)
this.$refs.dataForm.validate((valid) => {
if (!valid) {
this.$message.error('请检查表单是否填写完整')

View File

@ -16,19 +16,20 @@
</el-transfer>
</div>
<div v-else-if="type==='数据资源'" class="dataTransfer">
<el-transfer v-model="selectedArray" filterable :filter-method="filterMethod" filter-placeholder="请输入名称"
<!-- <el-transfer v-model="selectedArray" filter-placeholder="请输入名称"
:titles="nameArray" :props="{
key: 'id',
label: 'name',
}" :data="transferData">
</el-transfer>
<!-- <el-input
<el-input
v-model="searchValue"
placeholder="请输入名称"
></el-input>
<el-button @click="rest" class="restClick">重置</el-button> -->
<data-resource-tranfer @updateData="updateResourceDataForm" :selected-data="selectedData" :type="type"></data-resource-tranfer>
</div>
<el-pagination
<!-- <el-pagination
v-if="type==='数据资源'"
:current-page="currentPage"
:page-size="15"
@ -36,7 +37,7 @@
:total="total"
@current-change="pageCurrentChangeHandle"
>
</el-pagination>
</el-pagination> -->
<template slot="footer">
<el-button @click="showModal = false">{{ $t("cancel") }}</el-button>
<el-button type="primary" @click="confirmSubmitHandle()">{{
@ -52,7 +53,7 @@
<script>
import InfrastructureModal from '../assignedScene/components/infrastructure-modal.vue'
import DisplayList from '../assignedScene/components/display-list.vue'
import dataResourceTranfer from './data-resource-tranfer.vue'
const sjzyArray = [
{
zyname: '城阳区图书馆总分馆、社区图书室明细信息',
@ -199,7 +200,9 @@ export default {
total: 0,
currentPage: 1,
newNum: 1,
searchValue: ''
searchValue: '',
selectedData:[],
newResourceData:[]
}
},
watch: {
@ -223,10 +226,12 @@ export default {
},
methods: {
async getDataInfo (dataForm) {
console.log('dataForm-----====',dataForm);
console.log('this.type',this.type);
await this.getData()
const arr = []
const attrValue = dataForm.fuseResourceList.filter(v => v.type == this.type);
console.log('attrValue22',attrValue);
this.selectedData = attrValue;
if (attrValue.length > 0) {
attrValue.map(val => {
if(val.type==="数据资源"){
@ -248,6 +253,7 @@ export default {
}
//
this.displayList = JSON.parse(JSON.stringify(arr));
this.displayList = Array.from(new Set(this.displayList))
//
this.selectedArray = arr.map(v => v.id)
this.$nextTick(() => {
@ -286,7 +292,7 @@ export default {
this.$http[this.getDataParams.methods](this.getDataParams.url,
this.getDataParams.postData
).then(res => {
console.log('res.data----获取列表-------->', res.data)
console.log('res.data----数据资源获取列表-------->', res.data)
this.total = Number(res.data.data.rows)
if (res.data.code !== 0) {
return this.$message.error(res.msg)
@ -302,37 +308,56 @@ export default {
              resourceName:v.zyname
})
})
this.allData = JSON.parse(JSON.stringify(this.transferData))
this.allData = JSON.parse(JSON.stringify(this.transferData));
//console.log('this.transferData======43434',this.transferData);
//console.log('res.data----retretryry-------->', this.transferData)
}).catch(err => {
this.$message.error('未搜索到相关数据资源')
})
}
},
//
updateResourceDataForm(data){
let obj = {};
data = data.list.reduce(function(item, next) {
obj[next.id] ? '' : obj[next.id] = true && item.push(next);
return item;
}, []);
console.log('变化后的数据222',data);
this.newResourceData = data;
},
filterMethod (query, item) {
console.log('1111111111111111111111111')
return item.name && item.name.indexOf(query) > -1
},
confirmSubmitHandle () {
console.log('tttttt',this.selectedArray)
if(this.type === "数据资源"){
//
let selectedObjectList = [];
this.selectedArray.forEach((item)=>{
let filterData = [];
filterData = this.allData.filter(v => v.id == item);
//console.log('filterDatafilterData',filterData);
selectedObjectList.push(filterData[0]);
});
// let selectedObjectList = [];
// this.selectedArray.forEach((item)=>{
// let filterData = [];
// filterData = this.allData.filter(v => v.id == item);
// //console.log('filterDatafilterData',filterData);
// selectedObjectList.push(filterData[0]);
// });
// this.$emit('update', {
// title: this.type,
// list: selectedObjectList
// })
if (this.newResourceData.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
this.$emit('update', {
title: this.type,
list: selectedObjectList
})
list: this.newResourceData
});
this.displayList = this.newResourceData;
this.showModal = false
}else{
this.$emit('update', {
title: this.type,
list: this.selectedArray
})
}
if (this.selectedArray.length > this.maxNum) {
return this.$message.error('最多选择十条数据!')
}
@ -343,7 +368,9 @@ export default {
this.displayList.push(v)
}
})
this.displayList = Array.from(new Set(this.displayList))
console.log(this.selectedArray, this.displayList, 'this.displayList')
}
},
handleChange(){
//console.log('222222',this.selectedArray);
@ -376,9 +403,10 @@ export default {
this.getData()
}
},
components: { InfrastructureModal, DisplayList },
components: { InfrastructureModal, DisplayList,dataResourceTranfer },
mounted () {
console.log(this.type, 'this.type')
}
}
</script>
@ -493,7 +521,7 @@ export default {
position: absolute;
font-size: 14px;
display: inline-block;
width: 80%;
width: 30%;
top: 52px;
left: 12px;
}

View File

@ -0,0 +1,415 @@
<template>
<div class="transfer">
<div class="leftTransfer">
<div class="leftTransfer_title">
<el-checkbox
:indeterminate="left.isIndeterminate"
v-model="left.checkAll"
@change="leftHandleCheckAllChange"
>{{ titles[0] }}</el-checkbox
>
<span
>{{ left.transferDataChecked.length }}/{{
left.transferData.length
}}</span
>
</div>
<el-input
@input="transferInputLeft"
class="transfer_input"
placeholder="请输入内容"
prefix-icon="el-icon-search"
v-model="left.inputValue"
>
</el-input>
<el-checkbox-group
class="transfer_group"
v-model="left.transferDataChecked"
@change="leftHandleCheckedCitiesChange"
>
<el-checkbox
v-for="item in left.transferData"
:label="item"
:key="item[defaultProps.id]"
>{{ item[defaultProps.label] }}</el-checkbox
>
</el-checkbox-group>
<el-pagination
:current-page="currentPage"
:page-size="15"
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
>
</el-pagination>
</div>
<div class="transferButton">
<el-button type="primary" @click="push">></el-button>
<el-button type="primary" @click="del">{{ "<" }}</el-button>
</div>
<div class="rightTransfer">
<div class="rightTransfer_title">
<el-checkbox
:indeterminate="right.isIndeterminate"
v-model="right.checkAll"
@change="rightHandleCheckAllChange"
>{{ titles[1] }}</el-checkbox
>
<span
>{{ right.transferDataChecked.length }}/{{
right.transferData.length
}}</span
>
</div>
<el-input
@input="transferInputRight"
class="transfer_input"
placeholder="请输入内容"
prefix-icon="el-icon-search"
v-model="right.inputValue"
>
</el-input>
<div style="margin: 5px 0"></div>
<el-checkbox-group
class="transfer_group"
v-model="right.transferDataChecked"
@change="rightHandleCheckedCitiesChange"
>
<el-checkbox
v-for="item in right.transferData"
:label="item"
:key="item[defaultProps.id]"
>{{ item[defaultProps.label] }}</el-checkbox
>
</el-checkbox-group>
</div>
</div>
</template>
<script>
//import { listUser } from "@/api/system/user";
export default {
name: "transferPage",
props: {
titles: {
type: Array,
default: () => ["待选列表", "已选列表"],
},
selectedData: {
type: Array,
default: () => []
},
type: {
type: String,
default: ''
},
},
data() {
return {
left: {
inputValue: "",
isIndeterminate: false, //
checkAll: false, //
transferData: [], //穿
transferDataAll: [], //穿
transferDataChecked: [], //穿
},
right: {
inputValue: "",
isIndeterminate: false, //
checkAll: false, //
transferData: [], //穿
transferDataAll: [], //穿
transferDataChecked: [], //穿
},
total: 0,
currentPage: 1,
queryParams: {
current: 1,
size: 10,
},
getDataParams:{
methods: "post",
url: "/resource/getDataResource",
postData: {
serviceName: "",
orderField: "fbrq",
orderType: "desc",
pageNum: 1,
pageSize: 15
}
},
defaultProps: {
label: "name",
id: "id",
},
};
},
created() {
this.initTransferData();
},
watch: {
// selectedData:{
// handler (newName, oldName) {
// console.log('',newName);
// this.right.transferData = newName
// }
// },
right: {
handler (newName, oldName) {
//console.log('nnnnnn',newName);
this.$emit('updateData', {
title: "选中的数据资源",
list: newName.transferData
})
},
immediate: false,
deep: true
}
},
methods: {
//
initTransferData() {
this.$http[this.getDataParams.methods](this.getDataParams.url,
this.getDataParams.postData
).then(response => {
console.log('数据资源response---->',response.data.data.data);
let responseDataList = [];
(response.data.data.data || []).map(v => {
responseDataList.push({
type: this.type,
id: v.guid,
name: v.zyname || '--',
deptName:v.TGBM,
resourceName:v.zyname
})
});
this.left.transferData = responseDataList;
this.left.transferData.map((item, index) => {
item.current = this.currentPage;
});
this.total = Number(response.data.data.rows);
this.left.transferDataAll = this.left.transferData;
// id
let checkedIdArr = this.right.transferData.map((item) => {
return item[this.defaultProps.id];
});
//
this.left.transferData = this.left.transferData.filter((item) => {
if (!checkedIdArr.includes(item[this.defaultProps.id])) {
return item;
}
});
});
let selectedDataRight = [];
this.selectedData = JSON.parse(JSON.stringify(this.selectedData));
(this.selectedData || []).map(v => {
selectedDataRight.push({
type: v.resource.type,
id: v.resource.resourceId,
name: v.resource.resourceName,
deptName:v.resource.deptName,
})
});
selectedDataRight.map(v => {
this.right.transferData.push(v);
});
let obj = {};
this.right.transferData = this.right.transferData.reduce(function(item, next) {
obj[next.id] ? '' : obj[next.id] = true && item.push(next);
return item;
}, []);
this.right.transferDataAll = this.right.transferData;
//console.log('this.selectedData',this.selectedData);
//console.log('left',this.left);
//console.log('rigth',this.right);
},
//
leftHandleCheckAllChange(val) {
this.left.transferDataChecked = val ? this.left.transferData : [];
this.left.isIndeterminate = false;
},
//
leftHandleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.left.checkAll = checkedCount === this.left.transferData.length;
this.left.isIndeterminate =
checkedCount > 0 && checkedCount < this.left.transferData.length;
},
//
rightHandleCheckAllChange(val) {
this.right.transferDataChecked = val ? this.right.transferData : [];
this.right.isIndeterminate = false;
},
//
rightHandleCheckedCitiesChange(value) {
let checkedCount = value.length;
this.right.checkAll = checkedCount === this.right.transferData.length;
this.right.isIndeterminate =
checkedCount > 0 && checkedCount < this.right.transferData.length;
},
// 穿
push() {
//
this.right.transferData = [
...this.right.transferData,
...this.left.transferDataChecked,
].sort((a, b) => {
return a[this.defaultProps.id] - b[this.defaultProps.id];
});
this.right.transferDataAll = this.right.transferData;
// id
let checkedIdArr = this.right.transferData.map((item) => {
return item[this.defaultProps.id];
});
//
this.left.transferData = this.left.transferData.filter((item) => {
if (!checkedIdArr.includes(item[this.defaultProps.id])) {
return item;
}
});
this.left.transferDataAll = this.left.transferData;
//
this.left.transferDataChecked = [];
this.left.isIndeterminate = false;
this.left.checkAll = false;
},
// 穿 current
del() {
//
let arr = this.right.transferDataChecked.filter((item) => {
if (this.queryParams.current == item.current) {
return item;
}
});
//
this.left.transferData = [...this.left.transferData, ...arr].sort(
(a, b) => {
return a[this.defaultProps.id] - b[this.defaultProps.id];
}
);
this.left.transferDataAll = this.left.transferData;
// id
let checkedIdArr = this.right.transferDataChecked.map((item) => {
return item[this.defaultProps.id];
});
//
this.right.transferData = this.right.transferData.filter((item) => {
if (!checkedIdArr.includes(item[this.defaultProps.id])) {
return item;
}
});
this.right.transferDataAll = this.right.transferData;
//
this.right.transferDataChecked = [];
this.right.isIndeterminate = false;
this.right.checkAll = false;
},
handleCurrentChange(val) {
//console.log('valval',val);
this.getDataParams.postData.pageNum = val;
this.initTransferData();
},
transferInputLeft() {
if (this.left.inputValue) {
this.left.transferData = this.left.transferData.filter(
(p) => p[this.defaultProps.label].indexOf(this.left.inputValue) !== -1
);
} else {
this.left.transferData = this.left.transferDataAll;
}
},
transferInputRight() {
if (this.right.inputValue) {
this.right.transferData = this.right.transferData.filter(
(p) =>
p[this.defaultProps.label].indexOf(this.right.inputValue) !== -1
);
} else {
this.right.transferData = this.right.transferDataAll;
}
},
},
};
</script>
<style lang="scss" scoped>
.transfer {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 auto;
.transferButton {
.el-button {
display: block;
margin: 10px 0;
}
}
.el-checkbox {
line-height: 30px;
}
.transfer_input {
margin: 10px 15px 0 15px;
width: 85%;
.el-input--medium .el-input__inner {
height: 36px;
line-height: 36px;
border-radius: 16px;
}
}
.leftTransfer,
.rightTransfer {
height: 510px;
border: 1px solid #e6ebf5;
border-radius: 4px;
overflow: hidden;
background: #ffffff;
display: inline-block;
vertical-align: middle;
width: 360px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
position: relative;
margin: 0 10px;
.el-checkbox {
display: block;
}
.el-input {
position: absolute;
font-size: 14px;
display: inline-block;
width: 70%;
top: 40px;
}
.pagination {
position: absolute;
bottom: -8px;
right: 0;
}
.leftTransfer_title,
.rightTransfer_title {
display: flex;
justify-content: space-between;
height: 40px;
line-height: 40px;
background: #f5f7fa;
margin: 0;
padding-left: 15px;
border-bottom: 1px solid #e6ebf5;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #000000;
padding-right: 15px;
align-items: center;
}
}
}
.transfer_group {
padding-left: 15px;
margin-top: 50px;
height: 390px;
overflow-y: auto;
}
</style>

View File

@ -58,6 +58,7 @@
<el-select
v-model="abilityDepartment"
placeholder="请选择部门"
filterable
clearable
>
<el-option label="全部" value=""></el-option>
@ -94,6 +95,11 @@
$t('reset')
}}</el-button>
</el-form-item>
<!-- 导出 -->
<a class='export' :href="exportExcel+exportExcelType+'?'+exportExcelCondition+'&token='+token">导出</a>
<!-- <el-form-item>
<el-button type="primary" @click="exportExcel()">导出</el-button>
</el-form-item> -->
</el-form>
<el-card shadow="never" class="aui-card--fill" v-if="homeIsShow">
<div class="mod-demand__bsdemand">
@ -213,6 +219,8 @@
<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"
>
@ -273,12 +281,13 @@
</template>
<script>
import Cookies from 'js-cookie'
import componentServices from './componentServices.vue'
import AbilityDetail from './components/abilityDetails'
import applicationResources from './applicationResources.vue'
import ComponentUsed from './componentUsed.vue'
import { mapState } from 'vuex'
import qs from 'qs'
// import { mapState } from 'vuex'
// const props = defineProps({
// processDefinitionName: { type: String, default: null },
// businessKey: { type: String, default: null },
@ -291,6 +300,11 @@ export default {
components: { componentServices, applicationResources, ComponentUsed, AbilityDetail },
data () {
return {
departmentSelects: [],
exportExcel: CONFIGITEM.configData[CONFIGITEM.version].apiURL + '/census/center/export',
exportExcelCondition: '',
exportExcelType: '',
token: Cookies.get('ucsToken'),
detailType: '',
detailParamss: {},
isBack: true,
@ -374,7 +388,7 @@ export default {
{ name: '基础设施', key: 3 },
{ name: '数据资源', key: 4 },
{ name: '知识库', key: 5 },
{ name: '会议室', value: 6}
{ name: '会议室', value: 6 }
],
tableData: [],
tableData2: [
@ -399,7 +413,7 @@ export default {
{ name: '通用开发组件', value: 3 },
{ name: '页面开发组件', value: 4 },
{ name: '应用资源', value: 5 },
{ name: '会议室', value: 6}
{ name: '会议室', value: 6 }
], //
detailFlag: false, //
startDate: '', //
@ -407,6 +421,13 @@ export default {
}
},
created () {
this.$http.get('/sys/dept/all').then(res => {
console.log('获取部门=========>', res)
this.departmentSelects = []
res.data.data.map(val => {
this.departmentSelects.push({ label: val.name, value: val.name })
})
})
//
// const d = new Date()
// let year1, month1, day1
@ -432,7 +453,7 @@ export default {
}
},
computed: {
...mapState(['departmentSelects'])
// ...mapState(['departmentSelects'])
},
methods: {
closeModal () {
@ -482,7 +503,7 @@ export default {
this.status = '审核中'
} else if (this.examineStatus == '1') {
this.status = '通过'
}else if (this.examineStatus == '2') {
} else if (this.examineStatus == '2') {
this.status = '不通过'
} else {
this.status = this.examineStatus
@ -530,6 +551,12 @@ export default {
}
this.tableData = res.data.data
this.total = res.data.data.total
this.exportExcelCondition = qs.stringify({
approveStatus: this.status,
deptId: this.abilityDepartment,
startDate: this.startDate,
endDate: this.endDate
})
})
},
// 使-使
@ -588,6 +615,12 @@ export default {
}
this.tableData = res.data.data
this.total = res.data.data.total
this.exportExcelCondition = qs.stringify({
approveStatus: this.status,
deptId: this.abilityDepartment,
startDate: this.startDate,
endDate: this.endDate
})
})
},
//
@ -662,6 +695,12 @@ export default {
console.log('111111', this.tableData, res.data.data)
this.tableData = res.data.data
this.total = res.data.data.total
this.exportExcelCondition = qs.stringify({
approveStatus: this.status,
deptId: this.abilityDepartment,
startDate: this.startDate,
endDate: this.endDate
})
})
},
// 使
@ -693,6 +732,12 @@ export default {
.then((res) => {
this.tableData = res.data.data
this.total = res.data.data.total
this.exportExcelCondition = qs.stringify({
approveStatus: this.status,
deptId: this.abilityDepartment,
startDate: this.startDate,
endDate: this.endDate
})
})
},
getReleaseTree (page) {
@ -799,6 +844,7 @@ export default {
if (!this.detailFlag) {
this.detailFlag = !this.detailFlag
}
this.exportExcelType = 'SelectDeptDetailTypeCountList'
this.getFirstTree()
} else if (this.choseId === 1) {
// this.getReleaseTree()
@ -808,6 +854,7 @@ export default {
if (!this.detailFlag) {
this.detailFlag = !this.detailFlag
}
this.exportExcelType = 'SelectApplyDeptDetailTypeCountList'
this.getSecondTree()
} else {
// this.getUsedTree()
@ -815,6 +862,7 @@ export default {
} else if (index === 3) {
this.detailFlag = false
if (this.choseId === 0) {
this.exportExcelType = 'SelectCensusResourceTable'
this.getOneDetail()
} else {
// this.getUsedTree()
@ -822,6 +870,7 @@ export default {
} else if (index === 4) {
this.detailFlag = false
if (this.choseId === 0) {
this.exportExcelType = 'SelectCensusApplyTable'
this.getTwoDetail()
} else {
// this.getUsedTree()
@ -911,6 +960,13 @@ export default {
this.examineStatus = ''
this.abilityDepartment = ''
this.abilityType = ''
this.approveStatus = ''
this.exportExcelCondition = qs.stringify({
approveStatus: this.status,
deptId: this.abilityDepartment,
startDate: this.startDate,
endDate: this.endDate
})
if (this.departmentId === 1) {
// if (this.detailFlag) {
// this.handleChose(3)
@ -1100,4 +1156,31 @@ input::placeholder {
text-overflow: ellipsis;
word-break: break-all;
}
.export {
display: inline-block;
width: 70px;
height: 40px;
line-height: 40px;
text-align: center;
border-radius: 5px;
background: #fff;
border: 1px solid #dcdfe6;
color: #000;
}
.export:hover {
border-color: #c5ddfd;
background-color: #ecf4fe;
color: #0058e1;
text-decoration: none;
}
.export:active {
border-color: #c5ddfd;
background-color: #ecf4fe;
color: #0058e1;
text-decoration: none;
}
.export:visited {
color: #fff;
text-decoration: none;
}
</style>

View File

@ -81,7 +81,7 @@ export default {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
this.$refs.dataForm.resetFields()
this.iconList = getIconList()
this.dataForm.parentName = this.$t('menu.parentNameDefault')
this.getMenuList()
@ -89,11 +89,12 @@ export default {
},
//
getMenuList () {
console.log('获取菜单位置1')
return this.$http.get('/sys/menu/list?type=0').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.menuList = res.data
this.menuList = res.data.filter(item => item.site === 0)
}).catch(() => {})
},
// ,
@ -114,11 +115,11 @@ export default {
},
//
dataFormSubmitHandle: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
this.$refs.dataForm.validate((valid) => {
if (!valid) {
return false
}
this.$http['post']('/devtools/menu', this.dataForm).then(({ data: res }) => {
this.$http.post('/devtools/menu', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
@ -133,7 +134,7 @@ export default {
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}, 1000, { leading: true, trailing: false })
}
}
</script>

View File

@ -38,6 +38,9 @@
</template>
</el-table-column>
<el-table-column prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="auditTime" label="审核时间" header-align="center" align="center"></el-table-column>
<el-table-column label="应用领域" header-align="center" align="center">
<template slot-scope="scope" v-if="scope.row.applicationArea">
<span class="area-text" v-for="(x,i) in JSON.parse(scope.row.applicationArea)"

View File

@ -47,6 +47,13 @@
}}</span>
</template>
</el-table-column>
<el-table-column label="申请人所属部门" header-align="center" align="center">
<template slot-scope="scope">
<span>{{
(scope.row.params && scope.row.params.tAbilityApplicationDTOList[0].unit)
}}</span>
</template>
</el-table-column>
<el-table-column
:label="$t('process.system')"
header-align="center"
@ -161,7 +168,8 @@ export default {
created () {
bus.$off('competencyApplicationInit')
bus.$on('competencyApplicationInit', () => {
this.getDataList()
this.getDataList();
bus.$emit('updateTaskNum')
})
}
}

View File

@ -12,15 +12,23 @@
<el-table v-loading="dataListLoading" :data="dataList" border style="width: 100%">
<el-table-column prop="title" label="申请标题" header-align="center" align="center"></el-table-column>
<el-table-column prop="name" label="申请人信息" header-align="center" align="center"></el-table-column>
<el-table-column label="设备名称" header-align="center" align="center">
<template slot-scope="scope">
<span class="demand-text">{{
(scope.row && scope.row.tbDeviceDTO && scope.row.tbDeviceDTO.name)
}}</span>
</template>
</el-table-column>
<el-table-column prop="state" label="审批状态" header-align="center" align="center">
<template slot-scope="scope">
<span>{{wrjStateObj[scope.row.state]}}</span>
</template>
</el-table-column>
<el-table-column prop="phone" label="电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="createDate" label="创建时间" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="phone" label="电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="dept" label="单位" header-align="center" align="center"></el-table-column>
<el-table-column prop="applicationSystem" label="应用系统" header-align="center" align="center">
</el-table-column>
</el-table-column> -->
<el-table-column label="应用领域" header-align="center" align="center">
<template slot-scope="scope" v-if="scope.row.applicationArea">
<span class="area-text" v-for="(x,i) in JSON.parse(scope.row.applicationArea)"

View File

@ -13,40 +13,32 @@
<h3>申请人信息</h3>
<div class="big-BOX">
<p>
<span class="text"
>申请人<span> {{ dataForm.content.user || '--' }}</span></span
>
<span class="text"
>电话<span>{{ dataForm.content.phone || '--' }}</span></span
>
<span class="text"
>单位<span>{{ dataForm.content.unit || '--' }}</span></span
>
<span class="text">申请人<span> {{ dataForm.content.user || '--' }}</span></span>
<span class="text">电话<span>{{ dataForm.content.phone || '--' }}</span></span>
<span class="text">单位<span>{{ dataForm.content.unit || '--' }}</span></span>
</p>
<p>
<span class="text">
能力申请标题<span>
{{ dataForm.content.title || '--' }}</span
></span
>
<span class="text" v-if="dataForm.content.applicationSystem"
>应用系统<span>{{
{{ dataForm.content.title || '--' }}</span></span>
<span class="text" v-if="dataForm.content.applicationSystem">应用系统<span>{{
dataForm.content.applicationSystem || '--'
}}</span></span
>
<span class="text" ></span>
}}</span></span>
<span class="text"></span>
</p>
<p>
<span v-if="dataForm.content.applicationSceneStr"
>应用场景<span>
{{ dataForm.content.applicationSceneStr || '--' }}</span
></span>
<span v-if="dataForm.content.applicationSceneStr">应用场景<span>
{{ dataForm.content.applicationSceneStr || '--' }}</span></span>
</p>
<p>
<span>
需求依据<span>
{{ dataForm.content.applicationBackground || '--' }}</span
></span>
{{ dataForm.content.applicationBackground || '--' }}</span></span>
</p>
<p>
<div>
<el-button type="primary" v-if="dataForm.content.attachment" size="small" @click="download(dataForm.content)">附件下载</el-button>
</div>
</p>
<!-- <p>
<span>
@ -102,9 +94,7 @@
<el-radio-button label="退回" class="redAll" @click="showDialog('退回')">退回</el-radio-button>
</el-radio-group> -->
<el-button type="primary" @click="showDialog('同意')">同意</el-button>
<el-button type="danger" plain @click="showDialog('驳回')"
>驳回</el-button
>
<el-button type="danger" plain @click="showDialog('驳回')">驳回</el-button>
<!-- <el-input v-if="agreeOrList ==='同意' " v-model="inputAgree" placeholder="请输入同意意见"></el-input>
<el-input v-if="agreeOrList ==='退回'" v-model="inputNo" placeholder="请输入退回意见"></el-input>
<el-button class="inputBule" @click="agreeOrNot">提交</el-button> -->
@ -113,21 +103,12 @@
<!-- 流程详情 -->
<ren-process-detail></ren-process-detail>
<el-dialog
title="审批意见"
:close-on-click-modal="false"
:visible.sync="dialogVisible"
width="30%"
:before-close="handleClose"
>
<el-dialog title="审批意见" :close-on-click-modal="false" :visible.sync="dialogVisible" width="30%"
:before-close="handleClose">
<el-input v-model="input" placeholder="请输入审批意见"></el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose2"> </el-button>
<el-button
type="primary"
@click.native="agreeOrNot($store.state.contentTabsActiveName)"
> </el-button
>
<el-button type="primary" @click.native="agreeOrNot($store.state.contentTabsActiveName)"> </el-button>
</span>
</el-dialog>
</el-card>
@ -144,7 +125,7 @@ import bus from '@/views/bus.js'
export default {
//
mixins: [processModule],
data () {
data() {
return {
dialogVisible: false,
dialogType: '',
@ -173,7 +154,7 @@ export default {
agreeOrList: '同意'
}
},
created () {
created() {
// KEY
console.log('params=================>', this.$route, this.$route.params)
this.dataForm.taskId = this.$route.params.taskId
@ -207,7 +188,7 @@ export default {
RenProcessDetail
},
methods: {
init () {
init() {
// this.visible = true
this.$nextTick(() => {
// this.$refs.dataForm.resetFields()
@ -219,23 +200,23 @@ export default {
}
})
},
showDialog (title) {
showDialog(title) {
this.dialogVisible = true
this.dialogType = title
},
handleClose (done) {
handleClose(done) {
this.$confirm('确认关闭?')
.then((_) => {
this.input = ''
done()
})
.catch((_) => {})
.catch((_) => { })
},
handleClose2 () {
handleClose2() {
this.dialogVisible = false
this.input = ''
},
downloadFile2 (url) {
downloadFile2(url) {
console.log(window.SITE_CONFIG.previewUrl)
window.open(
window.SITE_CONFIG.previewUrl +
@ -244,7 +225,7 @@ export default {
)
},
//
getInfo () {
getInfo() {
let params = ''
if (this.dataForm.taskId) {
params = `taskId=${this.dataForm.taskId}`
@ -307,7 +288,7 @@ export default {
this.dataList.push(obj)
}
})
.catch(() => {})
.catch(() => { })
} else {
params = `instanceId=${this.dataForm.instanceId}`
this.$http
@ -359,11 +340,11 @@ export default {
this.dataList.push(obj)
}
})
.catch(() => {})
.catch(() => { })
}
},
//
applyData () {
applyData() {
this.$http
.get(`/resource/select/${this.dataForm.instanceId}`)
.then(({ data: res }) => {
@ -375,7 +356,7 @@ export default {
// this.dataForm.content = res.data
// console.log(this.dataForm, 'ela')
})
.catch(() => {})
.catch(() => { })
},
// 退
agreeOrNot: debounce(
@ -412,7 +393,7 @@ export default {
}
})
})
.catch(() => {})
.catch(() => { })
this.tabRemoveHandle(data)
} else {
this.$message.error('请输入审批意见!')
@ -455,7 +436,7 @@ export default {
1000,
{ leading: true, trailing: false }
),
tabRemoveHandle (tabName) {
tabRemoveHandle(tabName) {
console.log(tabName, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
if (tabName === 'home') {
return false
@ -482,13 +463,19 @@ export default {
}
},
//
startProcessErrorCallback (data) {
startProcessErrorCallback(data) {
console.log(data)
},
//
taskHandleErrorCallback (data) {}
taskHandleErrorCallback(data) { },
download(data) {
const alink = document.createElement('a')
alink.download = '附件' // ,,IE10
alink.href = data.attachment // url
alink.click() //
},
mounted () {
},
mounted() {
// this.applyData()
}
}
@ -497,38 +484,47 @@ export default {
::v-deep .big-BOX {
background: rgba(244, 245, 248, 0.8);
padding: 24px;
h3 {
font-size: 16px;
color: #212121;
}
p {
width: 100%;
display: flex;
justify-content: space-between;
color: #212121;
font-size: 14px;
span {
display: inline-block;
margin-left: 8px;
line-height: 32px;
span {
font-weight: bold;
}
}
.text {
width: 500px;
}
}
.lastP {
margin-top: 16px;
width: 100%;
span {
display: flex;
span {
padding: 0 12px;
height: 32px;
background: rgba(232, 234, 239, 1);
border-radius: 2px;
button {
background: unset;
border: 0;
@ -539,6 +535,7 @@ export default {
}
}
}
::v-deep .AbilityApply {
margin-top: 32px;
@ -548,27 +545,33 @@ export default {
border-bottom: 1px solid #dddee1;
padding-bottom: 10px;
}
ul {
padding-left: 0px;
li {
list-style: none;
padding: 30px 0;
border-bottom: 1px solid #dddee1;
display: flex;
img {
width: 100px;
height: 100px;
}
div {
margin-left: 16px;
display: flex;
flex-direction: column;
justify-content: center;
h2 {
margin-bottom: 20px;
font-size: 20px;
color: #000;
display: flex;
span {
display: block;
font-size: 14px;
@ -581,22 +584,26 @@ export default {
border-radius: 4px;
}
}
p {
margin-bottom: 0;
}
}
}
.clearfix:after {
display: block;
content: "";
clear: both;
}
.title {
color: #0558e1;
font-size: 18px;
padding-bottom: 0;
border-bottom: 0;
}
.title:before {
content: "";
width: 6px;
@ -610,17 +617,21 @@ export default {
}
}
}
::v-deep .agreeOr > div {
::v-deep .agreeOr>div {
display: flex;
align-items: center;
.el-input {
margin-right: 10px;
margin-left: 32px;
}
}
::v-deep .agreeOr > div:last-of-type {
::v-deep .agreeOr>div:last-of-type {
margin-top: 15px;
}
.blueAll {
::v-deep .el-radio-button__inner {
width: 80px;
@ -632,12 +643,14 @@ export default {
color: #0558e1;
border: 1px solid #0558e1;
}
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
box-shadow: unset !important;
background: #0558e1;
color: #ffffff;
}
}
.inputBule {
width: 55px;
height: 32px;
@ -648,8 +661,10 @@ export default {
color: #ffffff;
border: 1px solid #0558e1;
}
.redAll {
margin-left: 10px;
::v-deep .el-radio-button__inner {
width: 80px;
height: 32px;
@ -661,12 +676,14 @@ export default {
color: #e83a48;
margin-left: 10px;
}
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
::v-deep .el-radio-button__orig-radio:checked+.el-radio-button__inner {
box-shadow: unset !important;
color: #ffffff;
background: #e83a48;
}
}
.blueInput {
width: 55px;
}

View File

@ -123,11 +123,12 @@ export default {
},
//
getMenuList () {
console.log('获取菜单位置2')
return this.$http.get('/sys/menu/list?type=0').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.menuList = res.data
this.menuList = res.data.filter(item => item.site === 0)
}).catch(() => {})
},
//

View File

@ -1,3 +1,10 @@
<!--
* @Author: hisense.wuhongjian
* @Date: 2022-06-14 09:30:23
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-17 14:54:26
* @Description: 告诉大家这是什么
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__menu">

View File

@ -8,8 +8,8 @@
var _global = {}
var CONFIGITEM = {
// version: 'qingdao', //
// version: 'xihaian', // 西
version: 'qingdao', //
version: 'xihaian', // 西
// version: 'qingdao', //
// version: 'zhanTingDev', // dev (2022-09-13:)
// version: 'qingdao', //
//version: 'frp', // 穿
@ -28,7 +28,8 @@ var CONFIGITEM = {
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',
// 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',
},
@ -62,8 +63,9 @@ var CONFIGITEM = {
},
//
camreaInfo: {
// cameraUrl: '10.134.135.92:9537', //
cameraUrl: '10.134.135.9:9537', //
// cameraUrl: '10.134.135.92:9537', // 西-
// cameraUrl: '10.134.135.9:9537', // 西-
cameraUrl: '192.168.124.236:9537', // vpn
},
backUrl: 'http://10.134.135.9:9797',
previewUrl: 'http://10.134.135.9:9796/',

View File

@ -15,6 +15,7 @@ const state = () => ({
accessToken: getAccessToken(),
username: '',
realName: '',
deptName: '',
userId: '',
avatar: '',
role: 0, //
@ -26,6 +27,7 @@ const getters = {
avatar: (state) => state.avatar,
role: (state) => state.role,
userId: (state) => state.userId,
deptName: (state) => state.deptName,
}
const mutations = {
/**
@ -64,6 +66,10 @@ const mutations = {
setUserId(state, id) {
state.userId = id
},
//
setDeptName(state, name) {
state.deptName = name
},
/**
* @author chuzhixin 1204505056@qq.com
* @description 设置头像
@ -136,6 +142,7 @@ const actions = {
commit('setRealname', res.data.data.realName)
commit('setRole', res.data.data.roleIdList.length)
commit('setUserId', res.data.data.id)
commit('setDeptName', res.data.data.deptName)
// TODO
// let { username, avatar, roles, ability } = data
// if (username && roles && Array.isArray(roles)) {

View File

@ -1,8 +1,8 @@
/*
* @Author: hisense.wuhongjian
* @Date: 2022-04-01 17:23:11
* @LastEditors: hisense.wuhongjian
* @LastEditTime: 2022-10-11 13:59:18
* @LastEditors: Light
* @LastEditTime: 2022-10-17 09:25:32
* @Description: 告诉大家这是什么
*/
/**
@ -26,7 +26,6 @@ router.beforeEach(async (to, from, next) => {
// if (SSOTOKEN) {
// setAccessToken(SSOTOKEN)
// }
console.log('验证白名单', routesWhiteList)
const token = getAccessToken()
console.log('token', token)
let hasToken = token
@ -44,6 +43,7 @@ router.beforeEach(async (to, from, next) => {
accessRoutes.forEach((item) => {
router.addRoute(item)
})
console.log('验证白名单', routesWhiteList)
if (routesWhiteList.indexOf(to.path) !== -1) {
debugger
next()

View File

@ -318,7 +318,7 @@
//
const funnelPlot = (dataList) => {
//
let arrCopy = ['0-5', '5-10', '10-15', '15-20', '20以上']
let arrCopy = ['1-5', '5-10', '10-15', '15-20', '20以上']
//
dataList.sort((a, b) => {
return Number(a.value) - Number(b.value)

View File

@ -2,7 +2,11 @@
<div class="ability-to-apply-for" :class="{ all: falg }">
<div class="title">
<span>申请能力</span>
<div class="btnBox" v-show="!falg">
<div
class="btnBox"
v-show="!falg"
v-if="dataForm[0].arr.length > 1 || dataForm.length > 1"
>
<svg
t="1659419933164"
class="btn"
@ -97,7 +101,10 @@
{{
val.description ||
((val.note1 || '') &&
(JSON.parse(val.note1) && JSON.parse(val.note1)[0] && JSON.parse(val.note1)[0].channelName || '--') +
((JSON.parse(val.note1) &&
JSON.parse(val.note1)[0] &&
JSON.parse(val.note1)[0].channelName) ||
'--') +
'等' +
JSON.parse(val.note1).length +
'个摄像头') ||
@ -105,7 +112,11 @@
}}
</div>
</div>
<div class="remove" v-if="item.arr.length>1" @click="removeFunction(val)"></div>
<div
class="remove"
v-if="item.arr.length > 1"
@click="removeFunction(val)"
></div>
</div>
</template>
</div>
@ -115,11 +126,17 @@
title="已申请摄像头列表"
@ok="videoVisible = false"
>
<a-select placeholder="请选择归属部门" v-model:value="deptName" :getPopupContainer="(triggerNode) => triggerNode.parentNode" show-search option-filter-prop="children" :filterOption="filterOption" @change="deptIdChangeFunction">
<a-select-option v-for="(item, index) in deptNameAll" :key="`${index}-${item}`" :value="item.name">
{{ item.name }}
</a-select-option>
</a-select>
<a-table
:columns="columns"
:data-source="xVideoList"
bordered
:pagination="{ defaultPageSize: 6 }"
style="margin-top:10px"
>
<template #bodyCell="{ column, text }">
<!-- <template>
@ -135,6 +152,7 @@
import { message } from 'ant-design-vue'
import { ref, defineProps } from 'vue'
import mybus from '@/myplugins/mybus'
import { getDeptAll } from '@/api/user'
const router = useRouter()
const props = defineProps({
dataList: { type: Array, default: null },
@ -143,12 +161,19 @@
let dataForm = ref([])
const videoVisible = ref(false)
const xVideoList = ref([])
const xVideoListAll = ref([])
const deptNameAll = ref([]) //
const deptFlage = ref(true) //
const deptName = ref(null)
const columns = ref([
{
title: '摄像头名称',
dataIndex: 'name',
},
{
title: '归属部门',
dataIndex: 'managementUnitName',
}
])
// eslint-disable-next-line vue/no-setup-props-destructure
dataForm.value = props.dataList
@ -178,11 +203,16 @@
//
const showItem = (id, type, delFlag, note1) => {
if (type == '基础设施') {
let arr = JSON.parse(note1)
let arr = JSON.parse(note1);
xVideoList.value = []
arr.map((val) => {
xVideoList.value.push({ name: val.channelName || '', key: val.channelId })
xVideoList.value.push({
name: val.channelName || '',
key: val.channelId,
managementUnitName:val.managementUnitName || '',
})
})
xVideoListAll.value = xVideoList.value;
videoVisible.value = true
} else {
if (delFlag == 0) {
@ -197,6 +227,27 @@
}
}
}
//
const deptIdChangeFunction = (name) => {
//console.log('nnnndddd',name);
//console.log('xVideoList',xVideoList);
//namexVideoList
xVideoList.value = xVideoListAll.value.filter((item) => {
if (name && item.managementUnitName.indexOf(name) < 0) return false
return true
});
}
//
const getDeptAllData = () =>{
getDeptAll().then((res) => {
deptNameAll.value = res.data.data
})
}
getDeptAllData();
//select
const filterOption = (input, option) => {
return option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
</script>
<style scoped lang="less">
@ -337,4 +388,11 @@
display: flex;
align-items: center;
}
::v-deep .ant-table-thead > tr > th {
//padding-left: px;
font-size: 18px;
font-weight: bold;
color:#000000 ;
//background: # !important;
}
</style>

View File

@ -8,36 +8,93 @@
</div>
<div class="form-container">
<div v-if="applySuccess">
<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 flex-row-start">
<a-form-item label="申请标题" name="title" :rules="[{ required: true, message: '请输入申请标题' }]">
<a-input placeholder="请输入能力申请标题" v-model:value="formName.title" />
<a-form-item
label="申请标题"
name="title"
:rules="[{ required: true, message: '请输入申请标题' }]"
>
<a-input
placeholder="请输入能力申请标题"
v-model:value="formName.title"
/>
</a-form-item>
<!-- 西海岸-摄像头-增加过期时间 -->
<a-form-item v-if="isCamera && isXiHaiAn" label="过期时间" name="expireDate"
:rules="[{ required: true, message: '请选择过期时间' }]" style="margin-left: 22px">
<a-select v-model:value="formName.expireDate" placeholder="请选择过期时间" style="width: 200px"
:options="expireDateOptions"></a-select>
<a-form-item
v-if="isCamera && isXiHaiAn"
label="过期时间"
name="expireDate"
:rules="[{ required: true, message: '请选择过期时间' }]"
style="margin-left: 22px"
>
<a-select
v-model:value="formName.expireDate"
placeholder="请选择过期时间"
style="width: 200px"
:options="expireDateOptions"
></a-select>
</a-form-item>
</div>
<div class="base-info">
<a-form-item label="申请人信息" name="user" :rules="[{ required: true, message: '请输入申请人' }]">
<a-input placeholder="请输入申请人" v-model:value="formName.user" disabled />
<a-form-item
label="申请人信息"
name="user"
:rules="[{ required: true, message: '请输入申请人' }]"
>
<a-input
placeholder="请输入申请人"
v-model:value="formName.user"
disabled
/>
</a-form-item>
<a-form-item style="margin: 0 22px" label="电话" name="phone" :rules="[
<a-form-item
style="margin: 0 22px"
label="电话"
name="phone"
:rules="[
{
required: true,
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的电话号码',
},
]">
<a-input placeholder="请输入申请人电话" v-model:value="formName.phone" />
]"
>
<a-input
placeholder="请输入申请人电话"
v-model:value="formName.phone"
/>
</a-form-item>
<a-form-item label="单位" name="unit" :rules="[{ required: true, message: '请输入单位' }]">
<a-input placeholder="请输入单位" v-model:value="formName.unit" disabled v-if="deptFlage" />
<a-select v-else placeholder="请选择归属部门" v-model:value="formName.unit" @change="deptIdChangeFunction">
<a-select-option v-for="(item, index) in deptNameAll" :key="`${index}-${item}`" :value="item.name">
<a-form-item
label="单位"
name="unit"
:rules="[{ required: true, message: '请输入单位' }]"
>
<a-input
placeholder="请输入单位"
v-model:value="formName.unit"
disabled
v-if="deptFlage"
/>
<a-select
v-else
placeholder="请选择归属部门"
v-model:value="formName.unit"
@change="deptIdChangeFunction"
>
<a-select-option
v-for="(item, index) in deptNameAll"
:key="`${index}-${item}`"
:value="item.name"
>
{{ item.name }}
</a-select-option>
</a-select>
@ -45,29 +102,63 @@
</div>
<div class="base-info" v-if="flag">
<div style="margin-bottom: 24px">
<a-form-item style="margin-bottom: 0" label="应用系统" name="applicationSystem"
:rules="[{ required: true, message: '请选择应用系统' }]">
<a-select v-model:value="formName.applicationSystem" show-search placeholder="请选择应用系统"
style="width: 230px" :options="systemOptions" @focus="handleFocus" @blur="handleBlur"
@change="systemHandleChange" @search="systemHandleSearch"></a-select>
<a-form-item
style="margin-bottom: 0"
label="应用系统"
name="applicationSystem"
:rules="[{ required: true, message: '请选择应用系统' }]"
>
<a-select
v-model:value="formName.applicationSystem"
show-search
placeholder="请选择应用系统"
style="width: 230px"
:options="systemOptions"
@focus="handleFocus"
@blur="handleBlur"
@change="systemHandleChange"
@search="systemHandleSearch"
></a-select>
</a-form-item>
<span style="font-size: 12px; color: #666; padding-left: 106px">
<span
style="font-size: 12px; color: #666; padding-left: 106px"
>
如选项没有系统请新增
</span>
</div>
<a-form-item class="applicationScene" label="应用领域" name="applicationScene"
:rules="[{ required: true, message: '请选择应用领域' }]" style="width: 6.93rem">
<a-select v-model:value="formName.applicationScene" :options="applicationSceneOpthion" mode="tags"
:size="size" placeholder="请选择应用领域" :filterOption="false" :searchValue="false"
style="width: 5.87rem"></a-select>
<a-form-item
class="applicationScene"
label="应用领域"
name="applicationScene"
:rules="[{ required: true, message: '请选择应用领域' }]"
style="width: 6.93rem"
>
<a-select
v-model:value="formName.applicationScene"
:options="applicationSceneOpthion"
mode="tags"
:size="size"
placeholder="请选择应用领域"
:filterOption="false"
:searchValue="false"
style="width: 5.87rem"
></a-select>
</a-form-item>
</div>
<div>
<a-form-item label="需求依据" name="applicationBackground" :rules="[
<a-form-item
label="需求依据"
name="applicationBackground"
:rules="[
{ required: true, message: '请输入需求依据' },
{ min: 50, message: '需求依据最少为50个字' },
]">
<a-textarea placeholder="请输入需求依据" v-model:value="formName.applicationBackground" :rows="4" />
]"
>
<a-textarea
placeholder="请输入需求依据"
v-model:value="formName.applicationBackground"
:rows="4"
/>
</a-form-item>
</div>
@ -75,9 +166,20 @@
<div v-if="iskfq && isXiHaiAn">
<a-row style="margin-top: 0.4rem">
<a-col :span="24">
<a-form-item name="attachment" label="附件上传" class="introduction">
<a-upload :max-count="1" accept=".doc,.docx,pdf" v-model:file-list="fileList"
:action="`${apiURL}/upload`" @remove="handleRemove" @change="roomUpload">
<a-form-item
name="attachment"
label="附件上传"
class="introduction"
:rules="[{ required: true, message: '请上传附件' }]"
>
<a-upload
:max-count="1"
accept=".doc,.docx,pdf"
v-model:file-list="fileList"
:action="`${apiURL}/upload`"
@remove="handleRemove"
@change="roomUpload"
>
<a-button>
<upload-outlined>选择上传附件</upload-outlined>
</a-button>
@ -90,16 +192,31 @@
</a-row>
<a-row>
<a-col :span="24" style="margin-left: 106px">
<a href="/static/download/感知资源申请表.doc" download="感知资源申请表">感知资源申请表模板下载</a>
<a
href="/static/download/感知资源申请表.doc"
download="感知资源申请表"
>
感知资源申请表模板下载
</a>
</a-col>
</a-row>
</div>
<div class="bottom-btn">
<a-button class="cancel-apply" type="primary" html-type="cancle" @click="resetFields()">
<a-button
class="cancel-apply"
type="primary"
html-type="cancle"
@click="resetFields()"
>
退出申请
</a-button>
<a-button class="confirm-apply" type="primary" html-type="submit" @click="processStartHandle()">
<a-button
class="confirm-apply"
type="primary"
html-type="submit"
@click="processStartHandle()"
>
提交申请
</a-button>
</div>
@ -117,14 +234,14 @@
</div>
</template>
<script>
import AbilityToApplyFor from './AbilityToApplyFor.vue'
import HomeHeader from '@/views/home/components/header'
import { reactive, ref, watch, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import qs from 'qs'
import { Upload } from 'ant-design-vue'
import {
import AbilityToApplyFor from './AbilityToApplyFor.vue'
import HomeHeader from '@/views/home/components/header'
import { reactive, ref, watch, onBeforeUnmount } from 'vue'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import qs from 'qs'
import { Upload } from 'ant-design-vue'
import {
lastestPage,
tabilityapplication,
startOfBusinessKey,
@ -135,17 +252,18 @@ import {
getUserInfo,
relaunch,
selectOne,
} from '@/api/home'
import { getDeptAll } from '@/api/user'
import { getCategoryTreePage, endProcess } from '@/api/personalCenter'
import mybus from '@/myplugins/mybus'
import { sgcDel, getApplyForm } from '@/api/personalCenter'
import { pageWithAttrs, updateIntegrationServices } from '@/api/home'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { getIntegrationDetail, soldierApply } from '@/api/home'
import * as moment from 'moment'
} from '@/api/home'
import { getDeptAll } from '@/api/user'
import { getCategoryTreePage, endProcess } from '@/api/personalCenter'
import mybus from '@/myplugins/mybus'
import { sgcDel, getApplyForm } from '@/api/personalCenter'
import { pageWithAttrs, updateIntegrationServices } from '@/api/home'
import { DETAIL_PAGE_CONTENT_DEFAULT_TAB } from '@/global/GlobalConfig.js'
import { getIntegrationDetail, soldierApply } from '@/api/home'
import { useStore } from 'vuex'
import * as moment from 'moment'
export default {
export default {
name: '',
props: {},
components: {
@ -154,6 +272,8 @@ export default {
},
setup() {
const router = useRouter()
const store = useStore()
const deptName = store.getters['user/deptName']
const disabled = ref(false)
const flag = ref(false)
const list = ref(JSON.parse(localStorage.getItem('applyList')))
@ -211,8 +331,17 @@ export default {
// 西--
const isCamera = ref(false)
// 西-
let note1 = JSON.parse(list.value[0] && list.value[0].arr && list.value[0].arr[0].note1 || "[]");
let iskfq = ref(note1.some(v => v.managementUnitName == '开发区公安局' || v.managementUnitName == '开发区公安分局'))
let note1 = JSON.parse(
(list.value[0] && list.value[0].arr && list.value[0].arr[0].note1) ||
'[]'
)
let iskfq = ref(
note1.some(
(v) =>
v.managementUnitName == '开发区公安局' ||
v.managementUnitName == '开发区公安分局'
)
)
if (
list.value[0] &&
list.value[0].arr &&
@ -600,10 +729,10 @@ export default {
processDefinitionKey: processDefinitionKey,
businessKey: businessKey,
})
updateInstanceId(params).then(() => { })
updateInstanceId(params).then(() => {})
}
})
.catch(() => { })
.catch(() => {})
}
const options = ref([
{
@ -661,11 +790,14 @@ export default {
if (res.data.data.records.length == 0) {
message.warning('该关键词,暂无应用资源!')
} else {
//
res.data.data.records.map((val) => {
if (val.deptName === deptName) {
systemOptions2.value.push({
value: val.name,
label: val.name,
})
}
})
// console.log('===================>', systemOptions2.value)
}
@ -755,7 +887,11 @@ export default {
query: {
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
//
facilitiesType: list.value[0] && list.value[0].arr && list.value[0].arr[0] && list.value[0].arr[0].type
facilitiesType:
list.value[0] &&
list.value[0].arr &&
list.value[0].arr[0] &&
list.value[0].arr[0].type,
},
})
}, 1000)
@ -816,10 +952,10 @@ export default {
iskfq,
}
},
}
}
</script>
<style scoped lang="less">
#apply-container {
#apply-container {
// background-color: #f5f8fc;
height: 100%;
width: 100%;
@ -898,9 +1034,9 @@ export default {
font-weight: bold;
color: #000;
}
}
}
.applicationScene {
.applicationScene {
:deep(.ant-select-selector) {
overflow-x: scroll;
}
@ -908,20 +1044,20 @@ export default {
:deep(.ant-select-selection-overflow) {
flex-wrap: nowrap;
}
}
}
textarea {
textarea {
resize: none;
font-size: 14px;
}
}
.bottom-btn {
.bottom-btn {
display: flex;
justify-content: center;
// position: fixed;
}
}
.cancel-apply {
.cancel-apply {
width: 80px;
height: 38px;
margin-right: 20px;
@ -932,9 +1068,9 @@ textarea {
border: none;
padding: 0;
text-align: center;
}
}
.confirm-apply {
.confirm-apply {
width: 80px;
height: 38px;
background: #0087ff;
@ -944,5 +1080,5 @@ textarea {
border: none;
padding: 0;
text-align: center;
}
}
</style>

View File

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

View File

@ -91,6 +91,10 @@ export default defineComponent({
})
}
treeData.value = res.data && res.data.data || []
//
if(res.data && res.data.data.length == 1) {
showBottom(treeData.value[0])
}
}
}
mybus.on('getDeptList', () => {

View File

@ -312,7 +312,7 @@
<span>{{ statusText[record.status] || '' }}</span>
</template>
<template v-if="column.dataIndex === 'operation'">
<a @click="
<a :class="record.status != 1 ? 'disabled-text' : ''" @click="
openVideo(
record.channelCode ||
record.channelId ||
@ -762,7 +762,8 @@ const openVideo = (id, item) => {
rowClickData.value = item
//
if (item && item.status != 1) {
return message.warning('当前设备离线, 不可预览!')
return
// return message.warning('线, ')
}
console.log('打开视频', id)
const param = {
@ -2364,4 +2365,13 @@ video::-webkit-media-controls {
bottom: 30px;
text-align: right;
}
.disabled-text {
cursor: not-allowed;
opacity: 0.5;
color: #666666;
&:hover {
color: #666666;
}
}
</style>

View File

@ -157,7 +157,7 @@
password: Encrypt(this.form.password),
username: this.form.username,
})
window.localStorage.setItem('tokenStartTime', new Date().getTime())
// window.localStorage.setItem('tokenStartTime', new Date().getTime())
window.sessionStorage.setItem('visits', JSON.stringify([]))
console.log(
'添加visits========================================>',

View File

@ -262,35 +262,27 @@ const goPage = (item) => {
}
}
}
let isQingDao = whoShow.itShowQingDao;
//
const read = (item) => {
if (selectData.value.length === 0 && !item) {
message.error('未选择消息!')
return
return message.error('未选择消息!')
}
console.log(selectData.value)
if (item) {
//
// ,
if (item.readStatus === 1) {
if(isQingDao) {
goPage(item)
}
//
return
return goPage(item)
}
mynoticeRead(item.id).then((res) => {
if (res.data.code == 0) {
message.success('通知已读!')
mybus.emit('getMynotice')
init()
if (isQingDao) {
//
setTimeout(() => {
goPage(item)
}, 1000)
}
}, 1500)
} else {
message.error('操作失败!')
}

View File

@ -159,27 +159,32 @@
<span class="channelName">{{ val.channelName }}</span>
<span class="type">基础设施</span>
</div>
<div>
<a-button type="primary" v-if="item.approveStatus == '通过' && whoShow1.itShowXiHaiAn"
@click.stop="openVideo(val)">
视频预览
</a-button>
<span class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && !item.ended" >该流程已终止</span>
<div class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && item.ended">该流程已终止
</div>
</div>
</div>
<div class="ability-bottom">
<div class="dec2">位置{{ val.nodeName }}</div>
<div class="result" v-if="item.approveStatus == '通过'">
申请结果{{
'列表地址:' +
申请结果
<span>列表地址</span><span style="cursor: pointer;" @click="openView(backUrl +
'resource/getApplyCameraList/' +
item.instanceId)">{{
backUrl +
'resource/getApplyCameraList/' +
item.instanceId +
';' +
'视频流地址:' +
item.instanceId }}</span>
<span>视频流地址</span>
<span style="cursor: pointer" @click="openView(backUrl +
'resource/hls/getHls/?key=' +
val.channelId)">{{
backUrl +
'resource/hls/getHls/?key=' +
val.channelId
}}
val.channelId}}</span>
</div>
</div>
</div>
@ -453,6 +458,10 @@ const handleUser = () => {
})
}
const openView = (url) => {
window.open(url, '_blank')
}
</script>
<style lang="less" scoped>
.title {
@ -531,7 +540,7 @@ const handleUser = () => {
margin-left: 0.1rem;
.ability {
height: 1.3rem;
height: 1.6rem;
display: flex;
border-bottom: 1px #eee solid;
padding: 0.1rem 0;
@ -733,6 +742,7 @@ const handleUser = () => {
font-weight: bold;
opacity: 0.4;
transform: rotate(-25deg);
width: 470px
width: 470px;
}
</style>

View File

@ -1,9 +1,21 @@
<template>
<DeviceApplyDetail v-if="showType === '设备申请'" :refObj="refObj"></DeviceApplyDetail>
<DeviceApplyDetail
v-if="showType === '设备申请'"
:refObj="refObj"
></DeviceApplyDetail>
<div class="form-container" v-else>
<AbilityApplication :refObj="refObj" v-if="showType === '能力申请'"></AbilityApplication>
<PutOnTheShelf :refObj="refObj" v-else-if="showType === '能力上架'"></PutOnTheShelf>
<OffTheShelf :refObj="refObj" v-else-if="showType === '能力下架'"></OffTheShelf>
<AbilityApplication
:refObj="refObj"
v-if="showType === '能力申请'"
></AbilityApplication>
<PutOnTheShelf
:refObj="refObj"
v-else-if="showType === '能力上架'"
></PutOnTheShelf>
<OffTheShelf
:refObj="refObj"
v-else-if="showType === '能力下架'"
></OffTheShelf>
<Demand :refObj="refObj" v-else-if="showType === '能力需求'"></Demand>
<Comment :refObj="refObj" v-else-if="showType === '需求评论'"></Comment>
<OtherApplications :refObj="refObj" v-else></OtherApplications>
@ -23,46 +35,46 @@
</div>
</template>
<script setup>
import AbilityApplication from './AbilityApplication.vue'
import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue'
import Demand from './Demand.vue'
import Comment from './Comment.vue'
import DeviceApplyDetail from './DeviceApplyDetail.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import { onMounted, reactive, defineProps, ref } from 'vue'
import Cookies from 'js-cookie'
// import { baseURL } from '@/config'
import qs from 'qs'
import {
import AbilityApplication from './AbilityApplication.vue'
import PutOnTheShelf from './PutOnTheShelf .vue'
import OffTheShelf from './OffTheShelf.vue'
import Demand from './Demand.vue'
import Comment from './Comment.vue'
import DeviceApplyDetail from './DeviceApplyDetail.vue'
import OtherApplications from '@/views/personalCenter/components/OtherApplications '
import { onMounted, reactive, defineProps, ref } from 'vue'
import Cookies from 'js-cookie'
// import { baseURL } from '@/config'
import qs from 'qs'
import {
getApplyForm,
getTaskHandleDetailInfo,
getDemandForm,
nengliziyuanshangjiaapply,
getTaskVariables,
} from '@/api/personalCenter'
import { selectOneDel } from '@/api/home'
const props = defineProps({
} from '@/api/personalCenter'
import { selectOneDel } from '@/api/home'
const props = defineProps({
processDefinitionName: { type: String, default: null },
businessKey: { type: String, default: null },
processInstanceId: { type: String, default: null },
resourceId: { type: String, default: null },
refObj: { type: Object, default: null },
showType: { type: String, default: null },
})
const refObj = ref({})
const showType = ref('')
// eslint-disable-next-line vue/no-setup-props-destructure
refObj.value = props.refObj
// eslint-disable-next-line vue/no-setup-props-destructure
showType.value = props.showType
//
const dataSource = reactive({ data: [] })
console.log('refObj------------>', refObj);
})
const refObj = ref({})
const showType = ref('')
// eslint-disable-next-line vue/no-setup-props-destructure
refObj.value = props.refObj
// eslint-disable-next-line vue/no-setup-props-destructure
showType.value = props.showType
//
const dataSource = reactive({ data: [] })
console.log('refObj------------>', refObj)
// console.log(props.refObj, '---------------------------------------')
// console.log(props.refObj, '---------------------------------------')
const downloadFile = (path, name) => {
const downloadFile = (path, name) => {
const xhr = new XMLHttpRequest()
xhr.open('get', path)
xhr.responseType = 'blob'
@ -87,9 +99,9 @@ const downloadFile = (path, name) => {
URL.revokeObjectURL(url)
}
}
}
//
const formName = reactive({
}
//
const formName = reactive({
user: '',
phone: '',
unit: '',
@ -98,17 +110,22 @@ const formName = reactive({
scene: '',
basis: '',
id: '',
})
let shifoushizujian = ref('')
let nameNotShow = ref('')
let algorithmShow = ref('')
const dataForm = reactive({ data: {} })
const columns = [
})
let shifoushizujian = ref('')
let nameNotShow = ref('')
let algorithmShow = ref('')
const dataForm = reactive({ data: {} })
const columns = [
{
title: '任务名称',
dataIndex: 'activityName',
key: 'activityName',
},
{
title: '处理部门',
dataIndex: 'assigneeDeptName',
key: 'assigneeDeptName',
},
{
title: '处理人',
dataIndex: 'assigneeName',
@ -134,8 +151,8 @@ const columns = [
dataIndex: 'duration',
key: 'duration',
},
]
const getInfo = () => {
]
const getInfo = () => {
console.log(props.processInstanceId, '============================')
if (props.processDefinitionName == '能力申请') {
// getTaskVariables({ taskId: props.processInstanceId }).then((res) => {
@ -199,9 +216,9 @@ const getInfo = () => {
dataForm.data = res.data.data
})
}
}
}
const getLiuZhuanInfo = () => {
const getLiuZhuanInfo = () => {
const params = qs.stringify({
processInstanceId: props.processInstanceId,
})
@ -212,9 +229,9 @@ const getLiuZhuanInfo = () => {
})
dataSource.data.push([props.processInstanceId, arr])
})
}
}
onMounted(() => {
onMounted(() => {
// getInfo()
if (props.refObj.resourceApplication) {
dataSource.data = []
@ -228,9 +245,9 @@ onMounted(() => {
} else {
getLiuZhuanInfo()
}
})
})
const getResourceURL = () => {
const getResourceURL = () => {
console.log('111111111111111111111111111111', Cookies.get('token'))
const params = qs.stringify({
token: Cookies.get('token'),
@ -238,11 +255,11 @@ const getResourceURL = () => {
processInstanceId: props.processInstanceId,
})
return `${window.SITE_CONFIG.apiURL}/act/his/getInstImage?${params}`
}
}
</script>
<style scoped lang="less">
.form-container {
.form-container {
height: 6rem;
overflow-y: scroll;
padding: 20px 20px 30px 20px;
@ -256,25 +273,25 @@ const getResourceURL = () => {
margin-top: 10px;
border-left: 6px #0058e1 solid;
}
}
}
:deep(.ant-table-thead)>tr>.ant-table-cell {
:deep(.ant-table-thead) > tr > .ant-table-cell {
background: #0087ff;
color: #fff;
border: none;
text-align: center;
font-size: 16px;
}
}
:deep(.ant-table-tbody)>tr>.ant-table-cell:nth-child(5) {
:deep(.ant-table-tbody) > tr > .ant-table-cell:nth-child(5) {
// width: 110px;
// display: inline-block;
// white-space: nowrap;
// overflow: hidden;
// text-overflow: ellipsis;
}
}
.oddNumbers {
.oddNumbers {
margin-bottom: 0.05rem;
}
}
</style>

View File

@ -3,16 +3,27 @@
<div class="title" style="margin-bottom: 0.2rem">我的申请</div>
<div class="tab" style="margin-bottom: 0.1rem">
<span>类型</span>
<div :class="typeIndex == index ? 'tabclass' : ' '" @click="changeType(item, index)"
v-for="(item, index) in typeList" :key="index">
<div
:class="typeIndex == index ? 'tabclass' : ' '"
@click="changeType(item, index)"
v-for="(item, index) in typeList"
:key="index"
>
{{ item }}
</div>
</div>
<div class="tab">
<span>申请状态</span>
<div :class="tabIndex == index ? 'tabclass' : ' '" @click="changeApplyState(item, index)"
v-for="(item, index) in tabList" :key="index">
<a-badge :count="item === '审核中' ? num.unfinished : num.finished" v-if="item !== '全部'">
<div
:class="tabIndex == index ? 'tabclass' : ' '"
@click="changeApplyState(item, index)"
v-for="(item, index) in tabList"
:key="index"
>
<a-badge
:count="item === '审核中' ? num.unfinished : num.finished"
v-if="item !== '全部'"
>
{{ item }}
</a-badge>
<template v-else>
@ -22,7 +33,11 @@
</div>
<div v-if="contentList.data.length > 0">
<div class="content">
<div class="content-body" v-for="item in contentList.data" :key="item.index">
<div
class="content-body"
v-for="item in contentList.data"
:key="item.index"
>
<div class="content-body-title">
<span>申请单号{{ item.applyNumber || '--' }}</span>
<div></div>
@ -33,7 +48,9 @@
</template>
<div class="content-body-title">
<span>
名称{{ item.cameraList ? item.system : (item.title || item.name) }}
名称{{
item.cameraList ? item.system : item.title || item.name
}}
</span>
<div></div>
</div>
@ -52,54 +69,117 @@
<div v-if="isXiHaiAn">过期时间{{ item.expireDate || '' }}</div>
</div>
<div class="button-box">
<div class="button" v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@click="showPhoneModal(item)">
<div
class="button"
v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@click="showPhoneModal(item)"
>
联系方式
</div>
<div class="button" @click="showDetail(item)">查看详情</div>
<div class="button" @click="showAdd(item)" v-if="item.backToFirst">
修改
</div>
<svg t="1652233950228" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
p-id="5970" data-spm-anchor-id="a313x.7781069.0.i8" width="80" height="80" v-if="
<svg
t="1652233950228"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="5970"
data-spm-anchor-id="a313x.7781069.0.i8"
width="80"
height="80"
v-if="
item.processDefinitionName != '能力资源下架' &&
(item.resourceStatus == 4 || item.resourceStatus == 5)
" style="position: absolute; top: 20px; left: -850px">
"
style="position: absolute; top: 20px; left: -850px"
>
<path
d="M955.22053 256C813.82053 11.2 500.72053-72.6 255.92053 68.8S-72.67947 523.2 68.72053 768 523.22053 1096.6 768.02053 955.2c244.7-141.2 328.6-454.1 187.4-698.8 0-0.1-0.1-0.3-0.2-0.4zM762.02053 944.7c-239 138.1-544.8 56.2-682.9-182.8S22.92053 217.1 261.92053 79.1s544.8-56.2 682.9 182.8c137.9 239 56.1 544.6-182.8 682.8z"
fill="#515151" opacity=".5" p-id="5971"></path>
fill="#515151"
opacity=".5"
p-id="5971"
></path>
<path
d="M898.12053 289.2C775.02053 76 502.42053 2.9 289.22053 126 76.02053 249.1 3.02053 521.6 126.02053 734.8 249.12053 948 521.62053 1021.1 734.82053 898 947.92053 774.9 1021.02053 502.4 898.12053 289.2zM731.62053 892.8C521.32053 1014.3 252.42053 942.2 131.02053 731.9 9.52053 521.6 81.62053 252.7 291.92053 131.3 502.12053 9.9 771.02053 81.8 892.42053 292c121.5 210.3 49.5 479.3-160.8 600.8z"
fill="#515151" opacity=".5" p-id="5972"></path>
fill="#515151"
opacity=".5"
p-id="5972"
></path>
<path
d="M323.62053 176.8c3.6-2 6 0.8 8.8 2.8 6 4.4 12.4 8.8 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.4 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.6 0.6-2zM200.72053 289.2c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 13.6-5.6 20.8 4.8 6 10 11.6 14.8 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.4-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.4-1.2 0-1.6 0.8-2.4l0.2 0.4z m276.6-159.6c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.8-1.2-0.4-1.6 0.4-2.4l0.2 0.4z m141.9 29.6c3.6-2 6 0.8 8.8 2.8l18.8 12.8c7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-3.6 14-5.6 20.8 4.8 6 10 12 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4-7.7 0.4-15.2 0.8-22.4 0.8-4.4 6.8-8.4 13.2-12.8 20-1.6 2.4-4 5.1-7.2 4-2.4-1.9-3.9-4.7-4.4-7.7l-7.2-20.5c-8.4-2-16.8-4.4-25.2-6.4-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 4-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.5-1.2 0.2-1.6 0.6-2zM150.02053 430c3.6-2 6 0.8 8.8 2.8 6.4 4.4 12.4 8.4 18.8 12.8 7.2-2.4 14.4-5.1 21.6-7.7 3.6-1.2 6-2.8 8.8 0.4 2.4 2.8 0.4 6.4-0.4 8.8-2 6.8-4 14-5.6 20.8 4.8 6 10 11.6 15.2 17.6 2.4 2.8 4.4 5.6 2.8 8.4-1.2 2.8-5.6 2.4-7.7 2.4l-22.4 0.8c-4.4 6.8-8.8 13.6-12.8 20-1.6 2.4-4 5.1-7.2 4-2.2-2-3.8-4.7-4.4-7.7l-7.2-20.5-25.2-6.4c-2.3-1.2-3.6-3.8-3.2-6.4 1.3-1.8 2.9-3.3 4.8-4.4 3.6-3.2 7.7-6.8 11.6-10 1.9-1.3 3.6-2.7 5.1-4.4-0.4-6.8-1.2-13.6-1.6-20.5-0.7-2.9-0.9-5.9-0.4-8.8-0.7-0.8-0.3-1.5 0.6-2z m558.9 414.4c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.1 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-1.1 0.8-1.1 1.6-1.1h0.1z m-158.8 50c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.1-3.7-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2-1 4.2-1.7 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.4-0.8 0.8-0.8 1.7-0.7z m276.5-159.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8s-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.2 4.4-0.7 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0-0.8 0.8-1.2 1.6-1.2l0.1 0.1z m45.6-137.6c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-1.6-14-3.6-20.8-5.6l-7.7-22c-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.2-0.7 0.6-0.7 1.4-0.7h0.3zM402.72053 868c3.6-2.4 2.4-5.6 2-8.8l-1.6-22.4 17.2-14.8c2.8-2.4 5.1-4 4-7.7-1.2-3.2-5.6-3.6-7.7-4-6.8-2-14-3.6-20.8-5.6-2.8-7.2-5.1-14.4-7.7-21.6-1.2-3.6-2.8-6.4-5.6-6.8-2.8-0.4-4.8 3.6-5.6 5.1l-12 19.2-24 1.2c-2.8 0-6.8 0.8-6.8 4.4 0.5 3 2 5.7 4.4 7.7 4.8 5.6 9.2 11.2 14 16.4l-7.2 25.2c-0.3 2.7 1.4 5.2 4 6 2.2-0.3 4.3-0.9 6.4-1.6l14.4-4.8c2.1-0.8 4.2-1.5 6.4-2 5.6 4 11.2 7.7 16.8 11.6 2.2 2.1 4.8 3.6 7.7 4.4 0.5-0.8 1-1.1 1.7-1.1z"
fill="#515151" opacity=".5" p-id="5973"></path>
fill="#515151"
opacity=".5"
p-id="5973"
></path>
<path
d="M386.42053 590.4l-43.8-75.9L207.02053 592.7l10.2 17.7L334.02053 543l23.4 40.4-90.5 52.2-13.5-23.4-18.7 10.8 53.1 92c9.1 15.8 21.2 19.5 36.4 10.7l98.8-57c6.2-3.6 11-9.3 13.4-16.1-1.4-15.9-6.2-31.2-14.2-45l-21.4 4.8c6.7 10.3 11 21.9 12.8 34-1 3.3-3.2 6-6.1 7.8l-88.3 51c-6.2 3.6-11.1 2.1-14.8-4.3l-27.3-47.4 109.3-63.1z m2.9-103.2l10.4 18.1 65.6-37.9 79.9 138.4 18.6-10.8-55.9-96.9c18.8-0.9 43.2-0.6 73 0.7l1.5-23.1c-29.8-0.3-58.4 0.4-86 2.6l-12.5-21.6 74.9-43.2-10.4-18.1-159.1 91.8zM669.52053 329l38.2 66.2 61.4-35.4-38.1-66.1-61.5 35.3z m72.4 24.2l-26.3 15.2-19-33 26.3-15.2 19 33zM599.02053 356.7l7.9 13.7-23.3 13.5 9.8 17 21.8-12.6c7.5 18.7 6.6 39.6-2.5 57.6l20.7 4.4c10.3-23.1 10.3-49.4 0-72.5l18.8-10.9c6 9.2 10.7 19.2 14.2 29.7 0.3 5-2.6 9.7-7.2 11.7-2.9 1.2-6.4 2.8-10.9 4.9l14.1 14.1c3.7-1.3 7.3-2.9 10.7-4.8 8.6-3.9 14.4-12.2 15.2-21.6-5.4-22.1-14.6-43-27.4-61.8l-36.1 20.8-7.9-13.7-17.9 10.5z m29.9 108.1l10 17.4 53.2-30.7c-7.8 23.7-20.6 45.4-37.5 63.6l20.6 11.1c18.6-24.2 30-53.1 33-83.4l29.8 51.5 18.4-10.7-29.8-51.5c27.4 11.5 57.2 16.3 86.9 14.1l3.5-23.5c-24.7 5.1-50.1 5-74.8-0.1l53.5-30.9-10-17.3-69.3 40-7.3-12.6-18.4 10.7L698.02053 425l-69.1 39.8z"
fill="#515151" opacity=".5" p-id="5974"></path>
fill="#515151"
opacity=".5"
p-id="5974"
></path>
</svg>
</div>
</div>
</div>
<div class="bottom">
<a-pagination size="small" pageSize="4" :total="total" :current="page" @change="handleCurrentChange"
@showSizeChange="handlePageSizeChange" :showSizeChanger="false" />
<a-pagination
size="small"
pageSize="4"
:total="total"
:current="page"
@change="handleCurrentChange"
@showSizeChange="handlePageSizeChange"
:showSizeChanger="false"
/>
</div>
</div>
<a-empty v-else />
<!-- :title="detailModalTitle" -->
<a-modal bodyStyle="padding:0.1rem 0" v-model:visible="detailsVisible"
style="width: 900px" :footer="null" destroyOnClose="true" :maskClosable="false">
<template v-slot:title>{{detailModalTitle}}</template>
<apply-details :processDefinitionName="processDefinitionName" :businessKey="businessKey"
:processInstanceId="processInstanceId" :resourceId="resourceId" :refObj="refObj" :showType="showType">
</apply-details>
<a-modal
bodyStyle="padding:0.1rem 0"
v-model:visible="detailsVisible"
style="width: 1000px"
:footer="null"
destroyOnClose="true"
:maskClosable="false"
>
<template v-slot:title>
{{
refObj.description && itShowXiHaiAn
? refObj.description + '申请详情'
: '申请详情'
}}
</template>
<apply-details
:processDefinitionName="processDefinitionName"
:businessKey="businessKey"
:processInstanceId="processInstanceId"
:resourceId="resourceId"
:refObj="refObj"
:showType="showType"
></apply-details>
</a-modal>
<a-modal v-model:visible="visible" title="下架原因" @ok="del()" @cancel="reason = ''">
<a-modal
v-model:visible="visible"
title="下架原因"
@ok="del()"
@cancel="reason = ''"
>
<a-input v-model:value="reason" placeholder="请输入下架原因" />
</a-modal>
<a-modal v-model:visible="videoVisible" title="已申请摄像头列表" @ok="videoVisible = false">
<a-table :columns="columns" :data-source="xVideoList" bordered :pagination="{ defaultPageSize: 6 }">
<a-modal
v-model:visible="videoVisible"
title="已申请摄像头列表"
@ok="videoVisible = false"
>
<a-table
:columns="columns"
:data-source="xVideoList"
bordered
:pagination="{ defaultPageSize: 6 }"
>
<template #bodyCell="{ column, text }">
<!-- <template>
<a>{{ text }}</a>
@ -110,15 +190,26 @@
</div>
<!-- 联系方式弹框 -->
<a-modal v-model:visible="phoneVisible" title="提示" @ok="phoneVisible = false">
<a-modal
v-model:visible="phoneVisible"
title="提示"
@ok="phoneVisible = false"
>
<!-- 工业信息化局那个号电话配这个号199 6399 0996 -->
<p>请联系工业信息化局电话199 6399 0996</p>
</a-modal>
</template>
<script setup>
import { onMounted, reactive, ref, onBeforeUnmount, h, defineProps } from 'vue'
import {
import {
onMounted,
reactive,
ref,
onBeforeUnmount,
h,
defineProps,
} from 'vue'
import {
getMyProcessInstancePage,
getTabilityapplication,
getByApplyFlag,
@ -127,85 +218,86 @@ import {
demandComment,
deviceApplylist,
getDeviceDetail,
} from '@/api/personalCenter'
import {
} from '@/api/personalCenter'
import {
updateRes,
relaunch,
selectOne,
getApplyCameraList,
selectOneDel,
} from '@/api/home'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import ApplyDetails from '@/views/personalCenter/components/ApplyDetails'
import mybus from '@/myplugins/mybus'
import * as moment from 'moment'
} from '@/api/home'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import ApplyDetails from '@/views/personalCenter/components/ApplyDetails'
import mybus from '@/myplugins/mybus'
import * as moment from 'moment'
const props = defineProps({
const props = defineProps({
tabTypeName: { type: String, default: '' },
})
const router = useRouter()
let typeList = ref([
})
const router = useRouter()
let typeList = ref([
'能力申请',
'能力上架',
'能力下架',
'能力需求',
'需求评论',
// '',
])
// 西-
let isXiHaiAn = whoShow.itShowXiHaiAn
const phoneSate = ref([2, 3])
if (isXiHaiAn) {
])
// 西-
let isXiHaiAn = whoShow.itShowXiHaiAn
const itShowXiHaiAn = ref(isXiHaiAn)
const phoneSate = ref([2, 3])
if (isXiHaiAn) {
typeList.value.push('设备申请')
}
const typeStrObj = {
'能力上架': '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])
const videoVisible = ref(false)
const numFlag = ref(true)
const columns = ref([
}
const typeStrObj = {
能力上架: '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])
const videoVisible = ref(false)
const numFlag = ref(true)
const columns = ref([
{
title: '摄像头名称',
dataIndex: 'name',
},
])
const xVideoList = ref([])
])
const xVideoList = ref([])
let name = ref('')
const detailsVisible = ref(false)
const detailsVisible2 = ref(false)
const businessKey = ref('')
const processInstanceId = ref('')
const processDefinitionName = ref('')
const resourceId = ref('')
const reason = ref('')
const visible = ref(false)
const delObj = ref({})
const taskId = ref('')
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const refObj = ref({})
const num = ref({
let name = ref('')
const detailsVisible = ref(false)
const detailsVisible2 = ref(false)
const businessKey = ref('')
const processInstanceId = ref('')
const processDefinitionName = ref('')
const resourceId = ref('')
const reason = ref('')
const visible = ref(false)
const delObj = ref({})
const taskId = ref('')
const backUrl = ref(window.SITE_CONFIG.apiURL + '/')
const refObj = ref({})
const num = ref({
finished: 0,
unfinished: 0,
})
const total = ref('')
const showType = ref('')
const page = ref('1')
const ended = ref('')
const processDefinitionKey = ref('')
const phoneVisible = ref(false)
})
const total = ref('')
const showType = ref('')
const page = ref('1')
const ended = ref('')
const processDefinitionKey = ref('')
const phoneVisible = ref(false)
//
const changeType = (item, index) => {
//
const changeType = (item, index) => {
console.log('item, index-----选择类型------->', item, index)
numFlag.value = true
num.value = []
@ -216,10 +308,10 @@ const changeType = (item, index) => {
typeIndex.value = index
typeName.value = item
getApplyList()
}
}
//
function changeApplyState(item, index) {
//
function changeApplyState(item, index) {
tabIndex.value = index
switch (item) {
case '审核中':
@ -238,19 +330,13 @@ function changeApplyState(item, index) {
getApplyList()
break
}
}
}
const cilckRowData = ref({})
let detailModalTitle = '申请详情';
const showDetail = (item) => {
cilckRowData.value = item;
const cilckRowData = ref({})
const showDetail = (item) => {
cilckRowData.value = item
// 西-
if (isXiHaiAn) {
// 西
if (item.tbDeviceDTO) {
detailModalTitle = item.tbDeviceDTO.name ? item.tbDeviceDTO.name + '申请详情' : '申请详情'
}
console.log('detailModalTitle------------>', detailModalTitle);
if (item.expireDate) {
let diff = moment().diff(moment(item.expireDate), 'seconds')
if (diff > 0) {
@ -277,10 +363,9 @@ const showDetail = (item) => {
if (res.data.code == 0) {
refObj.value = res.data.data
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
}
})
.catch((err) => { })
.catch((err) => {})
} else if (
Object.keys(typeStrObj).includes(typeName.value) ||
typeName.value == '能力评价'
@ -294,8 +379,8 @@ const showDetail = (item) => {
} else {
message.error('数据请求失败!')
}
}
const showVideoList = (item) => {
}
const showVideoList = (item) => {
console.log('显示列表', item)
getApplyCameraList(item.processInstanceId).then((res) => {
console.log('res', res)
@ -305,8 +390,8 @@ const showVideoList = (item) => {
})
})
videoVisible.value = true
}
const copyComment = (data) => {
}
const copyComment = (data) => {
let url = data
let oInput = document.createElement('input')
oInput.value = url
@ -316,8 +401,8 @@ const copyComment = (data) => {
document.execCommand('Copy') //
message.success('复制成功')
oInput.remove()
}
const showAdd = (item) => {
}
const showAdd = (item) => {
if (item.processDefinitionKey == 'resourcemountapply') {
const data = {
id: item.resourceId,
@ -370,9 +455,9 @@ const showAdd = (item) => {
console.log('能力申请修改=================》', item)
window.open(newpage.href, '_self')
}
}
}
const initNum = () => {
const initNum = () => {
if (numFlag.value) {
num.value = []
getMyProcessInstancePage({
@ -397,8 +482,8 @@ const initNum = () => {
}
})
}
}
const initNum2 = () => {
}
const initNum2 = () => {
if (numFlag.value) {
num.value = []
getTabilityapplication({
@ -421,19 +506,19 @@ const initNum2 = () => {
}
})
}
}
// initNum()
}
// initNum()
//
const onSearch = (name) => {
//
const onSearch = (name) => {
console.log(name.value)
}
//
function replacement() {
}
//
function replacement() {
name.value = ''
getApplyList(name.value)
}
const getApplyList = () => {
}
const getApplyList = () => {
const params = {
page: page.value,
limit: 4,
@ -474,7 +559,7 @@ const getApplyList = () => {
getDeviceNum()
}
})
.catch((err) => { })
.catch((err) => {})
} else if (Object.keys(typeStrObj).includes(typeName.value)) {
processDefinitionKey.value = typeStrObj[typeName.value]
params.processDefinitionKey = processDefinitionKey.value
@ -535,18 +620,18 @@ const getApplyList = () => {
num.value = []
showType.value = ''
}
}
const handleCurrentChange = (val) => {
}
const handleCurrentChange = (val) => {
page.value = val
getApplyList()
}
}
const handlePageSizeChange = (val) => {
const handlePageSizeChange = (val) => {
page.value = val
getApplyList()
}
}
const viewDetail = (processDefinitionName, id, ended, businessKey) => {
const viewDetail = (processDefinitionName, id, ended, businessKey) => {
if (processDefinitionName == '能力申请流程') {
router.push({
path: '/details',
@ -573,10 +658,10 @@ const viewDetail = (processDefinitionName, id, ended, businessKey) => {
},
})
}
}
}
//
const del = () => {
//
const del = () => {
console.log('下架================》', delObj.value, reason.value)
delObj.value.undercarriageReason = reason.value
updateRes(delObj.value).then((upres) => {
@ -598,10 +683,10 @@ const del = () => {
message.error('数据更新失败!')
}
})
}
}
// 西 todo
const getDeviceApply = (state) => {
// 西 todo
const getDeviceApply = (state) => {
return new Promise((resolve, reject) => {
let _data = {
page: page.value,
@ -618,10 +703,10 @@ const getDeviceApply = (state) => {
console.log('err------------>', err)
})
})
}
}
// 西--
const getDeviceDetailInfo = (deviceId) => {
// 西--
const getDeviceDetailInfo = (deviceId) => {
return new Promise((resolve, reject) => {
getDeviceDetail(deviceId)
.then((res) => {
@ -633,10 +718,10 @@ const getDeviceDetailInfo = (deviceId) => {
console.log('err------------>', err)
})
})
}
}
// 西-,
const getDeviceNum = () => {
// 西-,
const getDeviceNum = () => {
if (!numFlag.value) {
return
}
@ -650,34 +735,32 @@ const getDeviceNum = () => {
num.value.finished = finished.total || ''
numFlag.value = false
})
.catch((err) => {
})
}
.catch((err) => {})
}
const showPhoneModal = () => {
const showPhoneModal = () => {
phoneVisible.value = true
}
}
mybus.on('closeModal', (obj) => {
mybus.on('closeModal', (obj) => {
detailsVisible.value = false
changeType(obj.type, obj.index)
})
onBeforeUnmount(() => {
})
onBeforeUnmount(() => {
mybus.off('closeModal')
})
onMounted(() => {
})
onMounted(() => {
getApplyList()
if (props.tabTypeName) {
let _index = typeList.value.findIndex(v => v == props.tabTypeName)
let _index = typeList.value.findIndex((v) => v == props.tabTypeName)
changeType(props.tabTypeName, _index != -1 ? _index : 0)
}
})
})
</script>
<style scoped lang="less">
.on-the-right-side-of-the-list {
.on-the-right-side-of-the-list {
background: #ffffff;
padding: 20px 0px 30px 20px;
position: absolute;
@ -853,10 +936,10 @@ onMounted(() => {
.backToFirst {
background-color: rgb(214, 91, 91);
}
}
}
:deep(.ant-badge-count) {
:deep(.ant-badge-count) {
top: -5px;
right: -10px;
}
}
</style>

View File

@ -650,17 +650,19 @@ const ceshiFunction = () => {
}
// delOne delList handleDelete
const handleDelete = (item, index) => {
console.log('item, index------------>', item, index);
console.log('item------------>', item);
let delArr = [];
//
if (item) {
if (index) {
delArr = [item.id]
} else {
//
if (checkedListAbility.value.length == 0) {
return message.warning('请先选择需要操作的数据!')
} else {
delArr = checkedListAbility.value.map(v=>v.id)
delArr = checkedListAbility.value
}
}
sgcDel({

View File

@ -85,9 +85,6 @@ export default defineComponent({
}
onMounted(() => {
if (itShowXiHaiAn) {
handleClick(menuList[0])
} else {
if (type) {
console.log('type---------->', type)
let _obj = menuList.find(v => v.key == type)
@ -95,11 +92,10 @@ export default defineComponent({
} else {
if (menuList[1]) {
handleClick(menuList[1])
}else {
} else {
handleClick(menuList[0])
}
}
}
})
return {