Przeglądaj źródła

feat: 提交时,卡在验证这里了

luoyali 1 rok temu
rodzic
commit
198963dbfc

+ 96 - 98
src/components/packages/formEditor/preview.vue

@@ -8,130 +8,128 @@ import defaultProps from './defaultProps'
 import { ElMessage } from 'element-plus'
 import { showNotify } from 'vant'
 export default {
-  name: 'Everright-form-preview'
+	name: 'EverrightFormPreview'
 }
 </script>
 <script setup>
 const emit = defineEmits(['listener'])
 const props = defineProps(defaultProps)
 const layout = {
-  pc: [],
-  mobile: []
+	pc: [],
+	mobile: []
 }
 const state = reactive({
-  store: [],
-  selection: {},
-  platform: utils.isPc() ? 'pc' : 'mobile',
-  mode: 'preview',
-  config: {},
-  Namespace: 'formEditor',
-  validateStates: [],
-  data: {},
-  fields: [],
-  logic: {},
-  fieldsLogicState: new Map(),
-  remoteValues: new Map()
+	store: [],
+	selection: {},
+	platform: utils.isPc() ? 'pc' : 'mobile',
+	mode: 'preview',
+	config: {},
+	Namespace: 'formEditor',
+	validateStates: [],
+	data: {},
+	fields: [],
+	logic: {},
+	fieldsLogicState: new Map(),
+	remoteValues: new Map()
 })
 const ns = hooks.useNamespace('Main', state.Namespace)
 hooks.useLogic(state)
 const getData = () => {
-  const result = {}
-  state.fields.forEach(e => {
-    if (e.type === 'subform') {
-      result[e.key] = utils.getSubFormValues(e)
-    } else {
-      try {
-        if (!utils.checkIsInSubform(e)) {
-          result[e.key] = e.options.defaultValue
-        }
-      } catch (e) {
-      }
-    }
-  })
-  return _.cloneDeep(result)
+	const result = {}
+	state.fields.forEach(e => {
+		if (e.type === 'subform') {
+			result[e.key] = utils.getSubFormValues(e)
+		} else {
+			try {
+				if (!utils.checkIsInSubform(e)) {
+					result[e.key] = e.options.defaultValue
+				}
+			} catch (e) {}
+		}
+	})
+	return _.cloneDeep(result)
 }
 const fireEvent = (type, data) => {
-  emit('listener', {
-    type,
-    data
-  })
+	emit('listener', {
+		type,
+		data
+	})
 }
 const setValue = (field, value) => {
-  if (field.type === 'time' && !field.options.valueFormat) {
-    field.options.valueFormat = 'HH:mm:ss'
-  }
-  field.options.defaultValue = value
+	if (field.type === 'time' && !field.options.valueFormat) {
+		field.options.valueFormat = 'HH:mm:ss'
+	}
+	field.options.defaultValue = value
 }
 provide('Everright', {
-  state,
-  getData,
-  props,
-  fireEvent,
-  setValue
+	state,
+	getData,
+	props,
+	fireEvent,
+	setValue
 })
 const setData2 = (data, value) => {
-  const newData = _.cloneDeep(data)
-  layout.pc = newData.layout.pc
-  layout.mobile = newData.layout.mobile
-  state.store = newData.list
-  state.fields = newData.fields
-  const curLayout = _.cloneDeep(newData.layout[state.platform])
-  utils.combinationData2(curLayout, state.fields)
-  state.store = curLayout
-  state.config = newData.config
-  state.data = newData.data
-  state.logic = newData.logic
-  state.store.forEach((e) => {
-    utils.addContext(e, state.store, false)
-  })
-  if (!_.isEmpty(value)) {
-    state.fields.forEach((e) => {
-      if (e.type === 'time' && !e.options.valueFormat) {
-        e.options.valueFormat = 'HH:mm:ss'
-      }
-      if (value[e.key]) {
-        e.options.defaultValue = value[e.key]
-      }
-    })
-  }
+	const newData = _.cloneDeep(data)
+	layout.pc = newData.layout.pc
+	layout.mobile = newData.layout.mobile
+	state.store = newData.list
+	state.fields = newData.fields
+	const curLayout = _.cloneDeep(newData.layout[state.platform])
+	utils.combinationData2(curLayout, state.fields)
+	state.store = curLayout
+	state.config = newData.config
+	state.data = newData.data
+	state.logic = newData.logic
+	state.store.forEach(e => {
+		utils.addContext(e, state.store, false)
+	})
+	if (!_.isEmpty(value)) {
+		state.fields.forEach(e => {
+			if (e.type === 'time' && !e.options.valueFormat) {
+				e.options.valueFormat = 'HH:mm:ss'
+			}
+			if (value[e.key]) {
+				e.options.defaultValue = value[e.key]
+			}
+		})
+	}
 }
 const setData1 = async (data, value) => {
-  if (_.isEmpty(data)) return false
-  const newData = utils.combinationData1(_.cloneDeep(data))
-  state.store = newData.list
-  state.config = newData.config
-  state.data = newData.data
-  state.fields = newData.fields
-  state.logic = newData.logic
-  state.store.forEach((e) => {
-    utils.addContext(e, state.store)
-  })
-  const subforms = _.cloneDeep(state.fields.filter(e => e.type === 'subform'))
-  if (!_.isEmpty(value)) {
-    for (const key in value) {
-      state.remoteValues.set(key, value[key])
-    }
-    state.fields.forEach((field) => {
-      if (field.type !== 'subform') {
-        try {
-          if (!utils.checkIsInSubform(field)) {
-            setValue(field, value[field.key])
-          }
-        } catch (e) {
-        }
-      }
-    })
-  }
+	if (_.isEmpty(data)) return false
+	const newData = utils.combinationData1(_.cloneDeep(data))
+	state.store = newData.list
+	state.config = newData.config
+	state.data = newData.data
+	state.fields = newData.fields
+	state.logic = newData.logic
+	state.store.forEach(e => {
+		utils.addContext(e, state.store)
+	})
+	const subforms = _.cloneDeep(state.fields.filter(e => e.type === 'subform'))
+	if (!_.isEmpty(value)) {
+		for (const key in value) {
+			state.remoteValues.set(key, value[key])
+		}
+		state.fields.forEach(field => {
+			if (field.type !== 'subform') {
+				try {
+					if (!utils.checkIsInSubform(field)) {
+						setValue(field, value[field.key])
+					}
+				} catch (e) {}
+			}
+		})
+	}
 }
 const setData = props.layoutType === 1 ? setData1 : setData2
 defineExpose({
-  switchPlatform (platform) {
-    state.platform = platform
-  },
-  setData,
-  getData
+	switchPlatform(platform) {
+		state.platform = platform
+	},
+	setData,
+	getData
 })
 </script>
 <template>
