salary.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <HcCard>
  3. <template #header>
  4. <div class="w-36 ml-2">
  5. <el-select v-model="searchForm.peoplename" block clearable placeholder="员工姓名" size="large">
  6. <el-option v-for="item in peopleoption" :label="item.name" :value="item.key"/>
  7. </el-select>
  8. </div>
  9. <div class="w-36 ml-2">
  10. <el-date-picker v-model="searchForm.month" class="block" size="large" type="month" @change="datePickerChange" placeholder="选择月份"/>
  11. </div>
  12. <div class="ml-4">
  13. <el-button type="primary" @click="searchClick" size="large">
  14. <HcIcon name="search-2"/>
  15. <span>搜索</span>
  16. </el-button>
  17. </div>
  18. <div class="ml-2">
  19. <el-button size="large" @click="resetClick">
  20. <HcIcon name="close-circle"/>
  21. <span>重置</span>
  22. </el-button>
  23. </div>
  24. </template>
  25. <template #extra>
  26. <el-button type="primary" @click="downloadXlsx" size="large">
  27. <HcIcon name="download-2"/>
  28. <span>下载模板</span>
  29. </el-button>
  30. <el-button type="primary" @click="toImportTempClick" size="large" class="ml-2">
  31. <HcIcon name="folder-upload"/>
  32. <span>导入数据</span>
  33. </el-button>
  34. </template>
  35. <HcTable :column="tableColumn" :datas="tableData">
  36. </HcTable>
  37. <template #action>
  38. <HcPages :pages="searchForm" @change="pageChange"></HcPages>
  39. </template>
  40. <!--导入数据弹窗-->
  41. <HcDialog bgColor="#ffffff" widths="34rem" isToBody :show="importModal" title="导入数据"
  42. @close="importModalClose" footer isRowFooter>
  43. <el-form label-position="top" label-width="auto" :model="formModel" size="large">
  44. <el-form-item label="请选择导入薪酬所时间属范围:">
  45. <el-date-picker
  46. v-model="formModel.time"
  47. type="daterange"
  48. start-placeholder="起始时间"
  49. end-placeholder="结束时间"
  50. :default-time="defaultTime"
  51. />
  52. </el-form-item>
  53. </el-form>
  54. <template #rightRowFooter>
  55. <!-- <el-button type="primary" @click="toImportTempClick" size="large" class="ml-2">
  56. <HcIcon name="folder-upload"/>
  57. <span>上传excel</span>
  58. </el-button> -->
  59. <HcUploadFile
  60. ref="HcUploadFileRef"
  61. :options="UploadFileOptions"
  62. @progress="HcUploadFileProgress"
  63. @success="HcUploadFileSuccess"
  64. @change="HcUploadFileChange"
  65. >
  66. <el-button type="primary" size="large" class="ml-2">
  67. <HcIcon name="folder-upload"/>
  68. <span>上传excel</span>
  69. </el-button>
  70. </HcUploadFile>
  71. <el-button type="primary" @click="importModalClose" size="large" class="ml-2">
  72. <HcIcon name="close-circle"/>
  73. <span>取消</span>
  74. </el-button>
  75. </template>
  76. </HcDialog>
  77. </HcCard>
  78. </template>
  79. <script setup>
  80. import {ref, watch} from 'vue'
  81. import dayjs from "dayjs"
  82. import 'dayjs/locale/zh-cn'
  83. import {useRouter} from 'vue-router'
  84. import {getTokenHeader} from "~src/api/request/header";
  85. const router = useRouter()
  86. //下拉日期选择
  87. const datePickerChange = (val) => {
  88. console.log(val, 'val');
  89. const toDayJs = dayjs(val);
  90. searchForm.value.month = toDayJs.format('YYYY-MM')
  91. }
  92. const tableColumn = [
  93. {key: 'name', name: '姓名'},
  94. {key: 'key2', name: '应出勤天数'},
  95. {key: 'key4', name: '实际出勤天数'},
  96. {key: 'key5', name: '年假'},
  97. {key: 'key6', name: '调休假'},
  98. {key: 'key7', name: '病假'},
  99. {key: 'key8', name: '事假'},
  100. {key: 'key9', name: '基本工资'},
  101. {key: 'key10', name: '岗位工资'},
  102. {key: 'key11', name: '绩效工资'},
  103. {key: 'key12', name: '奖励'},
  104. {key: 'key13', name: '伙食补贴'},
  105. {key: 'key14', name: '其他补贴'},
  106. {key: 'key15', name: '考勤扣款'},
  107. {key: 'key16', name: '事假扣款'},
  108. {key: 'key17', name: '其他扣款'},
  109. {key: 'key18', name: '应发工资'},
  110. {key: 'key19', name: '代扣个人应交社保'},
  111. {key: 'key20', name: '代扣代缴个税'},
  112. {key: 'key21', name: '实发工资'},
  113. {key: 'key22', name: '备注'},
  114. ]
  115. const tableData = ref([
  116. {name: '名称1', id: 1},
  117. {name: '名称2',},
  118. {name: '名称3',}
  119. ])
  120. const searchForm = ref({
  121. name: '',
  122. current: 1, size: 20, total: 0
  123. })
  124. const peopleoption = ref([
  125. {name: '张三', key: '1'},
  126. {name: '李四', key: '2'},
  127. ])
  128. //分页被点击
  129. const pageChange = ({current, size}) => {
  130. searchForm.value.current = current
  131. searchForm.value.size = size
  132. getTableData()
  133. }
  134. const getTableData = () => {
  135. }
  136. //搜索
  137. const searchClick = () => {
  138. searchForm.value.current = 1;
  139. getTableData()
  140. }
  141. //重置搜索表单
  142. const resetClick = () => {
  143. searchForm.value = {current: 1, size: 20, total: 0}
  144. }
  145. const defaultTime = ref([
  146. new Date(2000, 1, 1, 0, 0, 0),
  147. new Date(2000, 2, 1, 23, 59, 59),
  148. ])
  149. //导入数据弹窗
  150. const importModal = ref(false)
  151. const importModalClose = () => {
  152. importModal.value = false
  153. }
  154. const formModel = ref({})
  155. //下载模板
  156. const downloadXlsx = () => {
  157. }
  158. const toImportTempClick = () => {
  159. importModal.value = true
  160. }
  161. //上传配置
  162. const UploadFileOptions = {
  163. //此处设置header
  164. headers: getTokenHeader(),
  165. }
  166. // 文件上传进度
  167. const HcUploadFileProgress = (res) => {
  168. console.log('文件上传进度', res)
  169. }
  170. const HcUploadFileRef = ref(null)
  171. // 文件上传成功的回调
  172. const HcUploadFileSuccess = (res) => {
  173. HcUploadFileRef.value?.setModalShow(false);
  174. importModal.value = false
  175. getTableData()
  176. }
  177. // 文件全部上传成功
  178. const HcUploadFileChange = () => {
  179. console.log('文件全部上传成功')
  180. }
  181. </script>
  182. <style lang='scss' scoped>
  183. </style>