|
@@ -1,5 +1,5 @@
|
|
|
<script setup lang="ts">
|
|
|
-import { reactive, ref, nextTick } from 'vue'
|
|
|
+import { reactive, ref, nextTick, computed } from 'vue'
|
|
|
import { ColumnProps } from '@/components/TableBase/interface/index'
|
|
|
import {
|
|
|
Overtime_User_list,
|
|
@@ -22,9 +22,10 @@ import type {
|
|
|
UploadRawFile,
|
|
|
UploadFiles
|
|
|
} from 'element-plus'
|
|
|
-import { ElMessageBox, ElMessage } from 'element-plus'
|
|
|
+import { ElMessageBox, ElMessage, genFileId } from 'element-plus'
|
|
|
import { floatReg } from '@/views/salary/salary/relus'
|
|
|
import { GlobalStore } from '@/stores/index'
|
|
|
+import { dayJs } from '@/utils/common'
|
|
|
const globalStore = GlobalStore()
|
|
|
|
|
|
const TableRef = ref()
|
|
@@ -63,7 +64,8 @@ const AddOvertime = (formEl: FormInstance | undefined) => {
|
|
|
formEl.validate(async valid => {
|
|
|
if (valid) {
|
|
|
let res: any = {}
|
|
|
- form.value.T_duration = form.value.T_duration * 60
|
|
|
+ // form.value.T_duration = form.value.T_duration
|
|
|
+ form.value.T_duration = duration.value * 60
|
|
|
if (isNew) {
|
|
|
res = await Overtime_Add({ ...form.value, T_approver: uuid })
|
|
|
} else {
|
|
@@ -117,8 +119,16 @@ const rules = reactive<FormRules>({
|
|
|
T_approver: [{ required: true, message: '请选择审批人', trigger: 'blur' }]
|
|
|
})
|
|
|
let uuid = ''
|
|
|
+const duration = computed(() => {
|
|
|
+ const end_time = dayJs(form.value.T_end_time)
|
|
|
+ if (!form.value.T_end_time) {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ let count: number = end_time.diff(form.value.T_start_time, 'hour', true)
|
|
|
+ let num: number = Number(count.toFixed(2))
|
|
|
+ return Math.round(num * 10) / 10
|
|
|
+})
|
|
|
const form = ref({
|
|
|
- T_type: '',
|
|
|
T_start_time: '',
|
|
|
T_end_time: '',
|
|
|
T_duration: 0,
|
|
@@ -158,13 +168,13 @@ const onResize = () => {
|
|
|
}
|
|
|
|
|
|
// upload file
|
|
|
+const upload = ref()
|
|
|
let uploadData = { token: '' }
|
|
|
const dialogImageUrl = ref('')
|
|
|
const dialogVisible = ref(false)
|
|
|
-const disabled = ref(false)
|
|
|
-// const fileList = ref<UploadUserFile[]>([])
|
|
|
+const fileList = ref([])
|
|
|
const handlePictureCardPreview = (file: UploadFile) => {
|
|
|
- console.log(file)
|
|
|
+ console.log(file, fileList)
|
|
|
dialogImageUrl.value = file.url as string
|
|
|
dialogVisible.value = true
|
|
|
}
|
|
@@ -182,11 +192,19 @@ const beforeUpload = async (file: any) => {
|
|
|
}
|
|
|
const handleExceed: UploadProps['onExceed'] = (files: any) => {
|
|
|
console.log(files)
|
|
|
- // upload.value!.clearFiles()
|
|
|
- // const file = files[0] as UploadRawFile
|
|
|
- // file.uid = genFileId()
|
|
|
- // upload.value!.handleStart(file)
|
|
|
+ upload.value.clearFiles()
|
|
|
+ const file = files[0] as UploadRawFile
|
|
|
+ file.uid = genFileId()
|
|
|
+ console.log(file)
|
|
|
+ upload.value.handleStart(file)
|
|
|
+
|
|
|
+ submitUpload()
|
|
|
+}
|
|
|
+
|
|
|
+const submitUpload = () => {
|
|
|
+ upload.value.submit()
|
|
|
}
|
|
|
+
|
|
|
const onSuccess = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
|
|
|
console.log(response, uploadFile, uploadFiles)
|
|
|
}
|
|
@@ -197,7 +215,7 @@ const onError = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles)
|
|
|
// console.log(file)
|
|
|
// }
|
|
|
const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
|
|
- console.log(uploadFile, uploadFiles)
|
|
|
+ console.log(uploadFile, uploadFiles, fileList)
|
|
|
}
|
|
|
</script>
|
|
|
|
|
@@ -251,7 +269,7 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
|
|
</el-col>
|
|
|
<Drawer ref="drawerRef" :handleClose="callbackDrawer">
|
|
|
<template #header="{ params }">
|
|
|
- <h4 :id="params.titleId" :class="params.titleClass">{{ isNew ? '添加' : '编辑' }} - 角色</h4>
|
|
|
+ <h4 :id="params.titleId" :class="params.titleClass">{{ isNew ? '添加' : '编辑' }} - 申请</h4>
|
|
|
</template>
|
|
|
<el-form ref="ruleFormRef" :model="form" :rules="rules">
|
|
|
<el-form-item label="开始时间:" :label-width="formLabelWidth" prop="T_start_time">
|
|
@@ -261,8 +279,8 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
|
|
v-model="form.T_start_time"
|
|
|
type="datetime"
|
|
|
placeholder="选择开始时间"
|
|
|
- format="YYYY-MM-DD hh:mm:ss"
|
|
|
- value-format="YYYY-MM-DD hh:mm:ss"
|
|
|
+ format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="结束时间:" :label-width="formLabelWidth" prop="T_end_time">
|
|
@@ -272,15 +290,17 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
|
|
v-model="form.T_end_time"
|
|
|
type="datetime"
|
|
|
placeholder="选择结束时间"
|
|
|
- format="YYYY-MM-DD hh:mm:ss"
|
|
|
- value-format="YYYY-MM-DD hh:mm:ss"
|
|
|
+ format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="加班时长:" :label-width="formLabelWidth" prop="T_duration">
|
|
|
- <el-input v-model.number="form.T_duration" autocomplete="off" placeholder="请假时长" />
|
|
|
+ <el-input v-model.number="duration" autocomplete="off" :disabled="true" placeholder="请假时长" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="取证:" :label-width="formLabelWidth" prop="T_duration">
|
|
|
+ <el-form-item label="取证:" :label-width="formLabelWidth">
|
|
|
<el-upload
|
|
|
+ ref="upload"
|
|
|
+ v-model:file-list="fileList"
|
|
|
action="https://up-z2.qiniup.com"
|
|
|
list-type="picture-card"
|
|
|
:limit="1"
|
|
@@ -294,23 +314,6 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
|
|
:data="uploadData"
|
|
|
>
|
|
|
<el-icon><Plus /></el-icon>
|
|
|
-
|
|
|
- <!-- <template #file="{ file }">
|
|
|
- <div>
|
|
|
- <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
|
|
|
- <span class="el-upload-list__item-actions">
|
|
|
- <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
|
|
|
- <el-icon><zoom-in /></el-icon>
|
|
|
- </span>
|
|
|
- <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
|
|
|
- <el-icon><Download /></el-icon>
|
|
|
- </span>
|
|
|
- <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
|
|
|
- <el-icon><Delete /></el-icon>
|
|
|
- </span>
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- </template> -->
|
|
|
</el-upload>
|
|
|
<el-dialog v-model="dialogVisible">
|
|
|
<img w-full :src="dialogImageUrl" class="full-img" alt="Preview Image" />
|
|
@@ -374,4 +377,11 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
+.d-flex {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .inline-flex {
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|