-  <CanvesPanel v-if="state.store.length"></CanvesPanel>
+	<CanvesPanel v-if="state.store.length"></CanvesPanel>
 </template>

+ 7 - 3
src/components/scWorkflow/nodes/branch.vue

@@ -1,4 +1,7 @@
 <template>
+	<!--
+	https://blog.csdn.net/weixin_46115723/article/details/132381052
+	-->
 	<div class="branch-wrap">
 		<div class="branch-box-wrap">
 			<div class="branch-box">
@@ -95,7 +98,7 @@
 										<div class="condition-content-box">
 											<el-input v-show="false" v-model="condition.label" placeholder="描述" />
 											<el-select v-model="condition.field" filterable placeholder="条件字段" @change="getCurrentItemLabel(conditionGroupIdx, idx)">
-												<el-option v-for="{ id, label, key } in expressionFormList" :key="id" :label="label" :value="key" />
+												<el-option v-for="{ id, label, key } in expressionFormList" :key="id" :label="label" :value="label" />
 											</el-select>
 											<el-select v-model="condition.operator" placeholder="请选择表达式">
 												<el-option label="等于" value="=="></el-option>
@@ -267,8 +270,9 @@ export default {
 		getCurrentItemLabel(conditionIdx, idx) {
 			const currentCondition = this.form.conditionList[conditionIdx]
 			const field = currentCondition[idx].field
-			const labelObj = this.expressionFormList.find(i => i.key === field)
-			currentCondition[idx].label = labelObj.label
+			// const labelObj = this.expressionFormList.find(i => i.key === field)
+			// currentCondition[idx].label = labelObj.label
+			currentCondition[idx].label = field
 		}
 	}
 }

+ 9 - 3
src/views/approve/components/approvedContent.vue

@@ -38,7 +38,12 @@
 					<div class="scroll-wrap">
 						<!-- 表单 -->
 						<div v-loading="validateForm.loading" class="form-wrap">
