Compare commits

...

10 Commits

6 changed files with 2714 additions and 3049 deletions

Binary file not shown.

View File

@ -8,93 +8,36 @@
</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>
@ -102,102 +45,61 @@
</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="[
{ required: true, message: '请输入需求依据' },
{ min: 50, message: '需求依据最少为50个字' },
]">
<a-textarea placeholder="请输入需求依据" v-model:value="formName.applicationBackground" :rows="4" />
</a-form-item>
</div>
<div>
<a-form-item
label="需求依据"
name="applicationBackground"
:rules="[
{ required: true, message: '请输入需求依据' },
{ min: 50, message: '需求依据最少为50个字' },
]"
>
<a-textarea
placeholder="请输入需求依据"
v-model:value="formName.applicationBackground"
:rows="4"
/>
<!-- 西海岸--附件上传 -->
<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-button>
<upload-outlined>选择上传附件</upload-outlined>
</a-button>
<span>
支持docdocxPDF等格式支撑材料上传文件大小不超过100M
</span>
</a-upload>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24" style="margin-left: 106px">
<a href="/static/download/感知资源申请表.doc" download="感知资源申请表">感知资源申请表模板下载</a>
</a-col>
</a-row>
</div>
<div class="bottom-btn">
<a-button
style="
width: 80px;
height: 38px;
margin-right: 20px;
background: #e1edfa;
color: #0087ff;
font-size: 14px;
border-radius: 6px;
border: none;
padding: 0;
text-align: center;
"
type="primary"
html-type="cancle"
@click="resetFields()"
>
<a-button class="cancel-apply" type="primary" html-type="cancle" @click="resetFields()">
退出申请
</a-button>
<a-button
style="
width: 80px;
height: 38px;
background: #0087ff;
color: #fff;
font-size: 14px;
border-radius: 6px;
border: none;
padding: 0;
text-align: center;
"
type="primary"
html-type="submit"
@click="processStartHandle()"
>
<a-button class="confirm-apply" type="primary" html-type="submit" @click="processStartHandle()">
提交申请
</a-button>
</div>
@ -215,14 +117,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,
@ -233,17 +135,17 @@
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 * as moment from 'moment'
export default {
export default {
name: '',
props: {},
components: {
@ -279,6 +181,7 @@
label: '90天',
},
]
const apiURL = window.SITE_CONFIG.apiURL
if (!applyAll) {
list.value.map((item) => {
@ -307,6 +210,9 @@
const isXiHaiAn = ref(whoShow.itShowXiHaiAn)
// 西--
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 == '开发区公安分局'))
if (
list.value[0] &&
list.value[0].arr &&
@ -560,6 +466,7 @@
handleWrjApply(formName)
return
}
submitApply(formName).then((res) => {
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
@ -693,10 +600,10 @@
processDefinitionKey: processDefinitionKey,
businessKey: businessKey,
})
updateInstanceId(params).then(() => {})
updateInstanceId(params).then(() => { })
}
})
.catch(() => {})
.catch(() => { })
}
const options = ref([
{
@ -726,34 +633,6 @@
])
const systemOptions = ref([])
const systemOptions2 = ref([])
const handleChange = (info) => {
if (info.file.status !== 'uploading') {
// console.log(info.file, info.fileList)
}
if (info.file.status === 'done') {
message.success(`${info.file.name} 上传成功`)
formName.enclosure = info.file.response.data
formName.enclosureName = info.file.name
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 上传失败`)
}
}
const beforeUpload = (file) => {
const isPNG =
file.type === 'image/png' ||
'image/doc' ||
'image/docx' ||
'image/jpg' ||
'image/png' ||
'image/jpeg' ||
'image/pdf' ||
'image/xlxs' ||
'image/ppt'
if (!isPNG) {
message.error(`上传失败`)
}
return isPNG || Upload.LIST_IGNORE
}
const fileList = ref([])
//
const systemHandleChange = (value) => {
@ -868,9 +747,18 @@
}
soldierApply(_data)
.then((res) => {
if (res.data.code == 0) {
message.success(res.data.msg)
jumpToDetailsPageconetent()
if (res.data.msg === 'success') {
message.success('申请提交成功,请到消息中心查看!')
setTimeout(() => {
router.push({
path: '/DetailsPageconetent',
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
},
})
}, 1000)
} else {
message.error('申请失败!')
}
@ -880,6 +768,14 @@
})
}
//
const roomUpload = (response) => {
if (response.file.response !== undefined) {
fileList.value = response.fileList
formName.attachment = response.file.response.data
}
}
return {
deptIdChangeFunction,
formRef,
@ -897,11 +793,11 @@
headers: {
authorization: 'authorization-text',
},
handleChange,
// handleChange,
applySuccess,
disabled,
baseURL,
beforeUpload,
// beforeUpload,
dataList,
systemHandleChange,
systemHandleSearch,
@ -915,12 +811,15 @@
isCamera,
isXiHaiAn,
expireDateOptions,
apiURL,
roomUpload,
iskfq,
}
},
}
}
</script>
<style scoped lang="less">
#apply-container {
#apply-container {
// background-color: #f5f8fc;
height: 100%;
width: 100%;
@ -999,9 +898,9 @@
font-weight: bold;
color: #000;
}
}
}
.applicationScene {
.applicationScene {
:deep(.ant-select-selector) {
overflow-x: scroll;
}
@ -1009,16 +908,41 @@
: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 {
width: 80px;
height: 38px;
margin-right: 20px;
background: #e1edfa;
color: #0087ff;
font-size: 14px;
border-radius: 6px;
border: none;
padding: 0;
text-align: center;
}
.confirm-apply {
width: 80px;
height: 38px;
background: #0087ff;
color: #fff;
font-size: 14px;
border-radius: 6px;
border: none;
padding: 0;
text-align: center;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,7 @@
<p>
<span>应用背景{{ props.refObj.applicationBackground }}</span>
</p>
<p>
<p v-if="!whoShow1.itShowXiHaiAn">
<span>期望效果{{ props.refObj.effectWish }}</span>
</p>
<p v-if="props.refObj.enclosure">
@ -163,6 +163,7 @@
@click.stop="openVideo(val)">
视频预览
</a-button>
<span class="channelName" style="color:#ff7875" v-if="whoShow1.itShowXiHaiAn && !item.ended" >该流程已终止</span>
</div>
<div class="ability-bottom">

View File

@ -130,9 +130,9 @@ const columns = [
key: 'comment',
},
{
title: '任务时长/秒',
dataIndex: 'durationInSeconds',
key: 'durationInSeconds',
title: '任务时长',
dataIndex: 'duration',
key: 'duration',
},
]
const getInfo = () => {

View File

@ -33,7 +33,7 @@
</template>
<div class="content-body-title">
<span>
名称{{ item.cameraList ? item.system : item.title }}
名称{{ item.cameraList ? item.system : (item.title || item.name) }}
</span>
<div></div>
</div>
@ -48,7 +48,8 @@
</div>
<div class="content-body-bottom">
<div>申请日期{{ item.createDate || item.startTime }}</div>
<div></div>
<!-- 西海岸--增加过期时间显示 -->
<div v-if="isXiHaiAn">过期时间{{ item.expireDate || '' }}</div>
</div>
<div class="button-box">
<div class="button" v-if="typeName == '设备申请' && phoneSate.includes(item.state)"
@ -86,8 +87,10 @@
</div>
</div>
<a-empty v-else />
<a-modal bodyStyle="padding:0.1rem 0" v-model:visible="detailsVisible" title="申请详情" style="width: 900px"
:footer="null" destroyOnClose="true" :maskClosable="false">
<!-- :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>
@ -237,9 +240,17 @@ function changeApplyState(item, index) {
}
}
const cilckRowData = ref({})
let detailModalTitle = '申请详情';
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) {
@ -251,7 +262,6 @@ const showDetail = (item) => {
getByApplyFlag(item.applyFlag).then((res) => {
if (res.data.code == 0) {
refObj.value = res.data.data
detailsVisible.value = true
processDefinitionName.value = item.processDefinitionName
businessKey.value = item.businessKey