| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <template>
- <div>
- <ContentWrap>
- <el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="100px">
- <el-form-item label="模式名称" prop="name">
- <el-input style="width: 300px" v-model="formData.modeName" placeholder="请输入模式名称" />
- </el-form-item>
- <el-form-item label="标题" prop="name">
- <el-input style="width: 300px" v-model="formData.modeTitle" placeholder="请输入标题" />
- </el-form-item>
- <el-form-item label="支持共锁" prop="isColockSupport">
- <el-checkbox v-model="formData.isColockSupport" :value="true" />
- </el-form-item>
- <el-form-item label="描述" prop="modeDescription">
- <el-input
- style="width: 550px"
- v-model="formData.modeDescription"
- type="textarea"
- :rows="4"
- placeholder="请输入描述内容"
- maxlength="500"
- show-word-limit
- />
- </el-form-item>
- <el-button type="primary" style="margin-left: 500px" @click="SaveWorkflowMode"
- >保 存
- </el-button>
- <el-button @click="goBack">取 消</el-button>
- </el-form>
- <el-form-item label="模式步骤" prop="step" style="margin-left: 30px" />
- <el-radio-group v-model="tabPosition" class="mb-15px" @change="handleTabChange">
- <el-radio-button label="first">表格视图</el-radio-button>
- <el-radio-button label="second">流程视图</el-radio-button>
- </el-radio-group>
- <ContentWrap>
- <TableView
- v-if="tabPosition == 'first'"
- :enableStepTable="enableStepTable"
- :modeId="formData.id"
- />
- <WorkflowView v-else :enableStepTable="enableStepTable" :modeId="formData.id" />
- </ContentWrap>
- </ContentWrap>
- </div>
- </template>
- <script setup lang="ts">
- import TableView from './TableView.vue'
- import WorkflowView from './WorkFlowView.vue'
- import * as ModeApi from '@/api/custonWorkflow/index'
- const { t } = useI18n() // 国际化
- const message = useMessage() // 消息弹窗
- const router = useRouter()
- const formLoading = ref(false) // 表单的加载中
- const tabPosition = ref('first')
- const enableStepTable = ref(false) //新增控制表格新增 模板导入 删除不能点击或者出现
- const formData = ref({
- modeName: undefined,
- modeTitle: undefined,
- isColockSupport: false,
- modeDescription: undefined,
- isPreset: undefined
- })
- // 监听数据变化,设置未保存标记
- const hasUnsavedChanges = ref(false) // 标记是否有未保存的更改
- // 方法定义
- const handleTabChange = (newTab: string) => {
- tabPosition.value = newTab
- }
- const SaveWorkflowMode = async () => {
- try {
- let data
- let successMessage
- if (formData.value.id) {
- // 有 id,调用修改接口
- data = await ModeApi.updateWorkflowMode(formData.value)
- successMessage = t('common.updateSuccess')
- } else {
- // 没有 id,调用新增接口
- data = await ModeApi.insertWorkflowMode(formData.value)
- successMessage = t('common.createSuccess')
- enableStepTable.value = true
- // 新增成功后,将返回的 id 保存到 formData 中
- if (data) {
- formData.value.id = data
- }
- }
- if (data) {
- message.success(successMessage)
- // 保存成功后重置未保存标记
- hasUnsavedChanges.value = false
- }
- } catch (error) {
- console.error('保存失败:', error)
- message.error('保存失败,请稍后重试')
- }
- }
- // 监听数据变化,设置未保存标记
- watch(
- () => ({
- modeName: formData.value.modeName,
- modeTitle: formData.value.modeTitle,
- isColockSupport: formData.value.isColockSupport,
- modeDescription: formData.value.modeDescription,
- isPreset: formData.value.isPreset
- }),
- () => {
- hasUnsavedChanges.value = true
- },
- { deep: true }
- )
- // 路由离开守卫
- onBeforeRouteLeave((to, from, next) => {
- if (hasUnsavedChanges.value) {
- ElMessageBox.confirm('当前页面有未保存的更改,是否继续离开?', '提示', {
- confirmButtonText: '继续离开',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(() => {
- next()
- })
- .catch(() => {
- next(false)
- })
- } else {
- next()
- }
- })
- const goBack = () => {
- router.push('/CustomWorkflow/CW')
- }
- </script>
- <style scoped lang="scss"></style>
|