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

This commit is contained in:
wuhongjian 2022-11-21 19:12:16 +08:00
commit df8aa20b3f
9 changed files with 382 additions and 182 deletions

View File

@ -2,7 +2,7 @@
* @Author: hisense.wuhongjian * @Author: hisense.wuhongjian
* @Date: 2022-04-01 19:19:40 * @Date: 2022-04-01 19:19:40
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-19 14:53:29 * @LastEditTime: 2022-11-21 16:35:03
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
*/ */
import request from '@/utils/request' import request from '@/utils/request'
@ -556,3 +556,19 @@ export function willApplyCameraBatchDelete(data) {
data, data,
}) })
} }
// 西
export function getApplyCameraListXha(data) {
return request({
url: '/processForm/tabilityapplication/getApplyCameraList',
method: 'get',
data,
})
}
// 西
export function delApplyCamera(data) {
return request({
url: '/processForm/tabilityapplication/delApplyCamera',
method: 'post',
data,
})
}

View File

@ -143,6 +143,7 @@
show-size-changer show-size-changer
show-less-items show-less-items
show-quick-jumper show-quick-jumper
:showTotal="total => `共 ${total} 项`"
:total="resourceTotal" :total="resourceTotal"
:page-size-options="pageSizeOptions" :page-size-options="pageSizeOptions"
@change="pageChange" @change="pageChange"

View File

