|
- <template>
- <view id="notice" class="page">
- <!-- 顶部页签 -->
- <l-nav v-model="tab" :items="['表单信息', '流程信息']" type="flex" class="solid-bottom" />
- <view v-if="ready && tab == 0">
- <l-select
- :value="formData.Purchase_Info.DepartmentId" disabled
- :range="dataSource.Purchase_Info.DepartmentId" title="填报部门" disabled />
- <l-organize-picker
- :value="formData.Purchase_Info.Creator" :readonly="!edit" type="user" title="填报人" readonly />
- <l-datetime-picker
- :value="formData.Purchase_Info.Createtime"
- disabled
- title="填报时间"
- />
- <l-input :value="formData.Purchase_Info.Payee" title="收款人" disabled/>
- <l-input :value="formData.Purchase_Info.Attachcount" title="附件张数" disabled/>
- <l-upload-file :value="fileList" title="附件" readonly />
- <l-input :value="formData.Purchase_Info.Totalamount" title="申请报账金额" disabled/>
-
- <l-input :value="formData.Purchase_Info.Approvalamount"
- :disabled="!isEdit('Approvalamount')" title="核准金额" @input="setValue('Approvalamount',$event)" />
- <view style="background-color: #fff;">
- <view style="line-height: 40px;font-size: 14px;padding-left: 12px;">
- 报账明细:
- </view>
-
- <next-table ref="table" :show-header="true" :columns="column" :stripe="true" :fit="false" :border="true" :data="data"
- :highlight="true" @currentChange="currentChange">
- </next-table>
- <l-customform-table
- :value="currentRowDetail" :item="Purchase_Info_Details"
- :edit="false" />
- </view>
- <l-workflow-action
- @audit="audit"
- @action="action"
- :type="type"
- :currentNode="currentNode"
- :currentTask="currentTask"
- />
- </view>
- <view v-if="ready && tab == 1" class="progress"><l-workflow-timeline :processList="processList" /></view>
- <!-- <view class="padding-sm text-grey notice-info">
- <view class="text-right">本页内容发布于 {{ time }}</view>
- <view class="text-right">{{ date }}</view>
- </view> -->
- </view>
- </template>
-
- <script>
- import moment from 'moment'
- import workflowFormMixins from '@/pages/nworkflow/workflow.js'
-
- export default {
- mixins: [workflowFormMixins],
- data() {
- return {
- tab:0,
- type:'view',
- currentNode:null,
- currentTask:null,
- taskId:'',
- processId:'',
- processInfo:null,
- processList:[],
- formData:{},
- ready: false,
- content: '',
-
- time: '',
- date: '',
- fileList:[],
-
- Purchase_Info_Details: {
- type: 'girdtable',
- title: '采购列表',
- __defaultItem__: {},
- fieldsData: [{
- field: 'Name',
- type: 'input',
- name: '采购物品名称'
- },
- {
- field: 'Price',
- type: 'input',
- name: '价格'
- },
- {
- field: 'Quantity',
- type: 'input',
- name: '采购数量'
- },
- {
- field: 'Unit',
- type: 'input',
- name: '单位'
- },
- {
- field: 'UseTo',
- type: 'input',
- name: '用途'
- },
- { field:'Spec', type:'input', name:'规格' },
- ]
- },
- // 数据源
- dataSource: {
- Purchase_Info: {
- DepartmentId: [],
- Status: [{
- text: '已提交',
- value: '1'
- }, {
- text: '未提交',
- value: '2'
- }],
- CheckStatus: [{
- text: '审核中',
- value: '1'
- }, {
- text: '审核通过',
- value: '2'
- }, {
- text: '',
- value: '草稿'
- }]
- },
-
- },
-
- // 采购数据
- column:[
- // { type:'selection', fixed:true,width:60 },
- // { name: 'CreatorName', label: '申请人',width:80,emptyString:'--' },
- { name: 'TotalAmount', label: '金额',fixed:false,width:86,emptyString:'--' },
- // { name: 'DepartmentName', label: '部门',fixed:false,width:200,emptyString:'--' },
- { name: 'Remark', label: '备注',fixed:false,width:126,emptyString:'--' },
- { name: 'CreateTime', label: '申请时间',width:80,emptyString:'--' },
- // { name: 'SubmitTime', label: '提交时间',fixed:false,width:146,emptyString:'--' },
- // { name: 'CheckTime', label: '审核时间',fixed:false,width:146,emptyString:'--' },
- ],
- data:[],
- list: [],
- currentRow:null,
- currentRowDetail:[],
-
- changeData:{},
-
- // 权限
- authorize:{},
-
- }
- },
-
- async onLoad({type}) {
- await this.init(type)
- },
-
- methods: {
- async init(type) {
- if(type){this.type = type}
- this.LOADING('加载中…')
- const noticeItem = this.GET_PARAM()
- this.processList = noticeItem.logList
- this.currentNode = noticeItem.currentNode
- this.currentTask = noticeItem.currentTask
- this.processInfo = noticeItem.processInfo
- this.taskId = this.currentTask.F_TaskId
- this.processId = this.currentTask.F_Id
- this.formValue = noticeItem.formValue
- this.scheme = noticeItem.scheme
-
- // console.log(this.currentNode.wfForms[0].authorize)
- // 权限
- if(this.currentNode.wfForms && this.currentNode.wfForms[0].authorize){
- let arr = Object.values(this.currentNode.wfForms[0].authorize)
- for (let item of arr) {
- this.authorize[item.fieldId] = item
- }
- }
- // 拉取表单数据,同时拉取所有来自数据源的选单数据
- await Promise.all([
- this.FETCH_DATASOURCE('classdata').then(data => {
- this.dataSource.Purchase_Info.DepartmentId = data.data.map(t => ({
- text: t.name,
- value: t.id
- }));
- }),
- () => {}
- ])
- await this.getFormData(this.processList[0].F_ProcessId)
- this.HIDE_LOADING();
-
- // this.content = this.CONVERT_HTML(noticeItem.f_content)
-
- // this.time = moment(noticeItem.f_time).format('HH : mm')
- // this.date = moment(noticeItem.f_time).format('YYYY年 M月 D日')
- // this.SET_TITLE(noticeItem.f_title)
- // this.HIDE_LOADING()
- },
- // 获取表单数据
- getFormData(ProcessId){
- return this.HTTP_GET("learun/adms/purchaseinfoapply/shList",{ProcessId},"加载数据时出错").then(async res=>{
- if(res){
- // res.F_SourceName = res.F_SourceName&&this.GET_GLOBAL('department')[res.F_SourceName]? this.GET_GLOBAL('department')[res.F_SourceName].name : res.F_SourceName
- this.formData = res
- this.data = res.Purchase_Info_Details
-
- let fileList = await this.getFileListById(res.Purchase_Info.FilePath)
- if(fileList&&fileList.length){
- this.fileList = fileList
- }
- // this.content = res.F_NewsContent
- this.ready = true
- }
- })
- },
-
- isEdit(field){
- return this.authorize[field] && this.authorize[field].isEdit !== 0
- },
- // 点击某一行
- async currentChange(row){
- this.currentRow = row
- this.currentRowDetail = []
- const result = await this.HTTP_GET('learun/adms/purchaseinfo/formdetail',row.purchaseid)
- if(!result)return
- this.currentRowDetail = result
- },
-
- // 保存表单
- async saveForm(){
- if(this.changeData.Approvalamount&&!this.checkAmt(this.changeData.Approvalamount)){
- this.TOAST('请输入正确的核准金额')
- return false
- }
- let postData = {
- strEntity:JSON.stringify(this.changeData),
- keyValue:this.formData.Purchase_Info.Id,
- }
- let res = await this.HTTP_POST('learun/adms/purchaseinfoapply/save', postData, '表单提交保存失败')
- if(!res){
- this.TOAST('表单提交保存失败')
- return false
- }
- return true
- },
- setValue(field,value){
- this.$set(this.changeData,field,value)
- },
- // 校验金额
- checkAmt(dPrice){
- if(!dPrice&&dPrice!==0){
- return false
- }
- let num = Number(dPrice)
- if(!/^(\-|\+)?\d+(\.\d+)?$/.test(num)){
- return false
- }
- return true;
- },
- // 点击审批相关按钮
- async audit(action) {
- this.LOADING('加载中…')
- let res = await this.saveForm()
- if(!res){
- this.HIDE_LOADING()
- return
- }
- const currentTask = this.processInfo.task.find(t => t.F_NodeId === this.currentNode.id)
- const postData = await this.getPostData(this.formValue, this.scheme)
- const pageParam = {
- type: 'sign',
- processId: currentTask.F_ProcessId,
- taskId: currentTask.F_Id,
- formreq: postData.formreq,
- taskName: this.currentTask.F_Title,
- currentNode:this.currentNode,
- code:this.code||''
- }
- // 不是加签
- if (action.code !== '__sign__') {
- Object.assign(pageParam, action)
- pageParam.type = 'verify'
- pageParam.auditors = JSON.stringify({})
- pageParam.isFromSignAudit = Number(this.currentTask.F_TaskType) === 3
- }
- this.HIDE_LOADING()
- this.NAV_TO('/pages/nworkflow/myflow/sign', pageParam, true)
- },
- // 点击操作按钮(非审批类按钮)
- async action(taskType) {
- switch (taskType) {
- // 点击「催办」/「撤销流程」/「标记已阅」按钮
- case 'urge':
- case 'revoke':
- case 'refer':
- const actionText = { urge: '催办', revoke: '撤销', refer: '已阅' }[taskType]
- const actionUrl = { urge: '/urge', revoke: '/revoke', refer: '/refer' }[taskType]
-
- let actionData = this.processId
- if (taskType === 'refer') {
- actionData = { processId: this.processId, taskId: this.taskId }
- }
-
- if (!(await this.CONFIRM(`${actionText}确认`, `确定要提交${actionText}吗?`, true))) {
- return
- }
- this.LOADING(`提交${actionText}中…`)
- this.HTTP_POST(`/newwf${actionUrl}`, actionData, `提交${actionText}失败`).then(success => {
- this.HIDE_LOADING()
- if (success) {
- this.EMIT('task-list-change')
- this.TOAST(`成功提交${actionText}`, 'success')
- if (taskType === 'revoke') {
- this.NAV_BACK()
- }
- }
- })
- break
- // 点击「提交草稿」按钮
- case 'draft':
- this.CONFIRM('不支持此操作')
- return
- if (!(await this.CONFIRM('提交确认', '确定要提交草稿吗?', true))) {
- return
- }
- this.LOADING('正在提交…')
- const draftFormValue = this.$refs.form.getFormValue()
- const draftPostData = await this.getPostData(draftFormValue, this.scheme)
- this.HTTP_POST('/newwf/draft', draftPostData, '提交草稿失败').then(success => {
- this.HIDE_LOADING()
- if (success) {
- this.EMIT('task-list-change')
- this.NAV_BACK()
- this.TOAST('草稿已保存', 'success')
- }
- })
- break
- // 点击「发起流程」按钮
- case 'submit':
- this.CONFIRM('不支持此操作')
- return
- const verifyResult = this.$refs.form.verifyValue()
- if (verifyResult.length > 0) {
- this.CONFIRM('表单验证失败', verifyResult.join('\n'))
- return
- }
- if (!(await this.CONFIRM('提交确认', '确定要发起流程吗?', true))) {
- return
- }
- this.LOADING('正在提交…')
- const formValue = this.$refs.form.getFormValue()
- const postData = await this.getPostData(formValue, this.scheme)
- postData.auditors = JSON.stringify({})
-
- if (this.type === 'child') {
- postData.parentProcessId = this.processId
- postData.parentTaskId = this.taskId
- }
- const errorTips = '流程发起失败'
- this.HTTP_POST('/newwf/createchildflow', postData, errorTips).then(success => {
- this.HIDE_LOADING()
- if (success) {
- this.EMIT('task-list-change')
- this.NAV_BACK()
- this.TOAST('流程发起成功', 'success')
- }
- })
- break
- default:
- break
- }
- },
- }
- }
- </script>
|