Эх сурвалжийг харах

add:请假申请添加申请时间,验证产品添加型号,规格

zoie 1 долоо хоног өмнө
parent
commit
06da0ae636

+ 1 - 0
src/hooks/useTablePublic.ts

@@ -6,6 +6,7 @@ export interface LeaveUserInfoIn {
 	T_user_name: string
 	T_dept: string
 	T_post: string
+	CreateTime: string
 	T_type_name: string
 	T_start_time: string
 	T_end_time: string

+ 2 - 2
src/views/storehouse/sales/VerifyForm.vue

@@ -297,12 +297,12 @@ defineExpose({
   <div class="verify-form">
     <Drawer ref="drawerRef" :handleClose="callbackDrawer" size="80%">
       <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_number">
           <div>
-            <el-input v-model="form.T_number" :disabled="!isNew" placeholder="请输入合同编号" class="w-50" />
+            <el-input v-model="form.T_number" placeholder="请输入合同编号" class="w-50" />
             <el-button :loading="contractNumberLoading" :disabled="!isNew" type="primary" @click="getContractNumber"
               >生成合同编号</el-button
             >

+ 146 - 77
src/views/storehouse/sales/VerifyProject.vue

@@ -1,49 +1,51 @@
 <script setup lang="ts">
-import { Storehouse_Product_List } from '@/api/storehouse/index'
-import { GlobalStore } from '@/stores/index'
+import {Storehouse_Product_List, Storehouse_Product_Name_List} from '@/api/storehouse/index'
+import {GlobalStore} from '@/stores/index'
 import Drawer from '@/components/Drawer/index.vue'
-import { ref, reactive, onMounted, nextTick } from 'vue'
+import {nextTick, onMounted, reactive, ref} from 'vue'
 import ImageCom from '@/components/Image/index.vue'
 
 const autoSelect = ref('')
+const loading = ref(false)
+const NameOptions = ref<any[]>([])
 const selectTable = ref()
 const globalStore = GlobalStore()
 const tableProductData = ref<any[]>([])
 const drawerProductRef = ref<InstanceType<typeof Drawer> | null>(null)
 
 const initParam = reactive({
-  User_tokey: globalStore.GET_User_tokey,
-  page: 1,
-  page_z: 9999,
-  T_VerifyContract: 1
+	User_tokey: globalStore.GET_User_tokey,
+	page: 1,
+	page_z: 9999,
+	T_VerifyContract: 1
 })
 
 // 获取产品的列表
 const getProductList = async () => {
-  const res: any = await Storehouse_Product_List({ ...initParam, T_name: autoSelect.value })
-  tableProductData.value.push(...res.Data.Data)
-  if (selectProductData.value?.length) {
-    // 设置产品的选中
-    tableProductData.value.forEach((row: any) => {
-      const matchedIndex = selectProductData.value?.findIndex((item: any) => item.Id == row.Id)
-      selectTable.value?.toggleRowSelection(row, matchedIndex != -1)
-    })
-  }
+	const res: any = await Storehouse_Product_List({...initParam, T_name: autoSelect.value})
+	tableProductData.value.push(...res.Data.Data)
+	if (selectProductData.value?.length) {
+		// 设置产品的选中
+		tableProductData.value.forEach((row: any) => {
+			const matchedIndex = selectProductData.value?.findIndex((item: any) => item.Id == row.Id)
+			selectTable.value?.toggleRowSelection(row, matchedIndex != -1)
+		})
+	}
 }
 
 onMounted(() => {
-  getProductList()
+	getProductList()
 })
 
 const productColumns = [
-  { type: 'selection', width: 80 },
-  { prop: 'T_img', label: '产品图片', name: 'T_img' },
-  { prop: 'T_name', label: '产品名称' },
-  { prop: 'T_class_name', label: '产品分类' },
-  { prop: 'T_model', label: '产品型号', ellipsis: true },
-  { prop: 'T_spec', label: '产品规格' },
-  { prop: 'T_relation_sn', label: '关联SN', name: 'T_relation_sn' },
-  { prop: 'T_remark', label: '备注', ellipsis: true }
+	{type: 'selection', width: 80},
+	{prop: 'T_img', label: '产品图片', name: 'T_img'},
+	{prop: 'T_name', label: '产品名称'},
+	{prop: 'T_class_name', label: '产品分类'},
+	{prop: 'T_model', label: '产品型号', ellipsis: true},
+	{prop: 'T_spec', label: '产品规格'},
+	{prop: 'T_relation_sn', label: '关联SN', name: 'T_relation_sn'},
+	{prop: 'T_remark', label: '备注', ellipsis: true}
 ]
 
 // 保存选中的数据id,row-key就是要指定一个key标识这一行的数据
@@ -54,81 +56,148 @@ const callbackProductDrawer = (done: () => void) => done()
 const ProductselectionChange = (selection: any[], row: any) => emit('ontableData', row)
 const ProductSelectionAllChange = (selection: any[]) => emit('ontableDataAll', selection)
 const clearSelection = () => {
-  initParam.page = 1
-  tableProductData.value = []
-  selectTable.value?.clearSelection()
+	initParam.page = 1
+	tableProductData.value = []
+	selectTable.value?.clearSelection()
 }
 const selectTableChange = (row: any) => {
-  nextTick(() => {
-    selectTable.value?.toggleRowSelection(row, false)
-  })
+	nextTick(() => {
+		selectTable.value?.toggleRowSelection(row, false)
+	})
 }
 
 // props
 const props = defineProps<{ selectProductData?: any[] }>()
 const selectProductData = ref(props.selectProductData)
 const emit = defineEmits<{ (event: 'ontableData', value: any): void; (event: 'ontableDataAll', value: any[]): void }>()
-
+const getNameAsync = async (str: string): Promise<any> => {
+	const res: any = await Storehouse_Product_Name_List({T_name: str, T_VerifyContract: 1})
+	if (!res.Data) return
+	return res.Data.map((item: any, index: number) => {
+		return {
+			value: item,
+			index: index
+		}
+	})
+}
+const querySearchAsync = async (queryString: string) => {
+	if (queryString) {
+		loading.value = true
+		globalStore.SET_isloading(true)
+		const results = await getNameAsync(queryString)
+		NameOptions.value = results
+		globalStore.SET_isloading(false)
+		loading.value = false
+	}
+}
+// 搜索模型
+const searchModelHandle = () => {
+	initParam.page = 1
+	tableProductData.value = []
+	getProductList()
+}
 defineExpose({
-  openDrawer,
-  clearSelection,
-  selectTableChange
+	openDrawer,
+	clearSelection,
+	selectTableChange
 })
 </script>
 
 <template>
-  <Drawer ref="drawerProductRef" :handleClose="callbackProductDrawer" size="70%">
-    <template #header="{ params }">
-      <h4 :id="params.titleId" :class="params.titleClass">选择产品</h4>
-    </template>
-    <el-table
-      ref="selectTable"
-      :row-key="getRowKey"
-      :data="tableProductData"
-      style="width: 100%; height: 99%"
-      :header-cell-style="{
+	<Drawer ref="drawerProductRef" :handleClose="callbackProductDrawer" size="70%">
+		<template #header="{ params }">
+			<h4 :id="params.titleId" :class="params.titleClass">选择产品</h4>
+
+		</template>
+		<el-card class="box-card" shadow="never">
+			<template #header>
+				<div class="input-suffix">
+					<el-row :gutter="20" style="margin-bottom: 0">
+						<el-col class="d-flex">
+							<span class="inline-flex items-center">产品名称:</span>
+							<el-input v-model="autoSelect" type="text" class="w-50 m-2"
+									  placeholder="按产品名称搜索" clearable/>
+							<el-button type="primary" @click="searchModelHandle">搜索</el-button>
+						</el-col>
+					</el-row>
+				</div>
+			</template>
+			<el-table
+				ref="selectTable"
+				:row-key="getRowKey"
+				:data="tableProductData"
+				style="width: 100%; height: 99%"
+				:header-cell-style="{
         background: '#dedfe0',
         height: '50px'
       }"
-      @select="ProductselectionChange"
-      @select-all="ProductSelectionAllChange"
-    >
-      <template v-for="item in productColumns" :key="item">
-        <el-table-column v-if="item.type === 'index' || item.type === 'selection'" align="center" v-bind="item" />
-        <el-table-column show-overflow-tooltip v-if="!item.ellipsis && item.prop" v-bind="item">
-          <template #default="{ row }">
+				@select="ProductselectionChange"
+				@select-all="ProductSelectionAllChange"
+			>
+				<template v-for="item in productColumns" :key="item">
+					<el-table-column v-if="item.type === 'index' || item.type === 'selection'" align="center"
+									 v-bind="item"/>
+					<el-table-column show-overflow-tooltip v-if="!item.ellipsis && item.prop" v-bind="item">
+						<template #default="{ row }">
             <span v-if="item.prop === 'T_relation_sn'">
               <el-tag v-if="row.T_relation_sn === 1" effect="dark">是</el-tag>
               <el-tag v-else type="success" effect="dark">否</el-tag>
             </span>
-            <ImageCom v-if="item.prop === 'T_img'" :src="row.T_img" />
-          </template>
-        </el-table-column>
-        <el-table-column show-overflow-tooltip v-if="item.ellipsis && item.prop === 'T_model'" align="center" v-bind="item">
-          <template #default="{ row }">
-            <el-tooltip effect="dark" :content="row.T_model" placement="bottom">
-              {{ row.T_model }}
-            </el-tooltip>
-          </template>
-        </el-table-column>
-        <el-table-column show-overflow-tooltip v-if="item.ellipsis && item.prop === 'T_remark'" align="center" v-bind="item">
-          <template #default="{ row }">
-            <el-tooltip effect="customized" placement="left">
-              <template #content>
-                <div class="tooltip-content">{{ row.T_remark }}</div>
-              </template>
-              {{ row.T_remark }}
-            </el-tooltip>
-          </template>
-        </el-table-column>
-      </template>
-    </el-table>
-  </Drawer>
+							<ImageCom v-if="item.prop === 'T_img'" :src="row.T_img"/>
+						</template>
+					</el-table-column>
+					<el-table-column show-overflow-tooltip v-if="item.ellipsis && item.prop === 'T_model'"
+									 align="center"
+									 v-bind="item">
+						<template #default="{ row }">
+							<el-tooltip effect="dark" :content="row.T_model" placement="bottom">
+								{{ row.T_model }}
+							</el-tooltip>
+						</template>
+					</el-table-column>
+					<el-table-column show-overflow-tooltip v-if="item.ellipsis && item.prop === 'T_remark'"
+									 align="center"
+									 v-bind="item">
+						<template #default="{ row }">
+							<el-tooltip effect="customized" placement="left">
+								<template #content>
+									<div class="tooltip-content">{{ row.T_remark }}</div>
+								</template>
+								{{ row.T_remark }}
+							</el-tooltip>
+						</template>
+					</el-table-column>
+				</template>
+			</el-table>
+		</el-card>
+	</Drawer>
 </template>
 
 <style scoped lang="scss">
 .tooltip-content {
-  max-width: 500px;
-  overflow-y: auto;
+	max-width: 500px;
+	overflow-y: auto;
 }
+
+.box-card {
+	height: 100%;
+
+	:deep(.el-card__body) {
+		height: calc(100% - 70px);
+	}
+
+	.input-suffix {
+		width: 100%;
+
+		.inline-flex {
+			white-space: nowrap;
+		}
+
+		.w-50 {
+			width: 12.5rem;
+		}
+	}
+}
+
+
 </style>

+ 12 - 0
src/views/storehouse/verifyCompany/VerifyProductionList.vue

@@ -31,6 +31,8 @@ const columns: ColumnProps[] = [
 	{prop: 'T_class_name', label: '产品分类'},
 	{prop: 'T_name', label: '产品名称'},
 	{prop: 'T_price', label: '单价'},
+	{prop: 'T_spec', label: '规格'},
+	{prop: 'T_model', label: '型号', ellipsis: true},
 	{prop: 'T_remark', label: '备注', name: 'T_remark'},
 	{prop: 'operation', label: '操作', width: 150, fixed: 'right'}
 ]
@@ -39,12 +41,16 @@ const rules = reactive<FormRules>({
 	T_name: [{required: true, message: '请输入产品名称', trigger: 'blur'}],
 	T_class: [{required: true, message: '请选择产品分类', trigger: 'blur'}],
 	T_price: [{required: true, message: '请输入单价', trigger: 'blur'}],
+	T_model: [{ required: true, message: '请输入型号', trigger: 'blur' }],
+	T_spec: [{ required: true, message: '请选择规格', trigger: 'blur' }],
 })
 const form = ref({
 	Id: '',
 	T_name: '',
 	T_class: '',
 	T_remark: '',
+	T_model: '',
+	T_spec: '',
 	T_price: ''
 })
 
@@ -218,6 +224,12 @@ onMounted(() => {
 						<el-option v-for="item in options" :key="item.Id" :label="item.T_name" :value="item.Id"/>
 					</el-select>
 				</el-form-item>
+				<el-form-item label="产品型号:" class="m-b-6" :label-width="formLabelWidth" prop="T_model">
+					<el-input v-model="form.T_model" type="text" autocomplete="off" placeholder="请输入产品型号" />
+				</el-form-item>
+				<el-form-item label="产品规格:" class="m-b-6" :label-width="formLabelWidth" prop="T_spec">
+					<el-input v-model="form.T_spec" type="text" autocomplete="off" placeholder="请选择产品规格" />
+				</el-form-item>
 				<el-form-item label="单价:" class="m-b-6" :label-width="formLabelWidth" prop="T_price">
 					<el-input v-model="form.T_price" type="number" autocomplete="off" placeholder="请收入单价"/>
 				</el-form-item>

+ 6 - 0
src/views/workAttendance/Leave.vue

@@ -18,6 +18,7 @@ const userInfo = ref<LeaveUserInfoIn>({
   T_dept: '',
   T_post: '',
   T_type_name: '',
+  CreateTime: '',
   T_start_time: '',
   T_end_time: '',
   T_text: '',
@@ -91,6 +92,11 @@ const LeaveUser = async (T_State: number) => {
                   userInfo.T_type_name ? userInfo.T_type_name : '-'
                 }}</el-text></el-descriptions-item
               >
+				<el-descriptions-item label="申请时间:"
+				><el-text class="mx-1" type="primary">{{
+						userInfo.CreateTime ? userInfo.CreateTime : '-'
+					}}</el-text></el-descriptions-item
+				>
               <el-descriptions-item label="开始时间:"
                 ><el-text class="mx-1" type="primary">{{
                   userInfo.T_start_time ? userInfo.T_start_time : '-'

+ 1 - 0
src/views/workAttendance/MyLeave.vue

@@ -31,6 +31,7 @@ const { resetForm, globalStore, updateOnTableList } = useTablePublic()
 
 const columns: ColumnProps[] = [
   { prop: 'T_type_name', label: '请假类型' },
+  { prop: 'CreateTime', label: '申请时间', ellipsis: true },
   { prop: 'T_start_time', label: '开始时间', ellipsis: true },
   { prop: 'T_end_time', label: '结束时间', ellipsis: true },
   { prop: 'T_duration', label: '请假时长', name: 'T_duration' },

+ 283 - 268
src/views/workAttendance/RecordsFinance.vue

@@ -1,351 +1,366 @@
 <script setup lang="ts">
-import { User_List } from '@/api/user/index'
-import { GlobalStore } from '@/stores/index'
-import { getFormatDuration } from '@/utils/common'
+import {User_List} from '@/api/user/index'
+import {GlobalStore} from '@/stores/index'
+import {getFormatDuration} from '@/utils/common'
 import Drawer from '@/components/Drawer/index.vue'
 import TableBase from '@/components/TableBase/index.vue'
-import type { FormInstance, FormRules } from 'element-plus'
-import { ElMessage, ElMessageBox } from 'element-plus'
-import { ColumnProps } from '@/components/TableBase/interface/index'
-import { ref, reactive, computed, nextTick } from 'vue'
-import { Leave_Finance_List, Leave_Deduct, LeaveType_List } from '@/api/workAttendance/index'
-import { useTablePublic } from '@/hooks/useTablePublic'
+import type {FormInstance, FormRules} from 'element-plus'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {ColumnProps} from '@/components/TableBase/interface/index'
+import {computed, nextTick, reactive, ref} from 'vue'
+import {Leave_Deduct, Leave_Finance_List, LeaveType_List} from '@/api/workAttendance/index'
+import {useTablePublic} from '@/hooks/useTablePublic'
 
 const LeaveType = ref<any[]>([])
 const globalStore = GlobalStore()
 const ruleFormRef = ref<FormInstance>()
 const TableRef = ref<InstanceType<typeof TableBase> | null>(null)
-const initParam = reactive({ User_tokey: globalStore.GET_User_tokey, T_name: '' })
+const initParam = reactive({User_tokey: globalStore.GET_User_tokey, T_name: ''})
 const drawerRef = ref<InstanceType<typeof Drawer> | null>(null)
 const LeaveTableRef = ref<InstanceType<typeof TableBase> | null>(null)
-const { tableRowClassName } = useTablePublic()
+const {tableRowClassName} = useTablePublic()
 const tableRowClassNameHandle = (data: any): any => tableRowClassName(data.row.T_uuid, LeaveinitParam.T_uuid)
 
 let date = new Date()
 const month = date.getMonth()
 const year = date.getFullYear()
 const salaryFromData = ref({
-  year: year + '',
-  month: (month < 10 ? '0' : '') + month,
-  T_uuid: ''
+	year: year + '',
+	month: (month < 10 ? '0' : '') + month,
+	T_uuid: ''
 })
 
 // 搜索以及参数
 const columns: ColumnProps[] = [
-  { prop: 'T_name', label: '姓名' },
-  { prop: 'T_post_name', label: '职位', ellipsis: true }
+	{prop: 'T_name', label: '姓名'},
+	{prop: 'T_post_name', label: '职位', ellipsis: true}
 ]
 const userColums: ColumnProps[] = [
-  { prop: 'T_type_name', label: '请假类型' },
-  { prop: 'T_start_time', label: '开始时间', ellipsis: true },
-  { prop: 'T_end_time', label: '结束时间', ellipsis: true },
-  { prop: 'T_duration', label: '请假时长', name: 'T_duration' },
-  { prop: 'T_text', label: '理由' },
-  { prop: 'T_State', label: '审核', name: 'T_State' }
+	{prop: 'T_type_name', label: '请假类型'},
+	{prop: 'CreateTime', label: '申请时间', ellipsis: true},
+	{prop: 'T_start_time', label: '开始时间', ellipsis: true},
+	{prop: 'T_end_time', label: '结束时间', ellipsis: true},
+	{prop: 'T_duration', label: '请假时长', name: 'T_duration'},
+	{prop: 'T_text', label: '理由'},
+	{prop: 'T_State', label: '审核', name: 'T_State'}
 ]
 const dateCom = computed(() => {
-  return `${salaryFromData.value.year}-${salaryFromData.value.month}`
+	return `${salaryFromData.value.year}-${salaryFromData.value.month}`
 })
 
 const LeaveinitParam = reactive({
-  User_tokey: globalStore.GET_User_tokey,
-  T_uuid: '',
-  T_month: dateCom.value
+	User_tokey: globalStore.GET_User_tokey,
+	T_uuid: '',
+	T_month: dateCom.value
 })
 
 const getSalaryParams = (row: any) => {
-  LeaveinitParam.T_uuid = ''
-  setTimeout(() => {
-    userInfo.name = row.T_name
-    userInfo.T_dept = row.T_dept_name
-    userInfo.T_post = row.T_post_name
-    LeaveinitParam.T_uuid = row.T_uuid
-    LeaveTableRef.value && LeaveTableRef.value.searchTable()
-  }, 100)
+	LeaveinitParam.T_uuid = ''
+	setTimeout(() => {
+		userInfo.name = row.T_name
+		userInfo.T_dept = row.T_dept_name
+		userInfo.T_post = row.T_post_name
+		LeaveinitParam.T_uuid = row.T_uuid
+		LeaveTableRef.value && LeaveTableRef.value.searchTable()
+	}, 100)
 }
 
 const salarDateMonthChange = (val: string) => {
-  if (!val) return
-  if (!LeaveinitParam.T_uuid) {
-    ElMessage.warning('请选择员工!!!')
-  }
-  LeaveinitParam.T_month = dateCom.value
-  LeaveTableRef.value && LeaveTableRef?.value.searchTable()
+	if (!val) return
+	if (!LeaveinitParam.T_uuid) {
+		ElMessage.warning('请选择员工!!!')
+	}
+	LeaveinitParam.T_month = dateCom.value
+	LeaveTableRef.value && LeaveTableRef?.value.searchTable()
 }
 const salarDateYearChange = (val: string) => {
-  if (!val) return
-  if (!LeaveinitParam.T_uuid) {
-    ElMessage.warning('请选择员工!!!')
-  }
-  LeaveinitParam.T_month = dateCom.value
-  LeaveTableRef.value && LeaveTableRef.value.searchTable()
+	if (!val) return
+	if (!LeaveinitParam.T_uuid) {
+		ElMessage.warning('请选择员工!!!')
+	}
+	LeaveinitParam.T_month = dateCom.value
+	LeaveTableRef.value && LeaveTableRef.value.searchTable()
 }
 const userInfo = reactive({
-  squareUrl: 'https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png',
-  name: '',
-  T_dept: '',
-  T_post: ''
+	squareUrl: 'https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png',
+	name: '',
+	T_dept: '',
+	T_post: ''
 })
 
 const dataCallback = (res: any): any => res.Data.Data && res.Data.Data.filter((item: any) => item.T_approver)
 
 // drawer
 const form = reactive({
-  T_type: '',
-  T_duration: 0,
-  hover: 0,
-  minute: 0,
-  T_text: ''
+	T_type: '',
+	T_duration: 0,
+	hover: 0,
+	minute: 0,
+	T_text: ''
 })
 
 const duration = computed(() => {
-  return form.hover * 60 + form.minute
+	return form.hover * 60 + form.minute
 })
 
 const rules = reactive<FormRules>({
-  T_type: [{ required: true, message: '请选择扣除类型', trigger: 'blur' }],
-  T_duration: [{ required: true, message: '请输入扣除时长', trigger: 'blur' }],
-  T_text: [{ required: true, message: '请输入扣除理由', trigger: 'blur' }]
+	T_type: [{required: true, message: '请选择扣除类型', trigger: 'blur'}],
+	T_duration: [{required: true, message: '请输入扣除时长', trigger: 'blur'}],
+	T_text: [{required: true, message: '请输入扣除理由', trigger: 'blur'}]
 })
 
 const Deductduraton = async () => {
-  !LeaveType.value.length && getLeaveTypeList()
-  drawerRef.value?.openDrawer()
+	!LeaveType.value.length && getLeaveTypeList()
+	drawerRef.value?.openDrawer()
 }
 const getLeaveTypeList = async () => {
-  const res: any = await LeaveType_List({ User_tokey: globalStore.GET_User_tokey, T_deduct: 1 })
-  if (res.Code === 200) {
-    LeaveType.value = res.Data
-  }
+	const res: any = await LeaveType_List({User_tokey: globalStore.GET_User_tokey, T_deduct: 1})
+	if (res.Code === 200) {
+		LeaveType.value = res.Data
+	}
 }
 const callbackDrawer = (done: () => void) => {
-  nextTick(() => {
-    resetForm(ruleFormRef.value)
-    done()
-  })
+	nextTick(() => {
+		resetForm(ruleFormRef.value)
+		done()
+	})
 }
 const resetForm = (formEl: FormInstance | undefined) => {
-  if (!formEl) return
-  form.hover = 0
-  form.minute = 0
-  formEl.resetFields()
+	if (!formEl) return
+	form.hover = 0
+	form.minute = 0
+	formEl.resetFields()
 }
 
 const AddLeave = (formEl: FormInstance | undefined) => {
-  if (!formEl) return
-  form.T_duration = duration.value
-  formEl.validate(async valid => {
-    if (valid) {
-      open()
-    }
-  })
+	if (!formEl) return
+	form.T_duration = duration.value
+	formEl.validate(async valid => {
+		if (valid) {
+			open()
+		}
+	})
 }
 
 const open = () => {
-  ElMessageBox.confirm('确定扣除?扣除后无法修改?', '警告', {
-    confirmButtonText: '确定',
-    cancelButtonText: '取消',
-    type: 'warning'
-  })
-    .then(async () => {
-      const params = {
-        User_tokey: globalStore.GET_User_tokey,
-        T_type: form.T_type,
-        T_duration: form.T_duration,
-        T_text: form.T_text,
-        T_uuid: LeaveinitParam.T_uuid,
-        T_month: dateCom.value
-      }
-      const res: any = await Leave_Deduct(params)
-      if (res.Code === 200) {
-        ElMessage.success('扣除成功!')
-        nextTick(() => {
-          drawerRef.value?.closeDrawer()
-          resetForm(ruleFormRef.value)
-        })
-      }
-    })
-    .catch(() => {
-      ElMessage.info('取消成功!')
-    })
+	ElMessageBox.confirm('确定扣除?扣除后无法修改?', '警告', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning'
+	})
+		.then(async () => {
+			const params = {
+				User_tokey: globalStore.GET_User_tokey,
+				T_type: form.T_type,
+				T_duration: form.T_duration,
+				T_text: form.T_text,
+				T_uuid: LeaveinitParam.T_uuid,
+				T_month: dateCom.value
+			}
+			const res: any = await Leave_Deduct(params)
+			if (res.Code === 200) {
+				ElMessage.success('扣除成功!')
+				nextTick(() => {
+					drawerRef.value?.closeDrawer()
+					resetForm(ruleFormRef.value)
+				})
+			}
+		})
+		.catch(() => {
+			ElMessage.info('取消成功!')
+		})
 }
 const searchHandle = () => TableRef.value?.searchTable()
 </script>
 
 <template>
-  <div class="RecordsFinance">
-    <div style="width: 290px" class="RecordsFinance-table">
-      <TableBase
-        ref="TableRef"
-        :columns="columns"
-        :requestApi="User_List"
-        :initParam="initParam"
-        layout="prev, pager, next"
-        :rowClick="getSalaryParams"
-        :tableRowClassName="tableRowClassNameHandle"
-      >
-        <template #table-header>
-          <el-row :gutter="24" class="input-suffix margin-left-0 margin-right-0">
-            <el-col :span="24" class="d-flex padding-right-0 padding-left-0">
-              <span class="inline-flex">姓名:</span>
-              <el-input type="text" v-model="initParam.T_name" @change="searchHandle" />
-              <el-button type="primary" @click="searchHandle">搜索</el-button>
-            </el-col>
-          </el-row>
-        </template>
-      </TableBase>
-    </div>
-    <transition
-      leave-active-class="animate__animated animate__fadeOutRight"
-      enter-active-class="animate__animated animate__fadeInLeft"
-    >
-      <el-row class="h-100 f-1 margin-left-3 RecordsFinance-container" v-if="LeaveinitParam.T_uuid">
-        <el-col :span="24" class="h-100" style="overflow: hidden; display: flex; flex-direction: column">
-          <el-card class="m-b-3">
-            <h3 class="title m-b-5">员工基本信息</h3>
-            <div class="info-content">
-              <el-avatar shape="square" size="large"><img src="@/assets/images/avatar.jpg" /> </el-avatar>
-              <div class="info-name">
-                <h4>名字:{{ userInfo.name }}</h4>
-                <h4>部门: {{ userInfo.T_dept }}</h4>
-                <h4>岗位: {{ userInfo.T_post }}</h4>
-              </div>
-            </div>
-          </el-card>
-          <el-card class="m-b-3">
-            <el-row :gutter="20">
-              <el-col :span="10" class="d-flex justify-start">
-                <span class="demonstration">年:</span>
-                <el-date-picker
-                  v-model="salaryFromData.year"
-                  value-format="YYYY"
-                  type="year"
-                  placeholder="请选择年"
-                  @change="salarDateYearChange"
-                />
-                <span class="demonstration">月:</span>
-                <el-date-picker
-                  v-model="salaryFromData.month"
-                  popper-class="picker-date"
-                  value-format="MM"
-                  format="MM"
-                  type="month"
-                  placeholder="请选择月"
-                  @change="salarDateMonthChange"
-                />
-              </el-col>
-              <el-col :span="12" class="d-flex justify-end">
-                <el-button type="primary" @click="Deductduraton">扣除时长</el-button>
-              </el-col>
-            </el-row>
-          </el-card>
-          <div style="flex: 1">
-            <TableBase
-              v-if="LeaveinitParam.T_uuid"
-              ref="LeaveTableRef"
-              :columns="userColums"
-              :requestApi="Leave_Finance_List"
-              :initParam="LeaveinitParam"
-              layout="total,prev, pager, next"
-              :displayHeader="true"
-              :dataCallback="dataCallback"
-            >
-              <template #T_duration="{ row }">{{ getFormatDuration(row.T_duration) }}</template>
-              <template #T_State="{ row }">
-                <el-tag v-if="row.T_State === 1" type="success">通过</el-tag>
-                <el-tag v-else-if="row.T_State === 2" type="warning">未通过</el-tag>
-                <el-tag v-else type="danger">待审核</el-tag>
-              </template>
-            </TableBase>
-          </div>
-        </el-col>
-      </el-row>
-    </transition>
-    <Drawer ref="drawerRef" :handleClose="callbackDrawer">
-      <template #header="{ params }">
-        <h4 :id="params.titleId" :class="params.titleClass">扣除时长</h4>
-      </template>
-      <el-form ref="ruleFormRef" :model="form" :rules="rules">
-        <el-form-item label="扣除类型:" label-width="100px" prop="T_type">
-          <el-select v-model="form.T_type" placeholder="请选择扣除类型">
-            <el-option v-for="item in LeaveType" :key="item.Id" :label="item.T_name" :value="item.Id" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="扣除时长:" label-width="100px" prop="T_duration">
-          <div class="d-flex">
-            <el-input type="text" v-model.number="form.hover"><template #suffix> 小时 </template></el-input
-            ><el-input type="text" v-model.number="form.minute">
-              <template #suffix> 分钟 </template>
-            </el-input>
-          </div>
-        </el-form-item>
-        <el-form-item label="扣除理由:" label-width="100px" prop="T_text">
-          <el-input
-            v-model="form.T_text"
-            autocomplete="off"
-            type="textarea"
-            :autosize="{ minRows: 4, maxRows: 6 }"
-            placeholder="请输入扣除理由"
-          />
-        </el-form-item>
-        <div class="d-flex">
-          <el-button type="primary" @click="AddLeave(ruleFormRef)">提交</el-button>
-        </div>
-      </el-form>
-    </Drawer>
-  </div>
+	<div class="RecordsFinance">
+		<div style="width: 290px" class="RecordsFinance-table">
+			<TableBase
+				ref="TableRef"
+				:columns="columns"
+				:requestApi="User_List"
+				:initParam="initParam"
+				layout="prev, pager, next"
+				:rowClick="getSalaryParams"
+				:tableRowClassName="tableRowClassNameHandle"
+			>
+				<template #table-header>
+					<el-row :gutter="24" class="input-suffix margin-left-0 margin-right-0">
+						<el-col :span="24" class="d-flex padding-right-0 padding-left-0">
+							<span class="inline-flex">姓名:</span>
+							<el-input type="text" v-model="initParam.T_name" @change="searchHandle"/>
+							<el-button type="primary" @click="searchHandle">搜索</el-button>
+						</el-col>
+					</el-row>
+				</template>
+			</TableBase>
+		</div>
+		<transition
+			leave-active-class="animate__animated animate__fadeOutRight"
+			enter-active-class="animate__animated animate__fadeInLeft"
+		>
+			<el-row class="h-100 f-1 margin-left-3 RecordsFinance-container" v-if="LeaveinitParam.T_uuid">
+				<el-col :span="24" class="h-100" style="overflow: hidden; display: flex; flex-direction: column">
+					<el-card class="m-b-3">
+						<h3 class="title m-b-5">员工基本信息</h3>
+						<div class="info-content">
+							<el-avatar shape="square" size="large"><img src="@/assets/images/avatar.jpg"/></el-avatar>
+							<div class="info-name">
+								<h4>名字:{{ userInfo.name }}</h4>
+								<h4>部门: {{ userInfo.T_dept }}</h4>
+								<h4>岗位: {{ userInfo.T_post }}</h4>
+							</div>
+						</div>
+					</el-card>
+					<el-card class="m-b-3">
+						<el-row :gutter="20">
+							<el-col :span="10" class="d-flex justify-start">
+								<span class="demonstration">年:</span>
+								<el-date-picker
+									v-model="salaryFromData.year"
+									value-format="YYYY"
+									type="year"
+									placeholder="请选择年"
+									@change="salarDateYearChange"
+								/>
+								<span class="demonstration">月:</span>
+								<el-date-picker
+									v-model="salaryFromData.month"
+									popper-class="picker-date"
+									value-format="MM"
+									format="MM"
+									type="month"
+									placeholder="请选择月"
+									@change="salarDateMonthChange"
+								/>
+							</el-col>
+							<el-col :span="12" class="d-flex justify-end">
+								<el-button type="primary" @click="Deductduraton">扣除时长</el-button>
+							</el-col>
+						</el-row>
+					</el-card>
+					<div style="flex: 1">
+						<TableBase
+							v-if="LeaveinitParam.T_uuid"
+							ref="LeaveTableRef"
+							:columns="userColums"
+							:requestApi="Leave_Finance_List"
+							:initParam="LeaveinitParam"
+							layout="total,prev, pager, next"
+							:displayHeader="true"
+							:dataCallback="dataCallback"
+						>
+							<template #T_duration="{ row }">{{ getFormatDuration(row.T_duration) }}</template>
+							<template #T_State="{ row }">
+								<el-tag v-if="row.T_State === 1" type="success">通过</el-tag>
+								<el-tag v-else-if="row.T_State === 2" type="warning">未通过</el-tag>
+								<el-tag v-else type="danger">待审核</el-tag>
+							</template>
+						</TableBase>
+					</div>
+				</el-col>
+			</el-row>
+		</transition>
+		<Drawer ref="drawerRef" :handleClose="callbackDrawer">
+			<template #header="{ params }">
+				<h4 :id="params.titleId" :class="params.titleClass">扣除时长</h4>
+			</template>
+			<el-form ref="ruleFormRef" :model="form" :rules="rules">
+				<el-form-item label="扣除类型:" label-width="100px" prop="T_type">
+					<el-select v-model="form.T_type" placeholder="请选择扣除类型">
+						<el-option v-for="item in LeaveType" :key="item.Id" :label="item.T_name" :value="item.Id"/>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="扣除时长:" label-width="100px" prop="T_duration">
+					<div class="d-flex">
+						<el-input type="text" v-model.number="form.hover">
+							<template #suffix> 小时</template>
+						</el-input
+						>
+						<el-input type="text" v-model.number="form.minute">
+							<template #suffix> 分钟</template>
+						</el-input>
+					</div>
+				</el-form-item>
+				<el-form-item label="扣除理由:" label-width="100px" prop="T_text">
+					<el-input
+						v-model="form.T_text"
+						autocomplete="off"
+						type="textarea"
+						:autosize="{ minRows: 4, maxRows: 6 }"
+						placeholder="请输入扣除理由"
+					/>
+				</el-form-item>
+				<div class="d-flex">
+					<el-button type="primary" @click="AddLeave(ruleFormRef)">提交</el-button>
+				</div>
+			</el-form>
+		</Drawer>
+	</div>
 </template>
 
 <style scoped lang="scss">
 @import '@/styles/var.scss';
+
 .RecordsFinance {
-  display: flex;
-  height: 100%;
-  overflow: hidden;
-  .RecordsFinance-table {
-    @include f-direction;
-    z-index: 1;
-    :deep(.table-header) {
-      margin-bottom: 0;
-    }
-    .input-suffix {
-      width: 100%;
-      flex-direction: column;
+	display: flex;
+	height: 100%;
+	overflow: hidden;
+
+	.RecordsFinance-table {
+		@include f-direction;
+		z-index: 1;
+
+		:deep(.table-header) {
+			margin-bottom: 0;
+		}
+
+		.input-suffix {
+			width: 100%;
+			flex-direction: column;
+
+			.inline-flex {
+				white-space: nowrap;
+				display: inline-flex;
+			}
+		}
+	}
+
+	.RecordsFinance-container {
+		z-index: 0;
 
-      .inline-flex {
-        white-space: nowrap;
-        display: inline-flex;
-      }
-    }
-  }
-  .RecordsFinance-container {
-    z-index: 0;
-    .title {
-      text-align: left;
-    }
-    .info-content {
-      display: flex;
-      color: #606266;
-      .info-name {
-        flex: 1;
-        display: flex;
-        justify-content: space-around;
-        align-items: center;
-        padding-left: 0.75rem;
-      }
-    }
-  }
+		.title {
+			text-align: left;
+		}
+
+		.info-content {
+			display: flex;
+			color: #606266;
+
+			.info-name {
+				flex: 1;
+				display: flex;
+				justify-content: space-around;
+				align-items: center;
+				padding-left: 0.75rem;
+			}
+		}
+	}
 }
+
 .d-flex {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  flex-wrap: nowrap;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-wrap: nowrap;
 }
+
 .justify-start {
-  justify-content: start;
+	justify-content: start;
 }
+
 .justify-end {
-  justify-content: end;
+	justify-content: end;
 }
 </style>

+ 1 - 0
src/views/workAttendance/records/Records.vue

@@ -40,6 +40,7 @@ const remainingTimeColums: ColumnProps[] = [
 ]
 const leaveColums: ColumnProps[] = [
   { prop: 'T_type_name', label: '请假类型' },
+  { prop: 'CreateTime', label: '申请时间', ellipsis: true },
   { prop: 'T_start_time', label: '开始时间', ellipsis: true },
   { prop: 'T_end_time', label: '结束时间', ellipsis: true },
   { prop: 'T_duration', label: '请假时长', name: 'T_duration' },