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,52 +35,60 @@
<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 () {
return {
numObject: {}
};
}
},
components: {
SubMenu,
SubMenu
},
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 () {
http.get('/act/task/myToDoTaskNum').then(({ data: res }) => {
this.numObject = res.data
let menuList= window.SITE_CONFIG["menuList"];
const menuList = window.SITE_CONFIG.menuList
console.log('menuList====>', menuList)
console.log('this.numObject====>', this.numObject)
for (var i = 0; i < menuList.length; i++) {
let menu=menuList[i];
const 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
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"){//
} if (children.id == '1559376285703081986') { //
children.total = Number(this.numObject.meetingroom_book)
daibanNum = Number(daibanNum) + Number(children.total)
}if(children.id=="1545292602084827138"){//
} if (children.id == '1545292602084827138') { //
children.total = Number(this.numObject.resourcemountapply)
daibanNum = Number(daibanNum) + Number(children.total)
}if(children.id=="1545312045695377410"){//
} if (children.id == '1545312045695377410') { //
children.total = Number(this.numObject.abilitydemandapply)
daibanNum = Number(daibanNum) + Number(children.total)
}if(children.id=="1545313018614521857"){//
} if (children.id == '1545313018614521857') { //
children.total = Number(this.numObject.resourcundercarriageapply)
daibanNum = Number(daibanNum) + Number(children.total)
}if(children.id=="1545313754106699777"){//
} if (children.id == '1545313754106699777') { //
children.total = Number(this.numObject.comment_review)
daibanNum = Number(daibanNum) + Number(children.total)
}if(children.id=="1554294862931562498"){//
} if (children.id == '1554294862931562498') { //
children.total = 0
daibanNum = Number(daibanNum) + Number(children.total)
}
@ -91,7 +99,8 @@ export default {
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,
@ -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 () {
@ -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></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>
@ -486,7 +467,13 @@ export default {
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() {
// 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 {
display: flex;
align-items: center;
.el-input {
margin-right: 10px;
margin-left: 32px;
}
}
::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 {
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 {
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>
@ -143,6 +260,7 @@ 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 {
@ -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 &&
@ -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)

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,11 +82,7 @@
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>
@ -180,6 +144,14 @@
}
//
const goToHome = () => {
// 西
if (itShowXiHaiAn.value) {
if (
!xhaHasPermissionUser.list.includes(user.value.username)
) {
return message.warn('暂无权限')
}
}
router.push({
path: '/home',
})
@ -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;
}
@ -517,11 +488,9 @@
.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;
@ -572,6 +541,7 @@
}
:deep(.ant-list-item-meta-title) {
// display: flex;
// justify-content: space-around;
// align-items: center;

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>
@ -58,7 +70,7 @@ refObj.value = props.refObj
showType.value = props.showType
//
const dataSource = reactive({ data: [] })
console.log('refObj------------>', refObj);
console.log('refObj------------>', refObj)
// console.log(props.refObj, '---------------------------------------')
@ -109,6 +121,11 @@ const columns = [
dataIndex: 'activityName',
key: 'activityName',
},
{
title: '处理部门',
dataIndex: 'assigneeDeptName',
key: 'assigneeDeptName',
},
{
title: '处理人',
dataIndex: 'assigneeName',

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,14 +190,25 @@
</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 {
onMounted,
reactive,
ref,
onBeforeUnmount,
h,
defineProps,
} from 'vue'
import {
getMyProcessInstancePage,
getTabilityapplication,
@ -155,15 +246,16 @@ let typeList = ref([
])
// 西-
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',
能力上架: 'resourcemountapply',
能力下架: 'resourcundercarriageapply',
能力需求: 'abilitydemandapply',
需求评论: 'comment_review',
}
let tabList = ref(['全部', '审核中', '审核完成'])
const contentList = reactive({ data: [] })
@ -241,16 +333,10 @@ function changeApplyState(item, index) {
}
const cilckRowData = ref({})
let detailModalTitle = '申请详情';
const showDetail = (item) => {
cilckRowData.value = 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,7 +363,6 @@ const showDetail = (item) => {
if (res.data.code == 0) {
refObj.value = res.data.data
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
}
})
.catch((err) => {})
@ -650,11 +735,9 @@ const getDeviceNum = () => {
num.value.finished = finished.total || ''
numFlag.value = false
})
.catch((err) => {
})
.catch((err) => {})
}
const showPhoneModal = () => {
phoneVisible.value = true
}
@ -670,7 +753,7 @@ 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)
}
})

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)
@ -99,7 +96,6 @@ export default defineComponent({
handleClick(menuList[0])
}
}
}
})
return {