添加培训
This commit is contained in:
		
							parent
							
								
									b88b8587f2
								
							
						
					
					
						commit
						0a0ea2de88
					
				
							
								
								
									
										86
									
								
								src/api/modular/main/scrtraindata/scrTrainDataManage.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/api/modular/main/scrtraindata/scrTrainDataManage.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,86 @@ | |||||||
|  | import { axios } from '@/utils/request' | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 查询培训 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 19:55:20 | ||||||
|  |  */ | ||||||
|  | export function scrTrainDataPage (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainData/page', | ||||||
|  |     method: 'get', | ||||||
|  |     params: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 培训列表 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 19:55:20 | ||||||
|  |  */ | ||||||
|  | export function scrTrainDataList (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainData/list', | ||||||
|  |     method: 'get', | ||||||
|  |     params: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 添加培训 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 19:55:20 | ||||||
|  |  */ | ||||||
|  | export function scrTrainDataAdd (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainData/add', | ||||||
|  |     method: 'post', | ||||||
|  |     data: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 编辑培训 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 19:55:20 | ||||||
|  |  */ | ||||||
|  | export function scrTrainDataEdit (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainData/edit', | ||||||
|  |     method: 'post', | ||||||
|  |     data: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 删除培训 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 19:55:20 | ||||||
|  |  */ | ||||||
|  | export function scrTrainDataDelete (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainData/delete', | ||||||
|  |     method: 'post', | ||||||
|  |     data: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 导出培训 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 19:55:20 | ||||||
|  |  */ | ||||||
|  | export function scrTrainDataExport (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainData/export', | ||||||
|  |     method: 'get', | ||||||
|  |     params: parameter, | ||||||
|  |     responseType: 'blob' | ||||||
|  |   }) | ||||||
|  | } | ||||||
							
								
								
									
										86
									
								
								src/api/modular/main/scrtrainsche/scrTrainScheManage.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								src/api/modular/main/scrtrainsche/scrTrainScheManage.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,86 @@ | |||||||
|  | import { axios } from '@/utils/request' | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 查询培训安排 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 20:13:05 | ||||||
|  |  */ | ||||||
|  | export function scrTrainSchePage (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainSche/page', | ||||||
|  |     method: 'get', | ||||||
|  |     params: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 培训安排列表 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 20:13:05 | ||||||
|  |  */ | ||||||
|  | export function scrTrainScheList (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainSche/list', | ||||||
|  |     method: 'get', | ||||||
|  |     params: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 添加培训安排 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 20:13:05 | ||||||
|  |  */ | ||||||
|  | export function scrTrainScheAdd (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainSche/add', | ||||||
|  |     method: 'post', | ||||||
|  |     data: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 编辑培训安排 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 20:13:05 | ||||||
|  |  */ | ||||||
|  | export function scrTrainScheEdit (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainSche/edit', | ||||||
|  |     method: 'post', | ||||||
|  |     data: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 删除培训安排 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 20:13:05 | ||||||
|  |  */ | ||||||
|  | export function scrTrainScheDelete (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainSche/delete', | ||||||
|  |     method: 'post', | ||||||
|  |     data: parameter | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 导出培训安排 | ||||||
|  |  * | ||||||
|  |  * @author 1 | ||||||
|  |  * @date 2025-10-17 20:13:05 | ||||||
|  |  */ | ||||||
|  | export function scrTrainScheExport (parameter) { | ||||||
|  |   return axios({ | ||||||
|  |     url: '/scrTrainSche/export', | ||||||
|  |     method: 'get', | ||||||
|  |     params: parameter, | ||||||
|  |     responseType: 'blob' | ||||||
|  |   }) | ||||||
|  | } | ||||||
							
								
								
									
										136
									
								
								src/views/main/scrtraindata/addForm.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										136
									
								
								src/views/main/scrtraindata/addForm.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,136 @@ | |||||||
|  | <template> | ||||||
|  |   <a-modal | ||||||
|  |     title="新增" | ||||||
|  |     :width="900" | ||||||
|  |     :visible="visible" | ||||||
|  |     :confirmLoading="confirmLoading" | ||||||
|  |     @ok="handleSubmit" | ||||||
|  |     @cancel="handleCancel" | ||||||
|  |   > | ||||||
|  |     <a-spin :spinning="confirmLoading"> | ||||||
|  |       <a-form :form="form"> | ||||||
|  |         <a-form-item | ||||||
|  |           label="月份" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-month-picker show-time style="width: 100%" placeholder="请选择月份" v-decorator="['happenTime',{rules: [{ required: true, message: '请选择月份!' }]}]" @change="happenTimeOnChange"/> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="培训类型" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入培训类型" v-decorator="['type', {rules: [{required: true, message: '请输入培训类型!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="数量" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input-number placeholder="请输入数量" style="width: 100%" v-decorator="['num', {rules: [{required: true, message: '请输入数量!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="内部还是外部" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |         > | ||||||
|  |           <a-radio-group placeholder="请选择内部还是外部" v-decorator="['nborwb',{rules: [{ required: true, message: '请选择内部还是外部!' }]}]" > | ||||||
|  |             <a-radio v-for="(item,index) in nborwbData" :key="index" :value="item.code">{{ item.name }}</a-radio> | ||||||
|  |           </a-radio-group> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="部门" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入部门" v-decorator="['workPlace', {rules: [{required: true, message: '请输入部门!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |       </a-form> | ||||||
|  |     </a-spin> | ||||||
|  |   </a-modal> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  |   import { scrTrainDataAdd } from '@/api/modular/main/scrtraindata/scrTrainDataManage' | ||||||
|  |   import moment from 'moment' | ||||||
|  |   export default { | ||||||
|  |     data () { | ||||||
|  |       return { | ||||||
|  |         labelCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 5 } | ||||||
|  |         }, | ||||||
|  |         wrapperCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 15 } | ||||||
|  |         }, | ||||||
|  |         happenTimeDateString: '', | ||||||
|  |         visible: false, | ||||||
|  |         confirmLoading: false, | ||||||
|  |         form: this.$form.createForm(this), | ||||||
|  |         nborwbData: [ | ||||||
|  |           { | ||||||
|  |             code: 1, | ||||||
|  |             name: '内部' | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             code: 0, | ||||||
|  |             name: '外部' | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     methods: { | ||||||
|  |       moment, | ||||||
|  |       // 初始化方法 | ||||||
|  |       add (record) { | ||||||
|  |         this.visible = true | ||||||
|  |       }, | ||||||
|  |       /** | ||||||
|  |        * 提交表单 | ||||||
|  |        */ | ||||||
|  |       handleSubmit () { | ||||||
|  |         const { form: { validateFields } } = this | ||||||
|  |         this.confirmLoading = true | ||||||
|  |         validateFields((errors, values) => { | ||||||
|  |           if (!errors) { | ||||||
|  |             for (const key in values) { | ||||||
|  |               if (typeof (values[key]) === 'object' && values[key] != null) { | ||||||
|  |                 values[key] = JSON.stringify(values[key]) | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |             values.happenTime = moment(this.happenTimeDateString).format('YYYY-MM-DD') || null | ||||||
|  |             scrTrainDataAdd(values).then((res) => { | ||||||
|  |               if (res.success) { | ||||||
|  |                 this.$message.success('新增成功') | ||||||
|  |                 this.confirmLoading = false | ||||||
|  |                 this.$emit('ok', values) | ||||||
|  |                 this.handleCancel() | ||||||
|  |               } else { | ||||||
|  |                 this.$message.error('新增失败')// + res.message | ||||||
|  |               } | ||||||
|  |             }).finally((res) => { | ||||||
|  |               this.confirmLoading = false | ||||||
|  |             }) | ||||||
|  |           } else { | ||||||
|  |             this.confirmLoading = false | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }, | ||||||
|  |       happenTimeOnChange(date, dateString) { | ||||||
|  |         this.happenTimeDateString = dateString | ||||||
|  |       }, | ||||||
|  |       handleCancel () { | ||||||
|  |         this.happenTimeDateString = '' | ||||||
|  |         this.form.getFieldDecorator('happenTime', { initialValue: null }) | ||||||
|  |         this.form.resetFields() | ||||||
|  |         this.visible = false | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | </script> | ||||||
							
								
								
									
										150
									
								
								src/views/main/scrtraindata/editForm.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								src/views/main/scrtraindata/editForm.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,150 @@ | |||||||
|  | <template> | ||||||
|  |   <a-modal | ||||||
|  |     title="编辑培训" | ||||||
|  |     :width="900" | ||||||
|  |     :visible="visible" | ||||||
|  |     :confirmLoading="confirmLoading" | ||||||
|  |     @ok="handleSubmit" | ||||||
|  |     @cancel="handleCancel" | ||||||
|  |   > | ||||||
|  |     <a-spin :spinning="confirmLoading"> | ||||||
|  |       <a-form :form="form"> | ||||||
|  |         <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="月份" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-month-picker show-time style="width: 100%" placeholder="请选择月份" v-decorator="['happenTime',{rules: [{ required: true, message: '请选择月份!' }]}]" @change="happenTimeOnChange"/> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="培训类型" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入培训类型" v-decorator="['type', {rules: [{required: true, message: '请输入培训类型!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="数量" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input-number placeholder="请输入数量" style="width: 100%" v-decorator="['num', {rules: [{required: true, message: '请输入数量!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="内部还是外部" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |         > | ||||||
|  |           <a-radio-group placeholder="请选择内部还是外部" v-decorator="['nborwb',{rules: [{ required: true, message: '请选择内部还是外部!' }]}]" > | ||||||
|  |             <a-radio v-for="(item,index) in nborwbData" :key="index" :value="item.code">{{ item.name }}</a-radio> | ||||||
|  |           </a-radio-group> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="部门" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入部门" v-decorator="['workPlace', {rules: [{required: true, message: '请输入部门!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |       </a-form> | ||||||
|  |     </a-spin> | ||||||
|  |   </a-modal> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  |   import moment from 'moment' | ||||||
|  |   import { scrTrainDataEdit } from '@/api/modular/main/scrtraindata/scrTrainDataManage' | ||||||
|  |   export default { | ||||||
|  |     data () { | ||||||
|  |       return { | ||||||
|  |         labelCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 5 } | ||||||
|  |         }, | ||||||
|  |         wrapperCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 15 } | ||||||
|  |         }, | ||||||
|  |         happenTimeDateString: '', | ||||||
|  |         visible: false, | ||||||
|  |         confirmLoading: false, | ||||||
|  |         form: this.$form.createForm(this), | ||||||
|  |         nborwbData: [ | ||||||
|  |           { | ||||||
|  |             code: 1, | ||||||
|  |             name: '内部' | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             code: 0, | ||||||
|  |             name: '外部' | ||||||
|  |           } | ||||||
|  |         ] | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     methods: { | ||||||
|  |       moment, | ||||||
|  |       // 初始化方法 | ||||||
|  |       edit (record) { | ||||||
|  |         this.visible = true | ||||||
|  |         setTimeout(() => { | ||||||
|  |           this.form.setFieldsValue( | ||||||
|  |             { | ||||||
|  |               id: record.id, | ||||||
|  |               type: record.type, | ||||||
|  |               num: record.num, | ||||||
|  |               nborwb: record.nborwb, | ||||||
|  |               workPlace: record.workPlace | ||||||
|  |             } | ||||||
|  |           ) | ||||||
|  |         }, 100) | ||||||
|  |         // 时间单独处理 | ||||||
|  |         if (record.happenTime) { | ||||||
|  |             this.form.getFieldDecorator('happenTime', { initialValue: moment(record.happenTime, 'YYYY-MM-DD') }) | ||||||
|  |             this.happenTimeDateString = moment(record.happenTime).format('YYYY-MM-DD') | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       handleSubmit () { | ||||||
|  |         const { form: { validateFields } } = this | ||||||
|  |         this.confirmLoading = true | ||||||
|  |         validateFields((errors, values) => { | ||||||
|  |           if (!errors) { | ||||||
|  |             for (const key in values) { | ||||||
|  |               if (typeof (values[key]) === 'object' && values[key] != null) { | ||||||
|  |                 values[key] = JSON.stringify(values[key]) | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |             values.happenTime = moment(this.happenTimeDateString).format('YYYY-MM-DD') || null | ||||||
|  |             scrTrainDataEdit(values).then((res) => { | ||||||
|  |               if (res.success) { | ||||||
|  |                 this.$message.success('编辑成功') | ||||||
|  |                 this.confirmLoading = false | ||||||
|  |                 this.$emit('ok', values) | ||||||
|  |                 this.handleCancel() | ||||||
|  |               } else { | ||||||
|  |                 this.$message.error('编辑失败')//  + res.message | ||||||
|  |               } | ||||||
|  |             }).finally((res) => { | ||||||
|  |               this.confirmLoading = false | ||||||
|  |             }) | ||||||
|  |           } else { | ||||||
|  |             this.confirmLoading = false | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }, | ||||||
|  |       happenTimeOnChange(date, dateString) { | ||||||
|  |         this.happenTimeDateString = dateString | ||||||
|  |       }, | ||||||
|  |       handleCancel () { | ||||||
|  |         this.happenTimeDateString = '' | ||||||
|  |         this.form.getFieldDecorator('happenTime', { initialValue: null }) | ||||||
|  |         this.form.resetFields() | ||||||
|  |         this.visible = false | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | </script> | ||||||
							
								
								
									
										224
									
								
								src/views/main/scrtraindata/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										224
									
								
								src/views/main/scrtraindata/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,224 @@ | |||||||
|  | <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.type" 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> | ||||||
|  |             <template v-if="advanced"> | ||||||
|  |               <a-col :md="8" :sm="24"> | ||||||
|  |                 <a-form-item label="部门"> | ||||||
|  |                   <a-input v-model="queryParam.workPlace" allow-clear placeholder="请输入部门"/> | ||||||
|  |                 </a-form-item> | ||||||
|  |               </a-col> | ||||||
|  |             </template> | ||||||
|  |             <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> | ||||||
|  |                 <a @click="toggleAdvanced" style="margin-left: 8px"> | ||||||
|  |                   {{ advanced ? '收起' : '展开' }} | ||||||
|  |                   <a-icon :type="advanced ? 'up' : 'down'"/> | ||||||
|  |                 </a> | ||||||
|  |               </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="nborwbScopedSlots" slot-scope="text"> | ||||||
|  |           {{ text=='0'?'外部':'内部' }} | ||||||
|  |         </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 } from '@/components' | ||||||
|  |   import moment from 'moment' | ||||||
|  |   import { scrTrainDataPage, scrTrainDataDelete, scrTrainDataExport } from '@/api/modular/main/scrtraindata/scrTrainDataManage' | ||||||
|  |   import addForm from './addForm.vue' | ||||||
|  |   import editForm from './editForm.vue' | ||||||
|  |   export default { | ||||||
|  |     components: { | ||||||
|  |       STable, | ||||||
|  |       addForm, | ||||||
|  |       editForm, | ||||||
|  |       XDown | ||||||
|  |     }, | ||||||
|  |     data () { | ||||||
|  |       return { | ||||||
|  |         // 高级搜索 展开/关闭 | ||||||
|  |         advanced: false, | ||||||
|  |         // 查询参数 | ||||||
|  |         queryParam: {}, | ||||||
|  |         // 表头 | ||||||
|  |         columns: [ | ||||||
|  |           { | ||||||
|  |             title: '月份', | ||||||
|  |             align: 'center', | ||||||
|  |             dataIndex: 'happenTime', | ||||||
|  |             customRender: (text, record) => { | ||||||
|  |               return moment(text).format('YYYY-MM') | ||||||
|  |             } | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             title: '培训类型', | ||||||
|  |             align: 'center', | ||||||
|  |             dataIndex: 'type' | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             title: '数量', | ||||||
|  |             align: 'center', | ||||||
|  |             dataIndex: 'num' | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             title: '内部/外部', | ||||||
|  |             align: 'center', | ||||||
|  |             dataIndex: 'nborwb', | ||||||
|  |             scopedSlots: { customRender: 'nborwbScopedSlots' } | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             title: '部门', | ||||||
|  |             align: 'center', | ||||||
|  |             dataIndex: 'workPlace' | ||||||
|  |           } | ||||||
|  |         ], | ||||||
|  |         tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, | ||||||
|  |         // 加载数据方法 必须为 Promise 对象 | ||||||
|  |         loadData: parameter => { | ||||||
|  |           return scrTrainDataPage(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.scrTrainDataDelete(param) | ||||||
|  |       }, | ||||||
|  |       /** | ||||||
|  |        * 批量删除 | ||||||
|  |        */ | ||||||
|  |       batchDelete () { | ||||||
|  |         const paramIds = this.selectedRowKeys.map((d) => { | ||||||
|  |             return { 'id': d } | ||||||
|  |         }) | ||||||
|  |         this.scrTrainDataDelete(paramIds) | ||||||
|  |       }, | ||||||
|  |       scrTrainDataDelete (record) { | ||||||
|  |         scrTrainDataDelete(record).then((res) => { | ||||||
|  |           if (res.success) { | ||||||
|  |             this.$message.success('删除成功') | ||||||
|  |             this.$refs.table.clearRefreshSelected() | ||||||
|  |           } else { | ||||||
|  |             this.$message.error('删除失败') // + res.message | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }, | ||||||
|  |       toggleAdvanced () { | ||||||
|  |         this.advanced = !this.advanced | ||||||
|  |       }, | ||||||
|  |       onChangehappenTime(date, dateString) { | ||||||
|  |         this.happenTimeDateString = dateString | ||||||
|  |       }, | ||||||
|  |       /** | ||||||
|  |        * 批量导出 | ||||||
|  |        */ | ||||||
|  |       batchExport () { | ||||||
|  |         const paramIds = this.selectedRowKeys.map((d) => { | ||||||
|  |             return { 'id': d } | ||||||
|  |         }) | ||||||
|  |         scrTrainDataExport(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> | ||||||
							
								
								
									
										125
									
								
								src/views/main/scrtrainsche/addForm.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								src/views/main/scrtrainsche/addForm.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,125 @@ | |||||||
|  | <template> | ||||||
|  |   <a-modal | ||||||
|  |     title="新增" | ||||||
|  |     :width="900" | ||||||
|  |     :visible="visible" | ||||||
|  |     :confirmLoading="confirmLoading" | ||||||
|  |     @ok="handleSubmit" | ||||||
|  |     @cancel="handleCancel" | ||||||
|  |   > | ||||||
|  |     <a-spin :spinning="confirmLoading"> | ||||||
|  |       <a-form :form="form"> | ||||||
|  |         <a-form-item | ||||||
|  |           label="月份" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-month-picker show-time style="width: 100%" placeholder="请选择月份" v-decorator="['happenTime',{rules: [{ required: true, message: '请选择月份!' }]}]" @change="happenTimeOnChange"/> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="培训计划" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入培训计划" v-decorator="['name', {rules: [{required: true, message: '请输入培训计划!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="线上培训" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入线上培训" v-decorator="['uppx', {rules: [{required: true, message: '请输入线上培训!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="线下培训" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入线下培训" v-decorator="['downpx', {rules: [{required: true, message: '请输入线下培训!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="在线考试" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入在线考试" v-decorator="['workPlace', {rules: [{required: true, message: '请输入在线考试!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |       </a-form> | ||||||
|  |     </a-spin> | ||||||
|  |   </a-modal> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  |   import { scrTrainScheAdd } from '@/api/modular/main/scrtrainsche/scrTrainScheManage' | ||||||
|  |   import moment from 'moment' | ||||||
|  |   export default { | ||||||
|  |     data () { | ||||||
|  |       return { | ||||||
|  |         labelCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 5 } | ||||||
|  |         }, | ||||||
|  |         wrapperCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 15 } | ||||||
|  |         }, | ||||||
|  |         happenTimeDateString: '', | ||||||
|  |         visible: false, | ||||||
|  |         confirmLoading: false, | ||||||
|  |         form: this.$form.createForm(this) | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     methods: { | ||||||
|  |       moment, | ||||||
|  |       // 初始化方法 | ||||||
|  |       add (record) { | ||||||
|  |         this.visible = true | ||||||
|  |       }, | ||||||
|  |       /** | ||||||
|  |        * 提交表单 | ||||||
|  |        */ | ||||||
|  |       handleSubmit () { | ||||||
|  |         const { form: { validateFields } } = this | ||||||
|  |         this.confirmLoading = true | ||||||
|  |         validateFields((errors, values) => { | ||||||
|  |           if (!errors) { | ||||||
|  |             for (const key in values) { | ||||||
|  |               if (typeof (values[key]) === 'object' && values[key] != null) { | ||||||
|  |                 values[key] = JSON.stringify(values[key]) | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |             values.happenTime = moment(this.happenTimeDateString).format('YYYY-MM-DD') || null | ||||||
|  |             scrTrainScheAdd(values).then((res) => { | ||||||
|  |               if (res.success) { | ||||||
|  |                 this.$message.success('新增成功') | ||||||
|  |                 this.confirmLoading = false | ||||||
|  |                 this.$emit('ok', values) | ||||||
|  |                 this.handleCancel() | ||||||
|  |               } else { | ||||||
|  |                 this.$message.error('新增失败')// + res.message | ||||||
|  |               } | ||||||
|  |             }).finally((res) => { | ||||||
|  |               this.confirmLoading = false | ||||||
|  |             }) | ||||||
|  |           } else { | ||||||
|  |             this.confirmLoading = false | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }, | ||||||
|  |       happenTimeOnChange(date, dateString) { | ||||||
|  |         this.happenTimeDateString = dateString | ||||||
|  |       }, | ||||||
|  |       handleCancel () { | ||||||
|  |         this.happenTimeDateString = '' | ||||||
|  |         this.form.getFieldDecorator('happenTime', { initialValue: null }) | ||||||
|  |         this.form.resetFields() | ||||||
|  |         this.visible = false | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | </script> | ||||||
							
								
								
									
										139
									
								
								src/views/main/scrtrainsche/editForm.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								src/views/main/scrtrainsche/editForm.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,139 @@ | |||||||
|  | <template> | ||||||
|  |   <a-modal | ||||||
|  |     title="编辑培训安排" | ||||||
|  |     :width="900" | ||||||
|  |     :visible="visible" | ||||||
|  |     :confirmLoading="confirmLoading" | ||||||
|  |     @ok="handleSubmit" | ||||||
|  |     @cancel="handleCancel" | ||||||
|  |   > | ||||||
|  |     <a-spin :spinning="confirmLoading"> | ||||||
|  |       <a-form :form="form"> | ||||||
|  |         <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="月份" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-month-picker show-time style="width: 100%" placeholder="请选择月份" v-decorator="['happenTime',{rules: [{ required: true, message: '请选择月份!' }]}]" @change="happenTimeOnChange"/> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="培训计划" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入培训计划" v-decorator="['name', {rules: [{required: true, message: '请输入培训计划!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="线上培训" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入线上培训" v-decorator="['uppx', {rules: [{required: true, message: '请输入线上培训!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="线下培训" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入线下培训" v-decorator="['downpx', {rules: [{required: true, message: '请输入线下培训!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |         <a-form-item | ||||||
|  |           label="在线考试" | ||||||
|  |           :labelCol="labelCol" | ||||||
|  |           :wrapperCol="wrapperCol" | ||||||
|  |           has-feedback | ||||||
|  |         > | ||||||
|  |           <a-input placeholder="请输入在线考试" v-decorator="['workPlace', {rules: [{required: true, message: '请输入在线考试!'}]}]" /> | ||||||
|  |         </a-form-item> | ||||||
|  |       </a-form> | ||||||
|  |     </a-spin> | ||||||
|  |   </a-modal> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  |   import moment from 'moment' | ||||||
|  |   import { scrTrainScheEdit } from '@/api/modular/main/scrtrainsche/scrTrainScheManage' | ||||||
|  |   export default { | ||||||
|  |     data () { | ||||||
|  |       return { | ||||||
|  |         labelCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 5 } | ||||||
|  |         }, | ||||||
|  |         wrapperCol: { | ||||||
|  |           xs: { span: 24 }, | ||||||
|  |           sm: { span: 15 } | ||||||
|  |         }, | ||||||
|  |         happenTimeDateString: '', | ||||||
|  |         visible: false, | ||||||
|  |         confirmLoading: false, | ||||||
|  |         form: this.$form.createForm(this) | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     methods: { | ||||||
|  |       moment, | ||||||
|  |       // 初始化方法 | ||||||
|  |       edit (record) { | ||||||
|  |         this.visible = true | ||||||
|  |         setTimeout(() => { | ||||||
|  |           this.form.setFieldsValue( | ||||||
|  |             { | ||||||
|  |               id: record.id, | ||||||
|  |               name: record.name, | ||||||
|  |               uppx: record.uppx, | ||||||
|  |               downpx: record.downpx, | ||||||
|  |               workPlace: record.workPlace | ||||||
|  |             } | ||||||
|  |           ) | ||||||
|  |         }, 100) | ||||||
|  |         // 时间单独处理 | ||||||
|  |         if (record.happenTime) { | ||||||
|  |             this.form.getFieldDecorator('happenTime', { initialValue: moment(record.happenTime, 'YYYY-MM-DD') }) | ||||||
|  |             this.happenTimeDateString = moment(record.happenTime).format('YYYY-MM-DD') | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       handleSubmit () { | ||||||
|  |         const { form: { validateFields } } = this | ||||||
|  |         this.confirmLoading = true | ||||||
|  |         validateFields((errors, values) => { | ||||||
|  |           if (!errors) { | ||||||
|  |             for (const key in values) { | ||||||
|  |               if (typeof (values[key]) === 'object' && values[key] != null) { | ||||||
|  |                 values[key] = JSON.stringify(values[key]) | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |             values.happenTime = moment(this.happenTimeDateString).format('YYYY-MM-DD') || null | ||||||
|  |             scrTrainScheEdit(values).then((res) => { | ||||||
|  |               if (res.success) { | ||||||
|  |                 this.$message.success('编辑成功') | ||||||
|  |                 this.confirmLoading = false | ||||||
|  |                 this.$emit('ok', values) | ||||||
|  |                 this.handleCancel() | ||||||
|  |               } else { | ||||||
|  |                 this.$message.error('编辑失败')//  + res.message | ||||||
|  |               } | ||||||
|  |             }).finally((res) => { | ||||||
|  |               this.confirmLoading = false | ||||||
|  |             }) | ||||||
|  |           } else { | ||||||
|  |             this.confirmLoading = false | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }, | ||||||
|  |       happenTimeOnChange(date, dateString) { | ||||||
|  |         this.happenTimeDateString = dateString | ||||||
|  |       }, | ||||||
|  |       handleCancel () { | ||||||
|  |         this.happenTimeDateString = '' | ||||||
|  |         this.form.getFieldDecorator('happenTime', { initialValue: null }) | ||||||
|  |         this.form.resetFields() | ||||||
|  |         this.visible = false | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | </script> | ||||||
							
								
								
									
										217
									
								
								src/views/main/scrtrainsche/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										217
									
								
								src/views/main/scrtrainsche/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,217 @@ | |||||||
|  | <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> | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 zhangyanan
						zhangyanan