¶Ô±ÈÐÂÎļþ |
| | |
| | | <template xmlns=""> |
| | | <div class="app-container"> |
| | | <el-card class="box-card"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="项ç®ç¼ç " prop="projectCode"> |
| | | <el-input |
| | | v-model="queryParams.projectCode" |
| | | placeholder="请è¾å
¥é¡¹ç®ç¼ç " |
| | | clearable |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="项ç®å称" prop="projectName"> |
| | | <el-input |
| | | v-model="queryParams.projectName" |
| | | placeholder="请è¾å
¥é¡¹ç®å称" |
| | | clearable |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥å·¥æ¶é´"> |
| | | <el-date-picker |
| | | v-model="queryParams.reportTime" |
| | | style="width: 340px" |
| | | value-format="yyyy-MM-dd" |
| | | type="datetimerange" |
| | | range-separator="-" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item style="float: right"> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">æç´¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-card> |
| | | |
| | | <el-card style="margin-top: 10px" class="box-card"> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="mini" |
| | | @click="handleAdd" |
| | | v-hasPermi="['am:workHourInfo:add']" |
| | | >æ°å¢</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="success" |
| | | plain |
| | | icon="el-icon-edit" |
| | | size="mini" |
| | | :disabled="single" |
| | | @click="handleUpdate" |
| | | v-hasPermi="['am:workHourInfo:edit']" |
| | | >ä¿®æ¹</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="mini" |
| | | :disabled="multiple" |
| | | @click="handleDelete" |
| | | v-hasPermi="['am:workHourInfo:remove']" |
| | | >å é¤</el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="mini" |
| | | @click="handleExport" |
| | | v-hasPermi="['am:workHourInfo:export']" |
| | | >导åº</el-button> |
| | | </el-col> |
| | | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| | | </el-row> |
| | | <el-table show-summary border v-loading="loading" :data="workHourInfoList" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | | <el-table-column label="ç¨æ·å称" align="center" prop="nickName" /> |
| | | <el-table-column label="项ç®ç¼ç " align="center" prop="projectCode" /> |
| | | <el-table-column label="é¨é¨" align="center" prop="deptName" /> |
| | | <el-table-column label="项ç®é¶æ®µ" align="center" prop="projectPhase"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.project_phase" :value="scope.row.projectPhase"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="å·¥ç§" align="center" prop="workType"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag :options="dict.type.work_type" :value="scope.row.workType"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="å·¥æ¶" align="center" prop="workTime" /> |
| | | </el-table> |
| | | </el-card> |
| | | |
| | | <pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | |
| | | <!-- æ·»å æä¿®æ¹å·¥æ¶æç»å¯¹è¯æ¡ --> |
| | | <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
| | | <span slot="title"> |
| | | <i class="el-icon-s-order"></i> |
| | | {{titleName}} |
| | | </span> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| | | <el-form-item label="ç¨æ·è´¦å·" prop="userName"> |
| | | <el-input disabled v-model="form.userName" placeholder="请è¾å
¥ç¨æ·è´¦å·" /> |
| | | </el-form-item> |
| | | <el-form-item label="ç¨æ·å称" prop="nickName"> |
| | | <el-input disabled v-model="form.nickName" placeholder="请è¾å
¥ç¨æ·å称" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="项ç®ç¼ç " prop="projectCode"> |
| | | <el-input v-model="form.projectCode" placeholder="请éæ©é¡¹ç®ç¼ç " > |
| | | <el-button slot="append" @click="handleSelectMaterial" icon="el-icon-search"></el-button> |
| | | </el-input> |
| | | <ItemSelect ref="itemSelect" @onSelected="onItemSelected" > </ItemSelect> |
| | | </el-form-item> |
| | | |
| | | <!-- <el-form-item label="项ç®ç¼ç " prop="projectCode">--> |
| | | <!-- <el-select style="width: 100%" @change="handleSelectProjectCode(form.projectCode)" v-model="form.projectCode" placeholder="请éæ©é¡¹ç®ç¼ç ">--> |
| | | <!-- <el-option--> |
| | | <!-- v-for="item in options"--> |
| | | <!-- :key="item.projectCode"--> |
| | | <!-- :label="item.projectCode"--> |
| | | <!-- :value="item.projectCode">--> |
| | | <!-- </el-option>--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | |
| | | <el-form-item label="项ç®å称" prop="projectName"> |
| | | <el-input disabled v-model="form.projectName" placeholder="请è¾å
¥é¡¹ç®å称" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="项ç®é¶æ®µ" prop="projectPhase"> |
| | | <el-select v-model="form.projectPhase" placeholder="请éæ©é¡¹ç®é¶æ®µ"> |
| | | <el-option |
| | | v-for="dict in dict.type.project_phase" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥ç§" prop="workType"> |
| | | <el-select v-model="form.workType" placeholder="请éæ©å·¥ç§"> |
| | | <el-option |
| | | v-for="dict in dict.type.work_type" |
| | | :key="dict.value" |
| | | :label="dict.label" |
| | | :value="dict.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥æ¶" prop="workTime"> |
| | | <el-input v-model="form.workTime" placeholder="请è¾å
¥å·¥æ¶" /> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥ä½è¯¦æ
" prop="details"> |
| | | <el-input v-model="form.details" placeholder="请è¾å
¥å·¥ä½è¯¦æ
" /> |
| | | </el-form-item> |
| | | <el-form-item label="æ¥å·¥æ¶é´" prop="reportTime"> |
| | | <el-date-picker clearable |
| | | disabled |
| | | v-model="form.reportTime" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="请éæ©æ¥å·¥æ¶é´"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="newsubmitForm">ç¡® å®</el-button> |
| | | <el-button @click="cancel">å æ¶</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { listWorkHourInfo, getWorkHourInfo, delWorkHourInfo, addWorkHourInfo, updateWorkHourInfo ,listWorkHourInfoCommon} from "@/api/main/am/workHourInfo"; |
| | | import {listProjectInfo} from "@/api/main/bs/projectInfo"; |
| | | import {getUserProfile} from "@/api/system/user"; |
| | | import userAvatar from "@/views/system/user/profile/userAvatar.vue"; |
| | | import ItemSelect from "@/components/ProjectInfoSelect/single.vue"; |
| | | import {listWorkHourInfoReport} from "@/api/main/am/workHourInfoReport"; |
| | | |
| | | export default { |
| | | components: {userAvatar,ItemSelect}, |
| | | dicts: ['project_phase','work_type'], |
| | | name: "WorkHourInfo", |
| | | data() { |
| | | return { |
| | | options: [], |
| | | // é®ç½©å± |
| | | loading: true, |
| | | permission:"", |
| | | titleName: "", |
| | | // éä¸æ°ç» |
| | | ids: [], |
| | | // éå个ç¦ç¨ |
| | | single: true, |
| | | // éå¤ä¸ªç¦ç¨ |
| | | multiple: true, |
| | | // æ¾ç¤ºæç´¢æ¡ä»¶ |
| | | showSearch: true, |
| | | // æ»æ¡æ° |
| | | total: 0, |
| | | // å·¥æ¶æç»è¡¨æ ¼æ°æ® |
| | | workHourInfoList: [], |
| | | // å¼¹åºå±æ é¢ |
| | | title: "", |
| | | // æ¯å¦æ¾ç¤ºå¼¹åºå± |
| | | open: false, |
| | | |
| | | // æ¥è¯¢åæ° |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | userName: null, |
| | | nickName: null, |
| | | projectCode: null, |
| | | projectName: null, |
| | | projectPhase: null, |
| | | workType: null, |
| | | workTime: null, |
| | | details: null, |
| | | reportTime: null, |
| | | }, |
| | | projectCodeQueryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | projectCode: null, |
| | | }, |
| | | // 表ååæ° |
| | | form: {}, |
| | | user: {}, |
| | | roleGroup: {}, |
| | | postGroup: [], |
| | | // 表åæ ¡éª |
| | | rules: { |
| | | workHourId: [ |
| | | { required: true, message: "å·¥æ¶idä¸è½ä¸ºç©º", trigger: "blur" } |
| | | ], |
| | | projectCode: [ |
| | | { required: true, message: "项ç®ç¼å·ä¸è½ä¸ºç©º", trigger: "blur" }, |
| | | { pattern: /^[a-zA-Z0-9]*$/, message: "项ç®ç¼å·ä¸è½å
å«ä¸æå符", trigger: "blur" } |
| | | ], |
| | | projectPhase:[ |
| | | { required: true, message: "项ç®é¶æ®µä¸è½ä¸ºç©º", trigger: "blur" }, |
| | | ], |
| | | workType:[ |
| | | { required: true, message: "å·¥ç§ä¸è½ä¸ºç©º", trigger: "blur" }, |
| | | ], |
| | | workTime:[ |
| | | { required: true, message: "å·¥æ¶ä¸è½ä¸ºç©º", trigger: "blur" }, |
| | | ], |
| | | } |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getList(); |
| | | this.initProjectCode() |
| | | }, |
| | | methods: { |
| | | |
| | | handleSelectMaterial(){ |
| | | this.$refs.itemSelect.showFlag = true; |
| | | }, |
| | | onItemSelected(obj){ |
| | | if(obj !== undefined && obj !== null){ |
| | | this.form.projectCode = obj.projectCode; |
| | | this.form.projectName = obj.projectName; |
| | | } |
| | | }, |
| | | /** æ¥è¯¢å·¥æ¶æç»å表 */ |
| | | getList() { |
| | | this.getUser(); |
| | | console.log('1111'+this.permission) |
| | | this.loading = true; |
| | | listWorkHourInfoReport(this.queryParams).then(response => { |
| | | this.workHourInfoList = response.rows; |
| | | this.total = response.total; |
| | | this.loading = false; |
| | | }) |
| | | }, |
| | | // åæ¶æé® |
| | | cancel() { |
| | | this.open = false; |
| | | this.reset(); |
| | | }, |
| | | // 表åéç½® |
| | | reset() { |
| | | this.form = { |
| | | workHourId: null, |
| | | userName: null, |
| | | nickName: null, |
| | | projectCode: null, |
| | | projectName: null, |
| | | projectPhase: null, |
| | | workType: null, |
| | | workTime: null, |
| | | details: null, |
| | | reportTime: null, |
| | | delFlag: null, |
| | | }; |
| | | this.resetForm("form"); |
| | | }, |
| | | /** æç´¢æé®æä½ */ |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | /** éç½®æé®æä½ */ |
| | | resetQuery() { |
| | | this.resetForm("queryForm"); |
| | | this.handleQuery(); |
| | | }, |
| | | // å¤éæ¡éä¸æ°æ® |
| | | handleSelectionChange(selection) { |
| | | this.ids = selection.map(item => item.workHourId) |
| | | this.single = selection.length!==1 |
| | | this.multiple = !selection.length |
| | | }, |
| | | /** æ°å¢æé®æä½ */ |
| | | handleAdd() { |
| | | this.reset(); |
| | | this.getUser(); |
| | | this.open = true; |
| | | this.titleName = "æ·»å å·¥æ¶æç»"; |
| | | this.form.reportTime =new Date() |
| | | }, |
| | | /** ä¿®æ¹æé®æä½ */ |
| | | handleUpdate(row) { |
| | | this.reset(); |
| | | const workHourId = row.workHourId || this.ids |
| | | getWorkHourInfo(workHourId).then(response => { |
| | | this.form = response.data; |
| | | this.open = true; |
| | | this.titleName = "ä¿®æ¹å·¥æ¶æç»"; |
| | | }); |
| | | }, |
| | | /** æ交æé® */ |
| | | submitForm() { |
| | | this.$refs["form"].validate(valid => { |
| | | if (valid) { |
| | | if (this.form.workHourId != null) { |
| | | updateWorkHourInfo(this.form).then(response => { |
| | | this.$modal.msgSuccess("ä¿®æ¹æå"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | | } else { |
| | | addWorkHourInfo(this.form).then(response => { |
| | | this.$modal.msgSuccess("æ°å¢æå"); |
| | | this.open = false; |
| | | this.getList(); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | /**å·¥æ¶å¤æ*/ |
| | | newsubmitForm(){ |
| | | if(this.form.workTime >24){ |
| | | this.$message({ |
| | | showClose: true, |
| | | message: 'å·¥æ¶ä¸è½è¶
è¿24å°æ¶', |
| | | type: 'error' |
| | | }); |
| | | }else{ |
| | | if(this.form.workTime >8){ |
| | | this.$message({ |
| | | showClose: true, |
| | | message: '请填åå·¥ä½è¯¦æ
', |
| | | type: 'error' |
| | | }); |
| | | }else { |
| | | this.submitForm() |
| | | } |
| | | } |
| | | }, |
| | | |
| | | /** å é¤æé®æä½ */ |
| | | handleDelete(row) { |
| | | const workHourIds = row.workHourId || this.ids; |
| | | this.$modal.confirm('æ¯å¦å é¤ï¼').then(function() { |
| | | return delWorkHourInfo(workHourIds); |
| | | }).then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("å é¤æå"); |
| | | }).catch(() => {}); |
| | | }, |
| | | /** 导åºæé®æä½ */ |
| | | handleExport() { |
| | | this.download('am/workHourInfo/export', { |
| | | ...this.queryParams |
| | | }, `workHourInfo_${new Date().getTime()}.xlsx`) |
| | | }, |
| | | /** æ°å¢ä¿®æ¹é¡µé¢å¼ç¨é¡¹ç®é¡µé¢ */ |
| | | handleSelectProjectCode(selectedOption) { |
| | | this.projectCodeQueryParams.projectCode = selectedOption; |
| | | listProjectInfo(this.projectCodeQueryParams).then(response => { |
| | | this.form.projectName = response.rows[0].projectName; |
| | | }); |
| | | }, |
| | | /** 项ç®ä¿¡æ¯å表åå
¥optionsé */ |
| | | initProjectCode(){ |
| | | listProjectInfo(this.queryParams).then(response => { |
| | | this.options = response.rows; |
| | | }); |
| | | }, |
| | | /** è·åè´¦å·åå§å */ |
| | | getUser() { |
| | | getUserProfile().then(response => { |
| | | this.user = response.data; |
| | | this.roleGroup = response.roleGroup; |
| | | this.postGroup = response.postGroup; |
| | | this.form.userName=response.data.userName; |
| | | this.form.nickName=response.data.nickName; |
| | | }); |
| | | }, |
| | | } |
| | | |
| | | }; |
| | | </script> |