Merge branch 'master' of http://192.168.110.209:9001/r/lims-before
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | //æ¥è¯¢å®¡æ¥è®¡å |
| | | export function selectAllList(params) { |
| | | return request({ |
| | | url: '/cnasAnnualPlan/selectAllList', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | | |
| | | //æ°å¢å®¡æ¥è®¡å |
| | | export function addCnasAnnualPlan(data) { |
| | | return request({ |
| | | url: '/cnasAnnualPlan/addCnasAnnualPlan', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | |
| | | |
| | | //ä¸ä¼ éä»¶ |
| | | export function addAccessory(data) { |
| | | return request({ |
| | | url: '/cnasAnnualPlan/addAccessory', |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | |
| | | //å é¤å®¡æ ¸å¹´åº¦è®¡å |
| | | export function deleteCnasAnnualPlan(params) { |
| | | return request({ |
| | | url: '/cnasAnnualPlan/deleteCnasAnnualPlan', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | const baseurl='/user' |
| | | |
| | | const url={ |
| | | "list_new_personnel": baseurl+"/list_new_personnel",//è·å人åä¿¡æ¯ |
| | | } |
| | | export default{ |
| | | url |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | const baseurl='/cnasSatisfactionSurvey' |
| | | |
| | | const url={ |
| | | "getCnasSatisfactionSurvey": baseurl+"/getCnasSatisfactionSurvey",//è·åä¸åæ ¼ååé¦ |
| | | "getFillNameAndId": baseurl+"/getFillNameAndId",//å½åå½å
¥äºº |
| | | "uploadFile": baseurl+"/uploadFile",//æä»¶ä¸ä¼ |
| | | "addSurvey": baseurl+"/addSurvey",//满æåº¦æ°å¢ |
| | | } |
| | | export default{ |
| | | url |
| | | } |
| | |
| | | <template> |
| | | <div> |
| | | å®¡æ ¸å¹´åº¦è®¡å |
| | | <div class="content-main"> |
| | | <div class="top-bar"> |
| | | <el-form ref="form" :inline="true"> |
| | | <el-form-item> |
| | | <el-date-picker |
| | | v-model="input" |
| | | class="input-form" |
| | | type="month" |
| | | placeholder="è¯·éæ©æ¥è¯¢æ¥æ" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="getData()">æ¥è¯¢</el-button> |
| | | <el-button type="primary" plain @click="resetData()">éç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form class="rightBtn"> |
| | | <!-- ä¸ä¼ éä»¶ --> |
| | | <el-form-item class="createBtn"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-upload2" |
| | | @click=" |
| | | dialogFormVisible1 = true; |
| | | uploading = {}; |
| | | resetForm('uploading'); |
| | | " |
| | | >ä¸ä¼ éä»¶</el-button |
| | | > |
| | | <el-dialog |
| | | title="ä¸ä¼ éä»¶" |
| | | :visible.sync="dialogFormVisible1" |
| | | width="30%" |
| | | > |
| | | <el-form :model="uploading" :rules="rules1" ref="uploading"> |
| | | <el-form-item |
| | | label="å®¡æ ¸æ¥æ:" |
| | | :label-width="formLabelWidth1" |
| | | prop="auditTime" |
| | | style="margin-bottom: 20px" |
| | | > |
| | | <el-date-picker |
| | | class="uploading-form" |
| | | v-model="uploading.auditTime" |
| | | type="date" |
| | | placeholder="è¯·éæ©æ¥æ" |
| | | autocomplete="off" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item |
| | | prop="accessoryFile" |
| | | label="ä¸ä¼ éä»¶:" |
| | | :label-width="formLabelWidth1" |
| | | > |
| | | <el-input |
| | | class="uploading-form" |
| | | v-model="uploading.accessoryFile" |
| | | autocomplete="off" |
| | | placeholder="è¯·éæ©æä»¶" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogFormVisible1 = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitUp('uploading')" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | </el-form-item> |
| | | <!-- æ°å¢è®¡å --> |
| | | <el-form-item class="createBtn"> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-document-add" |
| | | @click=" |
| | | dialogFormVisible2 = true; |
| | | newly = {}; |
| | | resetForm('newly'); |
| | | " |
| | | >æ°å¢è®¡å</el-button |
| | | > |
| | | |
| | | <el-dialog |
| | | title="æ°å¢è®¡å" |
| | | :visible.sync="dialogFormVisible2" |
| | | width="55%" |
| | | > |
| | | <el-form :model="newly" :rules="rules2" ref="newly"> |
| | | <!-- 第ä¸è¡ --> |
| | | <el-row class="newly-margin-bottom"> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="è®¡åæ¶é´:" |
| | | :label-width="formLabelWidth2" |
| | | prop="planTime" |
| | | > |
| | | <el-date-picker |
| | | class="newly-form" |
| | | v-model="newly.planTime" |
| | | type="date" |
| | | placeholder="è¯·éæ©è®¡åæ¥æ" |
| | | autocomplete="off" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="é¨é¨:" |
| | | :label-width="formLabelWidth2" |
| | | prop="department" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.department" |
| | | placeholder="è¯·éæ©é¨é¨" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 第äºè¡ --> |
| | | <el-row class="newly-margin-bottom"> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="æ§è´¨:" |
| | | :label-width="formLabelWidth2" |
| | | prop="auditType" |
| | | > |
| | | <el-select |
| | | class="newly-form" |
| | | v-model="newly.auditType" |
| | | placeholder="è¯·éæ©æ§è´¨" |
| | | autocomplete="off" |
| | | > |
| | | <el-option label="å
审" value="0"></el-option> |
| | | <el-option label="管çè¯å®¡" value="1"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="å®¡æ ¸ç®ç:" |
| | | :label-width="formLabelWidth2" |
| | | prop="auditPurpose" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.auditPurpose" |
| | | placeholder="请è¾å
¥å®¡æ ¸ç®ç" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 第ä¸è¡ --> |
| | | <el-row class="newly-margin-bottom"> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="å®¡æ ¸ç»é¿:" |
| | | :label-width="formLabelWidth2" |
| | | prop="auditLeader" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.auditLeader" |
| | | placeholder="请è¾å
¥å®¡æ ¸ç»é¿" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="å®¡æ ¸èå´:" |
| | | :label-width="formLabelWidth2" |
| | | prop="auditScope" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.auditScope" |
| | | placeholder="请è¾å
¥å®¡æ ¸èå´" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 第åè¡ --> |
| | | <el-row class="newly-margin-bottom"> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="ç»å:" |
| | | :label-width="formLabelWidth2" |
| | | prop="auditEmp" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.auditEmp" |
| | | placeholder="请è¾å
¥ç»å" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="å®¡æ ¸ä¾æ®:" |
| | | :label-width="formLabelWidth2" |
| | | prop="auditPursuant" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.auditPursuant" |
| | | placeholder="请è¾å
¥å®¡æ ¸ä¾æ®" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 第äºè¡ --> |
| | | <el-row class="newly-margin-bottom"> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="ç¼å¶äºº:" |
| | | :label-width="formLabelWidth2" |
| | | prop="writeUser" |
| | | > |
| | | <el-input |
| | | class="newly-form" |
| | | v-model="newly.writeUser" |
| | | placeholder="请è¾å
¥ç¼å¶äºº" |
| | | autocomplete="off" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="å®¡æ ¸æ¥æ:" |
| | | :label-width="formLabelWidth2" |
| | | > |
| | | <el-date-picker |
| | | class="newly-form" |
| | | v-model="newly.auditTime" |
| | | type="date" |
| | | placeholder="è¯·éæ©å®¡æ ¸æ¥æ" |
| | | autocomplete="off" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogFormVisible2 = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitAddData('newly')" |
| | | >ç¡® å®</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | </el-form-item> |
| | | <!-- 导åºå¹´åº¦è®¡å --> |
| | | <el-form-item class="createBtn"> |
| | | <el-button type="primary" icon="el-icon-document-checked" |
| | | >导åºå¹´åº¦è®¡å</el-button |
| | | > |
| | | </el-form-item> |
| | | <el-form-item class="createBtn"> |
| | | <el-button type="primary" icon="el-icon-document-checked" |
| | | >导åºå
é¨å®æ½è®¡å</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="library-table"> |
| | | <div class="table-box"> |
| | | <el-table |
| | | ref="auditTable" |
| | | border |
| | | :max-height="800" |
| | | :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{ |
| | | border: '0px', |
| | | background: '#f5f7fa', |
| | | color: '#606266', |
| | | boxShadow: 'inset 0 1px 0 #ebeef5', |
| | | textAlign: 'center', |
| | | }" |
| | | :data="auditTable" |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column type="index" label="åºå·" min-width="30px"> |
| | | <template> |
| | | <el-checkbox type="checkbox" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="year" label="年度" min-width="60px" /> |
| | | <el-table-column prop="month" label="æåº¦" min-width="60px" /> |
| | | <el-table-column prop="planTime" label="è®¡åæ¶é´" min-width="100px" /> |
| | | <el-table-column prop="auditType" label="æ§è´¨" min-width="80px"> |
| | | <template slot-scope="scope"> |
| | | <span> |
| | | {{ scope.row.auditType == 0 ? "å
审" : "管çè¯å®¡" }} |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="department" label="é¨é¨" min-width="80px" /> |
| | | <el-table-column |
| | | prop="auditLeader" |
| | | label="å®¡æ ¸ç»é¿" |
| | | min-width="80px" |
| | | /> |
| | | <el-table-column prop="auditEmp" label="ç»å" min-width="80px" /> |
| | | <el-table-column |
| | | prop="auditPurpose" |
| | | label="å®¡æ ¸ç®ç" |
| | | min-width="100px" |
| | | /> |
| | | <el-table-column |
| | | prop="auditScope" |
| | | label="å®¡æ ¸èå´" |
| | | min-width="100px" |
| | | /> |
| | | <el-table-column |
| | | prop="auditPursuant" |
| | | label="å®¡æ ¸ä¾æ®" |
| | | min-width="100px" |
| | | /> |
| | | <el-table-column prop="writeUser" label="ç¼å¶äºº" min-width="80px" /> |
| | | <el-table-column prop="createTime" label="ç¼å¶æ¥æ" min-width="100px"> |
| | | </el-table-column> |
| | | <el-table-column prop="keyboarder" label="å½å
¥äºº" min-width="80px" /> |
| | | <el-table-column prop="checker" label="æ£éªäºº" min-width="80px" /> |
| | | <el-table-column |
| | | prop="auditTime" |
| | | label="å®¡æ ¸æ¥æ" |
| | | min-width="100px" |
| | | /> |
| | | <el-table-column prop="count" label="ä¸ç¬¦åé¡¹ç®æ°" min-width="60px" /> |
| | | <el-table-column prop="auditState" label="ç¶æ" min-width="100px"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.auditState === 0"> |
| | | <el-tag class="tag-item" type="warning">å³å°å¼å§</el-tag> |
| | | </div> |
| | | <div v-else-if="scope.row.auditState === 1"> |
| | | <el-tag class="tag-item" type="success">宿</el-tag> |
| | | </div> |
| | | <div v-else> |
| | | <el-tag class="tag-item" type="danger">龿</el-tag> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" min-width="100" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small">æ¥ç</el-button> |
| | | <el-button |
| | | type="text" |
| | | size="small" |
| | | @click="deleteClick(scope.row.id)" |
| | | >å é¤</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- åé¡µå¨ --> |
| | | <div> |
| | | <el-pagination |
| | | :current-page="page" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | selectAllList, |
| | | addCnasAnnualPlan, |
| | | addAccessory, |
| | | deleteCnasAnnualPlan, |
| | | } from "@/api/CNAS/reviewAnnualPlan"; |
| | | import { P } from "af-table-column"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | input: "", |
| | | auditTable: [], |
| | | page: 1, |
| | | total: 0, |
| | | pageSize: 10, |
| | | dialogFormVisible1: false, |
| | | dialogFormVisible2: false, |
| | | formLabelWidth1: "80px", |
| | | formLabelWidth2: "80px", |
| | | //ä¸ä¼ éä»¶åæ° |
| | | uploading: { |
| | | auditTime: "", |
| | | //====================æä»¶ä¸ä¼ è¿æ²¡å,æ¤å¤æ¯åºæ¯æä»¶åæ°,ææ¶è¿æ¯ææ¬ |
| | | accessoryFile: "", |
| | | }, |
| | | rules1: { |
| | | auditTime: [ |
| | | { |
| | | type: "date", |
| | | required: true, |
| | | message: "è¯·éæ©æ¥æ", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | accessoryFile: [ |
| | | { required: true, message: "请è¾å
¥æ´»å¨åç§°", trigger: "blur" }, |
| | | { min: 3, max: 5, message: "é¿åº¦å¨ 3 å° 5 个å符", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | //æ°å¢è®¡å对象 |
| | | newly: { |
| | | planTime: "", |
| | | auditType: "", |
| | | department: "", |
| | | auditPurpose: "", |
| | | auditLeader: "", |
| | | auditEmp: "", |
| | | auditPursuant: "", |
| | | auditScope: "", |
| | | writeUser: "", |
| | | auditTime: "", |
| | | }, |
| | | rules2: { |
| | | planTime: [ |
| | | { |
| | | type: "date", |
| | | required: true, |
| | | message: "è¯·éæ©æ¥æ", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | auditType: [ |
| | | { required: true, message: "è¯·éæ©æ§è´¨", trigger: "change" }, |
| | | ], |
| | | department: [ |
| | | { required: true, message: "请è¾å
¥é¨é¨", trigger: "blur" }, |
| | | { min: 1, max: 25, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | auditPurpose: [ |
| | | { required: true, message: "请è¾å
¥å®¡æ ¸ç®ç", trigger: "blur" }, |
| | | { min: 1, max: 25, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | auditLeader: [ |
| | | { required: true, message: "请è¾å
¥å®¡æ ¸ç»é¿", trigger: "blur" }, |
| | | { min: 1, max: 25, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | auditEmp: [ |
| | | { required: true, message: "请è¾å
¥ç»å", trigger: "blur" }, |
| | | { min: 1, max: 25, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | auditPursuant: [ |
| | | { required: true, message: "请è¾å
¥å®¡æ ¸ä¾æ®", trigger: "blur" }, |
| | | { min: 1, max: 25, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | auditScope: [ |
| | | { required: true, message: "请è¾å
¥å®¡æ ¸èå´", trigger: "blur" }, |
| | | { min: 1, max: 5, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | writeUser: [ |
| | | { required: true, message: "请è¾å
¥ç¼å¶äºº", trigger: "blur" }, |
| | | { min: 1, max: 25, message: "åæ°è¿é¿", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getData(); |
| | | }, |
| | | methods: { |
| | | //====================================================ä¸ä¼ éä»¶ |
| | | //ä¸ä¼ éä»¶åæ®µç¡®è®¤ |
| | | submitUp(uploading) { |
| | | this.$refs[uploading].validate((valid) => { |
| | | if (!valid) { |
| | | return false; |
| | | } else { |
| | | // this.upData(); |
| | | } |
| | | }); |
| | | }, |
| | | // //ä¸ä¼ éä»¶ |
| | | // async upData() { |
| | | // try { |
| | | // const res = await addAccessory(this.uploading); |
| | | // console.log(res); |
| | | // } catch (error) { |
| | | // this.$message.error("æ·»å 失败"); |
| | | // } |
| | | // this.resetData(); |
| | | // this.dialogFormVisible1 = false; |
| | | // }, |
| | | |
| | | //æ°å¢è®¡ååæ®µç¡®è®¤ |
| | | submitAddData(newly) { |
| | | this.$refs[newly].validate((valid) => { |
| | | if (!valid) { |
| | | return false; |
| | | } else { |
| | | this.addData(); |
| | | } |
| | | }); |
| | | }, |
| | | //æ°å¢è®¡å |
| | | async addData() { |
| | | try { |
| | | const res = await deleteCnasAnnualPlan(this.newly); |
| | | } catch (error) { |
| | | this.$message.error("æ·»å 失败"); |
| | | } |
| | | this.getData(); |
| | | this.dialogFormVisible2 = false; |
| | | }, |
| | | // æ¯é¡µæ¡æ°æ¹åæ¶è§¦å éæ©ä¸é¡µæ¾ç¤ºå¤å°è¡ |
| | | handleSizeChange(val) { |
| | | console.log(`æ¯é¡µ ${val} æ¡`); |
| | | this.pageSize = val; |
| | | this.getData(); |
| | | }, |
| | | // å½å页æ¹åæ¶è§¦å 跳转å
¶ä»é¡µ |
| | | handleCurrentChange(val) { |
| | | console.log(`å½å页: ${val}`); |
| | | this.page = val; |
| | | this.getData(); |
| | | }, |
| | | // éç½®æé® |
| | | resetData() { |
| | | this.input = undefined; |
| | | this.page = 1; |
| | | this.pageSize = 10; |
| | | this.getData(); |
| | | }, |
| | | // æ¥è¯¢å表 |
| | | async getData() { |
| | | const params = { |
| | | page: this.page, |
| | | pageSize: this.pageSize, |
| | | planTime: this.input ? this.input : undefined, |
| | | }; |
| | | const { data } = await selectAllList(params); |
| | | this.auditTable = data.row; |
| | | this.total = data.total; |
| | | }, |
| | | async deleteOneData(planId) { |
| | | await deleteCnasAnnualPlan({ planId: planId }); |
| | | this.getData(); |
| | | console.log(planId); |
| | | }, |
| | | |
| | | deleteClick(planId) { |
| | | this.$confirm("确认å é¤?", "æç¤º", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | }).then(() => { |
| | | this.deleteOneData(planId); |
| | | }); |
| | | }, |
| | | //é置表å |
| | | resetForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .top-bar { |
| | | margin: -25px -15px; |
| | | background: #fff; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 5px 24px 0px 24px; |
| | | .input-form { |
| | | width: 400px; |
| | | } |
| | | .uploading-form { |
| | | // margin-bottom: 20px; |
| | | width: 400px; |
| | | } |
| | | .newly-form { |
| | | // margin-bottom: 20px; |
| | | width: 400px; |
| | | } |
| | | .newly-margin-bottom { |
| | | margin-bottom: 23px; |
| | | } |
| | | } |
| | | |
| | | .library-table { |
| | | background-color: #fff; |
| | | flex: 1; |
| | | margin: 0px -15px; |
| | | margin-top: 40px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .table-box { |
| | | padding: 0px 20px; |
| | | margin-top: 20px; |
| | | flex: 1; |
| | | background: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | > div:nth-child(2) { |
| | | display: flex; |
| | | justify-content: end; |
| | | margin: 10px 0; |
| | | } |
| | | .tag-item { |
| | | width: 80px; |
| | | } |
| | | } |
| | | } |
| | | .rightBtn { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | .createBtn { |
| | | margin-left: 10px; |
| | | } |
| | | </style> |
| | |
| | | <!-- <el-input v-model="input" class="input-form" placeholder="è¯·ç´æ¥è¾å
¥æ ·å¼ç¼å·/æ ·ååç§°/åå·è§æ ¼/è¿è¡æç´¢æä¸æéæ©è¿è¡ç»åæ¥è¯¢" |
| | | @keyup.enter.native="getData" /> --> |
| | | <el-form-item style="width: 800px;"> |
| | | <el-col style="display: flex; justify-content: space-around;" :span="8"> |
| | | <el-col style="display: flex; justify-content: space-around;" :span="12"> |
| | | <el-row>è°æ¥æ¥æ:</el-row> |
| | | <el-row><el-input type="date" style="width: 130px;" v-model="materialCode" placeholder="è¯·éæ©è°æ¥æ¥æ"></el-input></el-row> |
| | | <el-row style="width: 300px;"> |
| | | <el-date-picker style="width: 270px;" class="newly-form" v-model="surveyDate" type="date" |
| | | placeholder="è¯·éæ©è°æ¥æ¥æ" autocomplete="off"> |
| | | </el-date-picker> |
| | | </el-row> |
| | | </el-col> |
| | | <el-col style="display: flex; justify-content: space-around;" :span="8"> |
| | | <el-col style="display: flex; justify-content: space-around;" :span="12"> |
| | | <el-row>å½å
¥æ¥æ:</el-row> |
| | | <el-row><el-input style="width: 130px;" v-model="materialName" placeholder="è¯·éæ©å½å
¥æ¥æ"></el-input></el-row> |
| | | <el-row style="width: 300px;"> |
| | | <el-date-picker style="width: 270px;" class="newly-form" v-model="entryDate" type="date" |
| | | placeholder="è¯·éæ©å½å
¥æ¥æ" autocomplete="off"> |
| | | </el-date-picker> |
| | | </el-row> |
| | | </el-col> |
| | | </el-form-item> |
| | | <el-form-item> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form> |
| | | <el-button size="40" icon="el-icon-document-add" type="primary">æ°å¢è®°å½</el-button> |
| | | <el-button size="40" @click="getFillName()" icon="el-icon-document-add" type="primary">æ°å¢è®°å½</el-button> |
| | | </el-form> |
| | | </div> |
| | | <div class="library-table"> |
| | |
| | | <el-table ref="tableData" :max-height="800" :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" |
| | | :data="tableData" style="width: 100%"> |
| | | <el-table-column type="selection" label="" min-width="5%" /> |
| | | <el-table-column label="æ ·åç¼å·" min-width="10%"> |
| | | <el-table-column prop="id" type="index" label="åºå·" min-width="20%"/> |
| | | <el-table-column prop="surveyDate" label="è°æ¥æ¥æ" min-width="10%" /> |
| | | <el-table-column prop="userUnit" label="客æ·åä½åç§°" min-width="10%" /> |
| | | <el-table-column prop="projectName" label="项ç®åç§°" min-width="10%" /> |
| | | <el-table-column prop="fillName" label="填表人å§å" min-width="10%" /> |
| | | <el-table-column prop="post" label="èä½" min-width="10%" /> |
| | | <el-table-column prop="telephone" label="èç³»çµè¯" min-width="10%" /> |
| | | <el-table-column prop="userName" label="å½å
¥äºº" min-width="10%" /> |
| | | <el-table-column label="éä»¶" min-width="10%"> |
| | | <template slot-scope="scope"> |
| | | <a style="color: #3894d1;">{{ scope.row.materialCode }}</a> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="materialName" label="æ ·ååç§°" min-width="10%" /> |
| | | <el-table-column label="ç³è¯·åå·" min-width="10%" > |
| | | <template slot-scope="scope"> |
| | | <a style="color: #3894d1;">{{ scope.row.inspectionCode }}</a> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="ç»è®°æ¥æ" min-width="10%" /> |
| | | <el-table-column prop="testManager" label="æ£éªè´è´£äºº" min-width="10%" /> |
| | | <el-table-column prop="specifications" label="è§æ ¼åå·" min-width="10%" /> |
| | | <el-table-column prop="inspectionStatus" label="ç»è®º" min-width="10%"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="danger">ä¸åæ ¼</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" min-width="8%"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small">æä½</el-button> |
| | | <el-button type="text" size="small">ä½åº</el-button> |
| | | <a style="color: #3894d1;" @click="look(scope.row.id)">æ¥çéä»¶</a> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog title="满æåº¦è°æ¥" :visible.sync="dialogVisible" width="50%"> |
| | | <table class="table" style="width: 100%;"> |
| | | <tr> |
| | | <td> </td> |
| | | <td>满æ</td> |
| | | <td>ä¸è¬</td> |
| | | <td>䏿»¡æ</td> |
| | | <td>建议</td> |
| | | </tr> |
| | | <tr> |
| | | <td>æå¡æåº¦</td> |
| | | <td><el-radio v-model="serviceAttitude" label="0"><span hidden>满æ</span></el-radio></td> |
| | | <td><el-radio v-model="serviceAttitude" label="1"><span hidden>ä¸è¬</span> </el-radio></td> |
| | | <td><el-radio v-model="serviceAttitude" label="2"><span hidden>䏿»¡æ</span></el-radio></td> |
| | | <td><el-input v-model="serviceAttitudeInput" placeholder="请è¾å
¥å
容"></el-input></td> |
| | | </tr> |
| | | <tr> |
| | | <td>ææ¯è½å</td> |
| | | <td><el-radio v-model="technicalPower" label="0"><span hidden>满æ</span></el-radio></td> |
| | | <td><el-radio v-model="technicalPower" label="1"><span hidden>ä¸è¬</span> </el-radio></td> |
| | | <td><el-radio v-model="technicalPower" label="2"><span hidden>䏿»¡æ</span></el-radio></td> |
| | | <td><el-input v-model="technicalPowerInput" placeholder="请è¾å
¥å
容"></el-input></td> |
| | | </tr> |
| | | <tr> |
| | | <td>æ£æµå·¥ä½</td> |
| | | <td><el-radio v-model="testJob" label="0"><span hidden>满æ</span></el-radio></td> |
| | | <td><el-radio v-model="testJob" label="1"><span hidden>ä¸è¬</span> </el-radio></td> |
| | | <td><el-radio v-model="testJob" label="2"><span hidden>䏿»¡æ</span></el-radio></td> |
| | | <td><el-input v-model="testJobInput" placeholder="请è¾å
¥å
容"></el-input></td> |
| | | </tr> |
| | | <tr> |
| | | <td>æ¶è´¹åçæ§</td> |
| | | <td><el-radio v-model="reasonableCharge" label="0"><span hidden>满æ</span></el-radio></td> |
| | | <td><el-radio v-model="reasonableCharge" label="1"><span hidden>ä¸è¬</span> </el-radio></td> |
| | | <td><el-radio v-model="reasonableCharge" label="2"><span hidden>䏿»¡æ</span></el-radio></td> |
| | | <td><el-input v-model="reasonableChargeInput" placeholder="请è¾å
¥å
容"></el-input></td> |
| | | </tr> |
| | | <tr> |
| | | <td>æ¹è¿è¦æ±</td> |
| | | <td colspan="4"> |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="请è¾å
¥å
容" |
| | | v-model="improvementRequirements"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td>å
¶ä»è¡¥å
</td> |
| | | <td colspan="4"> |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" placeholder="请è¾å
¥å
容" |
| | | v-model="otherSupplements"> |
| | | </el-input> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <!-- <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="dialogVisible = false">ç¡® å®</el-button> |
| | | </span> --> |
| | | </el-dialog> |
| | | <el-dialog title="æ°å¢æ»¡æåº¦è°æ¥è®°å½" :visible.sync="dialogVisible2" width="50%"> |
| | | <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è°æ¥æ¥æï¼" prop="surveyDate"> |
| | | <el-date-picker style="width: 200px;" class="newly-form" v-model="ruleForm.surveyDate" type="date" |
| | | placeholder="è¯·éæ©è°æ¥æ¥æ" autocomplete="off"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客æ·åä½ï¼" prop="userUnit"> |
| | | <el-input style="width: 200px;" type="text" placeholder="请è¾å
¥å®¢æ·åä½åç§°" v-model="ruleForm.userUnit"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="项ç®åç§°ï¼" prop="projectName"> |
| | | <el-input style="width: 200px;" type="text" placeholder="请è¾å
¥é¡¹ç®åç§°" v-model="ruleForm.projectName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="èç³»çµè¯ï¼" prop="telephone"> |
| | | <el-input style="width: 200px;" type="text" placeholder="请è¾å
¥èç³»çµè¯" v-model="ruleForm.telephone"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 填表人å§å --> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="填表人å§åï¼" prop="fillName"> |
| | | <el-input style="width: 200px;" type="text" placeholder="请è¾å
¥å¡«è¡¨äººå§å" v-model="ruleForm.fillName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="èä½ï¼" prop="post"> |
| | | <el-input style="width: 200px;" type="text" placeholder="请è¾å
¥èä½" v-model="ruleForm.post"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- èç³»çµè¯/å½å
¥æ¥æ --> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å½å
¥äººï¼" prop="userName"> |
| | | <el-input style="width: 200px;" type="text" placeholder="请è¾å
¥å½å
¥äººå§å" v-model="ruleForm.userName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å½å
¥æ¥æï¼" prop="entryDate"> |
| | | <el-date-picker style="width: 200px;" class="newly-form" v-model="ruleForm.entryDate" type="date" |
| | | placeholder="è¯·éæ©å½å
¥æ¥æ" autocomplete="off"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="éä»¶ä¸ä¼ ï¼"> |
| | | <el-upload class="upload-demo" :action="path" :on-preview="handlePreview" :on-remove="handleRemove" multiple |
| | | :limit="1" :on-exceed="handleExceed" :file-list="fileList" :on-success="handleSuccess" |
| | | :before-upload="beforeAvatarUpload"> |
| | | <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- æäº¤ --> |
| | | <el-row> |
| | | <el-col :span="24" style="display: flex;justify-content: center;"> |
| | | <el-form-item> |
| | | <el-button @click="resetForm('ruleForm')">åæ¶</el-button> |
| | | <el-button type="primary" @click="submitForm('ruleForm')">ä¿å</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { get, post } from '@/api/util/requestUtil'; |
| | | import urlInfo from '../../../api/urlEnum/nonConformanceReview.js' |
| | | import urlInfo from '../../../api/urlEnum/satisfactionSurveys.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | page: 1, |
| | | total: 0, |
| | | pageSize: 10, |
| | | materialCode: null, |
| | | materialName: null, |
| | | inspectionCode: null |
| | | entryDate: null, |
| | | surveyDate: null, |
| | | id: 0, |
| | | dialogVisible: false, |
| | | serviceAttitude: 3, |
| | | serviceAttitudeInput: "æ ", |
| | | technicalPower: 3, |
| | | technicalPowerInput: "æ ", |
| | | testJob: 3, |
| | | testJobInput: "æ ", |
| | | reasonableCharge: 3, |
| | | reasonableChargeInput: "æ ", |
| | | otherSupplements: "æ ", |
| | | improvementRequirements: "æ ", |
| | | dialogVisible2: false, |
| | | path: 'http://192.168.110.254:1234/cnasSatisfactionSurvey/uploadFile', |
| | | ruleForm: { |
| | | surveyDate: '', |
| | | userUnit: '', |
| | | projectName: '', |
| | | fillName: '', |
| | | post: '', |
| | | userId: '', |
| | | telephone: '', |
| | | entryDate: '', |
| | | userName: '', |
| | | serviceAttitude: '', |
| | | technicalPower: '', |
| | | testJob: '', |
| | | reasonableCharge: '', |
| | | improvementRequirements: '', |
| | | otherSupplements: '' |
| | | }, |
| | | rules: { |
| | | surveyDate: [ |
| | | { type: 'date', required: true, message: 'è¯·éæ©è°æ¥æ¥æ', trigger: 'change' } |
| | | ], |
| | | userUnit: [ |
| | | { required: true, message: '请è¾å
¥å®¢æ·åä½åç§°', trigger: 'blur' }, |
| | | ], |
| | | projectName: [ |
| | | { required: true, message: '请è¾å
¥é¡¹ç®åç§°', trigger: 'blur' } |
| | | ], |
| | | entryDate: [ |
| | | { type: 'date', required: true, message: 'è¯·éæ©å½å
¥æ¥æ', trigger: 'change' } |
| | | ], |
| | | telephone: [ |
| | | { required: true, message: '请è¾å
¥èç³»çµè¯', trigger: 'blur' } |
| | | ] |
| | | }, |
| | | fileList: [], |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | handleCurrentChange() { |
| | | this.getData(); |
| | | }, |
| | | look(id) { |
| | | console.log(id); |
| | | let str = "/$"; |
| | | this.dialogVisible = true |
| | | let data = this.tableData.filter(res => { |
| | | return res.id == id |
| | | })[0] |
| | | let serviceAttitudeInfo = data.serviceAttitude.split(str); |
| | | this.serviceAttitude = serviceAttitudeInfo[0] |
| | | this.serviceAttitudeInput = serviceAttitudeInfo[1] |
| | | let technicalPowerInfo = data.technicalPower.split(str) |
| | | this.technicalPower = technicalPowerInfo[0] |
| | | this.technicalPowerInput = technicalPowerInfo[1] |
| | | let testJobInfo = data.testJob.split(str) |
| | | this.testJob = testJobInfo[0] |
| | | this.testJobInput = testJobInfo[1] |
| | | let reasonableChargeInfo = data.reasonableCharge.split(str) |
| | | this.reasonableCharge = reasonableChargeInfo[0] |
| | | this.reasonableChargeInput = reasonableChargeInfo[1] |
| | | this.otherSupplements = data.otherSupplements |
| | | this.improvementRequirements = data.improvementRequirements |
| | | }, |
| | | handleSizeChange() { |
| | | |
| | | }, |
| | |
| | | resetData() { |
| | | this.page = 1 |
| | | this.pageSize = 10 |
| | | this.materialCode=null |
| | | this.materialName=null |
| | | this.inspectionCode=null |
| | | this.surveyDate = null |
| | | this.entryDate = null |
| | | this.getData() |
| | | }, |
| | | async getData() { |
| | | let param = { |
| | | "currentPage": this.page, |
| | | 'pageNum': this.pageSize, |
| | | "inspectionCode": this.inspectionCode, |
| | | "materialCode": this.materialCode, |
| | | "materialName": this.materialName |
| | | "surveyDate": this.surveyDate, |
| | | "entryDate": this.entryDate |
| | | } |
| | | let res = await get(urlInfo.url.getNonConformanceReview, param) |
| | | this.tableData = res.data.nonConformanceReviewList |
| | | if (this.surveyDate != null) { |
| | | param.surveyDate = this.dateFormat(this.surveyDate); |
| | | } |
| | | if (this.entryDate !== null) { |
| | | param.entryDate = this.dateFormat(this.entryDate); |
| | | } |
| | | let res = await get(urlInfo.url.getCnasSatisfactionSurvey, param) |
| | | this.tableData = res.data.cnasSatisfactionSurveyList |
| | | this.total = res.data.total |
| | | }, |
| | | async getFillName() { |
| | | this.dialogVisible2 = true |
| | | let res = await get(urlInfo.url.getFillNameAndId) |
| | | this.ruleForm.userName = res.data.name |
| | | this.ruleForm.userId = res.data.id |
| | | var now = new Date(); |
| | | this.ruleForm.entryDate = now |
| | | }, |
| | | async submitForm(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | this.add(); |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | async add() { |
| | | let data = JSON.parse(JSON.stringify(this.ruleForm)) |
| | | let entryDate = this.format(this.ruleForm.entryDate); |
| | | let surveyDate = this.format(this.ruleForm.surveyDate); |
| | | data.entryDate = entryDate |
| | | data.surveyDate = surveyDate |
| | | // data.dateInfo = dateInfo |
| | | let add = await post(urlInfo.url.addSurvey, data); |
| | | if (add) { |
| | | this.$message({ |
| | | message: 'æ·»å æå', |
| | | type: 'success' |
| | | }); |
| | | this.fileList = [] |
| | | this.$refs["ruleForm"].resetFields(); |
| | | let res = await get(urlInfo.url.getFillNameAndId) |
| | | this.ruleForm.userName = res.data.name |
| | | this.ruleForm.id = res.data.id |
| | | var now = new Date(); |
| | | this.ruleForm.entryDate = now |
| | | this.getData() |
| | | } else { |
| | | this.$message.error('æ·»å 失败ï¼è¯·æ£æ¥å
容'); |
| | | } |
| | | }, |
| | | resetForm(formName) { |
| | | this.dialogVisible2 = false |
| | | this.fileList = [] |
| | | this.$refs[formName].resetFields(); |
| | | }, |
| | | handleRemove(file, fileList) { |
| | | console.log(file, fileList); |
| | | }, |
| | | handlePreview(file) { |
| | | console.log(file); |
| | | }, |
| | | handleExceed(files, fileList) { |
| | | this.$message.warning(`å½åéå¶éæ© 1 个æä»¶ï¼æ¬æ¬¡éæ©äº ${files.length} 个æä»¶ï¼å
±éæ©äº ${files.length + fileList.length} 个æä»¶`); |
| | | }, |
| | | // beforeRemove(file, fileList) { |
| | | // return this.$confirm(`ç¡®å®ç§»é¤ ${file.name}ï¼`); |
| | | // }, |
| | | handleSuccess(response, file, fileList) { |
| | | let data = response.data; |
| | | if (this.ruleForm.userUnit == '') { |
| | | this.ruleForm.userUnit = data.unitName |
| | | } |
| | | if (this.ruleForm.projectName == '') { |
| | | this.ruleForm.projectName = data.projectName |
| | | } |
| | | if (this.ruleForm.post === '') { |
| | | this.ruleForm.post = data.post |
| | | } |
| | | if (this.ruleForm.fillName == '') { |
| | | this.ruleForm.fillName = data.fillName.split("/")[0] |
| | | } |
| | | if (this.ruleForm.telephone == '') { |
| | | this.ruleForm.telephone = data.telephone |
| | | } |
| | | if(this.ruleForm.surveyDate==null||this.ruleForm.surveyDate==''){ |
| | | let dates = new Date(data.fillName.split("/")[1]); |
| | | console.log(dates); |
| | | if(dates!=''&&dates!=''){ |
| | | this.ruleForm.surveyDate=dates |
| | | } |
| | | } |
| | | this.ruleForm.serviceAttitude = data.serviceAttitude |
| | | this.ruleForm.technicalPower = data.technicalPower |
| | | this.ruleForm.testJob = data.testJob |
| | | this.ruleForm.improvementRequirements = data.improvementRequirements |
| | | this.ruleForm.otherSupplements = data.otherSupplements |
| | | this.ruleForm.reasonableCharge=data.reasonableCharge |
| | | }, |
| | | beforeAvatarUpload(file) { |
| | | let split = file.name.split("."); |
| | | let fileName = split[split.length - 1]; |
| | | const isWord = fileName == 'doc' || fileName == 'docx'; |
| | | const isLt2M = file.size / 1024 / 1024 < 2; |
| | | if (!isWord) { |
| | | this.$message.error('ä¸ä¼ wordæä»¶åªè½æ¯ doc/docx æ ¼å¼!'); |
| | | } |
| | | if (!isLt2M) { |
| | | this.$message.error('ä¸ä¼ wordæä»¶å¤§å°ä¸è½è¶
è¿ 2MB!'); |
| | | } |
| | | return isWord && isLt2M; |
| | | }, |
| | | dateFormat(longTypeDate) { |
| | | var dateTypeDate = ""; |
| | | var date = new Date(); |
| | | date.setTime(longTypeDate); |
| | | dateTypeDate += date.getFullYear(); //å¹´ |
| | | dateTypeDate += "-" + this.getMonth(date); //æ |
| | | dateTypeDate += "-" + this.getDay(date); //æ¥ |
| | | return dateTypeDate; |
| | | }, |
| | | //è¿å 01-12 çæä»½å¼ |
| | | getMonth(date) { |
| | | var month = ""; |
| | | month = date.getMonth() + 1; //getMonth()å¾å°çæä»½æ¯0-11 |
| | | if (month < 10) { |
| | | month = "0" + month; |
| | | } |
| | | return month; |
| | | }, |
| | | //è¿å01-30çæ¥æ |
| | | getDay(date) { |
| | | var day = ""; |
| | | day = date.getDate(); |
| | | if (day < 10) { |
| | | day = "0" + day; |
| | | } |
| | | return day; |
| | | }, |
| | | datetimeFormat(longTypeDate) { |
| | | var dateTypeDate = ""; |
| | | var date = new Date(); |
| | | date.setTime(longTypeDate); |
| | | dateTypeDate += date.getFullYear(); //å¹´ |
| | | dateTypeDate += "-" + this.getMonth(date); //æ |
| | | dateTypeDate += "-" + this.getDay(date); //æ¥ |
| | | return dateTypeDate; |
| | | }, |
| | | format(d) { |
| | | var y = d.getFullYear(); |
| | | var m = d.getMonth() + 1; |
| | | if (m < 10) { |
| | | m = "0" + m; |
| | | } |
| | | var day = d.getDate(); |
| | | if (day < 10) { |
| | | day = "0" + day; |
| | | } |
| | | return y + "-" + m + "-" + day; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | .table, |
| | | tr, |
| | | td { |
| | | padding: 10px; |
| | | } |
| | | </style> |
| | | <style > |
| | | .content-main { |
| | |
| | | </el-dropdown> |
| | | </el-form> |
| | | <el-form> |
| | | <el-button |
| | | class="rightBtn" |
| | | type="primary" |
| | | icon="el-icon-document" |
| | | @click="exportData" |
| | | <el-button class="rightBtn" type="primary" icon="el-icon-document" |
| | | >å¯¼åºæ¥å</el-button |
| | | > |
| | | </el-form> |
| | |
| | | label="æ ·åç¼å·" |
| | | sortable |
| | | min-width="10%" |
| | | /> |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span style="color: #409eff;"> |
| | | {{ scope.row.materialCode }} |
| | | </span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | prop="reportCode" |
| | | prop="materialCode" |
| | | label="æ¥ååå·" |
| | | sortable |
| | | min-width="10%" |
| | | /> |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span style="color: #409eff;"> |
| | | {{ scope.row.materialCode }} |
| | | </span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | prop="inspectionCode" |
| | | label="ç³è¯·åå·" |
| | | sortable |
| | | min-width="10%" |
| | | /> |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span style="color: #409eff;"> |
| | | {{ scope.row.inspectionCode }} |
| | | </span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column prop="approver" label="审æ¹äºº" min-width="8%"> |
| | | <template slot-scope="scope"> |
| | | <span> |
| | |
| | | } |
| | | .el-dropdown-link { |
| | | cursor: pointer; |
| | | color: #409EFF; |
| | | color: #409eff; |
| | | } |
| | | .el-icon-arrow-down { |
| | | font-size: 12px; |
| | |
| | | margin: 10px 0; |
| | | } |
| | | } |
| | | |
| | | } |
| | | </style> |
| | |
| | | <el-select |
| | | v-model="searchData.devicename" |
| | | placeholder="å
¨é¨" |
| | | style="width: 100px" |
| | | style="width: 120px" |
| | | > |
| | | <el-option |
| | | v-for="item in options1" |
| | |
| | | <el-date-picker |
| | | v-model="searchData.time" |
| | | type="daterange" |
| | | value-format="yyyy-MM-dd" |
| | | range-separator="~" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | |
| | | <el-select |
| | | v-model="searchData.person" |
| | | placeholder="å
¨é¨" |
| | | style="width: 80px; margin-right: 100px" |
| | | style="width: 100px; margin-right: 100px" |
| | | > |
| | | <el-option |
| | | v-for="item in options2" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" plain style="margin-right: 10px" |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | style="margin-right: 10px" |
| | | @click="resetData()" |
| | | >éç½®</el-button |
| | | > |
| | | <el-button type="primary">æ¥è¯¢</el-button> |
| | | <el-button type="primary" @click="getData()">æ¥è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | return { |
| | | searchData: { |
| | | devicename: "", |
| | | time: "", |
| | | time: [], |
| | | person: "", |
| | | }, |
| | | options1: [], |
| | | options2: [], |
| | | planTable: [], |
| | | planTableView: [], |
| | | }; |
| | | }, |
| | | created() { |
| | | this.getData(); |
| | | }, |
| | | |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | async getData() { |
| | | const params = {}; |
| | | const params = { |
| | | device: this.searchData.devicename |
| | | ? this.searchData.devicename |
| | | : undefined, |
| | | user: this.searchData.person ? this.searchData.person : undefined, |
| | | beginTime: |
| | | this.searchData.time && this.searchData.time.length > 0 |
| | | ? this.searchData.time[0] |
| | | : undefined, |
| | | endTime: |
| | | this.searchData.time && this.searchData.time.length > 0 |
| | | ? this.searchData.time[1] |
| | | : undefined, |
| | | }; |
| | | const { data } = await selectAllPlan(params); |
| | | this.planTable = data; |
| | | if (this.options1.length === 0) { |
| | | //æ·»å 设å¤åç§° |
| | | const deviceData = []; |
| | | this.planTable.forEach((res) => { |
| | | let o1 = { |
| | | value: res.device, |
| | | label: res.device, |
| | | }; |
| | | this.options1.push(o1); |
| | | |
| | | if(res.userId == undefined) { |
| | | |
| | | if (!deviceData.includes(res.device)) { |
| | | deviceData.push(res.device); |
| | | } |
| | | }); |
| | | let d=this.options1.filter((val,index,self)=>{ |
| | | return self.indexOf(val)==index; |
| | | }) |
| | | console.log(d); |
| | | deviceData.forEach((item) => { |
| | | this.options1.push({ |
| | | value: item, |
| | | label: item, |
| | | }); |
| | | }); |
| | | //æ·»å ç¨æ· |
| | | const userData = []; |
| | | this.planTable.forEach((res) => { |
| | | if (res.checker != undefined && !userData.includes(res.checker)) { |
| | | userData.push(res.checker); |
| | | } |
| | | }); |
| | | userData.forEach((item) => { |
| | | this.options2.push({ |
| | | value: item, |
| | | label: item, |
| | | }); |
| | | }); |
| | | console.log(this.options2); |
| | | } |
| | | }, |
| | | // éç½®æé® |
| | | resetData() { |
| | | (this.searchData = { |
| | | devicename: "", |
| | | time: [], |
| | | person: "", |
| | | }), |
| | | this.getData(); |
| | | }, |
| | | }, |
| | | }; |
| | |
| | | height: 78vh; |
| | | .formwrapper { |
| | | padding: 0px 20px; |
| | | margin-top: 0px; |
| | | margin-top: 20px; |
| | | flex: 1; |
| | | background: #fff; |
| | | /* padding: 20px 20px 10px 20px; */ |
| | |
| | | <div class="content-main"> |
| | | <div class="top-bar"> |
| | | <el-form ref="form" :inline="true"> |
| | | <el-form-item class="sermargin"> |
| | | <el-form-item> |
| | | <el-input |
| | | v-model="input" |
| | | class="input-form" |
| | |
| | | </el-dropdown> |
| | | </el-form> |
| | | <el-form> |
| | | <el-button class="rightBtn" type="primary" @click="exportData" |
| | | >å®¡æ ¸</el-button |
| | | > |
| | | <el-button class="rightBtn" type="primary">å®¡æ ¸</el-button> |
| | | </el-form> |
| | | </div> |
| | | <div class="library-table"> |
| | |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column type="selection" label="" min-width="5%" /> |
| | | <el-table-column |
| | | prop="materialCode" |
| | | label="æ ·åç¼å·" |
| | | min-width="10%" |
| | | /> |
| | | <el-table-column prop="reportCode" label="æ¥ååå·" min-width="10%" /> |
| | | <el-table-column prop="materialCode" label="æ ·åç¼å·" min-width="10%"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #409eff"> |
| | | {{ scope.row.materialCode }} |
| | | </span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column prop="reportCode" label="æ¥ååå·" min-width="10%"> |
| | | <template slot-scope="scope"> |
| | | <span style="color: #409eff"> |
| | | {{ scope.row.reportCode }} |
| | | </span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | prop="materialName" |
| | | label="æ ·ååç§°" |
| | |
| | | <div class="search-bar"> |
| | | <el-form ref="form" :inline="true" :model="searchData"> |
| | | <el-form-item> |
| | | <el-input |
| | | v-model="searchData.keyword" |
| | | placeholder="请è¾å
¥ç¼å·/设å¤åç§°/åå·è§æ ¼" |
| | | > |
| | | <el-input v-model="searchData.keyword" placeholder="请è¾å
¥ç¼å·/设å¤åç§°/åå·è§æ ¼"> |
| | | <i slot="prefix" class="el-input__icon el-icon-search" /> |
| | | </el-input> |
| | | </el-form-item> |
| | |
| | | <div class="bom-item-search"> |
| | | <el-row> |
| | | <el-col :span="19"> |
| | | <el-input |
| | | v-model="filterText" |
| | | placeholder="è¾å
¥å
³é®åè¿è¡è¿æ»¤" |
| | | /> |
| | | <el-input v-model="filterText" placeholder="è¾å
¥å
³é®åè¿è¡è¿æ»¤" /> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-button type="primary" size="small" @click="addClassVisible = true"><i class="el-icon-plus" /></el-button> |
| | | <el-button type="primary" size="small" @click="addClassVisible = true"><i |
| | | class="el-icon-plus" /></el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-tree |
| | | ref="classTree" |
| | | :data="classTree" |
| | | :props="defaultProps" |
| | | :default-expand-all="true" |
| | | :filter-node-method="filterNode" |
| | | @node-click="nodeClickHandler" |
| | | /> |
| | | <el-tree ref="classTree" :data="classTree" :props="defaultProps" :default-expand-all="true" |
| | | :filter-node-method="filterNode" @node-click="nodeClickHandler" /> |
| | | </div> |
| | | <div class="library-table"> |
| | | <div class="table-header"> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table-box"> |
| | | <el-table |
| | | ref="equipmentTable" |
| | | node-key="father_name" |
| | | :cell-style="{textAlign: 'center'}" |
| | | <el-table ref="equipmentTable" node-key="father_name" :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" |
| | | :data="equipmentTable" |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | min-width="90" |
| | | /> |
| | | <el-table-column |
| | | prop="equipment_code" |
| | | label="仪å¨è®¾å¤ç¼å·" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="equipment_name" |
| | | label="仪å¨è®¾å¤åç§°" |
| | | min-width="150" |
| | | /> |
| | | <el-table-column |
| | | prop="specifications_models" |
| | | label="è§æ ¼åå·" |
| | | min-width="150" |
| | | /> |
| | | <el-table-column |
| | | prop="name" |
| | | label="ä¿ç®¡äºº" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="termValidity" |
| | | label="è®¡éæªæ¢æææ" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="conditions" |
| | | label="设å¤ç¶æ" |
| | | min-width="120" |
| | | > |
| | | :data="equipmentTable" style="width: 100%"> |
| | | <el-table-column type="index" label="åºå·" min-width="90" /> |
| | | <el-table-column prop="equipment_code" label="仪å¨è®¾å¤ç¼å·" min-width="200" /> |
| | | <el-table-column prop="equipment_name" label="仪å¨è®¾å¤åç§°" min-width="150" /> |
| | | <el-table-column prop="specifications_models" label="è§æ ¼åå·" min-width="150" /> |
| | | <el-table-column prop="name" label="ä¿ç®¡äºº" min-width="200" /> |
| | | <el-table-column prop="termValidity" label="è®¡éæªæ¢æææ" min-width="200" /> |
| | | <el-table-column prop="conditions" label="设å¤ç¶æ" min-width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-tag |
| | | :type="scope.row.conditions === 0 ? 'primary' : 'success'" |
| | | disable-transitions |
| | | >{{ scope.row.conditions | conditionsFilter }}</el-tag> |
| | | <el-tag :type="scope.row.conditions === 0 ? 'primary' : 'success'" disable-transitions>{{ |
| | | scope.row.conditions | conditionsFilter }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="storage_place" |
| | | label="åæ¾å°" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column prop="storage_place" label="åæ¾å°" min-width="200" /> |
| | | |
| | | <el-table-column |
| | | label="æä½" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <el-table-column label="æä½" min-width="120" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" @click="openDetail(scope.row)">ç¼è¾</el-button> |
| | | <el-button type="text" size="small" @click="clickDelete(scope.row)">å é¤</el-button> |
| | |
| | | <div> |
| | | <!-- æ·»å åç±» --> |
| | | <el-dialog title="æ·»å åç±»" :visible.sync="addClassVisible" width="33%"> |
| | | <el-form :model="addTreeForm"> |
| | | <el-form-item label="åç±»åç§°" label-width="100px"> |
| | | <el-input v-model="addTreeForm.name" autocomplete="off" /> |
| | | <el-form :model="addTreeForm" ref="addTreeForm"> |
| | | <el-form-item prop="name" label="åç±»åç§°" label-width="100px" :rules="[ |
| | | { required: true, message: 'åç±»åç§°ä¸è½ä¸ºç©º' } |
| | | ]"> |
| | | <el-input v-model="addTreeForm.name" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="ç¶çº§åç±»" label-width="100px"> |
| | | <el-select v-model="addTreeForm.type" placeholder="è¯·éæ©"> |
| | | <el-select style="width: 100%;" v-model="addTreeForm.type" placeholder="è¯·éæ©"> |
| | | <el-option label="åææ" value="0" /> |
| | | <el-option label="çµçº¿çµç¼" value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="addClassVisible = false">å æ¶</el-button> |
| | | <el-button type="primary">ç¡® å®</el-button> |
| | | <el-button @click="resetTreeForm('addTreeForm')">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitTreeForm('addTreeForm')">ç¡® å®</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | <div> |
| | | <el-pagination |
| | | :current-page="currentPage" |
| | | :page-sizes="[10, 15, 20, 25]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | <el-pagination :current-page="currentPage" :page-sizes="[10, 15, 20, 25]" :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 仪å¨è¯¦æ
--> |
| | | <el-drawer |
| | | title="仪å¨è®¾å¤è¯¦æ
" |
| | | :visible.sync="detailDrawer" |
| | | size="80%" |
| | | class="detailDrawer" |
| | | @close="closeDetailDrawer" |
| | | > |
| | | <el-drawer title="仪å¨è®¾å¤è¯¦æ
" :visible.sync="detailDrawer" size="80%" class="detailDrawer" @close="closeDetailDrawer"> |
| | | <div> |
| | | <div class="detail-info"> |
| | | <div class="tips-main"> |
| | |
| | | <span><i class="el-icon-edit" />ä¿ç®¡äººï¼{{ equipmentDetail.userId }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />æ¯å¦æ¯ææ°éï¼{{ equipmentDetail.whetherDataAcquisition==1 ? 'æ¯æ': '䏿¯æ' }}</span> |
| | | <span><i class="el-icon-edit" />æ¯å¦æ¯ææ°éï¼{{ equipmentDetail.whetherDataAcquisition == 1 ? 'æ¯æ' : '䏿¯æ' |
| | | }}</span> |
| | | </div> |
| | | <div class="message-item"> |
| | | <span><i class="el-icon-edit" />仪å¨è®¾å¤è®¡éï¼{{ equipmentDetail.equipmentMeasurement==1 ? 'éè¦': 'ä¸éè¦' }}</span> |
| | |
| | | </div> |
| | | <el-tabs v-model="activeTabsName"> |
| | | <el-tab-pane label="设å¤ç ç¹" name="codePoints"> |
| | | <el-button v-show="!codePointesTableStatus" :style="{marginBottom: '18px'}" @click="addCodePoints">æ°å¢è®¾å¤ç ç¹</el-button> |
| | | <el-button v-show="!codePointesTableStatus" :style="{ marginBottom: '18px' }" |
| | | @click="addCodePoints">æ°å¢è®¾å¤ç ç¹</el-button> |
| | | <div v-show="codePointesTableStatus" :style="{marginBottom: '18px'}" class="btns"> |
| | | <el-button @click="addNewCodePoints">æ·»å </el-button> |
| | | <el-button @click="saveCodePoins">ä¿å</el-button> |
| | | <el-button @click="closeCodePoins">åæ¶</el-button> |
| | | </div> |
| | | |
| | | <el-table |
| | | ref="codePointsTable" |
| | | :cell-style="{textAlign: 'center'}" |
| | | <el-table ref="codePointsTable" :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" |
| | | :data="codePointsTable" |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | min-width="90" |
| | | /> |
| | | <el-table-column |
| | | prop="equipmentPoint" |
| | | label="ç ç¹ç¼ç " |
| | | min-width="150" |
| | | > |
| | | :data="codePointsTable" style="width: 100%"> |
| | | <el-table-column type="index" label="åºå·" min-width="90" /> |
| | | <el-table-column prop="equipmentPoint" label="ç ç¹ç¼ç " min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPoint }}</span> |
| | | <el-input v-show="codePointesTableStatus" v-model="scope.row.equipmentPoint" /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="equipmentPointName" |
| | | label="ç ç¹åç§°" |
| | | min-width="150" |
| | | > |
| | | <el-table-column prop="equipmentPointName" label="ç ç¹åç§°" min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPointName }}</span> |
| | | <el-input v-show="codePointesTableStatus" v-model="scope.row.equipmentPointName" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="unit" |
| | | label="åä½" |
| | | min-width="150" |
| | | > |
| | | <el-table-column prop="unit" label="åä½" min-width="150"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="!codePointesTableStatus">{{ scope.row.unit }}</span> |
| | | <el-input v-show="codePointesTableStatus" v-model="scope.row.unit" /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="name" |
| | | label="æ´æ°äºº" |
| | | min-width="100" |
| | | /> |
| | | <el-table-column |
| | | prop="updateTime" |
| | | label="æ´æ°æ¥æ" |
| | | min-width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="descriptiveness" |
| | | label="æè¿°" |
| | | min-width="200" |
| | | > |
| | | <el-table-column prop="name" label="æ´æ°äºº" min-width="100" /> |
| | | <el-table-column prop="updateTime" label="æ´æ°æ¥æ" min-width="120" /> |
| | | <el-table-column prop="descriptiveness" label="æè¿°" min-width="200"> |
| | | <template slot-scope="scope"> |
| | | <span v-show="!codePointesTableStatus">{{ scope.row.descriptiveness }}</span> |
| | | <el-input v-show="codePointesTableStatus" v-model="scope.row.descriptiveness" /> |
| | |
| | | </el-tab-pane> |
| | | <el-tab-pane label="计éä¿¡æ¯" name="measure"> |
| | | <el-button :style="{marginBottom: '18px'}" @click="measureFormVisible = true">æ°å¢è®¡éä¿¡æ¯</el-button> |
| | | <el-table |
| | | ref="measureTable" |
| | | :cell-style="{textAlign: 'center'}" |
| | | <el-table ref="measureTable" :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" |
| | | :data="measureTable" |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | min-width="90" |
| | | /> |
| | | <el-table-column |
| | | prop="name" |
| | | label="è´è´£äºº" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="measurement_unit" |
| | | label="计éåä½" |
| | | min-width="150" |
| | | /> |
| | | <el-table-column |
| | | prop="beginDate" |
| | | label="å¼å§æ¥æ" |
| | | min-width="150" |
| | | /> |
| | | <el-table-column |
| | | prop="endDate" |
| | | label="ç»ææ¥æ" |
| | | min-width="150" |
| | | /> |
| | | <el-table-column |
| | | prop="performance_index" |
| | | label="æ§è½ææ " |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="uncertainty" |
| | | label="ä¸ç¡®å®åº¦" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="conditions" |
| | | label="ç»æ" |
| | | min-width="120" |
| | | > |
| | | :data="measureTable" style="width: 100%"> |
| | | <el-table-column type="index" label="åºå·" min-width="90" /> |
| | | <el-table-column prop="name" label="è´è´£äºº" min-width="200" /> |
| | | <el-table-column prop="measurement_unit" label="计éåä½" min-width="150" /> |
| | | <el-table-column prop="beginDate" label="å¼å§æ¥æ" min-width="150" /> |
| | | <el-table-column prop="endDate" label="ç»ææ¥æ" min-width="150" /> |
| | | <el-table-column prop="performance_index" label="æ§è½ææ " min-width="200" /> |
| | | <el-table-column prop="uncertainty" label="ä¸ç¡®å®åº¦" min-width="200" /> |
| | | <el-table-column prop="conditions" label="ç»æ" min-width="120"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.result }} |
| | | <!-- <el-tag |
| | |
| | | >{{ scope.row.result === 0 ? 'æªåæ' : 'å·²åæ' }}</el-tag> --> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remarks" |
| | | label="夿³¨" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column prop="remarks" label="夿³¨" min-width="200" /> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </el-drawer> |
| | | <!-- æ·»å 仪å¨/ä¿®æ¹ä»ªå¨ä¿¡æ¯ --> |
| | | <el-drawer |
| | | ref="addDrawer" |
| | | :title="equipmentDetail.id?'ä¿®æ¹ä»ªå¨è®¾å¤ä¿¡æ¯':'æ°å¢ä»ªå¨è®¾å¤'" |
| | | :append-to-body="true" |
| | | :visible.sync="addDrawerVisible" |
| | | class="addDrawer" |
| | | size="40%" |
| | | @close="closeAddOrChangeDrawer" |
| | | > |
| | | <el-drawer ref="addDrawer" :title="equipmentDetail.id ? 'ä¿®æ¹ä»ªå¨è®¾å¤ä¿¡æ¯' : 'æ°å¢ä»ªå¨è®¾å¤'" :append-to-body="true" |
| | | :visible.sync="addDrawerVisible" class="addDrawer" size="40%" @close="closeAddOrChangeDrawer"> |
| | | <div class="demo-drawer__content"> |
| | | <el-form label-position="top" :model="equipmentform"> |
| | | <el-row :gutter="50"> |
| | |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="ç¶æï¼" label-width="80"> |
| | | <el-select |
| | | v-model="equipmentform.conditions" |
| | | clearable |
| | | filterable |
| | | :allow-create="true" |
| | | placeholder="è¯·éæ©ä»ªå¨è®¾å¤ç¶æ" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in conditionsOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | <el-select v-model="equipmentform.conditions" clearable filterable :allow-create="true" |
| | | placeholder="è¯·éæ©ä»ªå¨è®¾å¤ç¶æ" style="width:100%"> |
| | | <el-option v-for="item in conditionsOptions" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="å°è´§æ¥æï¼" label-width="80"> |
| | | <el-date-picker |
| | | v-model="equipmentform.arrivalDate" |
| | | type="date" |
| | | placeholder="è¯·éæ©å°è´§æ¥æ" |
| | | style="width:100%" |
| | | /> |
| | | <el-date-picker v-model="equipmentform.arrivalDate" type="date" placeholder="è¯·éæ©å°è´§æ¥æ" |
| | | style="width:100%" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="50"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="éªæ¶æ¥æï¼" label-width="80"> |
| | | <el-date-picker |
| | | v-model="equipmentform.acceptanceDate" |
| | | type="date" |
| | | placeholder="è¯·éæ©éªæ¶æ¥æ" |
| | | style="width:100%" |
| | | /> |
| | | <el-date-picker v-model="equipmentform.acceptanceDate" type="date" placeholder="è¯·éæ©éªæ¶æ¥æ" |
| | | style="width:100%" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item label="ä¿ç®¡äººï¼" label-width="80"> |
| | | <el-select |
| | | v-model="equipmentform.userId" |
| | | clearable |
| | | filterable |
| | | :allow-create="true" |
| | | placeholder="è¯·éæ©ä¿ç®¡äºº" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in userOpetions" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | <el-select v-model="equipmentform.userId" clearable filterable :allow-create="true" placeholder="è¯·éæ©ä¿ç®¡äºº" |
| | | style="width:100%"> |
| | | <el-option v-for="item in userOpetions" :key="item.id" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row :gutter="50"> |
| | | <el-col :span="11"> |
| | | <el-form-item label="æè¿°ï¼" label-width="80"> |
| | | <el-input |
| | | v-model="equipmentform.descriptiveness" |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | style="width:217%" |
| | | /> |
| | | <el-input v-model="equipmentform.descriptiveness" type="textarea" :rows="2" placeholder="请è¾å
¥å
容" |
| | | style="width:217%" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è´è´£äºº"> |
| | | <el-select |
| | | v-model="measureForm.userId" |
| | | clearable |
| | | filterable |
| | | :allow-create="true" |
| | | placeholder="è´è´£äºº" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in userOpetions" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | <el-select v-model="measureForm.userId" clearable filterable :allow-create="true" placeholder="è´è´£äºº" |
| | | style="width:100%"> |
| | | <el-option v-for="item in userOpetions" :key="item.id" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ£å®æææ"> |
| | | <el-date-picker |
| | | v-model="measureForm.date" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | /> |
| | | <el-date-picker v-model="measureForm.date" type="daterange" range-separator="è³" start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç»æ"> |
| | | <el-select |
| | | v-model="measureForm.result" |
| | | clearable |
| | | filterable |
| | | :allow-create="true" |
| | | placeholder="è´è´£äºº" |
| | | style="width:100%" |
| | | > |
| | | <el-option |
| | | v-for="item in resultOptions" |
| | | :key="item.id" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | <el-select v-model="measureForm.result" clearable filterable :allow-create="true" placeholder="è´è´£äºº" |
| | | style="width:100%"> |
| | | <el-option v-for="item in resultOptions" :key="item.id" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ§è½ææ "> |
| | | <el-input |
| | | v-model="measureForm.performanceIndex" |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | /> |
| | | <el-input v-model="measureForm.performanceIndex" type="textarea" :rows="2" placeholder="请è¾å
¥å
容" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="夿³¨"> |
| | | <el-input |
| | | v-model="measureForm.remarks" |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | /> |
| | | <el-input v-model="measureForm.remarks" type="textarea" :rows="2" placeholder="请è¾å
¥å
容" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="24"> |
| | | <el-form-item label=""> |
| | | <el-upload |
| | | class="upload-demo" |
| | | action="#" |
| | | :on-change="handleUpload" |
| | | :auto-upload="false" |
| | | > |
| | | <el-upload class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false"> |
| | | <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> |
| | | </el-upload> |
| | | </el-form-item> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <!-- å é¤ä»ªå¨å¼¹åºæ¡ --> |
| | | <el-dialog |
| | | title="æç¤º" |
| | | :visible.sync="deletedialogVisible" |
| | | width="30%" |
| | | :before-close="handleClose"> |
| | | <el-dialog title="æç¤º" :visible.sync="deletedialogVisible" width="30%"> |
| | | <span>ç¡®å®å é¤è¯¥ä»ªå¨åï¼</span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="deletedialogVisible = false">å æ¶</el-button> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getClassifyList, getInstrumentList, |
| | | import { |
| | | getClassifyList, getInstrumentList, |
| | | addInstrumentUser, addInstrument, getInstrumentDetail, |
| | | getEquipmentPointList, addEquipmentPoint, |
| | | getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument } from '@/api/laboratory/ledger' |
| | | getMetricalInformationList, changeInstrument, addMetricalInformation, deleteInstrument |
| | | } from '@/api/laboratory/ledger' |
| | | import { parseTime } from '@/utils/index' |
| | | export default { |
| | | filters: { |
| | |
| | | // console.log(row.id) |
| | | await deleteInstrument({ instrumentId: this.instrumentId }) |
| | | this.deletedialogVisible = false |
| | | }, |
| | | submitTreeForm(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | alert('submit!'); |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | resetTreeForm(formName) { |
| | | this.$refs[formName].resetFields(); |
| | | this.addClassVisible=false |
| | | } |
| | | } |
| | | } |
| | |
| | | .demo-drawer__content{ |
| | | margin-left: 50px; |
| | | } |
| | | |
| | | .demo-drawer__footer { |
| | | display: flex; |
| | | justify-content: space-between; |
| | |
| | | margin-right: 60px; |
| | | margin-bottom: 24px; |
| | | } |
| | | |
| | | .ledger-main{ |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | // 页é¢å¤´é¨æ¡ä»¶æç´¢ |
| | | .page-header-search{ |
| | | background: #fff; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 0 24px 12px 24px; |
| | | |
| | | .search-bar{ |
| | | .el-radio-button.is-active{ |
| | | color: #409EFF !important; |
| | | background: #ecf5ff !important; |
| | | border-color: #b3d8ff !important; |
| | | } |
| | | |
| | | .el-form{ |
| | | .el-form-item{ |
| | | margin-bottom: 0px !important; |
| | | |
| | | .el-input{ |
| | | width: 360px; |
| | | } |
| | |
| | | height: 100%; |
| | | min-height: calc(100vh - 88px); |
| | | padding: 15px; |
| | | |
| | | >div{ |
| | | padding: 20px; |
| | | background: #fff; |
| | | } |
| | | |
| | | .library-bom{ |
| | | flex: 2; |
| | | margin-right: 12px; |
| | | |
| | | .bom-item-search{ |
| | | margin-bottom: 12px; |
| | | |
| | | ::v-deep .el-input{ |
| | | input{ |
| | | height: 33px; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .bom-item-search .el-row{ |
| | | |
| | | // display: flex; |
| | | .el-col{ |
| | | text-align: right; |
| | | } |
| | | } |
| | | |
| | | .el-tree { |
| | | margin-top: 12px; |
| | | } |
| | | } |
| | | |
| | | .library-table{ |
| | | flex: 8; |
| | | max-width: 80%; |
| | | margin-left: 12px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .table-box{ |
| | | margin-top: 30px; |
| | | flex: 1; |
| | | background: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .el-table { |
| | | flex: 1; |
| | | } |
| | | |
| | | >div:nth-child(2){ |
| | | display: flex; |
| | | justify-content: end; |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | .addDrawer{ |
| | | ::v-deep .el-drawer__body{ |
| | | // padding: 24px !important; |
| | |
| | | overflow-x: hidden; |
| | | } |
| | | } |
| | | |
| | | .detailDrawer{ |
| | | ::v-deep .el-drawer__body{ |
| | | padding: 24px !important; |
| | | overflow-y: scroll; |
| | | } |
| | | |
| | | .detail-info{ |
| | | background: #fff; |
| | | box-shadow: rgba(100, 100, 111, 0.2) 0px 5px 15px; |
| | |
| | | margin-bottom: 12px; |
| | | border-radius: 6px; |
| | | overflow: hidden; |
| | | |
| | | .tips-main{ |
| | | padding: 10px 20px 0 20px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 50px; |
| | | |
| | | .tips-btn{ |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .tips{ |
| | | height: 100%; |
| | | display: flex; |
| | | height: 24px; |
| | | align-items: center; |
| | | font-size: 16px; |
| | | |
| | | >span{ |
| | | display: inline-block; |
| | | margin-right: 10px; |
| | |
| | | height: 16px; |
| | | background: #0077DB; |
| | | } |
| | | |
| | | >div{ |
| | | height: 100%; |
| | | line-height: 26px; |
| | | } |
| | | |
| | | .el-button{ |
| | | padding: 0; |
| | | } |
| | |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | border-top: 1px solid #F2F6FC; |
| | | |
| | | >div{ |
| | | flex: 30%; |
| | | max-width: 30%; |
| | |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | >span{ |
| | | color: #303133; |
| | | font-size: 14px; |
| | | |
| | | >i{ |
| | | margin-right: 8px; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .measureForm{ |
| | | |
| | | // |
| | | .el-form-item{ |
| | | |
| | | // |
| | | .el-date-editor{ |
| | | width: 100%; |
| | |
| | | <div class="personnel-main "> |
| | | <div class="page-header-search"> |
| | | <div class="search-bar"> |
| | | <el-form ref="form" inline="true" :model="searchData"> |
| | | <el-form ref="form" :inline="true"> |
| | | <el-form-item> |
| | | <el-input |
| | | v-model="keyword" |
| | | placeholder="请è¾å
¥äººååç§°" |
| | | > |
| | | <el-input v-model="keyword" placeholder="请è¾å
¥äººååç§°"> |
| | | <i slot="prefix" class="el-input__icon el-icon-search" /> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="searchData()">æ¥è¯¢</el-button> |
| | | <el-button type="primary" @click="getData()">æ¥è¯¢</el-button> |
| | | <el-button type="primary" plain @click="resetData()">éç½®</el-button> |
| | | <!-- <el-button type="text">é«çº§æç´¢<i class="el-icon-arrow-down el-icon--right" /></el-button> --> |
| | | </el-form-item> |
| | |
| | | </div> |
| | | <div class="content-main"> |
| | | <div class="personner-table"> |
| | | <el-table |
| | | ref="personnerlTable" |
| | | :height="700" |
| | | :max-height="700" |
| | | :cell-style="{textAlign: 'center'}" |
| | | <el-table ref="personnerlTable" :max-height="700" :cell-style="{ textAlign: 'center' }" |
| | | :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" |
| | | :data="personnerlTable" |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | prop="username" |
| | | label="è§è²åç§°" |
| | | min-width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="roleName" |
| | | label="è§è²æé" |
| | | min-width="120" |
| | | /> |
| | | <el-table-column |
| | | prop="age" |
| | | label="å¹´é¾" |
| | | min-width="150" |
| | | /> |
| | | <el-table-column |
| | | prop="createTime" |
| | | label="å建æ¶é´" |
| | | min-width="180" |
| | | /> |
| | | <el-table-column |
| | | prop="phone" |
| | | label="çµè¯" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="email" |
| | | label="é®ç®±" |
| | | min-width="200" |
| | | /> |
| | | <el-table-column |
| | | prop="jobState" |
| | | label="å¨èç¶æ" |
| | | min-width="120" |
| | | :filters="[{ text: 0, value: 0 }, { text: 1, value: 1 }]" |
| | | :filter-method="filterTag" |
| | | filter-placement="bottom-end" |
| | | > |
| | | :data="personnerlTable" style="width: 100%"> |
| | | <el-table-column prop="username" label="è§è²åç§°" min-width="120" /> |
| | | <el-table-column prop="roleName" label="è§è²æé" min-width="120" /> |
| | | <el-table-column prop="age" label="å¹´é¾" min-width="150" /> |
| | | <el-table-column prop="createTime" label="å建æ¶é´" min-width="180" /> |
| | | <el-table-column prop="phone" label="çµè¯" min-width="200" /> |
| | | <el-table-column prop="email" label="é®ç®±" min-width="200" /> |
| | | <el-table-column prop="jobState" label="å¨èç¶æ" min-width="120" |
| | | :filters="[{ text: 0, value: 0 }, { text: 1, value: 1 }]" :filter-method="filterTag" |
| | | filter-placement="bottom-end"> |
| | | <template slot-scope="scope"> |
| | | <el-tag |
| | | :type="scope.row.businessStatus === 0 ? 'primary' : 'success'" |
| | | disable-transitions |
| | | >{{ scope.row.businessStatus === 0 ? 'æªåæ' : 'å·²åæ' }}</el-tag> |
| | | <el-tag :type="scope.row.jobState === 0 ? 'danger' : 'success'" disable-transitions>{{ |
| | | scope.row.jobState === 0 ? '离å²' : 'å¨è' }}</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æä½" |
| | | min-width="120" |
| | | > |
| | | <el-table-column label="æä½" min-width="120"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" @click="handleClick(scope.row)">ç¼è¾</el-button> |
| | | <!-- <el-button type="text" size="small">ç¼è¾</el-button> --> |
| | |
| | | </el-table> |
| | | <div> |
| | | <!-- åé¡µå¨ --> |
| | | <el-pagination |
| | | :current-page="currentPage" |
| | | :page-sizes="[100, 200, 300, 400]" |
| | | :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="this.personnerlTable.length" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | <el-pagination :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" :total="this.personnerlTable.length" |
| | | @size-change="handleSizeChange" @current-change="handleCurrentChange" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import axios from 'axios' |
| | | axios.defaults.baseURL = 'http://192.168.110.167:1234' |
| | | import { get, post } from '@/api/util/requestUtil'; |
| | | import urlInfo from '../../../api/urlEnum/personnel.js' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | filteredpersonnerlTable: [], |
| | | currentindex: 1, |
| | | currentPage: 1, // å½å页ç |
| | | total: 20, // æ»æ¡æ° |
| | | total: 0, // æ»æ¡æ° |
| | | pageSize: 100, // æ¯é¡µçæ°æ®æ¡æ° |
| | | personData: [], // ç¨æ¥åæ¾æ¥å£ä¼ è¿æ¥ç人ååè¡¨æ°æ® |
| | | dialogFormVisible: false, |
| | |
| | | this.currentPage = 1 |
| | | this.pageSize = val |
| | | }, |
| | | filterTag() { |
| | | console.log(11); |
| | | }, |
| | | // å½å页æ¹åæ¶è§¦å 跳转å
¶ä»é¡µ |
| | | handleCurrentChange(val) { |
| | | console.log(`å½å页: ${val}`) |
| | | this.currentPage = val |
| | | }, |
| | | getData() { |
| | | axios.get('/user/list_new_personnel', { |
| | | params: { |
| | | async getData() { |
| | | let data = { |
| | | pageNo: 0, |
| | | pageSize: 20 |
| | | pageSize: 20, |
| | | name: this.keyword |
| | | } |
| | | }).then(res => { |
| | | // console.log(res) |
| | | this.personData = res.data.data.row |
| | | this.personnerlTable = this.personData |
| | | }).catch(res => { |
| | | console.log('error') |
| | | }) |
| | | let res = await get(urlInfo.url.list_new_personnel, data); |
| | | this.personnerlTable=res.data.row |
| | | this.total=res.data.total |
| | | }, |
| | | searchData() { |
| | | this.filteredpersonnerlTable = this.personnerlTable.filter((item) => { |
| | |
| | | return false |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | <style lang="scss" scoped> |
| | | .personnel-main{ |
| | | |
| | | // width: 100%; |
| | | // height: 100%; |
| | | .page-header-search{ |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding: 0 24px 12px 24px; |
| | | |
| | | .search-bar{ |
| | | .el-form{ |
| | | .el-form-item{ |
| | | margin-bottom: 0px !important; |
| | | |
| | | .el-input{ |
| | | width: 360px; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .personner-table{ |
| | | background: #fff; |
| | | padding: 20px 20px 10px 20px; |
| | | |
| | | >div:nth-child(2){ |
| | | display: flex; |
| | | justify-content: end; |