| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="container"> |
| | | <div class="filter-card"> |
| | | <CommonSearch ref="searchRef" :show-add="false" :amount-view="false" placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="addBtnClick" >新增</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView |
| | | :table-list="tableList" |
| | | @selTableCol="selTableCol" |
| | | > |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="110"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click.stop="handleClick(scope.row)" type="text" size="small">修改</el-button> |
| | | <el-button @click.stop="delClick(scope.row)" type="text" size="small">删除</el-button> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | </div> |
| | | <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> |
| | | <AddDialog |
| | | ref="add" :editRow="editRow" @refresh="refresh" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import AddDialog from "@/views/employeeSalary/salaryPlan/components/addDialog.vue" |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | import { getSalaryPlanList, deleteSalaryPlanInfo } from "@/api/employeeSalary/salaryPlan.js" |
| | | export default { |
| | | name: "salaryPlan", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | components: {AddDialog}, |
| | | mixins: [pageMixin], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | return { |
| | | tableList: {}, |
| | | showCol: ["方案名称", "工种", "薪资类型", "计费周期", "计费公式定义", "添加时间", "添加人"], |
| | | tableColumn: [ |
| | | { label: "方案名称", prop: "name",min:110}, |
| | | { label: "工种", prop: "workTypeNames",min:100 }, |
| | | { label: "薪资类型", prop: "salaryTypeName",min:110 }, |
| | | { label: "计费周期", prop: "cycle",min:110 }, |
| | | { label: "计费公式定义", prop: "salaryFormulaValue",min:140 }, |
| | | { label: "添加时间", prop: "createTime",min:130 }, |
| | | { label: "添加人", prop: "addPeople",min:110 }, |
| | | ], |
| | | keyword: '', |
| | | editRow:{}, |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | created() { |
| | | this.setTable() |
| | | this.getData(this.keyword) |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | // top 明细单列表 |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol, this.tableColumn) |
| | | } |
| | | this.setTableList(this.tableList) |
| | | }, |
| | | setColumnVisible(showCol, tableColumn) { |
| | | return tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | setTableList(tableList) { |
| | | tableList.allcol = tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < tableList.tableColumn.length; i++) { |
| | | const label = tableList.tableColumn[i].label |
| | | const value = tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val, this.tableColumn) |
| | | }, |
| | | // 请求数据 |
| | | async getData() { |
| | | this.loading = true |
| | | await getSalaryPlanList({ |
| | | keyword: this.keyword, |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | if (res.data) { |
| | | const list = res.data.map(item=>{ |
| | | let workTypeNames='' |
| | | if(item.workTypes){ |
| | | for(let i in item.workTypes){ |
| | | workTypeNames=item.workTypes[i].workName+','+workTypeNames |
| | | } |
| | | } |
| | | let salaryFormulaValue='' |
| | | salaryFormulaValue=item.salaryFormula?item.salaryFormula.split(",").join(''):[] |
| | | return { |
| | | ...item, |
| | | workTypeNames:workTypeNames, |
| | | salaryFormulaValue:salaryFormulaValue, |
| | | salaryTypeName:item.salaryType?item.salaryType.name:'' |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | | this.pagerOptions.totalCount = res.total |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | | this.loading = false |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | this.tableList.tableInfomation = [] |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | // 新增 |
| | | addBtnClick() { |
| | | this.editRow = { title:'新建',type: 'add' } |
| | | this.$refs.add.islook = true; |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | this.keyword= searchText, |
| | | this.pagerOptions.currPage = 1 |
| | | this.getData() |
| | | }, |
| | | refresh(){ |
| | | this.getData() |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | let config=JSON.parse(JSON.stringify(row)); |
| | | let arr=config.workTypes?config.workTypes:[] |
| | | let workTypes=[] |
| | | if(arr&&arr.length>0){ |
| | | for(let i in arr){ |
| | | workTypes.push({ |
| | | value:arr[i].ID, |
| | | label: arr[i].workName |
| | | }) |
| | | } |
| | | } |
| | | this.editRow = { |
| | | ...config, |
| | | title:'编辑', |
| | | type:'edit', |
| | | id:config.ID, |
| | | workTypes:workTypes |
| | | } |
| | | this.$refs.add.islook = true; |
| | | }, |
| | | // 删除 |
| | | delClick(row) { |
| | | this.$confirm("是否确认删除?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | deleteSalaryPlanInfo({ id: row.ID }).then((response) => { |
| | | if (response.code === 200) { |
| | | this.$message.success("删除成功") |
| | | this.getData() |
| | | } |
| | | }) |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | |
| | | .container { |
| | | height: 100%; |
| | | .filter-card { |
| | | margin: 20px 30px; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0 20px 0 20px; |
| | | border-radius: 4px; |
| | | background-color: #fff; |
| | | } |
| | | .body-card { |
| | | margin: 0 30px; |
| | | background-color: #fff; |
| | | padding: 10px 15px; |
| | | height: calc(100% - 180px); |
| | | border-radius: 4px; |
| | | .edit-save { |
| | | display: flex; |
| | | align-items: center; |
| | | margin-bottom: 10px; |
| | | .edit-save-icon { |
| | | font-size: 24px; |
| | | color: #5582f3; |
| | | cursor: pointer; |
| | | } |
| | | .edit-sace-label { |
| | | margin-left: 10px; |
| | | font-size: 14px; |
| | | color: #000000d8; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .list-view { |
| | | height: calc(100% - 60px); |
| | | overflow: hidden; |
| | | } |
| | | .btn-pager { |
| | | display: flex; |
| | | margin-top: 10px; |
| | | .page { |
| | | margin-left: auto; |
| | | } |
| | | } |
| | | </style> |