hi-ucs/front/src/views/home/apply.vue

1095 lines
35 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<home-header></home-header>
<div id="apply-container">
<article>
<div class="from-card" v-if="applySuccess && !applyAll">
<AbilityToApplyFor :dataList="list"></AbilityToApplyFor>
</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"
>
<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>
<!-- 西海岸-摄像头-增加过期时间 -->
<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>
<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-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"
:getPopupContainer="(triggerNode) => triggerNode.parentNode"
show-search
:filterOption="true"
@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-form-item>
</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>
<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>
</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 v-if="iskfq && isXiHaiAn">
<a-row style="margin-top: 0.4rem">
<a-col :span="24">
<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>
<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
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>
</div>
</a-form>
</div>
<div class="success" v-else>
<div>
<img src="../../assets/home/success.png" alt="" />
</div>
<p>您已成功申请能力请耐心等待审批结果结果会第一时间通知您</p>
</div>
</div>
</article>
</div>
</div>
</template>
<script>
import { willApplyCameraBatchDelete } from '@/api/home'
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,
updateInstanceId,
submitApply,
applyAllApplication,
getUser,
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,
getAppListByDept,
} 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 {
name: '',
props: {},
components: {
HomeHeader,
AbilityToApplyFor,
},
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')))
const deptNameAll = ref([]) //所有部门名称
const deptFlage = ref(true) //判断是否存在默认部门名称
const applyAll = router.currentRoute.value.query.applyAll
// 融合服务id
const integrationServicesId =
router.currentRoute.value.query.integrationServicesId
// 融合服务详情
const integrationServicesItemInfo = ref(null)
const num = ref(0)
// 过期时间
const expireDateOptions = [
{
value: moment().add(30, 'days').format('YYYY-MM-DD HH:mm:ss'),
label: '30天',
},
{
value: moment().add(60, 'days').format('YYYY-MM-DD HH:mm:ss'),
label: '60天',
},
{
value: moment().add(90, 'days').format('YYYY-MM-DD HH:mm:ss'),
label: '90天',
},
]
const apiURL = window.SITE_CONFIG.apiURL
if (!applyAll) {
list.value.map((item) => {
item.arr.map((val) => {
let obj = item.children
? item.children.filter((type) => type.id == val.id)[0]
: val.type !== '应用资源'
if (obj) {
if (obj.type !== '应用资源') {
flag.value = true
}
}
})
if (item.checkedList) {
console.log(item)
num.value += Number(item.checkedList.length)
}
})
}
console.log('list', list.value)
const baseURL = window.SITE_CONFIG.apiURL
let record = ref('1')
const text = ref('')
// 西海岸-特殊处理
let wrjAndDbText = ['单兵设备', '无人机']
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 &&
list.value[0].arr[0] &&
list.value[0].arr[0].type == '基础设施'
) {
isCamera.value = true
}
const formName = reactive({
title: applyAll
? '全部应用资源申请'
: wrjAndDbText.includes(
list.value[0].arr &&
list.value[0].arr[0] &&
list.value[0].arr[0].type
)
? list.value[0].arr[0].type + '申请'
: list.value[0].children
? '申请' +
list.value[0].children
.filter((val) => val.id == list.value[0].checkedList[0])[0]
.resourceName.concat(
num.value > 1 ? '等' + num.value + '项能力' : ''
)
: '申请' + list.value[0].arr[0].resourceName, // 标题
// applicationSystem: '', // 应用系统
applicationScene: [], // 应用领域
applicationBackground: '', // 应用背景
effectWish: '', // 期望效果
user: '',
userId: '',
phone: '',
unit: '',
deptId: '',
system: [],
enclosure: '', //附件
enclosureName: '', //附件
})
const dataList = ref([])
const id = router.currentRoute.value.query.id
const taskId = router.currentRoute.value.query.taskId
const businessKey = ref(router.currentRoute.value.query.id)
if (id) {
getApplyForm(id).then((res) => {
console.log('修改==============>', res.data.data)
formName.applicationSystem = res.data.data.applicationSystem || ''
formName.applicationScene = res.data.data.applicationScene || []
formName.applicationBackground =
res.data.data.applicationBackground || ''
formName.effectWish = res.data.data.effectWish || ''
formName.phone = res.data.data.phone || ''
formName.enclosure = res.data.data.enclosure || ''
formName.enclosureName = res.data.data.enclosureName || ''
if (res.data.data.enclosure) {
fileList.value.push({
name: res.data.data.enclosureName,
url: res.data.data.enclosure,
})
}
})
}
getUser().then((res) => {
formName.user = res.data.data.realName
formName.userId = res.data.data.id
getUserInfo(formName.userId).then((res) => {
if (res.data.data.mobile) {
formName.phone = res.data.data.mobile
}
formName.unit = res.data.data.deptName
if (!formName.unit) {
deptFlage.value = false
//调用查询所有部门名称的接口
getDeptAll().then((res) => {
deptNameAll.value = res.data.data
})
}
})
})
//归属部门选中改变事件
const deptIdChangeFunction = (name) => {
deptNameAll.value.map((item) => {
if (item.name == name) {
formName.deptId = item.id
}
})
console.log(formName)
}
const applicationSceneOpthion = ref([])
getCategoryTreePage({
page: 1,
limit: 20,
dictTypeId: '1513712507692818433',
deFlage: 0,
}).then((res) => {
res.data.data.list.map((val) => {
applicationSceneOpthion.value.push({
value: val.dictLabel,
label: val.dictLabel,
})
})
})
const formRef = ref()
const applySuccess = ref(true)
const dataForm = {
processDefinitionKey: 'abilityprocess',
}
const callbacks = {
startProcessSuccessCallback: null,
startProcessErrorCallback: null,
formSaveSuccessCallback: null,
formSaveErrorCallback: null,
}
const instanceIdUrl = '/processForm/tabilityapplication/updateInstanceId'
const formUrl = '/processForm/tabilityapplication'
//退出返回上一页
const resetFields = () => {
window.history.go(-1)
}
// 跳转到能力集市
const jumpToDetailsPageconetent = () => {
setTimeout(() => {
router.push({
path: '/DetailsPageconetent',
query: {
select: DETAIL_PAGE_CONTENT_DEFAULT_TAB,
},
})
}, 1000)
}
// 提交申请
let submitFlag = true
const processStartHandle = () => {
formRef.value.validate().then(() => {
if (submitFlag) {
submitFlag = false
if (!formUrl) {
return message.error('请设置保存表单的URL')
}
if (!formName) {
return message.error('请设置表单名称')
}
if (id) {
endProcess({ instanceId: taskId }).then((end) => {
if (end.data.code == 0) {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
falgNum++
console.log(item.id)
if (item.id) {
ids.push(item.id)
}
} else {
infrastructureConfirm(item, falgNum, sxt)
}
})
})
if (formName.system.length !== 0) {
if (formName.applicationSystem.length == 0) {
formName.applicationSystem = ''
}
submitApply(formName).then((res) => {
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
// 融合服务
if (integrationServicesId) {
getIntegrationServicesDeatil(
integrationServicesId
).then((res) => {
updateIntegrationServiceAction()
})
}
jumpToDetailsPageconetent()
}
} else {
message.error('申请失败!')
}
})
}
}
})
} else {
if (!applyAll) {
let ids = []
let falgNum = 0
let sxt = true
formName.system = []
console.log('list==================', list.value)
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
falgNum++
}
})
})
list.value.map((val) => {
val.arr.map((item) => {
if (item.type !== '基础设施') {
formName.system.push({
resourceId: item.resourceId,
resourceName: item.resourceName,
})
falgNum++
console.log(item.id)
if (item.id) {
ids.push(item.id)
}
} else {
infrastructureConfirm(item, falgNum, sxt)
}
})
})
console.log('formName--ids-提交数据--------->', formName, ids)
if (formName.system.length !== 0) {
if (
formName.applicationSystem &&
formName.applicationSystem.length == 0
) {
formName.applicationSystem = ''
}
// 西海岸:单兵设备、无人机单独调取其他接口
if (wrjAndDbText.includes(list.value[0].arr[0].type)) {
handleWrjApply(formName)
return
}
submitApply(formName).then((res) => {
message.success('申请提交成功,请到消息中心查看!')
console.log('能力申请================>', res)
if (res.data.code == 0) {
if (ids && ids.length > 0) {
sgcDel({ ids: ids }).then((res) => {
if (res.data.msg === 'success') {
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
// 融合服务
if (integrationServicesId) {
getIntegrationServicesDeatil(
integrationServicesId
).then((res) => {
updateIntegrationServiceAction()
})
}
jumpToDetailsPageconetent()
}
} else {
message.error('申请失败!')
}
})
}
} else {
formName.applicationSystem = ''
applyAllApplication(formName).then((res) => {
if (res.data.code == 0) {
message.success('申请提交成功,请到消息中心查看!')
jumpToDetailsPageconetent()
} else {
message.error('申请失败!')
}
})
}
}
}
})
}
// 基础设施--数据下发
const infrastructureConfirm = (item, falgNum, sxt) => {
let obj = {}
Object.assign(obj, formName)
console.log('摄像头===============>', obj, item)
obj.system = []
if (item.note1 && typeof item.note1 == 'string') {
item.note1 = JSON.parse(item.note1)
}
let delArr = []
item.note1 &&
item.note1.map((jcss) => {
if (!jcss) {
return
}
let _itemData = {
resourceId: (jcss.idtCameraChannel || '') + '',
resourceName: jcss.channelName,
cameraId: jcss.channelId, // 改接口后删除
channelCode: jcss.channelCode,
channelId: jcss.channelId,
channelName: jcss.channelName,
checkStatus: jcss.checkStatus + '',
gpsX: jcss.gpsX,
gpsY: jcss.gpsY,
idtCameraChannel: (jcss.idtCameraChannel || '') + '',
nodeName: jcss.nodeName,
parentId: jcss.parentId,
status: jcss.status + '',
}
// 西海岸
if (isXiHaiAn.value) {
// _itemData.resourceId = jcss.channelId
_itemData.managementUnitName = jcss.managementUnitName
_itemData.cameraPointTypeName = jcss.cameraPointTypeName
delArr.push(jcss.id)
}
obj.system.push(_itemData)
})
submitApply(obj).then((res) => {
// applySuccess.value = false
console.log('摄像头申请================>', res)
if (res.data.msg == 'success') {
if (delArr.length > 0) {
willApplyCameraBatchDelete(delArr).then((res) => {
jumpToDetailsPageconetent()
})
} else if (item.id) {
sgcDel({ ids: [item.id] }).then((res1) => {
if (res1.data.msg === 'success') {
if (falgNum == 0 && sxt) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
}
mybus.emit('getSgcNum')
jumpToDetailsPageconetent()
}
})
} else {
if (res.data.msg === 'success' && falgNum == 0 && sxt) {
message.success('申请提交成功,请到消息中心查看!')
sxt = false
}
jumpToDetailsPageconetent()
}
}
})
}
// 启动流程
const startProcess = (processDefinitionKey, businessKey, formData) => {
var data = {
processDefinitionKey: processDefinitionKey,
businessKey: businessKey,
variables: formData,
}
startOfBusinessKey(data)
.then(({ data: res }) => {
if (res.code !== 0) {
if (callbacks.startProcessErrorCallback) {
callbacks.startProcessErrorCallback(res.data)
}
}
message({
message: '操作成功',
type: 'success',
duration: 500,
onClose: () => {
if (callbacks.startProcessSuccessCallback) {
callbacks.startProcessSuccessCallback(res.data)
}
},
})
if (instanceIdUrl) {
var params = qs.stringify({
processInstanceId: res.data.processInstanceId,
processDefinitionKey: processDefinitionKey,
businessKey: businessKey,
})
updateInstanceId(params).then(() => {})
}
})
.catch(() => {})
}
const options = ref([
{
value: '政法委',
label: '政法委',
},
{
value: '公安局',
label: '公安局',
},
{
value: '卫健委',
label: '卫健委',
},
{
value: '城市管理局',
label: '城市管理局',
},
{
value: '生态环境局',
label: '生态环境局',
},
{
value: '交通运输局',
label: '交通运输局',
},
])
const systemOptions = ref([])
const systemOptions2 = ref([])
const fileList = ref([])
// 应用系统下拉
const systemHandleChange = (value) => {
console.log(`selected ${value}`)
}
const systemHandleSearch = (value) => {
let valueArray = []
systemOptions.value.map((val) => {
valueArray.push(val.value)
})
if (valueArray.indexOf(value) == -1) {
systemOptions.value.push({
value: value,
label: value,
})
}
}
getAppListByDept().then((res) => {
console.log('res=====>', res.data.data)
if (res.data.code == 0) {
if (res.data.data.length == 0) {
message.warning('该关键词,暂无应用资源!')
} else {
// 过滤本单位的应用系统
res.data.data.map((val) => {
systemOptions2.value.push({
value: val.NAME,
label: val.NAME,
})
})
// console.log('第一次获取===================>', systemOptions2.value)
}
} else {
message.error('应用系统获取数据失败!')
}
})
const handleBlur = () => {
console.log('blur')
}
const arrId = []
const handleFocus = () => {
console.log('focus', systemOptions2.value, systemOptions.value)
for (let valueIndex of systemOptions2.value) {
if (arrId.indexOf(valueIndex['value']) == -1) {
arrId.push(valueIndex['value'])
systemOptions.value.push(valueIndex)
}
}
}
onBeforeUnmount(() => {
mybus.off('reomveOldData')
})
// 融合服务-更新
const updateIntegrationServiceAction = () => {
let _applyCount =
Number(integrationServicesItemInfo.value.applyCount || 0) + 1
let _data = Object.assign({}, integrationServicesItemInfo.value, {
applyCount: _applyCount,
})
updateIntegrationServices(_data)
.then((res) => {
console.log('res---更新--------->', res)
})
.catch((err) => {
console.log('err----更新-------->', err)
})
}
// 融合服务--详情
const getIntegrationServicesDeatil = (id) => {
return new Promise((resolve, reject) => {
getIntegrationDetail(id).then(
(res) => {
resolve(res)
if (res.data.code !== 0) {
return message.error(res.data.msg)
}
integrationServicesItemInfo.value = res.data.data || {}
},
(err) => {
reject(err)
message.error(err)
}
)
})
}
// 西海岸:单兵设备、无人机提交申请
const handleWrjApply = (formName) => {
let _data = {
deviceId:
formName.system &&
formName.system[0] &&
formName.system[0].resourceId,
deviceName:
formName.system &&
formName.system[0] &&
formName.system[0].resourceName,
title: formName.title,
name: formName.user,
phone: formName.phone,
dept: formName.unit, // 单位
applicationSystem: formName.applicationSystem, // 应用系统
applicationArea: JSON.stringify(formName.applicationScene), // 应用领域
demand: formName.applicationBackground, // 需求依据
}
soldierApply(_data)
.then((res) => {
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('申请失败!')
}
})
.catch((err) => {
message.error(err)
})
}
//文件上传成功回调
const roomUpload = (response) => {
if (response.file.response !== undefined) {
fileList.value = response.fileList
formName.attachment = response.file.response.data
}
}
return {
deptIdChangeFunction,
formRef,
formName,
deptNameAll,
instanceIdUrl,
formUrl,
processStartHandle,
resetFields,
startProcess,
options,
fileList,
list,
deptFlage,
headers: {
authorization: 'authorization-text',
},
// handleChange,
applySuccess,
disabled,
baseURL,
// beforeUpload,
dataList,
systemHandleChange,
systemHandleSearch,
handleBlur,
handleFocus,
systemOptions,
applicationSceneOpthion,
flag,
applyAll,
getIntegrationServicesDeatil,
isCamera,
isXiHaiAn,
expireDateOptions,
apiURL,
roomUpload,
iskfq,
}
},
}
</script>
<style scoped lang="less">
#apply-container {
// background-color: #f5f8fc;
height: 100%;
width: 100%;
margin: 0.8rem auto 0;
display: flex;
justify-content: space-between;
aside {
width: 282px;
height: 96%;
overflow-y: auto;
background-color: #fff;
margin: 1% 0 3%;
}
article {
width: 1090px;
height: 99%;
overflow-y: auto;
background-color: #fff;
margin: 1% auto;
}
.form-container {
padding: 20px 20px 30px 20px;
.title {
font-size: 20px;
color: #000;
font-weight: bold;
margin-bottom: 20px;
}
}
.base-info {
display: flex;
justify-content: space-between;
}
.flex-row-start {
justify-content: flex-start;
align-items: center;
}
:deep(.ant-form-item-label) {
label {
color: #666;
font-size: 16px;
&::after {
content: '';
}
}
}
:deep(.ant-form-item-required) {
&::before {
font-size: 8px;
margin-right: 10px;
}
}
:deep(.ant-input) {
border: 1px solid #e0e0e0;
border-radius: 6px;
}
.success {
div {
width: 100px;
margin: 80px auto 40px;
}
text-align: center;
font-size: 20px;
font-weight: bold;
color: #000;
}
}
.applicationScene {
:deep(.ant-select-selector) {
overflow-x: scroll;
}
:deep(.ant-select-selection-overflow) {
flex-wrap: nowrap;
}
}
textarea {
resize: none;
font-size: 14px;
}
.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>