218 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div>
 | |
|     <a-card :bordered="false" :bodyStyle="tstyle">
 | |
|       <div class="table-page-search-wrapper">
 | |
|         <a-form layout="inline">
 | |
|           <a-row :gutter="48">
 | |
|             <a-col :md="8" :sm="24">
 | |
|               <a-form-item label="培训计划">
 | |
|                 <a-input v-model="queryParam.name" allow-clear placeholder="请输入培训计划"/>
 | |
|               </a-form-item>
 | |
|             </a-col>
 | |
|             <a-col :md="8" :sm="24">
 | |
|               <a-form-item label="月份">
 | |
|                 <a-month-picker style="width: 100%" placeholder="请选择月份" v-model="queryParam.happenTimeDate" @change="onChangehappenTime"/>
 | |
|               </a-form-item>
 | |
|             </a-col>
 | |
|             <a-col :md="8" :sm="24">
 | |
|               <span class="table-page-search-submitButtons">
 | |
|                 <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
 | |
|                 <a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
 | |
|               </span>
 | |
|             </a-col>
 | |
|           </a-row>
 | |
|         </a-form>
 | |
|       </div>
 | |
|     </a-card>
 | |
|     <a-card :bordered="false">
 | |
|       <s-table
 | |
|         ref="table"
 | |
|         :columns="columns"
 | |
|         :data="loadData"
 | |
|         :alert="options.alert"
 | |
|         :rowKey="(record) => record.id"
 | |
|         :rowSelection="options.rowSelection"
 | |
|       >
 | |
|         <template class="table-operator" slot="operator" >
 | |
|           <a-button type="primary" icon="plus" @click="$refs.addForm.add()">新增</a-button>
 | |
|           <a-button type="danger" :disabled="selectedRowKeys.length < 1" @click="batchDelete"><a-icon type="delete"/>批量删除</a-button>
 | |
|           <x-down
 | |
|             ref="batchExport"
 | |
|             @batchExport="batchExport"
 | |
|           />
 | |
|         </template>
 | |
|         <span slot="uppxScopedSlots" slot-scope="text">
 | |
|           <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
 | |
|         </span>
 | |
|         <span slot="downpxScopedSlots" slot-scope="text">
 | |
|           <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
 | |
|         </span>
 | |
|         <span slot="workPlaceScopedSlots" slot-scope="text">
 | |
|           <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
 | |
|         </span>
 | |
|         <span slot="action" slot-scope="text, record">
 | |
|           <a @click="$refs.editForm.edit(record)">编辑</a>
 | |
|           <a-divider type="vertical" />
 | |
|           <a-popconfirm placement="topRight" title="确认删除?" @confirm="() => singleDelete(record)">
 | |
|             <a>删除</a>
 | |
|           </a-popconfirm>
 | |
|         </span>
 | |
|       </s-table>
 | |
|       <add-form ref="addForm" @ok="handleOk" />
 | |
|       <edit-form ref="editForm" @ok="handleOk" />
 | |
|     </a-card>
 | |
|   </div>
 | |
| </template>
 | |
| <script>
 | |
|   import { STable, XDown, Ellipsis } from '@/components'
 | |
|   import moment from 'moment'
 | |
|   import { scrTrainSchePage, scrTrainScheDelete, scrTrainScheExport } from '@/api/modular/main/scrtrainsche/scrTrainScheManage'
 | |
|   import addForm from './addForm.vue'
 | |
|   import editForm from './editForm.vue'
 | |
