基础框架修改内容同步
parent
4a4c869dce
commit
383b09adf0
@ -1,206 +0,0 @@
|
|||||||
// WFProcess 流程模版基本信息
|
|
||||||
import { defHttp } from '@/utils/http/axios';
|
|
||||||
import {
|
|
||||||
taskCountParams,
|
|
||||||
caseInfoParams,
|
|
||||||
countModel,
|
|
||||||
taskInfoParams,
|
|
||||||
addCaseFavoriteParams,
|
|
||||||
updateCaseInfoParams,
|
|
||||||
} from './model/index';
|
|
||||||
|
|
||||||
enum Api {
|
|
||||||
// 获取待办任务统计数据
|
|
||||||
LoadTaskCount = '/api/DroneCaseInfoSingle/LoadTaskCount',
|
|
||||||
// 获取图斑信息统计数据
|
|
||||||
LoadDroneCaseInfoCount = '/api/DroneCaseInfoSingle/LoadDroneCaseInfoCount',
|
|
||||||
// 分页获取图斑信息列表
|
|
||||||
LoadDroneCaseInfoDetail = '/api/DroneCaseInfoSingle/LoadTasklList',
|
|
||||||
// 分页获取任务信息列表
|
|
||||||
LoadTaskDetailList = '/api/DroneCaseInfoSingle/LoadTaskDetailList',
|
|
||||||
// 收藏图斑
|
|
||||||
AddCaseFavorite = '/api/DroneCaseInfoSingle/AddCaseFavorite',
|
|
||||||
// 获取收藏图斑列表
|
|
||||||
FavoriteCaseList = '/api/DroneCaseinfo/FavoriteCaseList',
|
|
||||||
DeleteFavoriteCase = '/api/DroneCaseInfoSingle/DeleteFavoriteCase',
|
|
||||||
// 获取图斑详情
|
|
||||||
GetCaseInfoById = '/api/DroneCaseInfoSingle/GetCaseInfoById',
|
|
||||||
// 更新图斑行政区划
|
|
||||||
UpdateDroneCaseInfo = '/api/DroneCaseInfoSingle/UpdateDroneCaseInfo',
|
|
||||||
// 督办流程
|
|
||||||
Supervise = '/api/WFProcess/Supervise',
|
|
||||||
// 获取部门父级
|
|
||||||
LoadParents = '/api/Orgs/LoadParents',
|
|
||||||
// 审核列表收藏
|
|
||||||
AddtaskFavorite = '/api/DroneCaseInfoSingle/AddtaskFavorite',
|
|
||||||
// 审核列表删除收藏
|
|
||||||
DeleteTaskCase = '/api/DroneCaseInfoSingle/DeleteTaskCase',
|
|
||||||
// 获取当前账号可以看见的乡镇
|
|
||||||
loadStreet = '/api/DroneCaseInfoSingle/loadStreet',
|
|
||||||
// 违法处理,待办任务列表
|
|
||||||
LoadTaskIllegalDetailList = '/api/DroneCaseInfoSingle/LoadTaskIllegalDetailList',
|
|
||||||
// 分割图斑
|
|
||||||
SplitCase = '/api/DroneCaseInfoSingle/CaseSplit',
|
|
||||||
// 恢复还原
|
|
||||||
RecoverCase = '/api/DroneCaseInfoSingle/CaseRecover',
|
|
||||||
// 获取图斑中心点
|
|
||||||
GetPolygonCenter = '/api/DroneCaseInfoSingle/GetCenterPoints',
|
|
||||||
// 获取用户访问机构权限
|
|
||||||
GetUserOrgs = '/api/Check/GetOrgs',
|
|
||||||
// 大屏下发图斑统计
|
|
||||||
IssuedStatitical = '/api/DroneScreenDisplay/CaseOffenceXiaFa',
|
|
||||||
// 大屏核实新增统计
|
|
||||||
VerifyStatitical = '/api/DroneScreenDisplay/CaseOffenceCheckAdd',
|
|
||||||
// 大屏整改剩余统计
|
|
||||||
RectificationStatitical = '/api/DroneScreenDisplay/CaseOffenceModifyRemain',
|
|
||||||
// 获取案件图片坐标、方位角信息
|
|
||||||
LoadCaseImgList = '/api/DroneCaseInfoSingle/LoadCaseImgList',
|
|
||||||
// 获取范围内影像服务信息
|
|
||||||
GetIntersects = '/api/GeoTiffManager/GetIntersects',
|
|
||||||
// 获取网络环境
|
|
||||||
GetNetWorkEev = '/api/DroneCloudQuery/IsPublic',
|
|
||||||
// 获取其他专题或历史图斑图片
|
|
||||||
rebackzhuantipic = '/api/DroneCaseInfoSingle/rebackzhuantipic',
|
|
||||||
CopyImg = '/api/DroneCaseInfoSingle/CopyImg',
|
|
||||||
// 获取其他专题或历史图斑附件
|
|
||||||
rebackzhuantifujian = '/api/DroneCaseInfoSingle/rebackzhuantifujian',
|
|
||||||
Copyfujian = '/api/DroneCaseInfoSingle/Copyfujian',
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: getCaseFlowLog
|
|
||||||
*/
|
|
||||||
export function getLoadTaskCount(params?: taskCountParams) {
|
|
||||||
return defHttp.get<countModel>({ url: Api.LoadTaskCount, params });
|
|
||||||
}
|
|
||||||
export function getLoadStreet() {
|
|
||||||
return defHttp.get({ url: Api.loadStreet });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: getCaseFlowLog
|
|
||||||
*/
|
|
||||||
export function getLoadDroneCaseInfoCount(params?: taskCountParams) {
|
|
||||||
return defHttp.get<countModel>({ url: Api.LoadDroneCaseInfoCount, params });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: getCaseFlowLog
|
|
||||||
*/
|
|
||||||
export function getLoadDroneCaseInfoDetail(params?: caseInfoParams) {
|
|
||||||
return defHttp.get({ url: Api.LoadDroneCaseInfoDetail, params });
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @description: getCaseFlowLog
|
|
||||||
*/
|
|
||||||
export function getLoadTaskDetailList(params?: taskInfoParams) {
|
|
||||||
return defHttp.get({ url: Api.LoadTaskDetailList, params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function addCaseFavorite(params?: addCaseFavoriteParams) {
|
|
||||||
return defHttp.post({ url: Api.AddCaseFavorite, params });
|
|
||||||
}
|
|
||||||
export function addTaskFavorite(params?: { taskId: string; favoriteUserId: string }) {
|
|
||||||
return defHttp.post({ url: Api.AddtaskFavorite, params });
|
|
||||||
}
|
|
||||||
export function deleteFavoriteCase(params: string) {
|
|
||||||
return defHttp.post({ url: Api.DeleteFavoriteCase, data: params });
|
|
||||||
}
|
|
||||||
export function deleteTaskCase(params: string) {
|
|
||||||
return defHttp.post({ url: Api.DeleteTaskCase, data: params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getFavoriteCaseList(params?: { uid: string }) {
|
|
||||||
return defHttp.get({ url: Api.FavoriteCaseList, params });
|
|
||||||
}
|
|
||||||
export function getCaseInfoById(params?: { id: string }) {
|
|
||||||
return defHttp.get({ url: Api.GetCaseInfoById, params });
|
|
||||||
}
|
|
||||||
export const updateDroneCaseInfo = (params: updateCaseInfoParams) =>
|
|
||||||
defHttp.post({ url: Api.UpdateDroneCaseInfo, params });
|
|
||||||
|
|
||||||
export const updateSupervise = (params: { id: string; supervise: number }) =>
|
|
||||||
defHttp.post({ url: `${Api.Supervise}?id=${params.id}&supervise=${params.supervise}`, params });
|
|
||||||
|
|
||||||
export const getLoadParents = (params: { childId: Number }) =>
|
|
||||||
defHttp.get({ url: `${Api.LoadParents}?childId=${params.childId}` });
|
|
||||||
|
|
||||||
export function getLoadTaskIllegalDetailList(params?: taskInfoParams) {
|
|
||||||
return defHttp.get({ url: Api.LoadTaskIllegalDetailList, params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function splitCase(params) {
|
|
||||||
return defHttp.post({ url: Api.SplitCase, data: params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function recoverCase(params) {
|
|
||||||
return defHttp.post({ url: Api.RecoverCase, data: params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getPolygonCenter(params) {
|
|
||||||
return defHttp.get({ url: Api.GetPolygonCenter, params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getUserOrgs(params) {
|
|
||||||
return defHttp.get({ url: Api.GetUserOrgs, params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getIssuedStatitical(params) {
|
|
||||||
return defHttp.get({
|
|
||||||
url: Api.IssuedStatitical,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getVerifyStatitical(params) {
|
|
||||||
return defHttp.get({
|
|
||||||
url: Api.VerifyStatitical,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getRectificationStatitical(params) {
|
|
||||||
return defHttp.get({
|
|
||||||
url: Api.RectificationStatitical,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getLoadCaseImgList(params) {
|
|
||||||
return defHttp.get({
|
|
||||||
url: Api.LoadCaseImgList,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getIntersectTif(params) {
|
|
||||||
return defHttp.get({ url: Api.GetIntersects, params });
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getNetworkType() {
|
|
||||||
return defHttp.get({ url: Api.GetNetWorkEev });
|
|
||||||
}
|
|
||||||
export function rebackzhuantipic(params: { zhuanti; CaseId }) {
|
|
||||||
return defHttp.get({
|
|
||||||
url: Api.rebackzhuantipic,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function CopyImg(params: { caseid; images }) {
|
|
||||||
return defHttp.post({
|
|
||||||
url: Api.CopyImg,
|
|
||||||
data: params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function rebackzhuantifujian(params: { zhuanti; CaseId }) {
|
|
||||||
return defHttp.get({
|
|
||||||
url: Api.rebackzhuantifujian,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
export function Copyfujian(params: string[]) {
|
|
||||||
return defHttp.post({
|
|
||||||
url: Api.Copyfujian,
|
|
||||||
data: params,
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
export interface taskCountParams {
|
|
||||||
year?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface taskInfoParams {
|
|
||||||
page?: number;
|
|
||||||
limit?: number;
|
|
||||||
level?: number;
|
|
||||||
areaid?: string;
|
|
||||||
geomid?: string;
|
|
||||||
year?: number;
|
|
||||||
is_build_complete?: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface addCaseFavoriteParams {
|
|
||||||
id: string;
|
|
||||||
caseNo: string;
|
|
||||||
favoriteUserId: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface caseInfoParams {
|
|
||||||
page?: number;
|
|
||||||
limit?: number;
|
|
||||||
level?: number;
|
|
||||||
areaid?: string;
|
|
||||||
year?: number;
|
|
||||||
geomid?: string;
|
|
||||||
countyid?: string;
|
|
||||||
streetid?: string;
|
|
||||||
is_illegal?: number;
|
|
||||||
weifaleixing?: number;
|
|
||||||
measure_name?: string;
|
|
||||||
is_build_complete?: number;
|
|
||||||
handle_status_id?: number;
|
|
||||||
key?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface countItem {
|
|
||||||
areaid: string;
|
|
||||||
areaname: string;
|
|
||||||
level: number;
|
|
||||||
count: number;
|
|
||||||
}
|
|
||||||
export type countModel = countItem[];
|
|
||||||
|
|
||||||
export interface updateCaseInfoParams {
|
|
||||||
id?: string;
|
|
||||||
countyid?: string;
|
|
||||||
countyname?: string;
|
|
||||||
streetid?: string;
|
|
||||||
streetname?: string;
|
|
||||||
communityid?: string;
|
|
||||||
communityname?: string;
|
|
||||||
}
|
|
@ -0,0 +1,82 @@
|
|||||||
|
<!-- 开始节点配置 -->
|
||||||
|
<template>
|
||||||
|
<div class="subprocess">
|
||||||
|
<a-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="node"
|
||||||
|
labelAlign="left"
|
||||||
|
:label-col="labelCol"
|
||||||
|
:wrapper-col="wrapperCol"
|
||||||
|
:disabled="data.componentDisabled"
|
||||||
|
>
|
||||||
|
<a-form-item label="节点标识">
|
||||||
|
<a-input v-model:value="node.id" placeholder="请输入" readonly />
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { reactive, defineProps, ref, watch, onMounted } from 'vue';
|
||||||
|
import { getLoad, getVerisonsLoad } from '@/api/sys/WFSchemeInfo';
|
||||||
|
import { flowStore } from '@/store/modules/flow';
|
||||||
|
|
||||||
|
const flowWfDataStore = flowStore();
|
||||||
|
const labelCol = { span: 7 };
|
||||||
|
const wrapperCol = { span: 17 };
|
||||||
|
const props = defineProps({
|
||||||
|
element: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
schemeCode: String,
|
||||||
|
pageType: String,
|
||||||
|
pageView: String,
|
||||||
|
});
|
||||||
|
let node: any = ref({});
|
||||||
|
const data = reactive({
|
||||||
|
componentDisabled: props.pageType == 'detail' ? true : false,
|
||||||
|
});
|
||||||
|
const list: any = ref([]);
|
||||||
|
const verisons: any = ref([]);
|
||||||
|
watch(
|
||||||
|
() => props.element,
|
||||||
|
(newVal) => {
|
||||||
|
if (newVal.type == 'bpmn:Transaction') {
|
||||||
|
const currentNode = flowWfDataStore.getWfDataNode(newVal.id);
|
||||||
|
if (currentNode) {
|
||||||
|
node.value = currentNode;
|
||||||
|
} else {
|
||||||
|
node.value = newVal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
async function getSchemeList() {
|
||||||
|
const data = await getLoad();
|
||||||
|
list.value = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function changeScheme() {
|
||||||
|
const data = await getVerisonsLoad({ id: node.value.wfschemeId });
|
||||||
|
verisons.value = data;
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
getSchemeList();
|
||||||
|
if (props.element.type == 'bpmn:SubProcess') {
|
||||||
|
const currentNode = flowWfDataStore.getWfDataNode(props.element.id);
|
||||||
|
if (currentNode) {
|
||||||
|
node.value = currentNode;
|
||||||
|
} else {
|
||||||
|
node.value = props.element;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
defineExpose({});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
@ -1,152 +0,0 @@
|
|||||||
<template>
|
|
||||||
<a-spin :spinning="loading">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="subject" v-for="subject in fileList">
|
|
||||||
<div class="subject-name">{{ subject.zname }}</div>
|
|
||||||
<div class="show-file-div">
|
|
||||||
<div class="item-file" v-for="(item, index) in subject.val">
|
|
||||||
<a-checkbox
|
|
||||||
style="margin-right: 10px"
|
|
||||||
:checked="selectFile.some((obj) => obj === item.path)"
|
|
||||||
@change="changeSelect(selectFile.some((obj) => obj === item.path) ? 1 : 2, item.path)"
|
|
||||||
>
|
|
||||||
</a-checkbox>
|
|
||||||
<Icon
|
|
||||||
icon="material-symbols:attach-file"
|
|
||||||
:size="20"
|
|
||||||
style="cursor: pointer"
|
|
||||||
@click="hanlderPreViewFile(item.path)"
|
|
||||||
/>
|
|
||||||
{{ item.path }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="button-div">
|
|
||||||
<a-button type="primary" @click="save">保存</a-button>
|
|
||||||
</div>
|
|
||||||
<a-modal
|
|
||||||
v-model:open="previewFileModalVisible"
|
|
||||||
style="width: 100vw"
|
|
||||||
title="文件预览"
|
|
||||||
wrap-class-name="full-modal"
|
|
||||||
>
|
|
||||||
<FilePreview v-if="previewFileModalVisible" :fileUrl="previewFileUrl"></FilePreview>
|
|
||||||
<template #footer>
|
|
||||||
<a-button key="cancel" @click="handleCancelPreviewFile">取消</a-button>
|
|
||||||
<a-button key="confirm" type="primary" @click="handlerDownloadFle">下载</a-button>
|
|
||||||
</template>
|
|
||||||
</a-modal>
|
|
||||||
</a-spin>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { defineProps, onMounted, ref, defineEmits } from 'vue';
|
|
||||||
import { rebackzhuantifujian, Copyfujian } from '@/api/tiankongdi/index';
|
|
||||||
import Icon from '@/components/Icon/Icon.vue';
|
|
||||||
import { message } from 'ant-design-vue';
|
|
||||||
import { getZhuantiName } from '@/utils/global';
|
|
||||||
import FilePreview from '@/components/Upload/src/components/FilePreview.vue';
|
|
||||||
|
|
||||||
const props = defineProps(['server']);
|
|
||||||
const emits = defineEmits(['save']);
|
|
||||||
const fileList = ref<string[]>([]);
|
|
||||||
const selectFile = ref<string[]>([]);
|
|
||||||
const loading = ref(false);
|
|
||||||
const previewFileModalVisible = ref(false);
|
|
||||||
const previewFileUrl = ref('');
|
|
||||||
onMounted(() => {
|
|
||||||
loading.value = true;
|
|
||||||
let caseid = sessionStorage.getItem('SelectOtherId');
|
|
||||||
rebackzhuantifujian({ CaseId: caseid, zhuanti: getZhuantiName() })
|
|
||||||
.then((res) => {
|
|
||||||
console.log('res', res);
|
|
||||||
fileList.value = res;
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const changeSelect = (type, item) => {
|
|
||||||
switch (type) {
|
|
||||||
case 1:
|
|
||||||
selectFile.value = selectFile.value.filter((useItem) => useItem !== item);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
selectFile.value.push(item);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const save = () => {
|
|
||||||
if (selectFile.value.length <= 0) {
|
|
||||||
message.warning('至少选择一个文件');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
loading.value = true;
|
|
||||||
Copyfujian(selectFile.value)
|
|
||||||
.then((res) => {
|
|
||||||
console.log(res);
|
|
||||||
emits('save', res);
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
const hanlderPreViewFile = (url) => {
|
|
||||||
previewFileUrl.value = `${props.server}/${url}`;
|
|
||||||
previewFileModalVisible.value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
const handlerDownloadFle = () => {
|
|
||||||
window.open(previewFileUrl.value, 'mozillaTab');
|
|
||||||
};
|
|
||||||
const handleCancelPreviewFile = () => {
|
|
||||||
previewFileModalVisible.value = false;
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.modal-content {
|
|
||||||
min-height: 500px;
|
|
||||||
padding: 0px 20px;
|
|
||||||
max-height: 678px;
|
|
||||||
overflow: auto;
|
|
||||||
scrollbar-width: none;
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
.subject {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
.subject-name {
|
|
||||||
height: 30px;
|
|
||||||
background-color: #8b8b8b;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 500;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.show-file-div {
|
|
||||||
width: 100%;
|
|
||||||
.item-file {
|
|
||||||
display: flex;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
.item-file:hover {
|
|
||||||
background-color: #f4f4f4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.button-div {
|
|
||||||
display: flex;
|
|
||||||
justify-content: end;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -1,155 +0,0 @@
|
|||||||
<template>
|
|
||||||
<a-spin :spinning="loading">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="subject" v-for="subject in imageList">
|
|
||||||
<div class="subject-name">{{ subject.zname }}</div>
|
|
||||||
<div class="show-image-div">
|
|
||||||
<div class="image-item" v-for="(item, index) in subject.val">
|
|
||||||
<a-image
|
|
||||||
style="width: 100px; height: 100px"
|
|
||||||
:src="`${props.server}/${item.FilePath}`"
|
|
||||||
></a-image>
|
|
||||||
<div
|
|
||||||
class="select-div"
|
|
||||||
@click="
|
|
||||||
changeSelect(
|
|
||||||
selectImage.some((obj) => obj === item.FilePath) ? 1 : 2,
|
|
||||||
item.FilePath,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<Icon
|
|
||||||
v-if="selectImage.some((obj) => obj === item.FilePath)"
|
|
||||||
icon="material-symbols-light:check-circle"
|
|
||||||
:size="25"
|
|
||||||
style="color: #18a058"
|
|
||||||
/>
|
|
||||||
<Icon
|
|
||||||
v-else
|
|
||||||
icon="material-symbols-light:check-circle-outline"
|
|
||||||
:size="25"
|
|
||||||
style="color: #cacdcd"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="button-div">
|
|
||||||
<a-button type="primary" @click="save">保存</a-button>
|
|
||||||
</div>
|
|
||||||
</a-spin>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { defineProps, onMounted, ref, defineEmits } from 'vue';
|
|
||||||
import { rebackzhuantipic, CopyImg } from '@/api/tiankongdi/index';
|
|
||||||
import Icon from '@/components/Icon/Icon.vue';
|
|
||||||
import { message } from 'ant-design-vue';
|
|
||||||
import { getZhuantiName } from '@/utils/global';
|
|
||||||
|
|
||||||
const props = defineProps(['caseid', 'server', 'zhuanti']);
|
|
||||||
const emits = defineEmits(['save']);
|
|
||||||
const imageList = ref<string[]>([]);
|
|
||||||
const selectImage = ref<string[]>([]);
|
|
||||||
const loading = ref(false);
|
|
||||||
onMounted(() => {
|
|
||||||
loading.value = true;
|
|
||||||
let caseid = sessionStorage.getItem('SelectOtherId');
|
|
||||||
rebackzhuantipic({ CaseId: caseid, zhuanti: getZhuantiName() })
|
|
||||||
.then((res) => {
|
|
||||||
imageList.value = res;
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const changeSelect = (type, item) => {
|
|
||||||
switch (type) {
|
|
||||||
case 1:
|
|
||||||
selectImage.value = selectImage.value.filter((useItem) => useItem !== item);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
selectImage.value.push(item);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
const save = () => {
|
|
||||||
if (selectImage.value.length <= 0) {
|
|
||||||
message.warning('至少选择一张图片');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
loading.value = true;
|
|
||||||
let params = {
|
|
||||||
caseid: sessionStorage.getItem('SelectOtherId'),
|
|
||||||
images: selectImage.value,
|
|
||||||
};
|
|
||||||
CopyImg(params)
|
|
||||||
.then((res) => {
|
|
||||||
emits('save', res);
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
loading.value = false;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.modal-content {
|
|
||||||
min-height: 500px;
|
|
||||||
padding: 0px 20px;
|
|
||||||
max-height: 678px;
|
|
||||||
overflow: auto;
|
|
||||||
scrollbar-width: none;
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
.subject {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
.subject-name {
|
|
||||||
height: 30px;
|
|
||||||
background-color: #8b8b8b;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 500;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.show-image-div {
|
|
||||||
width: 100%;
|
|
||||||
// height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
align-content: flex-start;
|
|
||||||
.image-item {
|
|
||||||
position: relative;
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
margin-right: 12px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
.select-div {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0px;
|
|
||||||
height: 20px;
|
|
||||||
width: 100%;
|
|
||||||
height: 30px;
|
|
||||||
background-color: #00000075;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.button-div {
|
|
||||||
display: flex;
|
|
||||||
justify-content: end;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
Loading…
Reference in New Issue