-							<er-form-preview v-show="validateForm.rule.length" ref="EReditorRef" :is-show-complete-button="false" />
+							<er-form-preview
+								v-show="validateForm.rule.length"
+								ref="EReditorRef"
+								:file-upload-u-r-i="uploadFileApi"
+								:is-show-complete-button="false"
+							/>
 							<LeNoData v-if="!validateForm.rule.length" message="表单无数据" />
 						</div>
 
@@ -200,8 +205,9 @@ import LoseSignDialog from './loseSignDialog'
 import RollbackDialog from './rollbackDialog'
 import { storeToRefs } from 'pinia'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { erFormPreview } from 'everright-formeditor'
-
+import { erFormPreview } from '@ER/formEditor'
+const { VITE_APP_BASE_API } = import.meta.env
+const uploadFileApi = ref(`${VITE_APP_BASE_API}/v1/oss/upload`)
 const props = defineProps({
 	/**
 	 * pendingApproval 待审批

+ 5 - 6
src/views/approve/launch/ItemDrawer.vue

@@ -10,9 +10,8 @@
 		<div v-if="validateForm.loading" v-loading="true" class="local_loading"></div>
 		<div class="info-wrap">
 			<el-divider content-position="left">{{ record.processName }}表单</el-divider>
-			<FormCreate v-if="false" v-model:api="validateForm.api" class="form-wrap" :option="validateForm.option" :rule="validateForm.rule" />
 			<div class="self-Everright-formEditor">
-				<er-form-preview ref="EReditorRef" :is-show-complete-button="false" />
+				<er-form-preview ref="EReditorRef" :is-show-complete-button="false" :fileUploadURI="uploadFileApi" />
 			</div>
 			<el-divider content-position="left">审批流程</el-divider>
 			<el-timeline class="timeline-wrap">
@@ -69,14 +68,14 @@
 </template>
 <script setup lang="ts">
 import model from '@/api/flow/process'
-import viewForm from '@/utils/form'
-import { erFormPreview } from 'everright-formeditor'
-import 'Everright-formEditor/dist/style.css'
+import { erFormPreview, utils } from '@ER/formEditor'
 import { ref, shallowRef, computed, reactive, watchEffect } from 'vue'
 import { ElMessage } from 'element-plus'
 import UseSelect from '@/components/scWorkflow/select.vue'
 import FlowNodeAvatar from '@/components/Flow/FlowNodeAvatar.vue'
 import { approveTypeOptions_config, selectModeOptions_config, setTypeOptions_config } from '@/components/scWorkflow/nodes/config'
+const { VITE_APP_BASE_API } = import.meta.env
+const uploadFileApi = ref(`${VITE_APP_BASE_API}/v1/oss/upload`)
 const EReditorRef = ref()
 type Props = {
 	modelValue: boolean
@@ -120,7 +119,6 @@ const selectHandler = (local_name: string, type: number) => {
 	active_selectOpts.value = config.selectOpts || {}
 	useSelectRef.value.open(type, config.assignees)
 }
-const FormCreate = viewForm.$form()
 const validateForm = ref({
 	api: {},
 	option: {
@@ -132,6 +130,7 @@ const validateForm = ref({
 
 const onSubmit = async () => {
 	const processId = props.record.processId
+	console.log(utils, 'utils')
 	const form = EReditorRef.value.form
 	form.validate(valid => {
 		if (valid) {

+ 0 - 3
src/views/approve/pendingApproval/detail.vue

@@ -28,7 +28,6 @@
 
 					<!-- 表单 -->
 					<div v-loading="validateForm.loading" class="form-wrap">
-						<FormCreate v-show="validateForm.rule.length" v-model:api="validateForm.api" :option="validateForm.option" :rule="validateForm.rule" />
 						<LeNoData v-if="!validateForm.rule.length" message="表单无数据" />
 					</div>
 
@@ -129,7 +128,6 @@ import ConsentOrRefuseDialog from '../components/consentOrRefuseDialog'
 import DeliverToReviewDialog from '../components/deliverToReviewDialog'
 import LoseSignDialog from '../components/loseSignDialog'
 import RollbackDialog from '../components/rollbackDialog'
-import viewForm from '@/utils/form'
 
 const props = defineProps({
 	modelValue: {
@@ -166,7 +164,6 @@ const visibleDialog = computed({
 const taskId = computed(() => {
 	return props.taskObj.taskId || ''
 })
-const FormCreate = viewForm.$form()
 const validateForm = ref({
 	api: {},
 	option: {