|
@@ -11,25 +11,52 @@
|
|
|
<el-button plain @click="resetSearchKey">重置</el-button>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" @click="handleUpload">导入文件</el-button>
|
|
|
+ <el-upload
|
|
|
+ action="#"
|
|
|
+ :limit="1"
|
|
|
+ :http-request="submitFile"
|
|
|
+ :show-file-list="false"
|
|
|
+ accept=".xlsx, .xls"
|
|
|
+ >
|
|
|
+ <el-button type="primary" @click="handleInsert('行政参公')">导入行政参公工资</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-upload
|
|
|
+ action="#"
|
|
|
+ :limit="1"
|
|
|
+ :http-request="submitFile"
|
|
|
+ :show-file-list="false"
|
|
|
+ accept=".xlsx, .xls"
|
|
|
+ >
|
|
|
+ <el-button type="primary" @click="handleInsert('事业单位')">导入事业单位工资</el-button>
|
|
|
+ </el-upload>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div class="container-main">
|
|
|
- <el-table style="width: 100%" :data="list" @row-click="handleRowClick">
|
|
|
+ <el-table style="width: 100%" :data="list" show-overflow-tooltip>
|
|
|
<el-table-column prop="id" label="" v-if="false" />
|
|
|
- <el-table-column prop="year" label="年度" />
|
|
|
- <el-table-column prop="month" label="月份" />
|
|
|
- <el-table-column prop="importDate" label="导入时间" />
|
|
|
- <el-table-column prop="name" label="姓名" />
|
|
|
- <el-table-column prop="personnelType" label="人员类型" />
|
|
|
- <el-table-column prop="idCard" label="身份证号码" />
|
|
|
- <el-table-column prop="bankCard" label="银行卡号" />
|
|
|
- <el-table-column prop="bank" label="银行" />
|
|
|
- <el-table-column prop="workUnint" label="单位" />
|
|
|
- <el-table-column prop="totalPayable" label="应发工资合计(元)" />
|
|
|
- <el-table-column prop="totalDeducted" label="扣发工资合计(元)" />
|
|
|
- <el-table-column prop="actualPay" label="实发工资合计(元)" />
|
|
|
+ <el-table-column prop="year" label="年度" width="80px" align="center" />
|
|
|
+ <el-table-column prop="month" label="月份" width="60px" align="center" />
|
|
|
+ <el-table-column prop="importDate" label="导入时间" width="130px" align="center" />
|
|
|
+ <el-table-column prop="name" label="姓名" width="80px" align="center" />
|
|
|
+ <el-table-column prop="personnelType" label="人员类型" width="100px" align="center" />
|
|
|
+ <el-table-column prop="idCard" label="身份证号码" align="center" />
|
|
|
+ <el-table-column prop="bankCard" label="银行卡号" align="center" />
|
|
|
+ <el-table-column prop="bank" label="银行" align="center" />
|
|
|
+ <el-table-column prop="workUnint" label="单位" align="center" />
|
|
|
+ <el-table-column prop="totalPayable" label="应发工资合计(元)" align="center" />
|
|
|
+ <el-table-column prop="totalDeducted" label="扣发工资合计(元)" align="center" />
|
|
|
+ <el-table-column prop="actualPay" label="实发工资合计(元)" align="center" />
|
|
|
+ <el-table-column label="操作" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button size="small" @click.stop="handleView(scope.row)">查看</el-button>
|
|
|
+ <el-button size="small" type="danger" @click.stop="handleDelete(scope.row)">
|
|
|
+ 删除
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
<el-pagination
|
|
|
background
|
|
@@ -41,20 +68,32 @@
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- <el-dialog v-model="uploadFileDialog" title="工资文件上传">
|
|
|
- <el-upload :auto-upload="false" :limit="1" :on-change="changeFile">
|
|
|
- <el-button type="primary">导入文件</el-button>
|
|
|
- <template #tip>
|
|
|
- <div class="el-upload__tip"> 只支持上传 xlsx 文件 </div>
|
|
|
- </template>
|
|
|
- </el-upload>
|
|
|
- <el-button type="primary" @click="submitFile">上传文件</el-button>
|
|
|
+ <el-dialog
|
|
|
+ v-model="uploadFileDialog"
|
|
|
+ title="工资详情"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ @close="closeSalaryDialog"
|
|
|
+ top="6px"
|
|
|
+ >
|
|
|
+ <div style="display: flex; justify-content: space-between; width: 100%">
|
|
|
+ <el-table :data="rightTableData" style="width: 50%" show-overflow-tooltip>
|
|
|
+ <!-- 动态左列 -->
|
|
|
+ <el-table-column prop="key" label="" />
|
|
|
+ <!-- 动态右列 -->
|
|
|
+ <el-table-column prop="value" label="" />
|
|
|
+ </el-table>
|
|
|
+ <el-table :data="leftTableData" style="width: 50%" show-overflow-tooltip>
|
|
|
+ <el-table-column prop="key" label="" />
|
|
|
+ <el-table-column prop="value" label="" />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, reactive } from 'vue'
|
|
|
import * as SalaryApi from '@/api/salary'
|
|
|
+import { UploadRequestOptions } from 'element-plus'
|
|
|
|
|
|
const searchKey = ref('')
|
|
|
const total = ref(0)
|
|
@@ -62,10 +101,15 @@ const list = ref([])
|
|
|
const queryParams = reactive({
|
|
|
pageNo: 1,
|
|
|
pageSize: 10,
|
|
|
- isAdmin: 1
|
|
|
+ isAdmin: 1,
|
|
|
+ searchKey: ''
|
|
|
})
|
|
|
const uploadFileDialog = ref(false)
|
|
|
-const file = ref()
|
|
|
+const rylx = ref()
|
|
|
+
|
|
|
+// 工资详情列表数据
|
|
|
+const leftTableData = ref<any>([])
|
|
|
+const rightTableData = ref<any>([])
|
|
|
|
|
|
// 获取工资列表
|
|
|
const salaryList = async (json) => {
|
|
@@ -74,20 +118,68 @@ const salaryList = async (json) => {
|
|
|
list.value = data.records
|
|
|
}
|
|
|
|
|
|
-const handleUpload = () => {
|
|
|
- uploadFileDialog.value = true
|
|
|
+const handleInsert = (type) => {
|
|
|
+ rylx.value = type
|
|
|
}
|
|
|
|
|
|
-// 选择文件
|
|
|
-const changeFile = (uploadFile) => {
|
|
|
- file.value = uploadFile.raw
|
|
|
-}
|
|
|
-const submitFile = async () => {
|
|
|
+// 上传文件
|
|
|
+const submitFile = async (data: UploadRequestOptions) => {
|
|
|
const formData = new FormData()
|
|
|
- formData.append('file', file.value)
|
|
|
- formData.append('type', '参公')
|
|
|
+ formData.append('file', data.file)
|
|
|
+ formData.append('type', rylx.value)
|
|
|
const res = await SalaryApi.uploadFile(formData)
|
|
|
- console.log(res)
|
|
|
+ if (res.code === 200) {
|
|
|
+ uploadFileDialog.value = false
|
|
|
+ ElMessage({ message: res.data, type: 'success' })
|
|
|
+ salaryList(queryParams)
|
|
|
+ } else {
|
|
|
+ ElMessage({ message: res.data, type: 'error' })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 按供应商名称搜索
|
|
|
+const handleSearch = () => {
|
|
|
+ queryParams.searchKey = searchKey.value
|
|
|
+ salaryList(queryParams)
|
|
|
+}
|
|
|
+
|
|
|
+// 重置搜索关键字
|
|
|
+const resetSearchKey = () => {
|
|
|
+ searchKey.value = ''
|
|
|
+ queryParams.searchKey = searchKey.value
|
|
|
+ salaryList(queryParams)
|
|
|
+}
|
|
|
+
|
|
|
+// 点击行查看详情
|
|
|
+const handleView = async (row) => {
|
|
|
+ const res = await SalaryApi.getSalaryInfoDetail(row.id, row.importId)
|
|
|
+ for (let i = 0; i < res.length; i++) {
|
|
|
+ if (i % 2 != 0) {
|
|
|
+ leftTableData.value.push(res[i])
|
|
|
+ } else {
|
|
|
+ rightTableData.value.push(res[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ uploadFileDialog.value = true
|
|
|
+}
|
|
|
+
|
|
|
+// 删除工资记录
|
|
|
+const handleDelete = async (row) => {
|
|
|
+ const res = await SalaryApi.deleteSalary(row.id)
|
|
|
+ ElMessage({ message: res, type: 'success' })
|
|
|
+ salaryList(queryParams)
|
|
|
+}
|
|
|
+
|
|
|
+// 关闭弹窗时清空数据
|
|
|
+const closeSalaryDialog = () => {
|
|
|
+ uploadFileDialog.value = false
|
|
|
+ leftTableData.value = []
|
|
|
+ rightTableData.value = []
|
|
|
+}
|
|
|
+
|
|
|
+const handleCurrentChange = (index) => {
|
|
|
+ queryParams.pageNo = index
|
|
|
+ salaryList(queryParams)
|
|
|
}
|
|
|
|
|
|
onMounted(() => {
|