@ -237,6 +237,7 @@
</div> </div>
</template> </template>
<script> <script>
import { willApplyCameraBatchDelete } from '@/api/home'
import AbilityToApplyFor from './AbilityToApplyFor.vue' import AbilityToApplyFor from './AbilityToApplyFor.vue'
import HomeHeader from '@/views/home/components/header' import HomeHeader from '@/views/home/components/header'
import { reactive, ref, watch, onBeforeUnmount } from 'vue' import { reactive, ref, watch, onBeforeUnmount } from 'vue'
@ -656,6 +657,7 @@
if (item.note1 && typeof item.note1 == 'string') { if (item.note1 && typeof item.note1 == 'string') {
item.note1 = JSON.parse(item.note1) item.note1 = JSON.parse(item.note1)
} }
let delArr = []
item.note1 && item.note1 &&
item.note1.map((jcss) => { item.note1.map((jcss) => {
if (!jcss) { if (!jcss) {
@ -678,15 +680,22 @@
} }
// 西 // 西
if (isXiHaiAn.value) { if (isXiHaiAn.value) {
// _itemData.resourceId = jcss.channelId
_itemData.managementUnitName = jcss.managementUnitName _itemData.managementUnitName = jcss.managementUnitName
_itemData.cameraPointTypeName = jcss.cameraPointTypeName _itemData.cameraPointTypeName = jcss.cameraPointTypeName
delArr.push(jcss.id)
} }
obj.system.push(_itemData) obj.system.push(_itemData)
}) })
submitApply(obj).then((res) => { submitApply(obj).then((res) => {
// applySuccess.value = false // applySuccess.value = false
console.log('摄像头申请================>', res) console.log('摄像头申请================>', res)
if (item.id) { if (res.data.msg == 'success') {
if (delArr.length > 0) {
willApplyCameraBatchDelete(delArr).then((res) => {
jumpToDetailsPageconetent()
})
} else if (item.id) {
sgcDel({ ids: [item.id] }).then((res1) => { sgcDel({ ids: [item.id] }).then((res1) => {
if (res1.data.msg === 'success') { if (res1.data.msg === 'success') {
if (falgNum == 0 && sxt) { if (falgNum == 0 && sxt) {
@ -704,6 +713,7 @@
} }
jumpToDetailsPageconetent() jumpToDetailsPageconetent()
} }
}
}) })
} }
@ -956,7 +966,7 @@
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
#apply-container { #apply-container {
// background-color: #f5f8fc; // background-color: #f5f8fc;
height: 100%; height: 100%;
width: 100%; width: 100%;
@ -1035,9 +1045,9 @@
font-weight: bold; font-weight: bold;
color: #000; color: #000;
} }
} }
.applicationScene { .applicationScene {
:deep(.ant-select-selector) { :deep(.ant-select-selector) {
overflow-x: scroll; overflow-x: scroll;
} }
@ -1045,20 +1055,20 @@
:deep(.ant-select-selection-overflow) { :deep(.ant-select-selection-overflow) {
flex-wrap: nowrap; flex-wrap: nowrap;
} }
} }
textarea { textarea {
resize: none; resize: none;
font-size: 14px; font-size: 14px;
} }
.bottom-btn { .bottom-btn {
display: flex; display: flex;
justify-content: center; justify-content: center;
// position: fixed; // position: fixed;
} }
.cancel-apply { .cancel-apply {
width: 80px; width: 80px;
height: 38px; height: 38px;
margin-right: 20px; margin-right: 20px;
@ -1069,9 +1079,9 @@ textarea {
border: none; border: none;
padding: 0; padding: 0;
text-align: center; text-align: center;
} }
.confirm-apply { .confirm-apply {
width: 80px; width: 80px;
height: 38px; height: 38px;
background: #0087ff; background: #0087ff;
@ -1081,5 +1091,5 @@ textarea {
border: none; border: none;
padding: 0; padding: 0;
text-align: center; text-align: center;
} }
</style> </style>

View File

@ -40,6 +40,10 @@
:pageSize="5" :pageSize="5"
:total="props.resourceTotal" :total="props.resourceTotal"
show-less-items show-less-items
show-size-changer
show-quick-jumper
:page-size-options="pageSizeOptions"
:showTotal="total => `共 ${total} 项`"
@change="handleCurrentChange" @change="handleCurrentChange"
:showSizeChanger="false" :showSizeChanger="false"
/> />
@ -56,6 +60,7 @@
resourceList: { type: Array, default: null }, resourceList: { type: Array, default: null },
resourceTotal: { type: String, default: '' }, resourceTotal: { type: String, default: '' },
}) })
const pageSizeOptions = ref(['5', '10', '20', '50'])
console.log('props==========>', props) console.log('props==========>', props)
// //
const zskState = reactive({ const zskState = reactive({

View File

@ -191,7 +191,10 @@ export default defineComponent({
mybus.on('getDeptList', () => { mybus.on('getDeptList', () => {
init() init()
}) })
mybus.on('clearChoose', () => {
selectId.value=''
chooseId.value=''
})
const onSelect = async (item, val, child) => { const onSelect = async (item, val, child) => {
let res = {} let res = {}
if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) { if (whoShow1.value && !whoShow1.value.itShowXiHaiAn) {
@ -270,7 +273,7 @@ export default defineComponent({
}, },
beforeUnmount() { beforeUnmount() {
mybus.off('getDeptList') mybus.off('getDeptList')
console.log('getDeptList销毁~~~~~~~~~~~~~~~~~~~') mybus.off('clearChoose')
}, },
components: { components: {
UpOutlined, UpOutlined,

View File

@ -2,7 +2,7 @@
* @Author: Light * @Author: Light
* @Date: 2022-11-18 11:53:43 * @Date: 2022-11-18 11:53:43
* @LastEditors: Light * @LastEditors: Light
* @LastEditTime: 2022-11-19 17:15:15 * @LastEditTime: 2022-11-21 17:51:38
* @Description: 告诉大家这是什么 * @Description: 告诉大家这是什么
--> -->
<template> <template>
@ -17,30 +17,46 @@
{{ item.channelName }} {{ item.channelName }}
</a-tooltip> </a-tooltip>
</div> </div>
<a-button type="link" danger @click="delWillApplyCamera(item.id)"> <a-popconfirm
移出 :title="'是否移出' + item.channelName + '?'"
</a-button> ok-text="是"
cancel-text="否"
@confirm="delWillApplyCamera(item.id)"
>
<a-button type="link" danger>移出</a-button>
</a-popconfirm>
</a-list-item> </a-list-item>
</template> </template>
<template #header> <template #header>
<div class="title">待申请列表</div> <div class="title">待申请列表</div>
</template> </template>
<template #footer> <template #footer>
<a-button type="primary">一键申请</a-button> <a-button type="primary" @click="apply">一键申请</a-button>
</template> </template>
</a-list> </a-list>
</div> </div>
<div class="bottom"> <div class="bottom">
<a-list size="small" bordered :data-source="data"> <a-list size="small" bordered :data-source="dataList.requested">
<template #renderItem="{ item }"> <template #renderItem="{ item }">
<a-list-item> <a-list-item>
<div class="name"> <div class="name">
<a-tooltip> <a-tooltip>
<template #title>{{ item }}</template> <template #title>{{ item.cameraInfo.channelName }}</template>
{{ item }} {{ item.cameraInfo.channelName }}
</a-tooltip> </a-tooltip>
</div> </div>
<a-popconfirm
v-if="item.approveStatus == '通过'"
:title="'是否删除' + item.cameraInfo.channelName + '?'"
ok-text="是"
cancel-text="否"
@confirm="deleteApply(item)"
>
<a-button type="link" danger>删除</a-button> <a-button type="link" danger>删除</a-button>
</a-popconfirm>
<a-button v-else type="link" danger @click="deleteApply(item)">
删除
</a-button>
</a-list-item> </a-list-item>
</template> </template>
<template #header> <template #header>
@ -49,20 +65,63 @@
</a-list> </a-list>
</div> </div>
</div> </div>
<a-modal
:width="800"
v-model:visible="visible"
title="删除申请"
@ok="handleOk"
@cancel="clear"
>
<p>本次申请的摄像头包含以下{{ showArr.length }}个摄像头是否删除申请</p>
<a-table :columns="columns" :data-source="showArr">
<template #bodyCell="{ column, text }">
<template v-if="column.dataIndex === 'name'">
<a>{{ text }}</a>
</template>
</template>
</a-table>
</a-modal>
</template> </template>
<script setup> <script setup>
import { import {
willApplyCameraSelect, willApplyCameraSelect,
willApplyCameraBatchInsert, willApplyCameraBatchInsert,
willApplyCameraBatchDelete, willApplyCameraBatchDelete,
getApplyCameraListXha,
delApplyCamera,
} from '@/api/home' } from '@/api/home'
import { endProcess } from '@/api/personalCenter.js'
import { onBeforeUnmount, reactive, ref } from 'vue' import { onBeforeUnmount, reactive, ref } from 'vue'
import { message } from 'ant-design-vue' import { message } from 'ant-design-vue'
import mybus from '@/myplugins/mybus' import mybus from '@/myplugins/mybus'
import { useRouter } from 'vue-router'
const dataList = reactive({ toBeApplied: [], requested: [] }) const dataList = reactive({ toBeApplied: [], requested: [] })
// //
const addWacFlag = ref(true) const addWacFlag = ref(true)
const delWacFlag = ref(true) const delWacFlag = ref(true)
const delApply = ref(true)
const visible = ref(false)
const instanceId = ref('')
const showArr = ref({})
const columns = [
{
title: '名称',
dataIndex: 'channelName',
key: 'channelName',
},
{
title: '地址',
dataIndex: 'managementUnitName',
key: 'managementUnitName',
},
{
title: '类型',
dataIndex: 'cameraPointTypeName',
key: 'cameraPointTypeName',
ellipsis: true,
},
]
const router = useRouter()
const delWillApplyCamera = (id) => { const delWillApplyCamera = (id) => {
console.log('删除===>', id) console.log('删除===>', id)
if (delWacFlag.value) { if (delWacFlag.value) {
@ -77,6 +136,86 @@
}) })
} }
} }
const apply = () => {
let obj = {
arr: [
{
checked: true,
delFlag: 0,
id: '1593084734789996545',
idtCameraChannel: '790582098133127168',
loading: false,
note1: '',
resourceId: '1522550195055828996',
resourceName: '摄像头列表',
type: '基础设施',
},
],
deptName: '西海岸新区工业和信息化局',
deptId: '732560225344761856',
}
dataList.toBeApplied.map((val) => {
val.type = '基础设施'
val.delFlag = 0
val.resourceId = val.channelId
val.resourceName = val.channelName
// obj.arr.push(val)
})
obj.arr[0].note1 = JSON.stringify(dataList.toBeApplied)
if (obj.arr.length > 0) {
console.log('一键申请===================>', obj)
localStorage.setItem('applyList', JSON.stringify([obj]))
router.push({
path: '/apply',
})
}
}
//
const deleteApply = (item) => {
console.log('删除========>', item)
if (delApply.value) {
delApply.value = false
switch (item.approveStatus) {
case '审核中':
visible.value = true
instanceId.value = item.instanceId
showArr.value = []
dataList.requested.map((val) => {
if (val.instanceId == item.instanceId) {
showArr.value.push(val.cameraInfo)
}
})
break
case '通过':
delApplyCamera([item.id]).then((res) => {
if (res.data.code == 0) {
message.success('删除成功')
} else {
message.warning('删除失败')
}
initApply()
})
break
}
}
}
const handleOk = () => {
endProcess({ instanceId: instanceId.value }).then((res) => {
if (res.data.code == 0) {
message.success('删除成功')
} else {
message.warning('删除失败')
}
initApply()
visible.value = false
})
}
const clear = () => {
instanceId.value = ''
showArr.value = []
visible.value = false
delApply.value = true
}
const init = () => { const init = () => {
willApplyCameraSelect().then((res) => { willApplyCameraSelect().then((res) => {
if (res.data.code == 0) { if (res.data.code == 0) {
@ -89,10 +228,25 @@
} }
}) })
} }
const initApply = () => {
getApplyCameraListXha().then((res) => {
if (res.data.code == 0) {
res.data.data.map((val) => {
val.cameraInfo = JSON.parse(val.cameraInfo)
})
dataList.requested = res.data.data
delApply.value = true
} else {
message.warning('查询失败')
dataList.requested = []
}
})
}
init() init()
initApply()
mybus.on('selectCamera', (obj) => { mybus.on('selectCamera', (obj) => {
// 10 // 10
if (dataList.toBeApplied.length + dataList.requested.length > 10) { if (dataList.toBeApplied.length + dataList.requested.length >= 10) {
message.warning('最多只能申请10个摄像头') message.warning('最多只能申请10个摄像头')
return return
} }
@ -127,19 +281,6 @@
onBeforeUnmount(() => { onBeforeUnmount(() => {
mybus.off('selectCamera') mybus.off('selectCamera')
}) })
const data = [
'Racing car sprays burning fuel into crowd.',
'Japanese princess to wed commoner.',
'Australian walks 100km after outback crash.',
'Man charged over missing wedding girl.',
'Los Angeles battles huge wildfires.',
'Racing car sprays burning fuel into crowd.',
'Japanese princess to wed commoner.',
'Australian walks 100km after outback crash.',
'Man charged over missing wedding girl.',
'Los Angeles battles huge wildfires.',
]
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.infrastructureApplication { .infrastructureApplication {
@ -168,10 +309,12 @@
justify-content: flex-end; justify-content: flex-end;
} }
:deep(.ant-list-items) { :deep(.ant-list-items) {
width: 2.5rem;
height: 2.45rem; height: 2.45rem;
overflow-y: scroll; overflow-y: scroll;
} }
:deep(.ant-spin-nested-loading) { :deep(.ant-spin-nested-loading) {
width: 2.5rem;
height: 2.45rem; height: 2.45rem;
} }
} }

View File

@ -128,16 +128,21 @@
预约 预约
</a-button> </a-button>
</div> </div>
<!-- <div class="flex-space" style="justify-content: center;display:flex;height:40px;align-items:center;"> -->
<a-pagination <a-pagination
v-model:current="roomPage" v-model:current="roomPage"
v-model:pageSize="roomLimit" v-model:pageSize="roomLimit"
show-quick-jumper show-quick-jumper
:showTotal="total => `共 ${total} 项`"
:total="roomTotal" :total="roomTotal"
:page-size-options="pageSizeOptions" :page-size-options="pageSizeOptions"
@change="onRoomChange" @change="onRoomChange"
@showSizeChange="onShowSizeChange" @showSizeChange="onShowSizeChange"
show-size-changer show-size-changer
/> />
<!-- <el-button @click="onOkChange" class="queding" >确认</el-button>
</div> -->
</div> </div>
<div v-if="roomResult" style="display: grid"> <div v-if="roomResult" style="display: grid">
<a-table <a-table
@ -1440,10 +1445,14 @@
} }
} }
// //
const onRoomChange = (pageNumber) => { const onRoomChange = () => {
roomPage.value = pageNumber roomPage.value = pageNumber
searchData() searchData()
} }
const onOkChange = () => {
current.value = roomPage.value
searchData()
}
const onShowSizeChange = (current, pageSize) => { const onShowSizeChange = (current, pageSize) => {
roomLimit.value = pageSize roomLimit.value = pageSize
searchData() searchData()
@ -2471,6 +2480,16 @@
}) })
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.queding{
margin-left: 16px;
cursor: pointer;
background: #0058e1;
color: #ffffff;
width: 56px;
border-radius: 2px;
border: 1px #0058e1 solid;
margin-top: 17px;
}
.infrastructrueBox { .infrastructrueBox {
padding: 0.2rem; padding: 0.2rem;
background: #ffffff; background: #ffffff;
@ -2803,13 +2822,11 @@
} }
} }
:deep(.ant-pagination) {
float: right;
}
:deep(.ant-pagination) {
text-align: end; // :deep(.ant-pagination) {
} // text-align: end;
// }
} }
:deep(.ant-table-thead > tr > th) { :deep(.ant-table-thead > tr > th) {
color: #5580f7 !important; color: #5580f7 !important;

View File

@ -2579,7 +2579,7 @@
} }
:deep(.ant-pagination) { :deep(.ant-pagination) {
float: right; float: center;
} }
:deep(.ant-pagination) { :deep(.ant-pagination) {

View File

@ -41,7 +41,7 @@
:fetch-suggestions="querySearch" :fetch-suggestions="querySearch"
clearable clearable
class="input-with-select" class="input-with-select"
placeholder="请输入关键" placeholder="请输入关键"
@select=" @select="
(addressItem) => { (addressItem) => {
selectedAddress(addressItem, i) selectedAddress(addressItem, i)
@ -58,7 +58,7 @@
<el-autocomplete <el-autocomplete
v-else-if="addressType==2" v-else-if="addressType==2"
v-model="address" v-model="address"
placeholder="请输入地址" placeholder="请输入关键字"
:fetch-suggestions=" :fetch-suggestions="
(queryString, cb) => { (queryString, cb) => {
searchAddressByKeyWord(queryString, cb, i) searchAddressByKeyWord(queryString, cb, i)
@ -298,6 +298,8 @@ import { ElMessage } from 'element-plus'
} }
}, },
selectedAddress(item, index) { selectedAddress(item, index) {
mybus.emit('clearChoose')
this.getCameraAllPage()
// //
console.log('跳转', item) console.log('跳转', item)
const latLng = { const latLng = {
@ -511,29 +513,32 @@ import { ElMessage } from 'element-plus'
}, },
// //
async searchAddressByKeyWord(queryString, cb, indexX) { async searchAddressByKeyWord(queryString, cb, indexX) {
console.log('queryString, cb, indexX',queryString, cb, indexX) console.log('querySearch',queryString, cb,this.restaurants)
this.disasterPointIndex = indexX if(queryString){
/* const res = await bdPlaceSearch({ searchKey: queryString }); getCameraByCondition({
if (res.data) { pageNum: 1,
for(var i=0;i<res.data.length;i++){ pageSize: 10,
res.data[i].value = res.data[i].name; regionId: "70be8c5b664f4bcf869d82f2e8335051",
} type: "0",
cb(res.data); name:queryString,
}*/ }).then(res => {
const match = function (obj) { if(res.data.data[0]){
//console.log('ooooo',obj); res.data.data.map( val =>{
obj.result.map((item) => { val.location = {y:val.gpsY,x:val.gpsX}
item.value = item.address val.value = val.channelName
})
const results = res.data.data
cb(results)
}else{
ElMessage({
showClose: true,
message: '未查询到点位!',
type: 'warning',
}) })
cb(obj.result)
} }
if (!queryString) { })
}else{
cb([]) cb([])
} else {
var geoCodeParam = new SuperMap.GeoCodingParameter({
address: queryString,
})
this.addressMatchService.code(geoCodeParam, match)
} }
}, },
getCameraAllPage(page) { getCameraAllPage(page) {