fix
This commit is contained in:
@@ -1,258 +1,261 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading"
|
||||
:disabled="operType === 'view'">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.type">
|
||||
<el-form-item :label="t('askLeave.type')" prop="type">
|
||||
<el-input v-model="form.type" :placeholder="t('askLeave.inputTypeTip')" :disabled="disabledFields.type"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<div>
|
||||
<el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading" :disabled="operType === 'view'">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.type">
|
||||
<el-form-item :label="t('askLeave.type')" prop="type">
|
||||
<el-input v-model="form.type" :placeholder="t('askLeave.inputTypeTip')" :disabled="disabledFields.type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.startTime">
|
||||
<el-form-item :label="t('askLeave.startTime')" prop="startTime">
|
||||
<el-date-picker type="datetime" :placeholder="t('askLeave.inputStartTimeTip')" :disabled="disabledFields.startTime"
|
||||
v-model="form.startTime" :value-format="dateTimeStr"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.startTime">
|
||||
<el-form-item :label="t('askLeave.startTime')" prop="startTime">
|
||||
<el-date-picker
|
||||
type="datetime"
|
||||
:placeholder="t('askLeave.inputStartTimeTip')"
|
||||
:disabled="disabledFields.startTime"
|
||||
v-model="form.startTime"
|
||||
:value-format="dateTimeStr"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.endTime">
|
||||
<el-form-item :label="t('askLeave.endTime')" prop="endTime">
|
||||
<el-date-picker type="datetime" :placeholder="t('askLeave.inputEndTimeTip')" :disabled="disabledFields.endTime"
|
||||
v-model="form.endTime" :value-format="dateTimeStr"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.endTime">
|
||||
<el-form-item :label="t('askLeave.endTime')" prop="endTime">
|
||||
<el-date-picker
|
||||
type="datetime"
|
||||
:placeholder="t('askLeave.inputEndTimeTip')"
|
||||
:disabled="disabledFields.endTime"
|
||||
v-model="form.endTime"
|
||||
:value-format="dateTimeStr"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.days">
|
||||
<el-form-item :label="t('askLeave.days')" prop="days">
|
||||
<el-input v-model="form.days" :placeholder="t('askLeave.inputDaysTip')" :disabled="disabledFields.days"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.days">
|
||||
<el-form-item :label="t('askLeave.days')" prop="days">
|
||||
<el-input v-model="form.days" :placeholder="t('askLeave.inputDaysTip')" :disabled="disabledFields.days" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.carbonCopyPerson">
|
||||
<el-form-item :label="t('askLeave.carbonCopyPerson')" prop="carbonCopyPerson">
|
||||
<el-tooltip content="请输入用户名称进行模糊搜索" placement="top">
|
||||
<el-select v-model="form.carbonCopyPerson" :placeholder="t('askLeave.inputCarbonCopyPersonTip')" :disabled="disabledFields.carbonCopyPerson"
|
||||
remote :remote-method="remoteMethod" :reserve-keyword="false"
|
||||
clearable filterable multiple>
|
||||
<el-option v-for="(item, index) in dicData.carbonCopyPerson" :key="index" :label="item.name"
|
||||
:value="item.userId">
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.carbonCopyPerson">
|
||||
<el-form-item :label="t('askLeave.carbonCopyPerson')" prop="carbonCopyPerson">
|
||||
<el-tooltip content="请输入用户名称进行模糊搜索" placement="top">
|
||||
<el-select
|
||||
v-model="form.carbonCopyPerson"
|
||||
:placeholder="t('askLeave.inputCarbonCopyPersonTip')"
|
||||
:disabled="disabledFields.carbonCopyPerson"
|
||||
remote
|
||||
:remote-method="remoteMethod"
|
||||
:reserve-keyword="false"
|
||||
clearable
|
||||
filterable
|
||||
multiple
|
||||
>
|
||||
<el-option v-for="(item, index) in dicData.carbonCopyPerson" :key="index" :label="item.name" :value="item.userId"> </el-option>
|
||||
</el-select>
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.remark">
|
||||
<el-form-item :label="t('askLeave.remark')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="t('askLeave.inputRemarkTip')" :disabled="disabledFields.remark" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.remark">
|
||||
<el-form-item :label="t('askLeave.remark')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="t('askLeave.inputRemarkTip')" :disabled="disabledFields.remark"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.imgUrls">
|
||||
<el-form-item :label="t('askLeave.imgUrls')" prop="imgUrls">
|
||||
<el-input v-model="form.imgUrls" :placeholder="t('askLeave.inputImgUrlsTip')" :disabled="disabledFields.imgUrls" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template v-if="data.submitBtn">
|
||||
<footer class="el-dialog__footer">
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{ t('jfI18n.print') }} </el-button>
|
||||
<el-button type="primary" @click="submitForm" :disabled="loading">{{ t('jfI18n.submit') }}</el-button>
|
||||
</span>
|
||||
</footer>
|
||||
</template>
|
||||
<template v-else>
|
||||
<footer class="el-dialog__footer">
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{ t('jfI18n.print') }} </el-button>
|
||||
</span>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.imgUrls">
|
||||
<el-form-item :label="t('askLeave.imgUrls')" prop="imgUrls">
|
||||
<el-input v-model="form.imgUrls" :placeholder="t('askLeave.inputImgUrlsTip')" :disabled="disabledFields.imgUrls"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template v-if="data.submitBtn">
|
||||
<footer class="el-dialog__footer">
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{
|
||||
t('jfI18n.print')
|
||||
}}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="submitForm" :disabled="loading">{{ t('jfI18n.submit') }}</el-button>
|
||||
</span>
|
||||
</footer>
|
||||
</template>
|
||||
<template v-else>
|
||||
<footer class="el-dialog__footer">
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{
|
||||
t('jfI18n.print')
|
||||
}}
|
||||
</el-button>
|
||||
</span>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<!-- 打印表单 -->
|
||||
<el-dialog v-model="data.showTinymceView" top="20px" width="700px"
|
||||
:title="data.tinymceTitle" append-to-body
|
||||
@close="closePrint">
|
||||
<tinymce-view v-if="data.showTinymceView" :currFlowForm="form" :elTab="data.elTab"></tinymce-view>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<!-- 打印表单 -->
|
||||
<el-dialog v-model="data.showTinymceView" top="20px" width="700px" :title="data.tinymceTitle" append-to-body @close="closePrint">
|
||||
<tinymce-view v-if="data.showTinymceView" :currFlowForm="form" :elTab="data.elTab"></tinymce-view>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="AskLeaveForm">
|
||||
import { useMessage } from '/@/hooks/message';
|
||||
import * as askLeave from '/@/api/order/ask-leave';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { onFormLoadedUrl, onLoadDicUrl, remoteMethodByKey } from '/@/flow/components/convert-name/convert.ts';
|
||||
import * as orderVue from '/@/api/order/order-key-vue';
|
||||
import { handleCustomFormPerm, handleFormPrint } from '/@/flow/utils/form-perm';
|
||||
import { deepClone } from '/@/utils/other';
|
||||
import { initCustomFormMethods } from '../index';
|
||||
|
||||
import {useMessage} from "/@/hooks/message";
|
||||
import * as askLeave from '/@/api/order/ask-leave'
|
||||
import {useI18n} from "vue-i18n"
|
||||
import {onFormLoadedUrl, onLoadDicUrl, remoteMethodByKey} from "/@/flow/components/convert-name/convert.ts";
|
||||
import * as orderVue from "/@/api/order/order-key-vue";
|
||||
import {handleCustomFormPerm, handleFormPrint} from "/@/flow/utils/form-perm";
|
||||
import {deepClone} from "/@/utils/other";
|
||||
import {initCustomFormMethods} from "../index";
|
||||
const { t } = useI18n();
|
||||
const emits = defineEmits(['handleJob']);
|
||||
// 引入组件
|
||||
const TinymceView = defineAsyncComponent(() => import('/@/flow/components/tinymce/TinymceView.vue'));
|
||||
|
||||
const {t} = useI18n();
|
||||
const emits = defineEmits(["handleJob"]);
|
||||
// 引入组件
|
||||
const TinymceView = defineAsyncComponent(() => import('/@/flow/components/tinymce/TinymceView.vue'));
|
||||
// 定义变量内容
|
||||
const dataFormRef = ref();
|
||||
const loading = ref(false);
|
||||
const operType = ref(false);
|
||||
// 定义字典
|
||||
const dicData = reactive({});
|
||||
const onLoad = onLoadDicUrl();
|
||||
const onFormLoaded = onFormLoadedUrl({ key: 'carbonCopyPerson' });
|
||||
onMounted(async () => {
|
||||
// await onLoad(dicData);
|
||||
});
|
||||
|
||||
// 定义变量内容
|
||||
const dataFormRef = ref();
|
||||
const loading = ref(false);
|
||||
const operType = ref(false);
|
||||
// 定义字典
|
||||
const dicData = reactive({});
|
||||
const onLoad = onLoadDicUrl();
|
||||
const onFormLoaded = onFormLoadedUrl({key: "carbonCopyPerson"});
|
||||
onMounted(async () => {
|
||||
// await onLoad(dicData);
|
||||
});
|
||||
function remoteMethod(query: string) {
|
||||
remoteMethodByKey(query, onLoad, dicData, 'userName', 'carbonCopyPerson');
|
||||
}
|
||||
|
||||
function remoteMethod(query: string) {
|
||||
remoteMethodByKey(query, onLoad, dicData, 'userName', "carbonCopyPerson")
|
||||
}
|
||||
const props = defineProps({
|
||||
currJob: {
|
||||
type: Object,
|
||||
default: null,
|
||||
},
|
||||
currElTab: {
|
||||
type: Object,
|
||||
default: {},
|
||||
},
|
||||
});
|
||||
|
||||
const props = defineProps({
|
||||
currJob: {
|
||||
type: Object,
|
||||
default: null,
|
||||
},
|
||||
currElTab: {
|
||||
type: Object,
|
||||
default: {},
|
||||
},
|
||||
});
|
||||
// 提交表单数据
|
||||
const form = reactive({
|
||||
type: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
days: '',
|
||||
carbonCopyPerson: [],
|
||||
remark: '',
|
||||
imgUrls: '',
|
||||
});
|
||||
|
||||
// 提交表单数据
|
||||
const form = reactive({
|
||||
type: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
days: '',
|
||||
carbonCopyPerson: [],
|
||||
remark: '',
|
||||
imgUrls: '',
|
||||
});
|
||||
// 定义校验规则
|
||||
const dataRules = ref({
|
||||
startTime: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }],
|
||||
days: [{ required: true, message: '请假天数不能为空', trigger: 'blur' }],
|
||||
remark: [{ required: true, message: '请假事由不能为空', trigger: 'blur' }],
|
||||
});
|
||||
|
||||
// 定义校验规则
|
||||
const dataRules = ref({
|
||||
startTime: [{required: true, message: '开始时间不能为空', trigger: 'blur'}],
|
||||
days: [{required: true, message: '请假天数不能为空', trigger: 'blur'}],
|
||||
remark: [{required: true, message: '请假事由不能为空', trigger: 'blur'}],
|
||||
})
|
||||
function initJobData() {
|
||||
handleGetObj(props.currJob.orderId);
|
||||
}
|
||||
|
||||
function initJobData() {
|
||||
handleGetObj(props.currJob.orderId)
|
||||
}
|
||||
const fieldsPerm = {
|
||||
type: false,
|
||||
startTime: false,
|
||||
endTime: false,
|
||||
days: false,
|
||||
carbonCopyPerson: false,
|
||||
remark: false,
|
||||
imgUrls: false,
|
||||
};
|
||||
// 定义字段显隐
|
||||
const hiddenFields = reactive(fieldsPerm);
|
||||
// 定义字段是否可编辑
|
||||
const disabledFields = reactive(deepClone(fieldsPerm));
|
||||
|
||||
const fieldsPerm = {
|
||||
type: false,
|
||||
startTime: false,
|
||||
endTime: false,
|
||||
days: false,
|
||||
carbonCopyPerson: false,
|
||||
remark: false,
|
||||
imgUrls: false,
|
||||
}
|
||||
// 定义字段显隐
|
||||
const hiddenFields = reactive(fieldsPerm);
|
||||
// 定义字段是否可编辑
|
||||
const disabledFields = reactive(deepClone(fieldsPerm));
|
||||
function handleGetObj(id) {
|
||||
askLeave.getObj(id).then(async (resp) => {
|
||||
let formData = resp.data ? resp.data : {};
|
||||
Object.assign(form, formData);
|
||||
await onFormLoaded(dicData, form);
|
||||
form.runJobId = props.currJob.id;
|
||||
await initFormPermPrint();
|
||||
});
|
||||
}
|
||||
|
||||
function handleGetObj(id) {
|
||||
askLeave.getObj(id).then(async resp => {
|
||||
let formData = resp.data ? resp.data : {}
|
||||
Object.assign(form, formData)
|
||||
await onFormLoaded(dicData, form);
|
||||
form.runJobId = props.currJob.id
|
||||
await initFormPermPrint()
|
||||
})
|
||||
}
|
||||
const data = reactive({
|
||||
showTinymceView: false,
|
||||
tinymceTitle: '',
|
||||
submitBtn: true,
|
||||
elTab: null,
|
||||
});
|
||||
|
||||
const data = reactive({
|
||||
showTinymceView: false,
|
||||
tinymceTitle: '',
|
||||
submitBtn: true,
|
||||
elTab: null
|
||||
})
|
||||
const methods = initCustomFormMethods(data, disabledFields, operType);
|
||||
|
||||
const methods = initCustomFormMethods(data, disabledFields, operType)
|
||||
async function initFormPermPrint() {
|
||||
let elTab = orderVue.currElTabIsExist(props.currJob, props.currElTab.id);
|
||||
// 处理表单权限
|
||||
let res = await handleCustomFormPerm(props, hiddenFields, disabledFields, elTab);
|
||||
// 判断是否仅查看
|
||||
await orderVue.currElTabIsView(methods, props.currJob, props.currElTab.id, submitForm, res.callback);
|
||||
// 采用elTab配置的模板
|
||||
await handleFormPrint(form, elTab.type, elTab.id, '1');
|
||||
data.elTab = elTab;
|
||||
}
|
||||
|
||||
async function initFormPermPrint() {
|
||||
let elTab = orderVue.currElTabIsExist(props.currJob, props.currElTab.id);
|
||||
// 处理表单权限
|
||||
let res = await handleCustomFormPerm(props, hiddenFields, disabledFields, elTab)
|
||||
// 判断是否仅查看
|
||||
await orderVue.currElTabIsView(methods, props.currJob, props.currElTab.id, submitForm, res.callback)
|
||||
// 采用elTab配置的模板
|
||||
await handleFormPrint(form, elTab.type, elTab.id, '1')
|
||||
data.elTab = elTab
|
||||
}
|
||||
function printForm() {
|
||||
closePrint(true, false);
|
||||
data.tinymceTitle = '请假工单';
|
||||
data.showTinymceView = true;
|
||||
}
|
||||
|
||||
function printForm() {
|
||||
closePrint(true, false)
|
||||
data.tinymceTitle = '请假工单'
|
||||
data.showTinymceView = true
|
||||
}
|
||||
function closePrint(isInit, isSave) {
|
||||
if (isInit) {
|
||||
form.formData = form;
|
||||
form.dicData = { carbonCopyPerson: dicData.carbonCopyPerson };
|
||||
form['carbonCopyPerson.valueKey'] = 'userId';
|
||||
form['carbonCopyPerson.showKey'] = 'name';
|
||||
} else {
|
||||
delete form.formData;
|
||||
delete form.dicData;
|
||||
delete form['carbonCopyPerson.valueKey'];
|
||||
delete form['carbonCopyPerson.showKey'];
|
||||
}
|
||||
if (isSave) delete form.printInfo;
|
||||
}
|
||||
|
||||
function closePrint(isInit, isSave){
|
||||
if (isInit) {
|
||||
form.formData = form
|
||||
form.dicData = {carbonCopyPerson: dicData.carbonCopyPerson}
|
||||
form['carbonCopyPerson.valueKey'] = 'userId'
|
||||
form['carbonCopyPerson.showKey'] = 'name'
|
||||
} else {
|
||||
delete form.formData
|
||||
delete form.dicData
|
||||
delete form['carbonCopyPerson.valueKey']
|
||||
delete form['carbonCopyPerson.showKey']
|
||||
}
|
||||
if (isSave) delete form.printInfo
|
||||
}
|
||||
async function submitForm() {
|
||||
closePrint(false, true);
|
||||
try {
|
||||
loading.value = true;
|
||||
await askLeave.putObj(form);
|
||||
orderVue.currElTabIsSave(props.currJob, props.currElTab.id, true, emits);
|
||||
useMessage().success(t(form.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
async function submitForm() {
|
||||
closePrint(false, true)
|
||||
try {
|
||||
loading.value = true;
|
||||
await askLeave.putObj(form)
|
||||
orderVue.currElTabIsSave(props.currJob, props.currElTab.id, true, emits)
|
||||
useMessage().success(t(form.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
// 监听双向绑定
|
||||
watch(
|
||||
() => props.currJob.id,
|
||||
() => {
|
||||
initJobData();
|
||||
}
|
||||
);
|
||||
|
||||
// 监听双向绑定
|
||||
watch(
|
||||
() => props.currJob.id,
|
||||
() => {
|
||||
initJobData();
|
||||
}
|
||||
);
|
||||
|
||||
onMounted(() => {
|
||||
initJobData()
|
||||
});
|
||||
onMounted(() => {
|
||||
initJobData();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.el-dialog__footer {
|
||||
text-align: center;
|
||||
.el-dialog__footer {
|
||||
text-align: center;
|
||||
|
||||
.dialog-footer {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.dialog-footer {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
@@ -1,307 +1,314 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading" :disabled="operType === 'view'">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.type">
|
||||
<el-form-item :label="t('askLeave.type')" prop="type">
|
||||
<el-input v-model="form.type" :placeholder="t('askLeave.inputTypeTip')" :disabled="disabledFields.type"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<div>
|
||||
<el-form ref="dataFormRef" :model="form" :rules="dataRules" label-width="90px" v-loading="loading" :disabled="operType === 'view'">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.type">
|
||||
<el-form-item :label="t('askLeave.type')" prop="type">
|
||||
<el-input v-model="form.type" :placeholder="t('askLeave.inputTypeTip')" :disabled="disabledFields.type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.startTime">
|
||||
<el-form-item :label="t('askLeave.startTime')" prop="startTime">
|
||||
<el-date-picker type="datetime" :placeholder="t('askLeave.inputStartTimeTip')" :disabled="disabledFields.startTime"
|
||||
v-model="form.startTime" :value-format="dateTimeStr"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.startTime">
|
||||
<el-form-item :label="t('askLeave.startTime')" prop="startTime">
|
||||
<el-date-picker
|
||||
type="datetime"
|
||||
:placeholder="t('askLeave.inputStartTimeTip')"
|
||||
:disabled="disabledFields.startTime"
|
||||
v-model="form.startTime"
|
||||
:value-format="dateTimeStr"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.endTime">
|
||||
<el-form-item :label="t('askLeave.endTime')" prop="endTime">
|
||||
<el-date-picker type="datetime" :placeholder="t('askLeave.inputEndTimeTip')" :disabled="disabledFields.endTime"
|
||||
v-model="form.endTime" :value-format="dateTimeStr"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.endTime">
|
||||
<el-form-item :label="t('askLeave.endTime')" prop="endTime">
|
||||
<el-date-picker
|
||||
type="datetime"
|
||||
:placeholder="t('askLeave.inputEndTimeTip')"
|
||||
:disabled="disabledFields.endTime"
|
||||
v-model="form.endTime"
|
||||
:value-format="dateTimeStr"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.days">
|
||||
<el-form-item :label="t('askLeave.days')" prop="days">
|
||||
<el-input v-model="form.days" :placeholder="t('askLeave.inputDaysTip')" :disabled="disabledFields.days"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.days">
|
||||
<el-form-item :label="t('askLeave.days')" prop="days">
|
||||
<el-input v-model="form.days" :placeholder="t('askLeave.inputDaysTip')" :disabled="disabledFields.days" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.carbonCopyPerson">
|
||||
<el-form-item :label="t('askLeave.carbonCopyPerson')" prop="carbonCopyPerson">
|
||||
<el-tooltip content="请输入用户名称进行模糊搜索" placement="top">
|
||||
<el-select v-model="form.carbonCopyPerson" :placeholder="t('askLeave.inputCarbonCopyPersonTip')" clearable filterable multiple
|
||||
remote :remote-method="remoteMethod" :reserve-keyword="false"
|
||||
:disabled="disabledFields.carbonCopyPerson">
|
||||
<el-option v-for="(item, index) in dicData.carbonCopyPerson" :key="index" :label="item.name" :value="item.userId"></el-option>
|
||||
</el-select>
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.carbonCopyPerson">
|
||||
<el-form-item :label="t('askLeave.carbonCopyPerson')" prop="carbonCopyPerson">
|
||||
<el-tooltip content="请输入用户名称进行模糊搜索" placement="top">
|
||||
<el-select
|
||||
v-model="form.carbonCopyPerson"
|
||||
:placeholder="t('askLeave.inputCarbonCopyPersonTip')"
|
||||
clearable
|
||||
filterable
|
||||
multiple
|
||||
remote
|
||||
:remote-method="remoteMethod"
|
||||
:reserve-keyword="false"
|
||||
:disabled="disabledFields.carbonCopyPerson"
|
||||
>
|
||||
<el-option v-for="(item, index) in dicData.carbonCopyPerson" :key="index" :label="item.name" :value="item.userId"></el-option>
|
||||
</el-select>
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.remark">
|
||||
<el-form-item :label="t('askLeave.remark')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="t('askLeave.inputRemarkTip')" :disabled="disabledFields.remark"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.remark">
|
||||
<el-form-item :label="t('askLeave.remark')" prop="remark">
|
||||
<el-input v-model="form.remark" type="textarea" :placeholder="t('askLeave.inputRemarkTip')" :disabled="disabledFields.remark" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.imgUrls">
|
||||
<el-form-item :label="t('askLeave.imgUrls')" prop="imgUrls">
|
||||
<el-input v-model="form.imgUrls" :placeholder="t('askLeave.inputImgUrlsTip')" :disabled="disabledFields.imgUrls"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template v-if="operType !== 'view'">
|
||||
<div style="text-align: center">
|
||||
<span class="dialog-footer">
|
||||
<template v-if="form.status !== DIC_PROP.ORDER_STATUS[0].value">
|
||||
<el-button type="primary" @click="onSubmit" :disabled="loading">{{ $t('jfI18n.initialBtn') }}</el-button>
|
||||
<el-button @click="onRefresh()">{{ $t('common.cancelButtonText') }}</el-button>
|
||||
<el-button type="primary" @click="onTemp" :disabled="loading">{{ $t('jfI18n.temp') }}</el-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{
|
||||
t('jfI18n.print')
|
||||
}}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="onSubmit" :disabled="loading">{{ $t('common.editBtn') }}</el-button>
|
||||
</template>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="operType === 'view'">
|
||||
<footer class="el-dialog__footer">
|
||||
<div style="text-align: center">
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{
|
||||
t('jfI18n.print')
|
||||
}}
|
||||
</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</template>
|
||||
<!-- 打印表单 -->
|
||||
<el-dialog v-model="data.showTinymceView" top="20px" width="700px"
|
||||
:title="data.tinymceTitle" append-to-body
|
||||
@close="closePrint">
|
||||
<tinymce-view v-if="data.showTinymceView" :currFlowForm="form" :elTab="data.elTab"></tinymce-view>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<el-col :span="12" class="mb20" v-if="!hiddenFields.imgUrls">
|
||||
<el-form-item :label="t('askLeave.imgUrls')" prop="imgUrls">
|
||||
<el-input v-model="form.imgUrls" :placeholder="t('askLeave.inputImgUrlsTip')" :disabled="disabledFields.imgUrls" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template v-if="operType !== 'view'">
|
||||
<div style="text-align: center">
|
||||
<span class="dialog-footer">
|
||||
<template v-if="form.status !== DIC_PROP.ORDER_STATUS[0].value">
|
||||
<el-button type="primary" @click="onSubmit" :disabled="loading">{{ $t('jfI18n.initialBtn') }}</el-button>
|
||||
<el-button @click="onRefresh()">{{ $t('common.cancelButtonText') }}</el-button>
|
||||
<el-button type="primary" @click="onTemp" :disabled="loading">{{ $t('jfI18n.temp') }}</el-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{ t('jfI18n.print') }} </el-button>
|
||||
<el-button type="primary" @click="onSubmit" :disabled="loading">{{ $t('common.editBtn') }}</el-button>
|
||||
</template>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="operType === 'view'">
|
||||
<footer class="el-dialog__footer">
|
||||
<div style="text-align: center">
|
||||
<span class="dialog-footer">
|
||||
<el-button type="primary" @click="printForm" v-if="form.printInfo">{{ t('jfI18n.print') }} </el-button>
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</template>
|
||||
<!-- 打印表单 -->
|
||||
<el-dialog v-model="data.showTinymceView" top="20px" width="700px" :title="data.tinymceTitle" append-to-body @close="closePrint">
|
||||
<tinymce-view v-if="data.showTinymceView" :currFlowForm="form" :elTab="data.elTab"></tinymce-view>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="AskLeaveDialog">
|
||||
import { useMessage } from '/@/hooks/message';
|
||||
import { getObj, addObj, putObj, tempStore } from '/@/api/order/ask-leave';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { rule, validateNull } from '/@/utils/validate';
|
||||
import { onFormLoadedUrl, onLoadDicUrl, remoteMethodByKey } from '/@/flow/components/convert-name/convert.ts';
|
||||
import * as common from '/@/flow/support/common';
|
||||
import { handleFormPrint, handleFormStartPerm } from '/@/flow/utils/form-perm';
|
||||
import { currFormIsView, orderKeyMap } from '/@/api/order/order-key-vue';
|
||||
import { deepClone } from '/@/utils/other';
|
||||
import { DIC_PROP } from '/@/flow/support/dict-prop';
|
||||
import { initCustomFormMethods } from '../index';
|
||||
|
||||
import { useMessage } from "/@/hooks/message";
|
||||
import {getObj, addObj, putObj, tempStore} from '/@/api/order/ask-leave'
|
||||
import { useI18n } from "vue-i18n"
|
||||
import {rule, validateNull} from '/@/utils/validate';
|
||||
import {onFormLoadedUrl, onLoadDicUrl, remoteMethodByKey} from "/@/flow/components/convert-name/convert.ts";
|
||||
import * as common from '/@/flow/support/common'
|
||||
import {handleFormPrint, handleFormStartPerm} from "/@/flow/utils/form-perm";
|
||||
import {currFormIsView, orderKeyMap} from "/@/api/order/order-key-vue";
|
||||
import {deepClone} from "/@/utils/other";
|
||||
import {DIC_PROP} from "/@/flow/support/dict-prop";
|
||||
import {initCustomFormMethods} from "../index";
|
||||
const emit = defineEmits(['refresh']);
|
||||
const { t } = useI18n();
|
||||
// 引入组件
|
||||
const TinymceView = defineAsyncComponent(() => import('/@/flow/components/tinymce/TinymceView.vue'));
|
||||
|
||||
const emit = defineEmits(['refresh']);
|
||||
const { t } = useI18n();
|
||||
// 引入组件
|
||||
const TinymceView = defineAsyncComponent(() => import('/@/flow/components/tinymce/TinymceView.vue'));
|
||||
// 定义变量内容
|
||||
const dataFormRef = ref();
|
||||
const visible = ref(false);
|
||||
const loading = ref(false);
|
||||
const operType = ref(false);
|
||||
const title = ref('');
|
||||
// 定义字典
|
||||
const dicData = reactive({});
|
||||
const onLoad = onLoadDicUrl();
|
||||
const onFormLoaded = onFormLoadedUrl({ key: 'carbonCopyPerson' });
|
||||
onMounted(async () => {
|
||||
// await onLoad(dicData);
|
||||
await openDialog(props.formData.type, props.formData.id);
|
||||
});
|
||||
|
||||
// 定义变量内容
|
||||
const dataFormRef = ref();
|
||||
const visible = ref(false);
|
||||
const loading = ref(false);
|
||||
const operType = ref(false);
|
||||
const title = ref('');
|
||||
// 定义字典
|
||||
const dicData = reactive({});
|
||||
const onLoad = onLoadDicUrl();
|
||||
const onFormLoaded = onFormLoadedUrl({key: "carbonCopyPerson"});
|
||||
onMounted(async () => {
|
||||
// await onLoad(dicData);
|
||||
await openDialog(props.formData.type, props.formData.id)
|
||||
});
|
||||
const props = defineProps({
|
||||
formData: {
|
||||
type: Object,
|
||||
default: null,
|
||||
},
|
||||
});
|
||||
|
||||
const props = defineProps({
|
||||
formData: {
|
||||
type: Object,
|
||||
default: null,
|
||||
}
|
||||
});
|
||||
// 提交表单数据
|
||||
const form = reactive({
|
||||
type: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
days: '',
|
||||
carbonCopyPerson: [],
|
||||
remark: '',
|
||||
imgUrls: '',
|
||||
});
|
||||
|
||||
// 提交表单数据
|
||||
const form = reactive({
|
||||
type: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
days: '',
|
||||
carbonCopyPerson: [],
|
||||
remark: '',
|
||||
imgUrls: '',
|
||||
});
|
||||
// 定义校验规则
|
||||
const dataRules = ref({
|
||||
startTime: [{ required: true, message: '开始时间不能为空', trigger: 'blur' }],
|
||||
days: [{ required: true, message: '请假天数不能为空', trigger: 'blur' }],
|
||||
remark: [{ required: true, message: '请假事由不能为空', trigger: 'blur' }],
|
||||
});
|
||||
|
||||
// 定义校验规则
|
||||
const dataRules = ref({
|
||||
startTime: [{required: true, message: '开始时间不能为空', trigger: 'blur'}],
|
||||
days: [{required: true, message: '请假天数不能为空', trigger: 'blur'}],
|
||||
remark: [{required: true, message: '请假事由不能为空', trigger: 'blur'}],
|
||||
})
|
||||
const fieldsPerm = {
|
||||
type: false,
|
||||
startTime: false,
|
||||
endTime: false,
|
||||
days: false,
|
||||
carbonCopyPerson: false,
|
||||
remark: false,
|
||||
imgUrls: false,
|
||||
};
|
||||
// 定义字段显隐
|
||||
const hiddenFields = reactive(fieldsPerm);
|
||||
// 定义字段是否可编辑
|
||||
const disabledFields = reactive(deepClone(fieldsPerm));
|
||||
|
||||
const fieldsPerm = {
|
||||
type: false,
|
||||
startTime: false,
|
||||
endTime: false,
|
||||
days: false,
|
||||
carbonCopyPerson: false,
|
||||
remark: false,
|
||||
imgUrls: false,
|
||||
}
|
||||
// 定义字段显隐
|
||||
const hiddenFields = reactive(fieldsPerm);
|
||||
// 定义字段是否可编辑
|
||||
const disabledFields = reactive(deepClone(fieldsPerm));
|
||||
// 打开弹窗
|
||||
const openDialog = async (type: string, id: string) => {
|
||||
visible.value = true;
|
||||
operType.value = type;
|
||||
form.id = '';
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = async (type: string, id: string) => {
|
||||
visible.value = true
|
||||
operType.value = type;
|
||||
form.id = ''
|
||||
if (type === 'add') {
|
||||
title.value = t('common.addBtn');
|
||||
} else if (type === 'edit') {
|
||||
title.value = t('common.editBtn');
|
||||
} else if (type === 'view') {
|
||||
title.value = t('common.viewBtn');
|
||||
} else if (type === 'copy') {
|
||||
title.value = t('common.copyBtn');
|
||||
}
|
||||
|
||||
if (type === 'add') {
|
||||
title.value = t('common.addBtn');
|
||||
} else if (type === 'edit') {
|
||||
title.value = t('common.editBtn');
|
||||
} else if (type === 'view') {
|
||||
title.value = t('common.viewBtn');
|
||||
} else if (type === 'copy') {
|
||||
title.value = t('common.copyBtn');
|
||||
}
|
||||
// 重置表单数据
|
||||
nextTick(async () => {
|
||||
dataFormRef.value?.resetFields();
|
||||
// 获取AskLeave信息
|
||||
if (id) {
|
||||
form.id = id;
|
||||
await getAskLeaveData(id);
|
||||
}
|
||||
await initFormPermPrint();
|
||||
});
|
||||
};
|
||||
|
||||
// 重置表单数据
|
||||
nextTick(async () => {
|
||||
dataFormRef.value?.resetFields();
|
||||
// 获取AskLeave信息
|
||||
if (id) {
|
||||
form.id = id
|
||||
await getAskLeaveData(id)
|
||||
}
|
||||
await initFormPermPrint()
|
||||
});
|
||||
const data = reactive({
|
||||
showTinymceView: false,
|
||||
tinymceTitle: '',
|
||||
elTab: null,
|
||||
});
|
||||
|
||||
};
|
||||
const methods = initCustomFormMethods(data, disabledFields);
|
||||
|
||||
const data = reactive({
|
||||
showTinymceView: false,
|
||||
tinymceTitle: '',
|
||||
elTab: null
|
||||
})
|
||||
async function initFormPermPrint() {
|
||||
// 处理表单权限 开始节点必须配置表单
|
||||
let res = await handleFormStartPerm(hiddenFields, disabledFields, null, null, orderKeyMap.AskLeave, null);
|
||||
await currFormIsView(methods, res.elTab, true, res.callback);
|
||||
// 采用elTab配置的模板
|
||||
await handleFormPrint(form, res.elTab.type, res.elTab.id, '1');
|
||||
data.elTab = res.elTab;
|
||||
}
|
||||
|
||||
const methods = initCustomFormMethods(data, disabledFields)
|
||||
function printForm() {
|
||||
closePrint(true, false);
|
||||
data.tinymceTitle = '请假工单';
|
||||
data.showTinymceView = true;
|
||||
}
|
||||
|
||||
async function initFormPermPrint() {
|
||||
// 处理表单权限 开始节点必须配置表单
|
||||
let res = await handleFormStartPerm(hiddenFields, disabledFields, null, null, orderKeyMap.AskLeave, null);
|
||||
await currFormIsView(methods, res.elTab, true, res.callback)
|
||||
// 采用elTab配置的模板
|
||||
await handleFormPrint(form, res.elTab.type, res.elTab.id, '1')
|
||||
data.elTab = res.elTab
|
||||
}
|
||||
function closePrint(isInit, isSave) {
|
||||
if (isInit) {
|
||||
form.formData = form;
|
||||
form.dicData = { carbonCopyPerson: dicData.carbonCopyPerson };
|
||||
form['carbonCopyPerson.valueKey'] = 'userId';
|
||||
form['carbonCopyPerson.showKey'] = 'name';
|
||||
} else {
|
||||
delete form.formData;
|
||||
delete form.dicData;
|
||||
delete form['carbonCopyPerson.valueKey'];
|
||||
delete form['carbonCopyPerson.showKey'];
|
||||
}
|
||||
if (isSave) delete form.printInfo;
|
||||
}
|
||||
|
||||
function printForm() {
|
||||
closePrint(true, false)
|
||||
data.tinymceTitle = '请假工单'
|
||||
data.showTinymceView = true
|
||||
}
|
||||
// 暂存
|
||||
const onTemp = async () => {
|
||||
closePrint(false, true);
|
||||
|
||||
function closePrint(isInit, isSave){
|
||||
if (isInit) {
|
||||
form.formData = form
|
||||
form.dicData = {carbonCopyPerson: dicData.carbonCopyPerson}
|
||||
form['carbonCopyPerson.valueKey'] = 'userId'
|
||||
form['carbonCopyPerson.showKey'] = 'name'
|
||||
} else {
|
||||
delete form.formData
|
||||
delete form.dicData
|
||||
delete form['carbonCopyPerson.valueKey']
|
||||
delete form['carbonCopyPerson.showKey']
|
||||
}
|
||||
if (isSave) delete form.printInfo
|
||||
}
|
||||
let clone = { operType: operType.value, form: form };
|
||||
common.handleCloneSubmit(clone);
|
||||
try {
|
||||
loading.value = true;
|
||||
await tempStore(form);
|
||||
useMessage().success(t(form.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
||||
visible.value = false;
|
||||
onRefresh();
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
// 暂存
|
||||
const onTemp = async () => {
|
||||
closePrint(false, true)
|
||||
function remoteMethod(query: string) {
|
||||
remoteMethodByKey(query, onLoad, dicData, 'userName', 'carbonCopyPerson');
|
||||
}
|
||||
|
||||
let clone = {operType: operType.value, form: form};
|
||||
common.handleCloneSubmit(clone);
|
||||
try {
|
||||
loading.value = true;
|
||||
await tempStore(form);
|
||||
useMessage().success(t(form.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
||||
visible.value = false;
|
||||
onRefresh();
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
// 提交
|
||||
const onSubmit = async () => {
|
||||
const valid = await dataFormRef.value.validate().catch(() => {});
|
||||
if (!valid) return false;
|
||||
closePrint(false, true);
|
||||
|
||||
function remoteMethod(query: string) {
|
||||
remoteMethodByKey(query, onLoad, dicData, 'userName', "carbonCopyPerson")
|
||||
}
|
||||
let clone = { operType: operType.value, form: form };
|
||||
common.handleCloneSubmit(clone);
|
||||
try {
|
||||
loading.value = true;
|
||||
form.status !== DIC_PROP.ORDER_STATUS[0].value ? await addObj(form) : await putObj(form);
|
||||
useMessage().success(t(form.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
||||
visible.value = false;
|
||||
onRefresh();
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
// 提交
|
||||
const onSubmit = async () => {
|
||||
const valid = await dataFormRef.value.validate().catch(() => {});
|
||||
if (!valid) return false;
|
||||
closePrint(false, true)
|
||||
const onRefresh = () => {
|
||||
emit('refresh');
|
||||
};
|
||||
|
||||
let clone = {operType: operType.value, form: form};
|
||||
common.handleCloneSubmit(clone)
|
||||
try {
|
||||
loading.value = true;
|
||||
form.status !== DIC_PROP.ORDER_STATUS[0].value ? await addObj(form) : await putObj(form);
|
||||
useMessage().success(t(form.id ? 'common.editSuccessText' : 'common.addSuccessText'));
|
||||
visible.value = false;
|
||||
onRefresh();
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
// 初始化表单数据
|
||||
const getAskLeaveData = async (id: string) => {
|
||||
// 获取数据
|
||||
loading.value = true;
|
||||
let res = await getObj(id);
|
||||
loading.value = false;
|
||||
Object.assign(form, res.data);
|
||||
await onFormLoaded(dicData, form);
|
||||
let clone = { operType: operType.value, form: form };
|
||||
common.handleClone(clone);
|
||||
};
|
||||
|
||||
const onRefresh = () => {
|
||||
emit('refresh');
|
||||
}
|
||||
async function getFormData() {
|
||||
const valid = await dataFormRef.value.validate().catch(() => {});
|
||||
if (!valid) return false;
|
||||
return form;
|
||||
}
|
||||
|
||||
// 初始化表单数据
|
||||
const getAskLeaveData = async (id: string) => {
|
||||
// 获取数据
|
||||
loading.value = true
|
||||
let res = await getObj(id)
|
||||
loading.value = false
|
||||
Object.assign(form, res.data)
|
||||
await onFormLoaded(dicData, form);
|
||||
let clone = {operType: operType.value, form: form};
|
||||
common.handleClone(clone);
|
||||
};
|
||||
|
||||
async function getFormData() {
|
||||
const valid = await dataFormRef.value.validate().catch(() => {});
|
||||
if (!valid) return false;
|
||||
return form
|
||||
}
|
||||
|
||||
// 暴露变量
|
||||
defineExpose({
|
||||
openDialog,
|
||||
getFormData
|
||||
});
|
||||
// 暴露变量
|
||||
defineExpose({
|
||||
openDialog,
|
||||
getFormData,
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,44 +1,43 @@
|
||||
export default {
|
||||
askLeave: {
|
||||
index: '#',
|
||||
importaskLeaveTip: 'import AskLeave',
|
||||
id: 'id',
|
||||
code: 'code',
|
||||
flowKey: 'flowKey',
|
||||
type: 'type',
|
||||
startTime: 'startTime',
|
||||
endTime: 'endTime',
|
||||
days: 'days',
|
||||
carbonCopyPerson: 'carbonCopyPerson',
|
||||
remark: 'remark',
|
||||
status: 'status',
|
||||
finishTime: 'finishTime',
|
||||
createUser: 'createUser',
|
||||
createTime: 'createTime',
|
||||
flowInstId: 'flowInstId',
|
||||
imgUrls: 'imgUrls',
|
||||
updateUser: 'updateUser',
|
||||
updateTime: 'updateTime',
|
||||
delFlag: 'delFlag',
|
||||
|
||||
inputIdTip: 'input id',
|
||||
inputCodeTip: 'input code',
|
||||
inputFlowKeyTip: 'input flowKey',
|
||||
inputTypeTip: 'input type',
|
||||
inputStartTimeTip: 'input startTime',
|
||||
inputEndTimeTip: 'input endTime',
|
||||
inputDaysTip: 'input days',
|
||||
inputCarbonCopyPersonTip: 'input carbonCopyPerson',
|
||||
inputRemarkTip: 'input remark',
|
||||
inputStatusTip: 'input status',
|
||||
inputFinishTimeTip: 'input finishTime',
|
||||
inputCreateUserTip: 'input createUser',
|
||||
inputCreateTimeTip: 'input createTime',
|
||||
inputFlowInstIdTip: 'input flowInstId',
|
||||
inputImgUrlsTip: 'input imgUrls',
|
||||
inputUpdateUserTip: 'input updateUser',
|
||||
inputUpdateTimeTip: 'input updateTime',
|
||||
inputDelFlagTip: 'input delFlag',
|
||||
|
||||
}
|
||||
}
|
||||
askLeave: {
|
||||
index: '#',
|
||||
importaskLeaveTip: 'import AskLeave',
|
||||
id: 'id',
|
||||
code: 'code',
|
||||
flowKey: 'flowKey',
|
||||
type: 'type',
|
||||
startTime: 'startTime',
|
||||
endTime: 'endTime',
|
||||
days: 'days',
|
||||
carbonCopyPerson: 'carbonCopyPerson',
|
||||
remark: 'remark',
|
||||
status: 'status',
|
||||
finishTime: 'finishTime',
|
||||
createUser: 'createUser',
|
||||
createTime: 'createTime',
|
||||
flowInstId: 'flowInstId',
|
||||
imgUrls: 'imgUrls',
|
||||
updateUser: 'updateUser',
|
||||
updateTime: 'updateTime',
|
||||
delFlag: 'delFlag',
|
||||
|
||||
inputIdTip: 'input id',
|
||||
inputCodeTip: 'input code',
|
||||
inputFlowKeyTip: 'input flowKey',
|
||||
inputTypeTip: 'input type',
|
||||
inputStartTimeTip: 'input startTime',
|
||||
inputEndTimeTip: 'input endTime',
|
||||
inputDaysTip: 'input days',
|
||||
inputCarbonCopyPersonTip: 'input carbonCopyPerson',
|
||||
inputRemarkTip: 'input remark',
|
||||
inputStatusTip: 'input status',
|
||||
inputFinishTimeTip: 'input finishTime',
|
||||
inputCreateUserTip: 'input createUser',
|
||||
inputCreateTimeTip: 'input createTime',
|
||||
inputFlowInstIdTip: 'input flowInstId',
|
||||
inputImgUrlsTip: 'input imgUrls',
|
||||
inputUpdateUserTip: 'input updateUser',
|
||||
inputUpdateTimeTip: 'input updateTime',
|
||||
inputDelFlagTip: 'input delFlag',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,44 +1,43 @@
|
||||
export default {
|
||||
askLeave: {
|
||||
index: '#',
|
||||
importaskLeaveTip: '导入请假工单',
|
||||
id: '主键id',
|
||||
code: '工单编号',
|
||||
flowKey: '流程KEY',
|
||||
type: '请假类型',
|
||||
startTime: '开始时间',
|
||||
endTime: '结束时间',
|
||||
days: '请假天数',
|
||||
carbonCopyPerson: '抄送人',
|
||||
remark: '请假事由',
|
||||
status: '状态',
|
||||
finishTime: '完成时间',
|
||||
createUser: '创建人',
|
||||
createTime: '创建时间',
|
||||
flowInstId: '流程实例ID',
|
||||
imgUrls: '上传文档',
|
||||
updateUser: '修改人',
|
||||
updateTime: '修改时间',
|
||||
delFlag: '删除标',
|
||||
|
||||
inputIdTip: '请输入主键id',
|
||||
inputCodeTip: '请输入编号',
|
||||
inputFlowKeyTip: '请输入流程KEY',
|
||||
inputTypeTip: '请输入请假类型',
|
||||
inputStartTimeTip: '请输入开始时间',
|
||||
inputEndTimeTip: '请输入结束时间',
|
||||
inputDaysTip: '请输入请假天数',
|
||||
inputCarbonCopyPersonTip: '请输入抄送人',
|
||||
inputRemarkTip: '请输入请假事由',
|
||||
inputStatusTip: '请输入状态',
|
||||
inputFinishTimeTip: '请输入完成时间',
|
||||
inputCreateUserTip: '请输入创建人',
|
||||
inputCreateTimeTip: '请输入创建时间',
|
||||
inputFlowInstIdTip: '请输入流程实例ID',
|
||||
inputImgUrlsTip: '请输入上传文档',
|
||||
inputUpdateUserTip: '请输入修改人',
|
||||
inputUpdateTimeTip: '请输入修改时间',
|
||||
inputDelFlagTip: '请输入删除标',
|
||||
|
||||
}
|
||||
}
|
||||
askLeave: {
|
||||
index: '#',
|
||||
importaskLeaveTip: '导入请假工单',
|
||||
id: '主键id',
|
||||
code: '工单编号',
|
||||
flowKey: '流程KEY',
|
||||
type: '请假类型',
|
||||
startTime: '开始时间',
|
||||
endTime: '结束时间',
|
||||
days: '请假天数',
|
||||
carbonCopyPerson: '抄送人',
|
||||
remark: '请假事由',
|
||||
status: '状态',
|
||||
finishTime: '完成时间',
|
||||
createUser: '创建人',
|
||||
createTime: '创建时间',
|
||||
flowInstId: '流程实例ID',
|
||||
imgUrls: '上传文档',
|
||||
updateUser: '修改人',
|
||||
updateTime: '修改时间',
|
||||
delFlag: '删除标',
|
||||
|
||||
inputIdTip: '请输入主键id',
|
||||
inputCodeTip: '请输入编号',
|
||||
inputFlowKeyTip: '请输入流程KEY',
|
||||
inputTypeTip: '请输入请假类型',
|
||||
inputStartTimeTip: '请输入开始时间',
|
||||
inputEndTimeTip: '请输入结束时间',
|
||||
inputDaysTip: '请输入请假天数',
|
||||
inputCarbonCopyPersonTip: '请输入抄送人',
|
||||
inputRemarkTip: '请输入请假事由',
|
||||
inputStatusTip: '请输入状态',
|
||||
inputFinishTimeTip: '请输入完成时间',
|
||||
inputCreateUserTip: '请输入创建人',
|
||||
inputCreateTimeTip: '请输入创建时间',
|
||||
inputFlowInstIdTip: '请输入流程实例ID',
|
||||
inputImgUrlsTip: '请输入上传文档',
|
||||
inputUpdateUserTip: '请输入修改人',
|
||||
inputUpdateTimeTip: '请输入修改时间',
|
||||
inputDelFlagTip: '请输入删除标',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,304 +1,303 @@
|
||||
<template>
|
||||
<div class="layout-padding">
|
||||
<div class="layout-padding-auto layout-padding-view">
|
||||
<el-row v-show="showSearch">
|
||||
<el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">
|
||||
<el-form-item :label="$t('askLeave.code')" prop="code" >
|
||||
<el-input :placeholder="t('askLeave.inputCodeTip')" v-model="state.queryForm.code" clearable
|
||||
style="max-width: 180px" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('askLeave.status')" prop="status">
|
||||
<el-select v-model="state.queryForm.status" :placeholder="t('askLeave.inputStatusTip')" clearable filterable style="max-width: 180px">
|
||||
<el-option v-for="(item, index) in DIC_PROP.ORDER_STATUS" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button icon="search" type="primary" @click="getDataList">
|
||||
{{ $t('common.queryBtn') }}
|
||||
</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">{{
|
||||
$t('common.resetBtn')
|
||||
}}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<div class="mb8" style="width: 100%">
|
||||
<div class="layout-padding">
|
||||
<div class="layout-padding-auto layout-padding-view">
|
||||
<el-row v-show="showSearch">
|
||||
<el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">
|
||||
<el-form-item :label="$t('askLeave.code')" prop="code">
|
||||
<el-input :placeholder="t('askLeave.inputCodeTip')" v-model="state.queryForm.code" clearable style="max-width: 180px" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('askLeave.status')" prop="status">
|
||||
<el-select v-model="state.queryForm.status" :placeholder="t('askLeave.inputStatusTip')" clearable filterable style="max-width: 180px">
|
||||
<el-option v-for="(item, index) in DIC_PROP.ORDER_STATUS" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button icon="search" type="primary" @click="getDataList">
|
||||
{{ $t('common.queryBtn') }}
|
||||
</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">{{ $t('common.resetBtn') }} </el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<div class="mb8" style="width: 100%">
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.addBtn') }}
|
||||
</template>
|
||||
<el-button icon="Plus" type="primary" class="ml10" @click="openDialog('add')" v-auth="'order_askleave_add'"> </el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.delBtn') }}
|
||||
</template>
|
||||
<el-button
|
||||
plain
|
||||
:disabled="multiple"
|
||||
icon="Delete"
|
||||
type="primary"
|
||||
class="ml10"
|
||||
v-auth="'order_askleave_del'"
|
||||
@click="handleDelete(selectObjs)"
|
||||
>
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.addBtn') }}
|
||||
</template>
|
||||
<el-button icon="Plus" type="primary" class="ml10" @click="openDialog('add')"
|
||||
v-auth="'order_askleave_add'">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.delBtn') }}
|
||||
</template>
|
||||
<el-button plain :disabled="multiple" icon="Delete" type="primary" class="ml10"
|
||||
v-auth="'order_askleave_del'" @click="handleDelete(selectObjs)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<right-toolbar
|
||||
v-model:showSearch="showSearch"
|
||||
:export="'order_askleave_export'"
|
||||
@exportExcel="exportExcel"
|
||||
class="ml10"
|
||||
style="float: right; margin-right: 20px"
|
||||
@queryTable="getDataList"
|
||||
></right-toolbar>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-table
|
||||
:data="state.dataList"
|
||||
v-loading="state.loading"
|
||||
style="width: 100%"
|
||||
@selection-change="handleSelectionChange"
|
||||
@sort-change="sortChangeHandle"
|
||||
>
|
||||
<el-table-column type="selection" width="40" align="center" />
|
||||
<el-table-column type="index" :label="t('askLeave.index')" width="40" />
|
||||
<el-table-column prop="code" :label="t('askLeave.code')" show-overflow-tooltip />
|
||||
<el-table-column prop="flowKey" :label="t('askLeave.flowKey')" show-overflow-tooltip />
|
||||
<el-table-column prop="type" :label="t('askLeave.type')" show-overflow-tooltip />
|
||||
<el-table-column prop="startTime" :label="t('askLeave.startTime')" show-overflow-tooltip />
|
||||
<el-table-column prop="endTime" :label="t('askLeave.endTime')" show-overflow-tooltip />
|
||||
<el-table-column prop="days" :label="t('askLeave.days')" show-overflow-tooltip />
|
||||
<el-table-column prop="carbonCopyPerson" :label="t('askLeave.carbonCopyPerson')" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<convert-name
|
||||
:options="state.dicData.carbonCopyPerson"
|
||||
:value="scope.row.carbonCopyPerson"
|
||||
:valueKey="'userId'"
|
||||
:showKey="'name'"
|
||||
></convert-name>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" :label="t('askLeave.remark')" show-overflow-tooltip />
|
||||
<el-table-column prop="status" :label="t('askLeave.status')" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<dict-tag :options="DIC_PROP.ORDER_STATUS" :value="scope.row.status"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="finishTime" :label="t('askLeave.finishTime')" show-overflow-tooltip />
|
||||
<el-table-column prop="createUser" :label="t('askLeave.createUser')" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<convert-name :options="state.dicData.createUser" :value="scope.row.createUser" :valueKey="'userId'" :showKey="'name'"></convert-name>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" :label="t('askLeave.createTime')" show-overflow-tooltip />
|
||||
<el-table-column :label="$t('common.action')" width="150">
|
||||
<template #default="scope">
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.viewBtn') }}
|
||||
</template>
|
||||
<el-button text type="primary" icon="view" @click="openDialog('view', scope.row.id)"> </el-button>
|
||||
</el-tooltip>
|
||||
|
||||
<right-toolbar v-model:showSearch="showSearch" :export="'order_askleave_export'"
|
||||
@exportExcel="exportExcel" class="ml10" style="float: right;margin-right: 20px"
|
||||
@queryTable="getDataList"></right-toolbar>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-table :data="state.dataList" v-loading="state.loading" style="width: 100%"
|
||||
@selection-change="handleSelectionChange" @sort-change="sortChangeHandle">
|
||||
<el-table-column type="selection" width="40" align="center"/>
|
||||
<el-table-column type="index" :label="t('askLeave.index')" width="40"/>
|
||||
<el-table-column prop="code" :label="t('askLeave.code')" show-overflow-tooltip/>
|
||||
<el-table-column prop="flowKey" :label="t('askLeave.flowKey')" show-overflow-tooltip/>
|
||||
<el-table-column prop="type" :label="t('askLeave.type')" show-overflow-tooltip/>
|
||||
<el-table-column prop="startTime" :label="t('askLeave.startTime')" show-overflow-tooltip/>
|
||||
<el-table-column prop="endTime" :label="t('askLeave.endTime')" show-overflow-tooltip/>
|
||||
<el-table-column prop="days" :label="t('askLeave.days')" show-overflow-tooltip/>
|
||||
<el-table-column prop="carbonCopyPerson" :label="t('askLeave.carbonCopyPerson')" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<convert-name :options="state.dicData.carbonCopyPerson" :value="scope.row.carbonCopyPerson"
|
||||
:valueKey="'userId'" :showKey="'name'"></convert-name>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" :label="t('askLeave.remark')" show-overflow-tooltip/>
|
||||
<el-table-column prop="status" :label="t('askLeave.status')" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<dict-tag :options="DIC_PROP.ORDER_STATUS" :value="scope.row.status"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="finishTime" :label="t('askLeave.finishTime')" show-overflow-tooltip/>
|
||||
<el-table-column prop="createUser" :label="t('askLeave.createUser')" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<convert-name :options="state.dicData.createUser" :value="scope.row.createUser"
|
||||
:valueKey="'userId'" :showKey="'name'"></convert-name>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" :label="t('askLeave.createTime')" show-overflow-tooltip/>
|
||||
<el-table-column :label="$t('common.action')" width="150">
|
||||
<template #default="scope">
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.viewBtn') }}
|
||||
</template>
|
||||
<el-button text type="primary" icon="view" @click="openDialog('view', scope.row.id)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top">
|
||||
<template #content> 打印表单 </template>
|
||||
<el-button icon="Document" text type="primary" @click="openDialog('view', scope.row.id)"> </el-button>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
打印表单
|
||||
</template>
|
||||
<el-button icon="Document" text type="primary" @click="openDialog('view', scope.row.id)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.copyBtn') }}
|
||||
</template>
|
||||
<el-button icon="DocumentCopy" text type="primary" @click="openDialog('copy', scope.row.id, scope.row)"> </el-button>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip placement="top">
|
||||
<template #content>
|
||||
{{ $t('common.copyBtn') }}
|
||||
</template>
|
||||
<el-button icon="DocumentCopy" text type="primary" @click="openDialog('copy', scope.row.id, scope.row)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top" v-if="scope.row.status === DIC_PROP.ORDER_STATUS[2].value">
|
||||
<template #content>
|
||||
{{ $t('jfI18n.recallBtn') }}
|
||||
</template>
|
||||
<el-button icon="RefreshLeft" text type="primary" @click="handleRecallReset(scope.row)"> </el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top" v-if="scope.row.status === DIC_PROP.ORDER_STATUS[0].value">
|
||||
<template #content>
|
||||
{{ $t('jfI18n.resetBtn') }}
|
||||
</template>
|
||||
<el-button icon="RefreshRight" text type="primary" @click="handleRecallReset(scope.row)"> </el-button>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip placement="top" v-if="scope.row.status===DIC_PROP.ORDER_STATUS[2].value">
|
||||
<template #content>
|
||||
{{ $t('jfI18n.recallBtn') }}
|
||||
</template>
|
||||
<el-button icon="RefreshLeft" text type="primary" @click="handleRecallReset(scope.row)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top" v-if="scope.row.status===DIC_PROP.ORDER_STATUS[0].value">
|
||||
<template #content>
|
||||
{{ $t('jfI18n.resetBtn') }}
|
||||
</template>
|
||||
<el-button icon="RefreshRight" text type="primary" @click="handleRecallReset(scope.row)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top" v-if="scope.row.flowInstId">
|
||||
<template #content>
|
||||
{{ $t('jfI18n.viewFlow') }}
|
||||
</template>
|
||||
<el-button text type="primary" icon="Share" @click="openPreview(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
|
||||
<el-tooltip placement="top" v-if="scope.row.flowInstId">
|
||||
<template #content>
|
||||
{{ $t('jfI18n.viewFlow') }}
|
||||
</template>
|
||||
<el-button text type="primary" icon="Share" @click="openPreview(scope.row)"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip
|
||||
placement="top"
|
||||
v-if="scope.row.status === DIC_PROP.ORDER_STATUS[1].value || scope.row.status === DIC_PROP.ORDER_STATUS[0].value"
|
||||
>
|
||||
<template #content>
|
||||
{{ $t('common.editBtn') }}
|
||||
</template>
|
||||
<el-button icon="edit-pen" text type="primary" @click="openDialog('edit', scope.row.id, scope.row)"> </el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top" v-if="scope.row.status === DIC_PROP.ORDER_STATUS[1].value">
|
||||
<template #content>
|
||||
{{ $t('common.delBtn') }}
|
||||
</template>
|
||||
<el-button icon="delete" text type="primary" @click="handleDelete([scope.row.id])"> </el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
|
||||
</div>
|
||||
|
||||
<el-tooltip placement="top" v-if="scope.row.status===DIC_PROP.ORDER_STATUS[1].value || scope.row.status===DIC_PROP.ORDER_STATUS[0].value">
|
||||
<template #content>
|
||||
{{ $t('common.editBtn') }}
|
||||
</template>
|
||||
<el-button icon="edit-pen" text type="primary" @click="openDialog('edit', scope.row.id, scope.row)">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip placement="top" v-if="scope.row.status===DIC_PROP.ORDER_STATUS[1].value">
|
||||
<template #content>
|
||||
{{ $t('common.delBtn') }}
|
||||
</template>
|
||||
<el-button icon="delete" text type="primary" @click="handleDelete([scope.row.id])">
|
||||
</el-button>
|
||||
</el-tooltip>
|
||||
<!-- 发起工单 -->
|
||||
<json-flow-predict ref="predict" :proxy="proxy" @handleInitiateOrder="refresh">
|
||||
<template v-slot="slotProps" v-if="showInitiateOrder">
|
||||
<form-dialog ref="form" v-show="slotProps.currActive === 'form'" :formData="formData" @refresh="refresh" />
|
||||
</template>
|
||||
</json-flow-predict>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle"
|
||||
v-bind="state.pagination"/>
|
||||
</div>
|
||||
|
||||
<!-- 发起工单 -->
|
||||
<json-flow-predict ref="predict" :proxy="proxy" @handleInitiateOrder="refresh">
|
||||
<template v-slot="slotProps" v-if="showInitiateOrder">
|
||||
<form-dialog ref="form" v-show="slotProps.currActive === 'form'" :formData="formData" @refresh="refresh"/>
|
||||
</template>
|
||||
</json-flow-predict>
|
||||
|
||||
<!-- 编辑、新增 -->
|
||||
<el-dialog title="请假工单" v-model="showFormDialog" width="60%"
|
||||
:close-on-click-modal="false" draggable>
|
||||
<form-dialog v-if="showFormDialog" ref="formDialogRef" :formData="formData" @refresh="refresh"/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<!-- 编辑、新增 -->
|
||||
<el-dialog title="请假工单" v-model="showFormDialog" width="60%" :close-on-click-modal="false" draggable>
|
||||
<form-dialog v-if="showFormDialog" ref="formDialogRef" :formData="formData" @refresh="refresh" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="systemAskLeave">
|
||||
import {BasicTableProps, useTable} from "/@/hooks/table";
|
||||
import {fetchList, delObjs} from "/@/api/order/ask-leave";
|
||||
import {useMessage, useMessageBox} from "/@/hooks/message";
|
||||
import { BasicTableProps, useTable } from '/@/hooks/table';
|
||||
import { fetchList, delObjs } from '/@/api/order/ask-leave';
|
||||
import { useMessage, useMessageBox } from '/@/hooks/message';
|
||||
|
||||
import {useI18n} from "vue-i18n";
|
||||
import {onCascadeChange, onLoadDicUrl, onLoaded} from "/@/flow/components/convert-name/convert";
|
||||
import {recallReset} from "/@/api/jsonflow/run-flow";
|
||||
import {openFlowPreview} from "/@/flow/support/extend";
|
||||
import {DIC_PROP} from "/@/flow/support/dict-prop";
|
||||
import {orderKeyMap} from "/@/api/order/order-key-vue";
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { onCascadeChange, onLoadDicUrl, onLoaded } from '/@/flow/components/convert-name/convert';
|
||||
import { recallReset } from '/@/api/jsonflow/run-flow';
|
||||
import { openFlowPreview } from '/@/flow/support/extend';
|
||||
import { DIC_PROP } from '/@/flow/support/dict-prop';
|
||||
import { orderKeyMap } from '/@/api/order/order-key-vue';
|
||||
|
||||
// 引入组件
|
||||
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
|
||||
const JsonFlowPredict = defineAsyncComponent(() => import('/@/views/jsonflow/flow-design/predict.vue'));
|
||||
// 引入组件
|
||||
const FormDialog = defineAsyncComponent(() => import('./form.vue'));
|
||||
const JsonFlowPredict = defineAsyncComponent(() => import('/@/views/jsonflow/flow-design/predict.vue'));
|
||||
|
||||
const {t} = useI18n()
|
||||
const {proxy} = getCurrentInstance();
|
||||
// 定义查询字典
|
||||
const dicData = reactive({});
|
||||
// const onLoad = onLoadDicUrl();
|
||||
onMounted(() => {
|
||||
// onLoad(dicData);
|
||||
});
|
||||
// 定义变量内容
|
||||
const formDialogRef = ref()
|
||||
const showFormDialog = ref(false)
|
||||
const showInitiateOrder = ref(false)
|
||||
const formData = ref({})
|
||||
// 搜索变量
|
||||
const queryRef = ref()
|
||||
const showSearch = ref(true)
|
||||
// 多选变量
|
||||
const selectObjs = ref([]) as any
|
||||
const multiple = ref(true)
|
||||
const { t } = useI18n();
|
||||
const { proxy } = getCurrentInstance();
|
||||
// 定义查询字典
|
||||
const dicData = reactive({});
|
||||
// const onLoad = onLoadDicUrl();
|
||||
onMounted(() => {
|
||||
// onLoad(dicData);
|
||||
});
|
||||
// 定义变量内容
|
||||
const formDialogRef = ref();
|
||||
const showFormDialog = ref(false);
|
||||
const showInitiateOrder = ref(false);
|
||||
const formData = ref({});
|
||||
// 搜索变量
|
||||
const queryRef = ref();
|
||||
const showSearch = ref(true);
|
||||
// 多选变量
|
||||
const selectObjs = ref([]) as any;
|
||||
const multiple = ref(true);
|
||||
|
||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||
queryForm: {},
|
||||
pageList: fetchList,
|
||||
onLoaded: onLoaded({key: "createUser"}, {key: "carbonCopyPerson"}),
|
||||
descs: ["create_time"]
|
||||
})
|
||||
const state: BasicTableProps = reactive<BasicTableProps>({
|
||||
queryForm: {},
|
||||
pageList: fetchList,
|
||||
onLoaded: onLoaded({ key: 'createUser' }, { key: 'carbonCopyPerson' }),
|
||||
descs: ['create_time'],
|
||||
});
|
||||
|
||||
// table hook
|
||||
const {
|
||||
getDataList,
|
||||
currentChangeHandle,
|
||||
sizeChangeHandle,
|
||||
sortChangeHandle,
|
||||
downBlobFile
|
||||
} = useTable(state)
|
||||
// table hook
|
||||
const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, downBlobFile } = useTable(state);
|
||||
|
||||
// 清空搜索条件
|
||||
const resetQuery = () => {
|
||||
// 清空搜索条件
|
||||
queryRef.value?.resetFields()
|
||||
// 清空多选
|
||||
selectObjs.value = []
|
||||
getDataList()
|
||||
}
|
||||
// 清空搜索条件
|
||||
const resetQuery = () => {
|
||||
// 清空搜索条件
|
||||
queryRef.value?.resetFields();
|
||||
// 清空多选
|
||||
selectObjs.value = [];
|
||||
getDataList();
|
||||
};
|
||||
|
||||
// 导出excel
|
||||
const exportExcel = () => {
|
||||
downBlobFile('/order/ask-leave/export', state.queryForm, 'ask-leave.xlsx')
|
||||
}
|
||||
// 导出excel
|
||||
const exportExcel = () => {
|
||||
downBlobFile('/order/ask-leave/export', state.queryForm, 'ask-leave.xlsx');
|
||||
};
|
||||
|
||||
// 多选事件
|
||||
const handleSelectionChange = (objs: any) => {
|
||||
selectObjs.value = objs.map(({ id }) => id);
|
||||
multiple.value = !objs.length;
|
||||
};
|
||||
// 多选事件
|
||||
const handleSelectionChange = (objs: any) => {
|
||||
selectObjs.value = objs.map(({ id }) => id);
|
||||
multiple.value = !objs.length;
|
||||
};
|
||||
|
||||
// 删除操作
|
||||
const handleDelete = async (ids: string[]) => {
|
||||
try {
|
||||
await useMessageBox().confirm(t('common.delConfirmText'));
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
// 删除操作
|
||||
const handleDelete = async (ids: string[]) => {
|
||||
try {
|
||||
await useMessageBox().confirm(t('common.delConfirmText'));
|
||||
} catch {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await delObjs(ids);
|
||||
getDataList();
|
||||
useMessage().success(t('common.delSuccessText'));
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
}
|
||||
};
|
||||
try {
|
||||
await delObjs(ids);
|
||||
getDataList();
|
||||
useMessage().success(t('common.delSuccessText'));
|
||||
} catch (err: any) {
|
||||
useMessage().error(err.msg);
|
||||
}
|
||||
};
|
||||
|
||||
function handleRecallReset(row) {
|
||||
let params = {id: row.flowInstId, flowKey: row.flowKey, status: row.status}
|
||||
if (row.status === DIC_PROP.ORDER_STATUS[0].value) {
|
||||
recallReset(params).then(() => {
|
||||
useMessage().success('重发成功');
|
||||
getDataList();
|
||||
})
|
||||
return
|
||||
}
|
||||
useMessageBox().confirm('是否确认要撤回该工单?')
|
||||
.then(() => {
|
||||
return recallReset(params)
|
||||
}).then(() => {
|
||||
useMessage().success('撤回成功')
|
||||
getDataList();
|
||||
})
|
||||
}
|
||||
function handleRecallReset(row) {
|
||||
let params = { id: row.flowInstId, flowKey: row.flowKey, status: row.status };
|
||||
if (row.status === DIC_PROP.ORDER_STATUS[0].value) {
|
||||
recallReset(params).then(() => {
|
||||
useMessage().success('重发成功');
|
||||
getDataList();
|
||||
});
|
||||
return;
|
||||
}
|
||||
useMessageBox()
|
||||
.confirm('是否确认要撤回该工单?')
|
||||
.then(() => {
|
||||
return recallReset(params);
|
||||
})
|
||||
.then(() => {
|
||||
useMessage().success('撤回成功');
|
||||
getDataList();
|
||||
});
|
||||
}
|
||||
|
||||
const $router = useRouter();
|
||||
function openPreview(row) {
|
||||
openFlowPreview($router, {flowInstId: row.flowInstId}, '1')
|
||||
}
|
||||
const $router = useRouter();
|
||||
function openPreview(row) {
|
||||
openFlowPreview($router, { flowInstId: row.flowInstId }, '1');
|
||||
}
|
||||
|
||||
function openPredict(row, bool) {
|
||||
proxy.$refs.predict.open(row, bool)
|
||||
}
|
||||
function openPredict(row, bool) {
|
||||
proxy.$refs.predict.open(row, bool);
|
||||
}
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (type?: string, id?: string, row?) => {
|
||||
formData.value = {type, id}
|
||||
if (type === 'add' || type === 'edit' || type === 'copy') {
|
||||
showInitiateOrder.value = true
|
||||
if (type === 'add') {
|
||||
openPredict({flowKey: orderKeyMap.AskLeave}, true)
|
||||
} else {
|
||||
openPredict(row, true)
|
||||
}
|
||||
} else {
|
||||
showFormDialog.value = true
|
||||
}
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
getDataList(false)
|
||||
openPredict({}, false)
|
||||
showInitiateOrder.value = false
|
||||
showFormDialog.value = false
|
||||
}
|
||||
// 打开弹窗
|
||||
const openDialog = (type?: string, id?: string, row?) => {
|
||||
formData.value = { type, id };
|
||||
if (type === 'add' || type === 'edit' || type === 'copy') {
|
||||
showInitiateOrder.value = true;
|
||||
if (type === 'add') {
|
||||
openPredict({ flowKey: orderKeyMap.AskLeave }, true);
|
||||
} else {
|
||||
openPredict(row, true);
|
||||
}
|
||||
} else {
|
||||
showFormDialog.value = true;
|
||||
}
|
||||
};
|
||||
|
||||
function refresh() {
|
||||
getDataList(false);
|
||||
openPredict({}, false);
|
||||
showInitiateOrder.value = false;
|
||||
showFormDialog.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user