|   export default {
 | |
|     components: {
 | |
|       Ellipsis,
 | |
|       STable,
 | |
|       addForm,
 | |
|       editForm,
 | |
|       XDown
 | |
|     },
 | |
|     data () {
 | |
|       return {
 | |
|         // 查询参数
 | |
|         queryParam: {},
 | |
|         // 表头
 | |
|         columns: [
 | |
|           {
 | |
|             title: '月份',
 | |
|             align: 'center',
 | |
|             dataIndex: 'happenTime',
 | |
|             customRender: (text, record) => {
 | |
|               return moment(text).format('YYYY-MM')
 | |
|             }
 | |
|           },
 | |
|           {
 | |
|             title: '培训计划',
 | |
|             align: 'center',
 | |
|             dataIndex: 'name'
 | |
|           },
 | |
|           {
 | |
|             title: '线上培训',
 | |
|             align: 'center',
 | |
|             dataIndex: 'uppx',
 | |
|             scopedSlots: { customRender: 'uppxScopedSlots' }
 | |
|           },
 | |
|           {
 | |
|             title: '线下培训',
 | |
|             align: 'center',
 | |
|             dataIndex: 'downpx',
 | |
|             scopedSlots: { customRender: 'downpxScopedSlots' }
 | |
|           },
 | |
|           {
 | |
|             title: '在线考试',
 | |
|             align: 'center',
 | |
|             dataIndex: 'workPlace',
 | |
|             scopedSlots: { customRender: 'workPlaceScopedSlots' }
 | |
|           }
 | |
|         ],
 | |
|         tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
 | |
|         // 加载数据方法 必须为 Promise 对象
 | |
|         loadData: parameter => {
 | |
|           return scrTrainSchePage(Object.assign(parameter, this.switchingDate())).then((res) => {
 | |
|             return res.data
 | |
|           })
 | |
|         },
 | |
|         selectedRowKeys: [],
 | |
|         selectedRows: [],
 | |
|         options: {
 | |
|           alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
 | |
|           rowSelection: {
 | |
|             selectedRowKeys: this.selectedRowKeys,
 | |
|             onChange: this.onSelectChange
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     },
 | |
|     created () {
 | |
|         this.columns.push({
 | |
|           title: '操作',
 | |
|           width: '150px',
 | |
|           dataIndex: 'action',
 | |
|           scopedSlots: { customRender: 'action' }
 | |
|         })
 | |
|     },
 | |
|     methods: {
 | |
|       moment,
 | |
|       /**
 | |
|        * 查询参数组装
 | |
|        */
 | |
|       switchingDate () {
 | |
|         const queryParamhappenTime = this.queryParam.happenTimeDate
 | |
|         if (queryParamhappenTime != null) {
 | |
|             this.queryParam.happenTime = moment(queryParamhappenTime).format('YYYY-MM-DD')
 | |
|             if (queryParamhappenTime.length < 1) {
 | |
|                 delete this.queryParam.happenTime
 | |
|             }
 | |
|         }
 | |
|         const obj = JSON.parse(JSON.stringify(this.queryParam))
 | |
|         return obj
 | |
|       },
 | |
|       /**
 | |
|        * 单个删除
 | |
|        */
 | |
|       singleDelete (record) {
 | |
|         const param = [{ 'id': record.id }]
 | |
|         this.scrTrainScheDelete(param)
 | |
|       },
 | |
|       /**
 | |
|        * 批量删除
 | |
|        */
 | |
|       batchDelete () {
 | |
|         const paramIds = this.selectedRowKeys.map((d) => {
 | |
|             return { 'id': d }
 | |
|         })
 | |
|         this.scrTrainScheDelete(paramIds)
 | |
|       },
 | |
|       scrTrainScheDelete (record) {
 | |
|         scrTrainScheDelete(record).then((res) => {
 | |
|           if (res.success) {
 | |
|             this.$message.success('删除成功')
 | |
|             this.$refs.table.clearRefreshSelected()
 | |
|           } else {
 | |
|             this.$message.error('删除失败') // + res.message
 | |
|           }
 | |
|         })
 | |
|       },
 | |
|       onChangehappenTime(date, dateString) {
 | |
|         this.happenTimeDateString = dateString
 | |
|       },
 | |
|       /**
 | |
|        * 批量导出
 | |
|        */
 | |
|       batchExport () {
 | |
|         const paramIds = this.selectedRowKeys.map((d) => {
 | |
|             return { 'id': d }
 | |
|         })
 | |
|         scrTrainScheExport(paramIds).then((res) => {
 | |
|             this.$refs.batchExport.downloadfile(res)
 | |
|         })
 | |
|       },
 | |
|       handleOk () {
 | |
|         this.$refs.table.refresh()
 | |
|       },
 | |
|       onSelectChange (selectedRowKeys, selectedRows) {
 | |
|         this.selectedRowKeys = selectedRowKeys
 | |
|         this.selectedRows = selectedRows
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| </script>
 | |
| <style lang="less">
 | |
|   .table-operator {
 | |
|     margin-bottom: 18px;
 | |
|   }
 | |
|   button {
 | |
|     margin-right: 8px;
 | |
|   }
 | |
| </style>
 | 
