fix : 修复项目实施/归档上传附件显示,
This commit is contained in:
@@ -15,3 +15,17 @@ export const uploadFileList = (data) => {
|
|||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
export const searchImplementationFileList = (params) => {
|
||||||
|
return request({
|
||||||
|
url: '/workflow/mosr/attachment/implementation/list',
|
||||||
|
method: "get",
|
||||||
|
params: params
|
||||||
|
});
|
||||||
|
};
|
||||||
|
export const switchAttachmentState = (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/workflow/mosr/project/filing/attachment/switch',
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
uploadState: {
|
uploadState: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: false
|
||||||
},
|
},
|
||||||
loading: {
|
loading: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|||||||
@@ -17,7 +17,9 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>主次账号切换</li>
|
<li>主次账号切换</li>
|
||||||
<li class="avatar-li" v-for="item in accountList" @click="accountChange(item.userId)">
|
<li class="avatar-li" v-for="item in accountList" @click="accountChange(item.userId)">
|
||||||
<el-avatar><span>{{ item.nickName }}</span></el-avatar>
|
<el-badge :value="item.taskCount">
|
||||||
|
<el-avatar>{{ item.nickName }}</el-avatar>
|
||||||
|
</el-badge>
|
||||||
<div class="right-li">
|
<div class="right-li">
|
||||||
<div class="name-line">
|
<div class="name-line">
|
||||||
<span v-if="item.accountType==='0'" class="zhu">主</span>
|
<span v-if="item.accountType==='0'" class="zhu">主</span>
|
||||||
@@ -129,12 +131,20 @@ const handleLogout = () => {
|
|||||||
:deep(.el-avatar--circle) {
|
:deep(.el-avatar--circle) {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
line-height: 40px;
|
line-height: 40px;
|
||||||
margin-right: 10px;
|
margin-right: 14px;
|
||||||
background-color: #8a7243;
|
background-color: #8a7243;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
:deep(.el-badge){
|
||||||
|
padding: 0 2px;
|
||||||
|
}
|
||||||
|
:deep(.el-badge__content.is-fixed) {
|
||||||
|
position: absolute;
|
||||||
|
right: 26px;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.navbar {
|
.navbar {
|
||||||
height: 65px;
|
height: 65px;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const router = useRouter()
|
|||||||
const activeName = ref('50')
|
const activeName = ref('50')
|
||||||
const attachment = ref({})
|
const attachment = ref({})
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const uploadState = ref(true)
|
const uploadState = ref(false)
|
||||||
const fileList = ref([])
|
const fileList = ref([])
|
||||||
const projectId = ref(route.query.id)
|
const projectId = ref(route.query.id)
|
||||||
const requirementId = ref(route.query.requirementId)
|
const requirementId = ref(route.query.requirementId)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
<script setup lang="jsx">
|
<script setup lang="jsx">
|
||||||
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
|
import fvSelect from '@/fvcomponents/fvSelect/index.vue'
|
||||||
import {toThousands} from '@/utils/changePrice.js'
|
import {toThousands} from '@/utils/changePrice.js'
|
||||||
|
import {switchAttachmentState} from "@/api/project-manage/attachment";
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const shortcuts = [
|
const shortcuts = [
|
||||||
@@ -244,6 +245,12 @@ const tableConfig = reactive({
|
|||||||
if (buttons.has("edit")) {
|
if (buttons.has("edit")) {
|
||||||
btn.push({label: '编辑', prem: ['project:management:filing:conclusion'], func: () => handleEdit(row), type: 'primary'})
|
btn.push({label: '编辑', prem: ['project:management:filing:conclusion'], func: () => handleEdit(row), type: 'primary'})
|
||||||
}
|
}
|
||||||
|
if (buttons.has("openFileSwitch")) {
|
||||||
|
btn.push({label: '开启上传', prem: ['project:management:filing:conclusion'], func: () => handleOpenUpload(row), type: 'primary'})
|
||||||
|
}
|
||||||
|
if (buttons.has("closeFileSwitch")) {
|
||||||
|
btn.push({label: '关闭上传', prem: ['project:management:filing:conclusion'], func: () => handleCloseUpload(row), type: 'primary'})
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<div style={{width: '100%'}}>
|
<div style={{width: '100%'}}>
|
||||||
{
|
{
|
||||||
@@ -316,4 +323,24 @@ const handleEdit = (row) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const handleOpenUpload=(row)=>{
|
||||||
|
let params={
|
||||||
|
open: true,
|
||||||
|
projectId: row.projectId
|
||||||
|
}
|
||||||
|
switchAttachmentState(params).then(res=>{
|
||||||
|
console.log('res',res)
|
||||||
|
tableIns.value.refresh()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleCloseUpload=(row)=>{
|
||||||
|
let params={
|
||||||
|
open: false,
|
||||||
|
projectId: row.projectId
|
||||||
|
}
|
||||||
|
switchAttachmentState(params).then(res=>{
|
||||||
|
console.log('res',res)
|
||||||
|
tableIns.value.refresh()
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -29,15 +29,14 @@
|
|||||||
|
|
||||||
<script setup lang="jsx">
|
<script setup lang="jsx">
|
||||||
import {downloadFile} from "@/api/project-demand";
|
import {downloadFile} from "@/api/project-demand";
|
||||||
import {searchFileList} from "@/api/project-manage/attachment.js";
|
|
||||||
import {getTags} from "@/api/project-manage";
|
import {getTags} from "@/api/project-manage";
|
||||||
import {ElLoading, ElNotification} from "element-plus";
|
import {ElNotification} from "element-plus";
|
||||||
import {computed, ref} from "vue";
|
|
||||||
import {getBaseInfoApi} from "@/components/steps/api";
|
import {getBaseInfoApi} from "@/components/steps/api";
|
||||||
|
import {searchImplementationFileList} from "@/api/project-manage/attachment";
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const uploadState = ref(true)
|
const uploadState = ref(false)
|
||||||
const attachment = reactive({
|
const attachment = reactive({
|
||||||
tag: ''
|
tag: ''
|
||||||
})
|
})
|
||||||
@@ -140,7 +139,7 @@ const handleSearch = () => {
|
|||||||
})
|
})
|
||||||
params.tag = attachment.tag
|
params.tag = attachment.tag
|
||||||
}
|
}
|
||||||
searchFileList(params).then(res => {
|
searchImplementationFileList(params).then(res => {
|
||||||
showTable.value = false
|
showTable.value = false
|
||||||
if (res.code === 1000) {
|
if (res.code === 1000) {
|
||||||
otherFileList.value = res.data.fileList
|
otherFileList.value = res.data.fileList
|
||||||
|
|||||||
@@ -1,118 +1,119 @@
|
|||||||
//审批节点默认属性
|
//审批节点默认属性
|
||||||
export const APPROVAL_PROPS = {
|
export const APPROVAL_PROPS = {
|
||||||
assignedType: "ASSIGN_USER", //审批类型
|
assignedType: "ASSIGN_USER", //审批类型
|
||||||
mode: "AND", //会签模式
|
mode: "AND", //会签模式
|
||||||
sign: false, //是否签字
|
sign: false, //是否签字
|
||||||
headerBgc: '#ff943e', //节点背景颜色
|
headerBgc: '#ff943e', //节点背景颜色
|
||||||
nobody: { //没有审批的的时候需要的操作
|
nobody: { //没有审批的的时候需要的操作
|
||||||
handler: "TO_PASS", //操作
|
handler: "TO_PASS", //操作
|
||||||
assignedUser: [] //审批人列表
|
assignedUser: [] //审批人列表
|
||||||
|
},
|
||||||
|
matrixApproval: true,
|
||||||
|
timeLimit: { //边界事件
|
||||||
|
timeout: { //超时提醒时间
|
||||||
|
unit: "H",
|
||||||
|
value: 0
|
||||||
},
|
},
|
||||||
timeLimit: { //边界事件
|
handler: { //超时提醒触发时候的操作
|
||||||
timeout: { //超时提醒时间
|
type: "REFUSE", //操作
|
||||||
unit: "H",
|
notify: {
|
||||||
value: 0
|
once: true, //是否循环
|
||||||
},
|
hour: 1
|
||||||
handler: { //超时提醒触发时候的操作
|
}
|
||||||
type: "REFUSE", //操作
|
}
|
||||||
notify: {
|
},
|
||||||
once: true, //是否循环
|
assignedUser: [], // 审批人列表
|
||||||
hour: 1
|
formPerms: [], //表单权限
|
||||||
}
|
selfSelect: { //用户自选
|
||||||
}
|
multiple: false //用户自选时是否是多选
|
||||||
},
|
},
|
||||||
assignedUser: [], // 审批人列表
|
leaderTop: { //领导
|
||||||
formPerms: [], //表单权限
|
endCondition: "TOP",
|
||||||
selfSelect: { //用户自选
|
endLevel: 1,
|
||||||
multiple: false //用户自选时是否是多选
|
},
|
||||||
},
|
leader: { //第几级领导
|
||||||
leaderTop: { //领导
|
level: 1
|
||||||
endCondition: "TOP",
|
},
|
||||||
endLevel: 1,
|
listener: {
|
||||||
},
|
state: false,
|
||||||
leader: { //第几级领导
|
list: []
|
||||||
level: 1
|
},
|
||||||
},
|
roleList: [], //角色列表
|
||||||
listener:{
|
refuse: { //拒绝的操作
|
||||||
state: false,
|
type: 'TO_END', //驳回规则 TO_END TO_NODE TO_BEFORE
|
||||||
list:[]
|
target: '' //驳回到指定ID的节点
|
||||||
},
|
},
|
||||||
roleList: [], //角色列表
|
formUser: '' //表单用户
|
||||||
refuse: { //拒绝的操作
|
|
||||||
type: 'TO_END', //驳回规则 TO_END TO_NODE TO_BEFORE
|
|
||||||
target: '' //驳回到指定ID的节点
|
|
||||||
},
|
|
||||||
formUser: '' //表单用户
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//根节点默认属性
|
//根节点默认属性
|
||||||
export const ROOT_PROPS = {
|
export const ROOT_PROPS = {
|
||||||
assignedUser: [], //审批人
|
assignedUser: [], //审批人
|
||||||
formPerms: [] //表单权限
|
formPerms: [] //表单权限
|
||||||
}
|
}
|
||||||
|
|
||||||
//条件节点默认属性
|
//条件节点默认属性
|
||||||
export const CONDITION_PROPS = {
|
export const CONDITION_PROPS = {
|
||||||
groupsType: "OR", //条件组逻辑关系 OR、AND
|
groupsType: "OR", //条件组逻辑关系 OR、AND
|
||||||
groups: [
|
groups: [
|
||||||
{
|
{
|
||||||
groupType: "AND", //条件组内条件关系 OR、AND
|
groupType: "AND", //条件组内条件关系 OR、AND
|
||||||
cids: [], //条件ID集合
|
cids: [], //条件ID集合
|
||||||
conditions: [] //组内子条件
|
conditions: [] //组内子条件
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
expression: "" //自定义表达式,灵活构建逻辑关系
|
expression: "" //自定义表达式,灵活构建逻辑关系
|
||||||
}
|
}
|
||||||
|
|
||||||
//抄送节点默认属性
|
//抄送节点默认属性
|
||||||
export const CC_PROPS = {
|
export const CC_PROPS = {
|
||||||
shouldAdd: false,
|
shouldAdd: false,
|
||||||
assignedUser: [],
|
assignedUser: [],
|
||||||
formPerms: []
|
formPerms: []
|
||||||
}
|
}
|
||||||
|
|
||||||
//触发器节点默认属性
|
//触发器节点默认属性
|
||||||
export const TRIGGER_PROPS = {
|
export const TRIGGER_PROPS = {
|
||||||
type: 'WEBHOOK',
|
type: 'WEBHOOK',
|
||||||
http: {
|
http: {
|
||||||
method: 'GET', //请求方法 支持GET/POST
|
method: 'GET', //请求方法 支持GET/POST
|
||||||
url: '', //URL地址,可以直接带参数
|
url: '', //URL地址,可以直接带参数
|
||||||
headers: [ //http header
|
headers: [ //http header
|
||||||
{
|
{
|
||||||
name: '',
|
name: '',
|
||||||
isField: true,
|
isField: true,
|
||||||
value: '' //支持表达式 ${xxx} xxx为表单字段id
|
value: '' //支持表达式 ${xxx} xxx为表单字段id
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
contentType: 'FORM', //请求参数类型
|
contentType: 'FORM', //请求参数类型
|
||||||
params: [ //请求参数
|
params: [ //请求参数
|
||||||
{
|
{
|
||||||
name: '',
|
name: '',
|
||||||
isField: true, //是表单字段还是自定义
|
isField: true, //是表单字段还是自定义
|
||||||
value: '' //支持表达式 ${xxx} xxx为表单字段id
|
value: '' //支持表达式 ${xxx} xxx为表单字段id
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
retry: 1,
|
retry: 1,
|
||||||
handlerByScript: false,
|
handlerByScript: false,
|
||||||
success: 'function handlerSuccess(res) {\n return {\n state: true, \n msg: "请求成功!" \n };\n}',
|
success: 'function handlerSuccess(res) {\n return {\n state: true, \n msg: "请求成功!" \n };\n}',
|
||||||
fail: 'function handlerFail(res) {\n return {\n state: true, \n msg: "请求失败!" \n };\n}'
|
fail: 'function handlerFail(res) {\n return {\n state: true, \n msg: "请求失败!" \n };\n}'
|
||||||
},
|
},
|
||||||
email: {
|
email: {
|
||||||
subject: '',
|
subject: '',
|
||||||
to: [],
|
to: [],
|
||||||
cc: [],
|
cc: [],
|
||||||
content: ''
|
content: ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//延时节点默认属性
|
//延时节点默认属性
|
||||||
export const DELAY_PROPS = {
|
export const DELAY_PROPS = {
|
||||||
type: "FIXED", //延时类型 FIXED:到达当前节点后延时固定时长 、AUTO:延时到 dateTime设置的时间
|
type: "FIXED", //延时类型 FIXED:到达当前节点后延时固定时长 、AUTO:延时到 dateTime设置的时间
|
||||||
time: 0, //延时时间
|
time: 0, //延时时间
|
||||||
unit: "M", //时间单位 D天 H小时 M分钟
|
unit: "M", //时间单位 D天 H小时 M分钟
|
||||||
dateTime: "" //如果当天没有超过设置的此时间点,就延时到这个指定的时间,到了就直接跳过不延时
|
dateTime: "" //如果当天没有超过设置的此时间点,就延时到这个指定的时间,到了就直接跳过不延时
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
APPROVAL_PROPS, CC_PROPS, DELAY_PROPS, CONDITION_PROPS, ROOT_PROPS, TRIGGER_PROPS
|
APPROVAL_PROPS, CC_PROPS, DELAY_PROPS, CONDITION_PROPS, ROOT_PROPS, TRIGGER_PROPS
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,17 +191,6 @@ const loadInitFrom = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const getRandomId = () => {
|
|
||||||
let d = new Date().getTime()
|
|
||||||
// x 是 0-9 或 a-f 范围内的一个32位十六进制数
|
|
||||||
let id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
||||||
let r = (d + Math.random() * 16) % 16 | 0
|
|
||||||
d = Math.floor(d / 16)
|
|
||||||
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16)
|
|
||||||
})
|
|
||||||
return id
|
|
||||||
}
|
|
||||||
|
|
||||||
const getProcessInfo = async () => {
|
const getProcessInfo = async () => {
|
||||||
getProcessDefinitionInfo(params.deploymentId).then(res => {
|
getProcessDefinitionInfo(params.deploymentId).then(res => {
|
||||||
ElNotification({
|
ElNotification({
|
||||||
|
|||||||
@@ -273,7 +273,6 @@ const props = defineProps({
|
|||||||
|
|
||||||
|
|
||||||
const nodeProps = computed(() => {
|
const nodeProps = computed(() => {
|
||||||
processStore.getSelectedNode().props.matrixApproval=true
|
|
||||||
return processStore.getSelectedNode().props;
|
return processStore.getSelectedNode().props;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user