123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- import { Message, Modal } from 'ant-design-vue'
- import LawService from '../law-service'
- import FlowService from '@/webflow/flow-service'
- import crossWindowWatcher from '@/common/services/cross-window-watcher'
- function at(n) {
- n = Math.trunc(n) || 0
- if (n < 0) n += this.length
- if (n < 0 || n >= this.length) return undefined
- return this[n]
- }
- const TypedArray = Reflect.getPrototypeOf(Int8Array)
- for (const C of [Array, String, TypedArray]) {
- Object.defineProperty(C.prototype, 'at', {
- value: at,
- writable: true,
- enumerable: false,
- configurable: true,
- })
- }
- const CaseMixins = {
- data() {
- return {
- stage: [],
- parentstage: [],
- flag: true,
- create: false,
- type: '',
- caseStage: '',
- caseType: '',
- }
- },
- created() {
- this.caseStage = this.$route.query?.cs
- this.caseType = this.$route.query?.ct
- if (this.$route.params.id && this.$route.params.id === '0') {
- this.create = true
- }
- },
- methods: {
- initData() {
- if (this.create) {
- if (this.type === 'progress') {
- LawService.getCaseTree(this.caseType, '').then((r) => {
- LawService.getCaseTree(this.caseType, this.caseStage).then((res) => {
- this.parentstage = [...r.data]
- this.stage = [...res.data]
- LawService.getProgressData(this.$route.query.id).then((res) => {
- const obj = res.data.find((d) => d.props.stepType === 'progress')
- const sn = this.stage.find((i) => i.id === this.$route.query?.stage).text
- const psn = this.parentstage.find((i) => i.id === this.$route.query?.cs).text
- const ini = setInterval(() => {
- if (this.$refs.webflow) {
- clearInterval(ini)
- this.$refs.webflow.setFieldValue('CASE_ID', this.$route.query.id)
- this.$refs.webflow.setFieldValue('CASE_STAGE', this.$route.query?.stage)
- this.$refs.webflow.setFieldValue('CASE_STAGE_NAME', psn)
- this.$refs.webflow.setFieldValue('PROGRESS_CODE', this.$route.query?.stage)
- this.$refs.webflow.setFieldValue('STEP_NAME', sn)
- this.$refs.webflow.setFieldValue('CASE_NAME', res.data[0].text)
- if (
- this.$route.query.parentid !== '' &&
- this.$route.query.parentid !== 'progress'
- ) {
- this.$refs.webflow.setFieldValue('PARENT_STEP_ID', this.$route.query.parentid)
- }
- if (!(this.$route.query.flag && this.$route.query.flag === '1')) {
- const stageinfo = {
- stagecode: this.$route.query.cs,
- parentstagecode: this.$route.query.ct,
- parentstagename: psn,
- }
- this.$refs.webflow.setFieldValue('STAGE_INFO', JSON.stringify(stageinfo))
- }
- }
- }, 100)
- })
- })
- })
- } else {
- LawService.getAllcaseproStage().then((res) => {
- const stage = []
- res.data.forEach((d) => {
- stage.push({
- name: d.EXECUTE_NAME,
- code: d.EXECUTE_CODE,
- businessTypeId: d.businessTypeId,
- })
- })
- this.zxstage = stage
- LawService.getProgressData(this.$route.query.id).then((res) => {
- const sn = this.zxstage.find((i) => i.code === this.$route.query?.stage)?.name
- this.$refs.webflow.setFieldValue('CASE_ID', this.$route.query.id)
- this.$refs.webflow.setFieldValue('PROGRESS_CODE', this.$route.query?.stage)
- this.$refs.webflow.setFieldValue('STEP_NAME', sn)
- this.$refs.webflow.setFieldValue('CASE_NAME', res.data[0].text)
- if (this.$route.query.parentid !== '' && this.$route.query.parentid !== 'execute') {
- this.$refs.webflow.setFieldValue('PARENT_STEP_ID', this.$route.query.parentid)
- }
- LawService.getCaseData(this.$route.query.id).then((res) => {
- this.$refs.webflow.setFieldValue('CASE_TYPE', res.data.caseType)
- })
- })
- })
- }
- }
- },
- /**
- * 提交后事件
- */
- afterDispatch(obj) {
- // 提交也认为是保存
- obj.defaultPrevented = true
- Message.success({ content: `提交成功`, duration: 1 }).then(() => {
- const e = false
- const t = true
- const snap = this.$refs.webflow.getFormSnap()
- if (
- e &&
- this.$refs.webflow.FlowData.mode === 'EDIT' &&
- (this.$refs.webflow.getFormSnap() !== snap || this.$refs.webflow.disableActionAlert)
- )
- if (!window.confirm('正在编辑文档或正文附件,确认是否离开此网站')) return
- crossWindowWatcher.notifyChange(t)
- return FlowService.unLock(this.$refs.webflow.FlowData.instId).finally(() => {
- crossWindowWatcher.notifyChange(true)
- this.$refs.webflow.close()
- const url = window.location.href
- const obj = { url: url, type: this.type + 'close' }
- window.parent.postMessage(obj, '*')
- })
- })
- return obj
- },
- save() {
- if (this.create) {
- if (window.location.href.indexOf('draft/0') === -1) {
- if (window.parent) {
- const obj = { url: window.location.href, type: this.type }
- window.parent.postMessage(obj, '*')
- }
- this.create = false
- }
- }
- },
- actionBtnClick(evt, { button, FlowData }) {
- if (button.fakeId === 'we-doc$close') {
- this.$refs.webflow.close()
- window.parent.opener = null
- window.parent.open('', '_self')
- window.parent.close()
- } else {
- if (this.create) {
- if (button.fakeId === 'save' || button.fakeId === 'workflow-push') {
- evt.waitUntil(
- new Promise((resolve, reject) => {
- this.validForm().then((res) => {
- if (!res) {
- evt.preventDefault()
- }
- resolve()
- })
- })
- )
- }
- }
- }
- },
- validForm() {
- const validForm = new Promise((resolve) => {
- // 校验最新的上级节点是否是当前 if (this.type === 'progress') {
- LawService.getProgressData(this.$route.query.id).then((res) => {
- const objsz = res.data.filter((r) => r.props.stepType === this.type)
- const obj = objsz[objsz.length - 1]
- let flag = true
- if (this.type === 'progress') {
- if (obj && obj.children && obj.children.length > 0) {
- const sobj = obj.children.at(-1)
- if (sobj.children && sobj.children.length > 0) {
- const scobj = sobj.children.at(-1)
- if (scobj.props.stepStatus === '0') {
- flag = false
- }
- }
- }
- if (flag) {
- if (this.$route.query.parentid === 'progress') {
- if (obj && res.data.at(-1).props.stepType === 'progress') {
- // 需要创建进展阶段时,但是已有,则有问题
- flag = false
- }
- } else {
- if (res.data.at(-1).props.stepType !== 'progress' || !obj) {
- // 不需要创建进展阶段时,但是没有,则有问题
- flag = false
- } else {
- // 当前创建的父节点id 不是当前需要创建的节点
- if (
- obj &&
- this.$route.query.parentid !== obj.id &&
- this.$route.query.parentid !== obj.children.at(-1).id
- ) {
- flag = false
- }
- }
- }
- }
- } else if (this.type === 'execute') {
- if (obj && obj.children && obj.children.length > 0) {
- const sobj = obj.children.at(-1)
- if (sobj.props.stepStatus === '0') {
- flag = false
- }
- }
- if (flag) {
- if (this.$route.query.parentid === 'execute') {
- if (obj && res.data.at(-1).props.stepType === 'execute') {
- // 需要创建进展阶段时,但是已有,则有问题
- flag = false
- }
- } else {
- if (res.data.at(-1).props.stepType !== 'execute' || !obj) {
- // 不需要创建进展阶段时,但是没有,则有问题
- flag = false
- } else {
- // 当前创建的父节点id 不是当前需要创建的节点
- if (obj && this.$route.query.parentid !== obj.id) {
- flag = false
- }
- }
- }
- }
- } else {
- }
- if (!flag) {
- Modal.warning({
- title: '提示',
- content: '当前案件信息已变动,请关闭后重新进入!',
- })
- }
- resolve(flag)
- })
- })
- return validForm
- },
- },
- }
- export default CaseMixins
|