update 标准法规入库/变更流程-流程详情

This commit is contained in:
赵霄
2023-10-10 17:25:51 +08:00
parent eb62f256db
commit dc8046589a
12 changed files with 139 additions and 21 deletions
+2 -1
View File
@@ -807,7 +807,7 @@
top: 2px;
}
.process-part-title:first-child{
.process-part-title:first-child {
margin-top: 0;
}
@@ -820,6 +820,7 @@
font-size: 14px;
}
}
/* 按钮中发那个自定义图标的样式 end */
.detail-page-bottom-operate-box {
+10
View File
@@ -82,5 +82,15 @@ module.exports = {
editFlowchart: '编辑流程图',
editFlowNode: '编辑流程节点',
deploy: '部署'
},
processDetail: {
urgeHandle: '催办',
flowChart: '流程图',
taskNode: '任务节点',
taskHandler: '任务受理人',
completionTime: '完成时间',
timeConsuming: '耗时',
approvalOpinion: '审批意见',
opinionContent: '意见内容'
}
}
+10
View File
@@ -86,5 +86,15 @@ module.exports = {
editFlowchart: '编辑流程图',
editFlowNode: '编辑流程节点',
deploy: '部署'
},
processDetail: {
urgeHandle: '催办',
flowChart: '流程图',
taskNode: '任务节点',
taskHandler: '任务受理人',
completionTime: '完成时间',
timeConsuming: '耗时',
approvalOpinion: '审批意见',
opinionContent: '意见内容'
}
}
+3 -1
View File
@@ -29,6 +29,8 @@ import { downloadFile, getFileAccessHttpUrl } from '../api/manage.js'
import { previewPdf } from '../utils/previewPdf.js'
import { Base64 } from 'js-base64'
// 支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf', 'docx', 'doc']
const FILE_TYPE_IMGS = ['jpg', 'jpeg', 'png', 'raw']
const FILE_TYPE_PDF = 'pdf'
@@ -80,7 +82,7 @@ export default {
}
// 截取文件后缀名
const fileSuffix = file.fileName ? file.fileName.split('.')[file.fileName.split('.').length - 1] : ''
const canPreview = FILE_TYPE_IMGS.some(tt => fileSuffix.toLowerCase() === tt) || fileSuffix.toLowerCase() === FILE_TYPE_PDF
const canPreview = CAN_PREVIEW_FILE_SUFFIX.some(tt => fileSuffix.toLowerCase() === tt)
// 判断是否为可预览格式的文件
if (!canPreview) {
this.$message.loading('该文件类型不支持预览,正在为您准备下载...').then(() => {
+1 -1
View File
@@ -67,7 +67,7 @@ const Base64 = require('js-base64').Base64
// 支持预览的文件类型
const CAN_PREVIEW_FILE_TYPE = ['pdf', 'image']
// 支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf']
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf', 'docx', 'doc']
const uidGenerator = () => {
return '-' + parseInt(Math.random() * 10000 + 1, 10)
}
+8
View File
@@ -705,6 +705,14 @@ body {
display: block;
margin-bottom: 24px;
white-space: nowrap;
.ant-btn {
margin-left: 8px;
}
.ant-btn:first-child {
margin-left: 0;
}
}
}
@@ -116,6 +116,8 @@ import { getQuizById, answerQuiz, setOrCancelTop, deleteAnswer } from '@/api/bus
import { getFileInfo } from '@/api/api'
import { previewPdf } from '@/utils/previewPdf'
// 支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf', 'docx', 'doc']
const FILE_TYPE_IMGS = ['jpg', 'jpeg', 'png', 'raw']
const FILE_TYPE_PDF = 'pdf'
const Base64 = require('js-base64').Base64
@@ -189,7 +191,7 @@ export default {
}
// 截取文件后缀名
const fileSuffix = file.fileName ? file.fileName.split('.')[file.fileName.split('.').length - 1] : ''
const canPreview = FILE_TYPE_IMGS.some(tt => fileSuffix.toLowerCase() === tt) || fileSuffix.toLowerCase() === FILE_TYPE_PDF
const canPreview = CAN_PREVIEW_FILE_SUFFIX.some(tt => fileSuffix.toLowerCase() === tt)
// 判断是否为可预览格式的文件
if (!canPreview) {
this.$message.loading('该文件类型不支持预览,正在为您准备下载...').then(() => {
@@ -160,6 +160,8 @@ import { previewPdf } from '@/utils/previewPdf'
import { getFileAccessHttpUrl } from '@/api/manage'
import { getFileInfo } from '../../../../api/api'
// 支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf', 'docx', 'doc']
const FILE_TYPE_IMGS = ['jpg', 'jpeg', 'png', 'raw']
const FILE_TYPE_PDF = 'pdf'
const Base64 = require('js-base64').Base64
@@ -212,7 +214,7 @@ export default {
}
// 截取文件后缀名
const fileSuffix = file.fileName ? file.fileName.split('.')[file.fileName.split('.').length - 1] : ''
const canPreview = FILE_TYPE_IMGS.some(tt => fileSuffix.toLowerCase() === tt) || fileSuffix.toLowerCase() === FILE_TYPE_PDF
const canPreview = CAN_PREVIEW_FILE_SUFFIX.some(tt => fileSuffix.toLowerCase() === tt)
// 判断是否为可预览格式的文件
if (!canPreview) {
this.$message.loading('该文件类型不支持预览,正在为您准备下载...').then(() => {
@@ -57,7 +57,9 @@
<div class="detail-page-process-manuscript-item" v-for="(formItem, formIndex) in form[part]" :key="formItem.id">
<div class="detail-page-process-manuscript-title">
<span>{{ formItem.dbFieldTxt }}</span>
<a-button v-if="formIndex === 0" type="primary" ghost icon="file-text">{{ $t('enterpriseStandardLibrary.standard.standardResolutionSheet') }}</a-button>
<a-button v-if="formIndex === 0" type="primary" ghost icon="file-text">{{ $t('enterpriseStandardLibrary.standard.standardResolutionSheet')
}}
</a-button>
</div>
<template v-if="detailData[formItem.dbFieldName]">
<div class="detail-page-process-manuscript-file" v-for="file in detailData[formItem.dbFieldName + 'List']" :key="file.id">
@@ -130,6 +132,8 @@ import { ACCESS_TOKEN } from '@/store/mutation-types'
import { previewPdf } from '@/utils/previewPdf'
import { getFileInfo } from '../../../../api/api'
// 支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf', 'docx', 'doc']
const FILE_TYPE_IMGS = ['jpg', 'jpeg', 'png', 'raw']
const FILE_TYPE_PDF = 'pdf'
const Base64 = require('js-base64').Base64
@@ -240,7 +244,7 @@ export default {
}
// 截取文件后缀名
const fileSuffix = file.fileName ? file.fileName.split('.')[file.fileName.split('.').length - 1] : ''
const canPreview = FILE_TYPE_IMGS.some(tt => fileSuffix.toLowerCase() === tt) || fileSuffix.toLowerCase() === FILE_TYPE_PDF
const canPreview = CAN_PREVIEW_FILE_SUFFIX.some(tt => fileSuffix.toLowerCase() === tt)
// 判断是否为可预览格式的文件
if (!canPreview) {
this.$message.loading('该文件类型不支持预览,正在为您准备下载...').then(() => {
@@ -296,13 +300,14 @@ export default {
<style scoped lang="less">
// 单独设置此页面一行三个的label
.detail-page-part-form-item label {
.detail-page-part-form-item label {
width: 8.5em;
}
.detail-page-part-table {
margin: 20px;
}
.file-box {
flex: 1;
width: 0;
@@ -163,7 +163,8 @@ const OverseasApi = {
share: shareOverseasStandard // 分享
}
const FILE_TYPE_IMGS = ['jpg', 'jpeg', 'png', 'raw']
// 支持预览的文件后缀
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'raw', 'pdf', 'docx', 'doc']
const FILE_TYPE_PDF = 'pdf'
export default {
@@ -356,7 +357,7 @@ export default {
}
// 截取文件后缀名
const fileSuffix = file.fileName ? file.fileName.split('.')[file.fileName.split('.').length - 1] : ''
const canPreview = FILE_TYPE_IMGS.some(tt => fileSuffix.toLowerCase() === tt) || fileSuffix.toLowerCase() === FILE_TYPE_PDF
const canPreview = CAN_PREVIEW_FILE_SUFFIX.some(tt => fileSuffix.toLowerCase() === tt)
// 判断是否为可预览格式的文件
if (!canPreview) {
this.$message.loading('该文件类型不支持预览,正在为您准备下载...').then(() => {
@@ -22,7 +22,6 @@ import { getFlowNodeList, deleteFlowNode } from '../../../api/workCenter.js'
import insertCss from 'insert-css'
import FlowNodeModal from './modules/FlowNodeModal.vue'
import DeleteIcon from '../../../assets/image/iconDelete.svg'
import { postAction } from '../../../api/manage.js'
// 流程图用到的属性
const ChartAttrs = {
@@ -1,22 +1,36 @@
<template>
<internal-detail-page :title="pageTitle" :content-padding="0">
<div class="scroll-content">
<!--流程信息-->
<!-- 标题右侧tab -->
<template v-slot:titleRightCustom>
<div class="table-operator-tab">
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
@click="switchChange('base')">基础信息
</a>
<a class="switch-item" :class="switchValue === 'user' ? 'table-operator-tab-active' : ''"
@click="switchChange('user')">人员信息
</a>
</div>
</template>
<!--基本信息-->
<div class="scroll-content" v-show="switchValue === 'base'">
<div class="process-part-title">流程信息</div>
<a-form :form="processInfoForm">
<a-row>
<a-col :span="12">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardRegulationLibrary.nodeName')">
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.nodeName')"
<!--流程名称-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')">
<a-input :placeholder="$t('pleaseEnter') + $t('processName')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
disabled
v-decorator="['nodeName']" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardRegulationLibrary.nodeName')">
<!--截止日期-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('expirationDate')">
<a-date-picker class="box-input"
:placeholder="$t('pleaseSelect')"
:placeholder="$t('pleaseSelect') + $t('expirationDate')"
:getCalendarContainer="(trigger) => trigger.parentNode"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@@ -24,8 +38,9 @@
</a-form-item>
</a-col>
</a-row>
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('standardRegulationLibrary.nodeName')">
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.nodeName')"
<!--流程说明-->
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('processExplain')">
<a-input :placeholder="$t('pleaseEnter') + $t('processExplain')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="500"
type="textarea"
@@ -245,6 +260,14 @@
</a-form-item>
</a-form>
</div>
<!--人员信息-->
<div class="scroll-content p-0" v-show="switchValue === 'user'">
<process-detail-list>
<template #personnelInfo>
<personnel-info :data="personalInfoData" />
</template>
</process-detail-list>
</div>
<div class="bottom-operate-box">
<!--保存-->
<a-button type="primary" :loading="loading" @click="handleSave">{{ $t('preservation') }}</a-button>
@@ -266,10 +289,12 @@ import JMultipleDatePicker from '../../../components/JMultipleDatePicker.vue'
import UserSelection from '../../../components/selection/UserSelection.vue'
import StandardSelection from '../../../components/selection/StandardSelection.vue'
import UploadFile from '../../../components/UploadFile.vue'
import PersonnelInfo from '../../../components/PersonnelInfo.vue'
import ProcessDetailList from '../../../components/ProcessDetailList.vue'
export default {
name: 'StandardEntryOrChangeProcess',
components: { UploadFile, StandardSelection, UserSelection, JMultipleDatePicker, InternalDetailPage },
components: { PersonnelInfo, UploadFile, StandardSelection, UserSelection, JMultipleDatePicker, InternalDetailPage, ProcessDetailList },
data () {
return {
FieldType,
@@ -318,7 +343,53 @@ export default {
uploadName: '',
sourceOptions: [],
approvalInfoForm: this.$form.createForm(this),
loading: false
loading: false,
switchValue: 'user',
personalInfoData: [ // 人员信息的数据
{
id: 1,
nodeName: '主起草人发起',
nodeRoleName: '发起人',
canChoose: false
},
{
id: 2,
nodeName: '部所联络人校对',
nodeRoleName: '部所联络人',
canChoose: true,
chooseType: 'radio',
chooseSource: 'contactManage'
},
{
id: 3,
nodeName: '专家审批',
nodeRoleName: '专家',
canChoose: true,
chooseType: 'checkbox',
chooseSource: 'workGroup'
},
{
id: 4,
nodeName: '发起人主管级领导审批',
nodeRoleName: '发起人主管级领导',
canChoose: true,
chooseType: 'radio'
},
// {
// id: 5,
// nodeName: '发起人主管级上级领导审批',
// nodeRoleName: '发起人主管级上级领导',
// canChoose: true,
// chooseType: 'radio'
// },
// {
// id: 6,
// nodeName: '标准化审批',
// nodeRoleName: '标准化',
// canChoose: true,
// chooseType: 'radio'
// }
]
}
},
computed: {
@@ -518,6 +589,9 @@ export default {
handleOperationTypeChange () {
console.log(this.basicFormInfo.operationType)
},
switchChange (value) {
this.switchValue = value
},
handleSave () {
},
@@ -608,4 +682,8 @@ export default {
overflow: auto;
padding: 32px;
}
.p-0 {
padding: 0;
}
</style>