| | |
| | | <div class="table-view"> |
| | | <el-table |
| | | ref="table" |
| | | :class="tableList.headerColor=='red'?'table-red':''" |
| | | :class="tableList.headerColor == 'red' ? 'table-red' : ''" |
| | | border |
| | | :data="tableList.tableInfomation" |
| | | tooltip-effect="dark" |
| | |
| | | :lazy="tableList.lazy" |
| | | size="mini" |
| | | @selection-change="handleSelectionChange" |
| | | :header-cell-style="{ background: '#f1f3f8', color: '#000009' , 'font-size': '14px'}" |
| | | :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '14px' }" |
| | | :highlight-current-row="tableList.highlight" |
| | | :row-class-name="tableRowClassName" |
| | | @row-click="tableRowClick" |
| | |
| | | :tree-props="{ children: 'child', hasChildren: 'hasChildren' }" |
| | | > |
| | | <el-table-column align="center" v-if="tableList.selectBox" type="selection" width="40"> </el-table-column> |
| | | <el-table-column align="center" v-if="tableList.selectIndex" type="index" label="序号" width="50"> </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | v-if="tableList.selectIndex" |
| | | type="index" |
| | | label="序号" |
| | | width="50" |
| | | :fixed="tableList.fixed" |
| | | > |
| | | </el-table-column> |
| | | <template v-for="(item, i) in tableList.tableColumn"> |
| | | <el-table-column |
| | | align="center" |
| | |
| | | show-overflow-tooltip |
| | | :sortable="item.sortable" |
| | | v-if="item.isShowColumn" |
| | | :fixed="item.fixed" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> |
| | | <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div> |
| | | <span v-else-if="item.isTime">{{ |
| | | dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) === "1900-01-01 00:06:26" |
| | | ? "--" |
| | | : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) |
| | | }}</span> |
| | | <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selCommonClick(scope.row)">{{ |
| | | scope.row[item.prop] |
| | | }}</span> |
| | | dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) === "1900-01-01 00:06:26" |
| | | ? "--" |
| | | : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) |
| | | }}</span> |
| | | <span |
| | | v-else-if="item.isClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selCommonClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <span v-else-if="item.isFirst">{{ scope.row[item.prop] ? "是" : "否" }}</span> |
| | | <span |
| | | v-else-if="item.isCommonClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selCommonClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | v-else-if="item.isCommonClick && scope.row[item.prop]" |
| | | class="sel-name" |
| | | @click="selCommonClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <div v-else-if="item.isProductName" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | |
| | | </el-table> |
| | | <div class="overSpread1" v-show="iscolopen" @click="onMaskClick"></div> |
| | | <div class="styleBtn"> |
| | | <i @click="checkCol()" v-if="colOpenShow" class="label">...</i> |
| | | <el-checkbox-group |
| | | v-model="showcol" |
| | | v-show="iscolopen" |
| | | class="checkbox-group" |
| | | @change="selectCheckBoxList" |
| | | > |
| | | <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item" |
| | | >{{ item }} |
| | | </el-checkbox> |
| | | <i @click="checkCol()" v-if="colOpenShow" class="label">...</i> |
| | | <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList"> |
| | | <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </div> |
| | |
| | | return { |
| | | selectBox: false, |
| | | selectIndex: false, |
| | | fixed: false, |
| | | tableInfomation: [], // 接口返回数据 |
| | | showcol: [], |
| | | allcol: [], |
| | |
| | | } |
| | | } |
| | | }, |
| | | // 是否可以配置列表 表头 |
| | | colOpenShow: { |
| | | // 是否可以配置列表 表头 |
| | | colOpenShow: { |
| | | type: Boolean, |
| | | default: true, |
| | | default: true |
| | | }, |
| | | showSummary: { |
| | | type: Object, |
| | |
| | | data() { |
| | | return { |
| | | iscolopen: false, |
| | | showcol:[] |
| | | showcol: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | 'tableList.showcol':{ |
| | | handler(newVal){ |
| | | this.showcol=newVal |
| | | "tableList.showcol": { |
| | | handler(newVal) { |
| | | this.showcol = newVal |
| | | }, |
| | | immediate:true |
| | | immediate: true |
| | | } |
| | | }, |
| | | computed: {}, |
| | | methods: { |
| | | onMaskClick() { |
| | | this.iscolopen = false; |
| | | this.iscolopen = false |
| | | }, |
| | | checkCol() { |
| | | this.iscolopen = !this.iscolopen; |
| | | this.iscolopen = !this.iscolopen |
| | | }, |
| | | selectCheckBoxList(val) { |
| | | this.$emit("selTableCol", val); |
| | | this.$emit("selTableCol", val) |
| | | }, |
| | | handleReserve(row) { |
| | | return row._id ? row._id : row.id |
| | |
| | | height: 35px; |
| | | text-align: center; |
| | | } |
| | | ::v-deep .table-red.el-table th.el-table__cell>.cell{ |
| | | color:red; |
| | | ::v-deep .table-red.el-table th.el-table__cell > .cell { |
| | | color: red; |
| | | } |
| | | ::v-deep{ |
| | | .el-table .cell .el-button--text.el-button--small{ |
| | | ::v-deep { |
| | | .el-table .cell .el-button--text.el-button--small { |
| | | padding: 4px 0; |
| | | } |
| | | } |
| | |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | | isDeviceConnectStatus: false, |
| | | isDeviceConnectStatus: true, |
| | | ruleForm: { |
| | | number: "", |
| | | productTime: "", |
| | |
| | | :close-on-click-modal="false" |
| | | :visible.sync="editDialogVisible" |
| | | width="533px" |
| | | class="add-event-dialog" |
| | | append-to-body |
| | | custom-class="add-event-dialog" |
| | | @close="handleClose" |
| | | > |
| | | <div class="dialog-content-box"> |
| | |
| | | color: #333; |
| | | font-weight: 700; |
| | | } |
| | | .add-event-dialog .el-dialog { |
| | | position: absolute; |
| | | right: 40px; |
| | | top: 40px; |
| | | } |
| | | } |
| | | </style> |
| | | <style> |
| | | .add-event-dialog .el-dialog { |
| | | /* .add-event-dialog.el-dialog { |
| | | position: absolute; |
| | | right: 40px; |
| | | top: 40px; |
| | | } |
| | | } */ |
| | | /* .add-event-dialog .el-dialog__header { |
| | | display: none; |
| | | } */ |
| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="payableSalaryReport-container"> |
| | | <div class="filter-card"> |
| | | <CommonSearch :show-add="false" :amount-view="false" placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="exportBtnClick">导出</el-button> |
| | | <el-button size="small" type="primary" @click="refreshBtnClick">刷新</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView |
| | | ref="tableListRef" |
| | | v-loading="loading" |
| | | :colOpenShow="false" |
| | | :table-list="tableList" |
| | | @selTableCol="selTableCol" |
| | | > |
| | | </TableCommonView> |
| | | </div> |
| | | <!-- <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | export default { |
| | | name: "payableSalaryReport", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | mixins: [pageMixin], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | return { |
| | | loading: false, |
| | | tableList: {}, |
| | | tableColumn: [ |
| | | { label: "姓名", prop: "name", default: true, fixed: true }, |
| | | { label: "人员id", prop: "member_name" }, |
| | | { label: "手机号", prop: "client_level" }, |
| | | { label: "工种", prop: "next_visit_time" }, |
| | | { label: "生产工资", prop: "detail_address" }, |
| | | { label: "满勤", prop: "client_status" }, |
| | | { label: "超时工资", prop: "contact_name" }, |
| | | { label: "加班工资", prop: "contact_phone" }, |
| | | { label: "交通补贴", prop: "client_level" }, |
| | | { label: "带徒补贴", prop: "next_visit_time" }, |
| | | { label: "岗位补贴", prop: "detail_address" }, |
| | | { label: "社保补贴", prop: "client_status" }, |
| | | { label: "工龄补贴", prop: "contact_name" }, |
| | | { label: "不达保底", prop: "contact_phone" }, |
| | | { label: "质量奖", prop: "contact_phone" }, |
| | | { label: "奖罚1", prop: "client_level" }, |
| | | { label: "奖罚2/清凉补", prop: "next_visit_time", width: "110" }, |
| | | { label: "日常检查/奖罚3", prop: "detail_address", width: "110" }, |
| | | { label: "停机补贴", prop: "client_status" }, |
| | | { label: "应发工资", prop: "contact_name" }, |
| | | { label: "备注", prop: "contact_phone", width: "140" } |
| | | ], |
| | | showCol: [ |
| | | "姓名", |
| | | "人员id", |
| | | "手机号", |
| | | "工种", |
| | | "生产工资", |
| | | "满勤", |
| | | "超时工资", |
| | | "加班工资", |
| | | "交通补贴", |
| | | "带徒补贴", |
| | | "岗位补贴", |
| | | "社保补贴", |
| | | "工龄补贴", |
| | | "不达保底", |
| | | "质量奖", |
| | | "奖罚1", |
| | | "奖罚2/清凉补", |
| | | "日常检查/奖罚3", |
| | | "停机补贴", |
| | | "应发工资", |
| | | "备注" |
| | | ] |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | created() { |
| | | this.setTable() |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | fixed: true, |
| | | tableInfomation: [{ name: "张三" }, { name: "lisi" }, { name: "王五" }], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | console.log(searchText) |
| | | }, |
| | | // 导出 |
| | | exportBtnClick() {}, |
| | | // 刷新 |
| | | refreshBtnClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | .payableSalaryReport-container { |
| | | height: 100%; |
| | | .filter-card { |
| | | margin: 20px 30px; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0 20px 0 20px; |
| | | border-radius: 12px; |
| | | background-color: #fff; |
| | | } |
| | | .body-card { |
| | | margin: 0 30px; |
| | | background-color: #fff; |
| | | padding: 10px 15px; |
| | | height: calc(100% - 180px); |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="container"></div> |
| | | <div class="productionRreport-container"> |
| | | <div class="filter-card"> |
| | | <CommonSearch :show-add="false" :amount-view="false" placeholder="请输入关键词" @searchClick="onFilterSearch"> |
| | | <template slot="leftButton"> |
| | | <el-button size="small" type="primary" @click="exportBtnClick">导出</el-button> |
| | | </template> |
| | | </CommonSearch> |
| | | </div> |
| | | <div class="body-card"> |
| | | <div class="list-view"> |
| | | <TableCommonView ref="tableListRef" v-loading="loading" :table-list="tableList" @selTableCol="selTableCol"> |
| | | </TableCommonView> |
| | | </div> |
| | | <!-- <div class="btn-pager"> |
| | | <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" /> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import pageMixin from "@/components/makepager/pager/mixin/pageMixin" |
| | | export default { |
| | | name: "productionReport", |
| | | props: {}, |
| | | components: {}, |
| | | mixins: [], |
| | | mixins: [pageMixin], |
| | | computed: {}, |
| | | data() { |
| | | return {} |
| | | return { |
| | | loading: false, |
| | | tableList: {}, |
| | | tableColumn: [ |
| | | { label: "车间", prop: "name", default: true }, |
| | | { label: "机组", prop: "member_name" }, |
| | | { label: "Ⅱ度", prop: "client_level" }, |
| | | { label: "清洁", prop: "next_visit_time" }, |
| | | { label: "洁净", prop: "detail_address" }, |
| | | { label: "最大纤度", prop: "client_status" }, |
| | | { label: "最小纤度", prop: "contact_name" }, |
| | | { label: "平均纤度", prop: "contact_phone" }, |
| | | { label: "公量纤度", prop: "client_level" }, |
| | | { label: "最大偏差", prop: "next_visit_time" }, |
| | | { label: "纤度偏差", prop: "detail_address" }, |
| | | { label: "日产量", prop: "client_status" }, |
| | | { label: "等级", prop: "contact_name" }, |
| | | { label: "综合等级", prop: "contact_phone" } |
| | | ], |
| | | showCol: [ |
| | | "车间", |
| | | "机组", |
| | | "Ⅱ度", |
| | | "清洁", |
| | | "洁净", |
| | | "最大纤度", |
| | | "最小纤度", |
| | | "平均纤度", |
| | | "公量纤度", |
| | | "最大偏差", |
| | | "纤度偏差", |
| | | "日产量", |
| | | "等级", |
| | | "综合等级" |
| | | ] |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: {} |
| | | created() { |
| | | this.setTable() |
| | | }, |
| | | methods: { |
| | | setTable() { |
| | | this.tableList = { |
| | | selectIndex: true, |
| | | tableInfomation: [], |
| | | allcol: [], |
| | | showcol: this.showCol, |
| | | tableColumn: this.setColumnVisible(this.showCol) |
| | | } |
| | | this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label) |
| | | this.searchOptions = [] |
| | | for (let i = 0; i < this.tableList.tableColumn.length; i++) { |
| | | const label = this.tableList.tableColumn[i].label |
| | | const value = this.tableList.tableColumn[i].prop |
| | | this.searchOptions.push({ value: value, label: label }) |
| | | } |
| | | }, |
| | | setColumnVisible(showCol) { |
| | | return this.tableColumn.map((ele) => { |
| | | return { |
| | | ...ele, |
| | | isShowColumn: showCol.includes(ele.label) |
| | | } |
| | | }) |
| | | }, |
| | | selTableCol(val) { |
| | | this.showcol = val |
| | | this.tableList.tableColumn = this.setColumnVisible(val) |
| | | }, |
| | | // 搜索 |
| | | onFilterSearch(searchText) { |
| | | console.log(searchText) |
| | | }, |
| | | // 导出 |
| | | exportBtnClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped></style> |
| | | <style lang="scss" scoped> |
| | | .productionRreport-container { |
| | | height: 100%; |
| | | .filter-card { |
| | | margin: 20px 30px; |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 0 20px 0 20px; |
| | | border-radius: 12px; |
| | | background-color: #fff; |
| | | } |
| | | .body-card { |
| | | margin: 0 30px; |
| | | background-color: #fff; |
| | | padding: 10px 15px; |
| | | height: calc(100% - 180px); |
| | | } |
| | | } |
| | | </style> |