Merge branch 'main' of http://123.132.248.154:10000/HC_YFZX/CaiYuanYiTiHua
commit
d589db07fd
|
|
@ -27,6 +27,8 @@ enum Api {
|
|||
GetCaseInfoById = '/api/DroneCaseInfoSingle/GetCaseInfoById',
|
||||
// 更新案件行政区划
|
||||
UpdateDroneCaseInfo = '/api/DroneCaseInfoSingle/UpdateDroneCaseInfo',
|
||||
// 督办流程
|
||||
Supervise = '/api/WFProcess/Supervise',
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -71,3 +73,6 @@ export function getCaseInfoById(params?: { id: string }) {
|
|||
}
|
||||
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 });
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ export const useUserStore = defineStore({
|
|||
if (subject != undefined) {
|
||||
const permissionStore = usePermissionStore();
|
||||
await permissionStore.buildRoutesAction();
|
||||
await router.replace(PageEnum.BASE_HOME);
|
||||
await router.replace(subject);
|
||||
}
|
||||
},
|
||||
setToken(info: string | undefined) {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
<a-tag color="processing" v-if="item.address">{{ item.address }}</a-tag>
|
||||
</div>
|
||||
<div class="item-info-batch">
|
||||
<a-tag color="success">{{ item.unitname }}</a-tag>
|
||||
<a-tag :color="`${item.supervisestate === 0? 'success': item.supervisestate === 1? 'warning': 'error'}`">{{ item.unitname }}</a-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -95,12 +95,20 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="button-div">
|
||||
<Icon
|
||||
style="font-size: 20px; color: #0960bd; cursor: pointer"
|
||||
icon="ant-design:audit-outlined"
|
||||
@click="goAudit(item)"
|
||||
/>
|
||||
<div class="data-list-item-control">
|
||||
<a-button
|
||||
size="small"
|
||||
:class="`reminders-button ${item.issupervise && 'reminder-button-select'}`"
|
||||
@click="changeSupervise(item)">
|
||||
{{item.issupervise? '已督办': '督办'}}
|
||||
</a-button>
|
||||
<div class="button-div">
|
||||
<Icon
|
||||
style="font-size: 20px; color: #0960bd; cursor: pointer"
|
||||
icon="ant-design:audit-outlined"
|
||||
@click="goAudit(item)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="no-data">
|
||||
|
|
@ -141,11 +149,12 @@
|
|||
import { onMounted, ref, defineEmits } from 'vue';
|
||||
import { StarOutlined } from '@ant-design/icons-vue';
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
import { getLoadTaskDetailList } from '@/api/bootstraps/index';
|
||||
import { getLoadTaskDetailList, updateSupervise } from '@/api/bootstraps/index';
|
||||
import { flowStore } from '@/store/modules/flow';
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo';
|
||||
import { Audit } from '@/views/demo/workflow/task/process/page';
|
||||
import { Empty } from 'ant-design-vue';
|
||||
import { message } from 'ant-design-vue';
|
||||
|
||||
const simpleImage = Empty.PRESENTED_IMAGE_SIMPLE;
|
||||
const emits = defineEmits(['changeTask', 'changeShowParent']);
|
||||
|
|
@ -207,6 +216,23 @@
|
|||
onMounted(() => {
|
||||
getTaskList();
|
||||
});
|
||||
const changeSupervise = (item) => {
|
||||
let params = {
|
||||
id: item.processid,
|
||||
supervise: 1,
|
||||
}
|
||||
if(item.issupervise === 1){
|
||||
params.supervise = 0
|
||||
}
|
||||
updateSupervise(params).then(res => {
|
||||
if(params.supervise === 1){
|
||||
message.success('成功发起督办')
|
||||
}else{
|
||||
message.success('取消督办成功')
|
||||
}
|
||||
getTaskList();
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<style lang="less">
|
||||
.full-modal {
|
||||
|
|
@ -349,6 +375,19 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.data-list-item-control{
|
||||
display: flex;
|
||||
margin-left:10px;
|
||||
align-items: center;
|
||||
.reminders-button{
|
||||
width: 58px;
|
||||
background: #086DEC;
|
||||
color: #FFF;
|
||||
}
|
||||
.reminder-button-select{
|
||||
background: rgb(242, 12, 0);
|
||||
}
|
||||
}
|
||||
.button-div {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
|
|
@ -357,7 +396,7 @@
|
|||
font-size: 20px;
|
||||
border: 1px solid #d9d9d9;
|
||||
border-radius: 50%;
|
||||
margin-left: 20px;
|
||||
margin-left: 10px;
|
||||
.collect-button:hover {
|
||||
color: rgb(255, 205, 42);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
v-if="formVisble"
|
||||
/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="flow" tab="流程信息" force-render>
|
||||
<a-tab-pane key="flow" tab="流程模板" force-render>
|
||||
<div class="process-design" :style="'display: flex; height:' + designerData.height">
|
||||
<process-viewer :key="`designer-${code}`" :xml="flowContent" v-if="processVisble" />
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -25,6 +25,13 @@
|
|||
<a-select-option :value="false">停用</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="流程分类" name="category">
|
||||
<a-select
|
||||
v-model:value="modalData.category"
|
||||
:options="categoryOptions"
|
||||
:field-names="{ label: 'itemName', value: 'itemValue' }"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="是否是外部链接" name="isExternal">
|
||||
<a-switch
|
||||
v-model:checked="modalData.isExternal"
|
||||
|
|
@ -62,13 +69,19 @@
|
|||
import { PlusOutlined } from '@ant-design/icons-vue';
|
||||
import { uploadFile } from '@/api/formrender/index';
|
||||
import { BasicModal, useModalInner } from '@/components/Modal';
|
||||
import { getLoad } from '@/api/sys/sysDataItemDetail';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const VITE_GLOB_API_URL_VAR = ref<String>(VITE_GLOB_API_URL + '/');
|
||||
|
||||
const emit = defineEmits(['submit']);
|
||||
const { uploadUrl } = useGlobSetting();
|
||||
|
||||
const formRef = ref();
|
||||
const categoryOptions = ref([]);
|
||||
const rules = {
|
||||
title: [{ required: true, message: '专栏名称不能为空', trigger: 'blur' }],
|
||||
linkOrApi: [{ required: true, message: '链接不能为空', trigger: 'blur' }],
|
||||
// linkOrApi: [{ required: true, message: '链接不能为空', trigger: 'blur' }],
|
||||
sort: [{ required: true, message: '排序号不能为空', trigger: 'blur' }],
|
||||
};
|
||||
|
||||
|
|
@ -87,19 +100,24 @@
|
|||
// 上传
|
||||
const fileList = ref([]);
|
||||
const imageUrl = ref<string>('');
|
||||
const { uploadUrl } = useGlobSetting();
|
||||
|
||||
// 弹窗
|
||||
const [registerModal, { closeModal }] = useModalInner((data: any) => {
|
||||
modaltitle.value = data.title;
|
||||
modalData.value = data.data;
|
||||
if (modalData.value.imgUrl) {
|
||||
imageUrl.value = 'http://192.168.10.102:9023' + '/' + data.data.imgUrl;
|
||||
imageUrl.value = VITE_GLOB_API_URL_VAR.value + data.data.imgUrl;
|
||||
} else {
|
||||
imageUrl.value = '';
|
||||
}
|
||||
// 流程分类
|
||||
getCategory();
|
||||
});
|
||||
|
||||
async function getCategory() {
|
||||
categoryOptions.value = await getLoad({ code: 'FlowSort' });
|
||||
}
|
||||
|
||||
// 上传文件接口
|
||||
const handleCustomRequest = (file) => {
|
||||
fileList.value = [];
|
||||
|
|
@ -108,7 +126,7 @@
|
|||
uploadFile(formData)
|
||||
.then((res: any) => {
|
||||
modalData.value.imgUrl = res[0].filePath;
|
||||
imageUrl.value = 'http://192.168.10.102:9023' + '/' + res[0].filePath;
|
||||
imageUrl.value = VITE_GLOB_API_URL_VAR.value + res[0].filePath;
|
||||
})
|
||||
.catch((err) => {
|
||||
file.onError(err);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
>
|
||||
<AsyncComponent ref="pcForm" />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="flow" tab="流程信息" force-render>
|
||||
<a-tab-pane key="flow" tab="流程模板" force-render>
|
||||
<div class="process-design" :style="'display: flex; height:' + designerData.height">
|
||||
<process-viewer :key="`designer-${code}`" :xml="flowContent" v-if="processVisble" />
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
>
|
||||
<AsyncComponent ref="pcForm" />
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="flow" tab="流程信息" force-render>
|
||||
<a-tab-pane key="flow" tab="流程模板" force-render>
|
||||
<div class="process-design" style="display: flex; height: calc( 100vh - 350px)">
|
||||
<process-viewer
|
||||
v-if="processVisble"
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="record"
|
||||
tab="流转记录" force-render>
|
||||
tab="操作记录" force-render>
|
||||
<div :style="'padding:10px 0 40px 0;overflow:auto; height:' + designerData.height">
|
||||
<a-timeline>
|
||||
<a-timeline-item
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
v-if="formVisble"
|
||||
/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="flow" tab="流程信息(审核)" force-render>
|
||||
<a-tab-pane key="flow" tab="流程模板" force-render>
|
||||
<div class="process-design" :style="'display: flex; height:' + designerData.height">
|
||||
<process-viewer
|
||||
v-if="processVisble"
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
</div>
|
||||
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="flow" tab="流程信息" force-render>
|
||||
<a-tab-pane key="flow" tab="流程模板" force-render>
|
||||
<div class="process-design" :style="'display: flex; height:' + designerData.height">
|
||||
<process-viewer
|
||||
v-if="processVisble"
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
/>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="record" tab="流转记录" force-render>
|
||||
<a-tab-pane key="record" tab="操作记录" force-render>
|
||||
<div :style="'padding:10px 0 40px 0;overflow:auto; height:' + designerData.height">
|
||||
<a-timeline>
|
||||
<a-timeline-item
|
||||
|
|
|
|||
|
|
@ -41,25 +41,26 @@
|
|||
class="subject_box_btn_div_line"
|
||||
src="/subject/subject_line.png"
|
||||
:style="{
|
||||
top: `${12 * getWrap(item.title) - 323}px`,
|
||||
top: `${12 * getWrap(item.title) - 313 - 12 * (spanWrap - 1)}px`,
|
||||
}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="subject_box_overflow">
|
||||
<!-- <Icon
|
||||
<Icon
|
||||
v-if="list.length > 7"
|
||||
style="font-size: 40px"
|
||||
class="subject_box_overflow_icon1"
|
||||
icon="ant-design:right-circle-outlined"
|
||||
@click="scrollToTarget"
|
||||
@click="scrollToElement('right')"
|
||||
/>
|
||||
<CaretRightOutlined />
|
||||
<Icon
|
||||
v-if="list.length > 7"
|
||||
style="font-size: 40px"
|
||||
class="subject_box_overflow_icon2"
|
||||
icon="ant-design:left-circle-outlined"
|
||||
@click="scrollToTarget"
|
||||
/> -->
|
||||
@click="scrollToElement('left')"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="subject_bottom">
|
||||
|
|
@ -75,9 +76,13 @@
|
|||
import { useUserStore } from '@/store/modules/user';
|
||||
import { getSpecialData } from '@/api/demo/system';
|
||||
import { onMounted, ref } from 'vue';
|
||||
import { message } from 'ant-design-vue';
|
||||
import Icon from '@/components/Icon/Icon.vue';
|
||||
import { getAppEnvConfig } from '@/utils/env';
|
||||
const { VITE_GLOB_API_URL } = getAppEnvConfig();
|
||||
const VITE_GLOB_API_URL_VAR = ref<String>(VITE_GLOB_API_URL + '/');
|
||||
|
||||
const contentArea = ref(null);
|
||||
const contentArea = ref<HTMLElement | null>(null);
|
||||
const list: any = ref([]);
|
||||
const userStore = useUserStore();
|
||||
const spanWrap = ref(1);
|
||||
|
|
@ -95,29 +100,34 @@
|
|||
onMounted(() => {
|
||||
getData();
|
||||
});
|
||||
const scrollToTarget = () => {
|
||||
if (!contentArea.value) return;
|
||||
// 让我们假设目标元素是items数组中的第三个元素
|
||||
// console.log(102, contentArea.value.children);
|
||||
// const targetElement = contentArea.value.children[2];
|
||||
// targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
};
|
||||
|
||||
// 按键控制滚动条
|
||||
const scrollToElement = async (type) => {
|
||||
if (contentArea.value) {
|
||||
if (type == 'left' && contentArea.value.scrollLeft != 0) {
|
||||
contentArea.value.scrollLeft = contentArea.value.scrollLeft - 245;
|
||||
}
|
||||
if (type == 'right' && contentArea.value.scrollLeft != contentArea.value.scrollWidth) {
|
||||
contentArea.value.scrollLeft = contentArea.value.scrollLeft + 245;
|
||||
}
|
||||
}
|
||||
};
|
||||
// 跳转
|
||||
async function getHome(item) {
|
||||
console.log(item);
|
||||
if (!item.linkOrApi) {
|
||||
message.error('跳转链接为空!');
|
||||
return;
|
||||
}
|
||||
if (item.isExternal) {
|
||||
window.location.href = item.linkOrApi;
|
||||
} else {
|
||||
window.location.href =
|
||||
window.location.href.slice(0, window.location.href.indexOf('#')) + '#' + item.linkOrApi;
|
||||
userStore.setSubject(item.linkOrApi);
|
||||
}
|
||||
// userStore.setSubject(item.linkOrApi);
|
||||
}
|
||||
// 获取图片地址
|
||||
function getImageUrl(imgUrl) {
|
||||
if (imgUrl) {
|
||||
return 'http://192.168.10.102:9023' + '/' + imgUrl;
|
||||
return VITE_GLOB_API_URL_VAR.value + imgUrl;
|
||||
} else {
|
||||
return '/subject/subject_default.png';
|
||||
}
|
||||
|
|
@ -226,6 +236,8 @@
|
|||
position: relative;
|
||||
top: -300px;
|
||||
left: 17px;
|
||||
width: 191px;
|
||||
height: 191px;
|
||||
}
|
||||
|
||||
&_line {
|
||||
|
|
@ -242,7 +254,7 @@
|
|||
justify-content: center;
|
||||
position: relative;
|
||||
top: -300px;
|
||||
left: 15px;
|
||||
left: 8px;
|
||||
width: 210px;
|
||||
height: 4px;
|
||||
// 字体样式
|
||||
|
|
|
|||
Loading…
Reference in New Issue