Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev
¶Ô±ÈÐÂÎļþ |
| | |
| | | // æ½æ ·ä¿¡æ¯è¯¦æ
页é¢ç¸å
³æ¥å£ |
| | | import request from '@/utils/request' |
| | | |
| | | // æ½æ ·ä¿¡æ¯-å£åº¦æ¥è¯¢ |
| | | export function getQuarterPage(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/getQuarterPage', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // æ½æ ·ä¿¡æ¯-年度æ¥è¯¢ |
| | | export function getSpotCheckYearPage(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/getSpotCheckYearPage', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | // å é¤å£åº¦æ½æ£ |
| | | export function deleteQuarter(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/deleteQuarter', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
| | | // çæå£åº¦æ¥å |
| | | export function finalReportQuarter(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/finalReportQuarter', |
| | | method: 'get', |
| | | params: query, |
| | | responseType: "blob" |
| | | }) |
| | | } |
| | | // çæå¹´åº¦æ¥å |
| | | export function finalReportSpotCheckYear(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/finalReportSpotCheckYear', |
| | | method: 'get', |
| | | params: query, |
| | | responseType: "blob" |
| | | }) |
| | | } |
| | | // å é¤å¹´åº¦æ½æ£ |
| | | export function deleteSpotCheckYear(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/deleteSpotCheckYear', |
| | | method: 'delete', |
| | | params: query, |
| | | }) |
| | | } |
| | | // å¹´åº¦æ½æ£æ¥ç详æ
|
| | | export function getSpotCheckYear(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/getSpotCheckYear', |
| | | method: 'get', |
| | | params: query, |
| | | }) |
| | | } |
| | | // æäº¤å¹´åº¦æ½æ · |
| | | export function addSpotCheckYear(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/addSpotCheckYear', |
| | | method: 'post', |
| | | data: query, |
| | | }) |
| | | } |
| | | // ç¼è¾å¹´åº¦æ½æ · |
| | | export function updateSpotCheckYear(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/updateSpotCheckYear', |
| | | method: 'post', |
| | | data: query, |
| | | }) |
| | | } |
| | | // å£åº¦æ½æ£æ¥ç详æ
|
| | | export function getQuarter(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/getQuarter', |
| | | method: 'get', |
| | | params: query, |
| | | }) |
| | | } |
| | | // æäº¤å£åº¦æ½æ · |
| | | export function addQuarter(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/addQuarter', |
| | | method: 'post', |
| | | data : query, |
| | | }) |
| | | } |
| | | // ç¼è¾å£åº¦æ£éª |
| | | export function updateQuarterOnOrder(query) { |
| | | return request({ |
| | | url: '/finishProductSpotCheck/updateQuarterOnOrder', |
| | | method: 'post', |
| | | data : query, |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | // å®å
¨å
å¡ä¸åºå¤çå页æ¥è¯¢ |
| | | export function pageInternalWastes(query) { |
| | | return request({ |
| | | url: '/internalWastes/pageInternalWastes', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // å®å
¨å
å¡ä¸åºå¤çæ¥ç详æ
|
| | | export function getInternalWastesOne(query) { |
| | | return request({ |
| | | url: '/internalWastes/getInternalWastesOne', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | // å®å
¨å
å¡ä¸åºå¤çæ°å¢ |
| | | export function addInternalWastes(query) { |
| | | return request({ |
| | | url: '/internalWastes/addInternalWastes', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | // å®å
¨å
å¡ä¸åºå¤çåé¡µä¿®æ¹ |
| | | export function updateInternalWastes(query) { |
| | | return request({ |
| | | url: '/internalWastes/updateInternalWastes', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | |
| | | // 导åºä¸åºå¤ç |
| | | export function exportInternalWastes(query) { |
| | | return request({ |
| | | url: "/internalWastes/exportInternalWastes", |
| | | method: "get", |
| | | responseType: "blob", |
| | | params: query, |
| | | }); |
| | | } |
| | | |
| | | //å®å
¨å
å¡ä¸åºå¤çå é¤ |
| | | export function removeStandardSubstance(query) { |
| | | return request({ |
| | | url: '/internalWastes/delInternalWastes', |
| | | method: 'delete', |
| | | params: query |
| | | }) |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="夿¥äººå管çä¿¡æ¯" |
| | | width="80%" @close="closeThreeWastesDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="auto"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¥æ" prop="registerDate"> |
| | | <el-date-picker v-model="form.registerDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¿å
¥åºå" prop="area"> |
| | | <el-input v-model="form.area" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¿å
¥äººå" prop="personnel"> |
| | | <el-input v-model="form.personnel" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¿å
¥åå " prop="reason"> |
| | | <el-input v-model="form.reason" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="éªå人å" prop="accompanyingId"> |
| | | <el-select v-model="form.accompanyingId" clearable filterable |
| | | placeholder="è¯·éæ©éªå人å" size="small"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¹å人ç¾å" prop="approveId"> |
| | | <el-select v-model="form.approveId" clearable filterable |
| | | placeholder="è¯·éæ©æ¹å人" size="small"> |
| | | <el-option v-for="(item,i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¿å¯åå
¶å®æ
åµ" prop="confidentiality"> |
| | | <el-input v-model="form.confidentiality" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input v-model="form.remark" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeThreeWastesDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'Personnel-management-dia', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | registerDate: '', |
| | | area: '', |
| | | personnel: '', |
| | | reason: '', |
| | | accompanyingId: '', |
| | | accompanyingName: '', |
| | | approveId: '', |
| | | approveName: '', |
| | | confidentiality: '', |
| | | remark: '', |
| | | }, |
| | | rules: { |
| | | registerDate: [{required: true, message: 'è¯·éæ©æ¥æ',trigger: 'change'}], |
| | | area: [{required: true, message: '请填åè¿å
¥åºå',trigger: 'blur'}], |
| | | personnel: [{required: true, message: '请填åè¿å
¥äººå',trigger: 'blur'}], |
| | | reason: [{required: true, message: '请填åè¿å
¥åå ',trigger: 'blur'}], |
| | | accompanyingId: [{required: true, message: 'è¯·éæ©éªå人å',trigger: 'change'}], |
| | | approveId: [{required: true, message: 'è¯·éæ©æ¹å人',trigger: 'change'}], |
| | | confidentiality: [{required: true, message: '请填åä¿å¯åå
¶ä»æ
åµ',trigger: 'blur'}], |
| | | remark: [{required: false, message: '请填å夿³¨',trigger: 'blur'}], |
| | | }, |
| | | operationType: '', |
| | | personList: [] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (type, row) { |
| | | this.getAuthorizedPerson() |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } else { |
| | | this.form.accompanyingId = JSON.parse(localStorage.getItem("user")).userId |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo (row) { |
| | | this.diaLoading = true |
| | | this.$axios(this.$api.foreignRegister.getForeignRegisterOne + '?registerId=' + row.registerId).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 201) return |
| | | this.form = res.data |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | this.loading = true |
| | | const internalImplementDto = this.HaveJson(this.form) |
| | | const index = this.personList.findIndex(item => item.value === internalImplementDto.accompanyingId) |
| | | if (index > -1) { |
| | | internalImplementDto.accompanyingName = this.personList[index].label |
| | | } |
| | | const index1 = this.personList.findIndex(item => item.value === internalImplementDto.approveId) |
| | | if (index1 > -1) { |
| | | internalImplementDto.approveName = this.personList[index].label |
| | | } |
| | | if (this.operationType === 'add') { |
| | | this.$axios.post(this.$api.foreignRegister.addForeignRegister, internalImplementDto, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeThreeWastesDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | this.$axios.post(this.$api.foreignRegister.updateForeignRegister, internalImplementDto, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.loading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('æä½æå') |
| | | this.closeThreeWastesDia() |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | closeThreeWastesDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeThreeWastesDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | this.$axios.get(this.$api.user.getUserMenu).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.name, |
| | | value: a.id |
| | | }) |
| | | }) |
| | | this.personList = data |
| | | }) |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">æ¥æï¼</span> |
| | | <el-date-picker v-model="searchForm.registerDate" |
| | | clearable |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="medium" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="medium" @click="handleDown">导 åº</el-button> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <ZTTable |
| | | :column="tableColumn" |
| | | :height="'calc(100vh - 20em)'" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | style="padding: 0 10px;margin-bottom: 16px"> |
| | | </ZTTable> |
| | | <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </div> |
| | | <personnel-management-dia v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></personnel-management-dia> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | // import ZTTable from '../../caorui/ZTTable/index.vue'; |
| | | // import PersonnelManagementDia from './Personnel-management-dia.vue'; |
| | | import PersonnelManagementDia from '../component/Personnel-management-dia.vue'; |
| | | |
| | | export default { |
| | | name: 'Personnel-management', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { PersonnelManagementDia}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | registerDate: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'æ¥æ', |
| | | prop: 'registerDate', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è¿å
¥åºå', |
| | | prop: 'area', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è¿å
¥äººå', |
| | | prop: 'personnel', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'è¿å
¥åå ', |
| | | prop: 'reason', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'éªå人å', |
| | | prop: 'accompanyingName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'æ¹å人ç¾å', |
| | | prop: 'approveName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¿å¯åå
¶ä»æ
åµ', |
| | | prop: 'confidentiality', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '夿³¨', |
| | | prop: 'remark', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | minWidth: '220', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | }, |
| | | total: 0, |
| | | threeWastesDia: false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | const entity = this.searchForm |
| | | const page = this.page |
| | | this.tableLoading = true |
| | | this.$axios.post(this.$api.foreignRegister.pageForeignRegister, {entity, page}, { |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.tableData = res.data.records |
| | | this.total = res.data.total |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | this.$axios.get(this.$api.foreignRegister.delForeignRegister + '?registerId=' + row.registerId).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 201) return |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | this.threeWastesDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.threeWastesDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | const entity = this.searchForm |
| | | this.$axios.post(this.$api.foreignRegister.exportForeignRegister,{entity},{ |
| | | responseType: "blob", |
| | | headers: { |
| | | "Content-Type": "application/json" |
| | | }, |
| | | noQs: true}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | //å°Blob å¯¹è±¡è½¬æ¢æå符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = '夿¥äººåç»è®°' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = '夿¥äººåç»è®°' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | | this.threeWastesDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.registerDate = ''; |
| | | this.searchList() |
| | | }, |
| | | // å页 |
| | | handleSizeChange(val) { |
| | | this.page.size = val; |
| | | this.searchList(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.page.current = val; |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-menu style="height: 100vh;" @select="clickSelect" :default-active="activeName"> |
| | | <el-menu-item index="çµæºç¨³å®æ§"> |
| | | <span slot="title">çµæºç¨³å®æ§</span> |
| | | </el-menu-item> |
| | | <el-menu-item index="é²é·æ£æµ"> |
| | | <span slot="title">é²é·æ£æµ</span> |
| | | </el-menu-item> |
| | | <el-menu-item index="ç
§åº¦è®°å½"> |
| | | <span slot="title">ç
§åº¦è®°å½</span> |
| | | </el-menu-item> |
| | | <el-menu-item index="温湿度记å½"> |
| | | <span slot="title">温湿度记å½</span> |
| | | </el-menu-item> |
| | | </el-menu> |
| | | </el-col> |
| | | <el-col :span="22" style="padding: 10px"> |
| | | <power-supply-stability v-if="activeName === 'çµæºç¨³å®æ§'"/> |
| | | <lightning-protection-detection v-if="activeName === 'é²é·æ£æµ'" /> |
| | | <illuminance-recording v-if="activeName === 'ç
§åº¦è®°å½'"/> |
| | | <temperature-humidity-record v-if="activeName === '温湿度记å½'"/> |
| | | </el-col> |
| | | </el-row> |
| | | </template> |
| | | |
| | | <script> |
| | | // çµæºç¨³å®æ§ |
| | | import PowerSupplyStability from "./facilities-environmental-conditions/power-supply-stability.vue"; |
| | | // é²é·æ£æµ |
| | | import LightningProtectionDetection from "./facilities-environmental-conditions/lightning-protection-detection.vue"; |
| | | // ç
§åº¦è®°å½ |
| | | import IlluminanceRecording from "./facilities-environmental-conditions/illuminance-recording.vue"; |
| | | // æ¸©æ¹¿åº¦è®°å½ |
| | | import TemperatureHumidityRecord from "./facilities-environmental-conditions/temperature-humidity-record.vue"; |
| | | |
| | | export default { |
| | | components: {TemperatureHumidityRecord, IlluminanceRecording, LightningProtectionDetection, PowerSupplyStability}, |
| | | data() { |
| | | return { |
| | | activeName: "çµæºç¨³å®æ§" |
| | | } |
| | | }, |
| | | methods: { |
| | | clickSelect(index) { |
| | | this.activeName = index; |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="header"> |
| | | <div>ç
§åº¦è®°å½</div> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="clickAdd">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="ç»è®º" min-width="180" prop="conclusion"></el-table-column> |
| | | <el-table-column label="æµè¯æ¥æ" min-width="180" prop="testDate" width="testDate"></el-table-column> |
| | | <el-table-column label="æ£æµè
" min-width="180" prop="testerUser"></el-table-column> |
| | | <el-table-column label="æ ¸æ¥äºº" min-width="180" prop="checkerUser"></el-table-column> |
| | | <el-table-column label="设å¤åç§°" min-width="180" prop="deviceName"></el-table-column> |
| | | <el-table-column label="设å¤ç¼å·" min-width="180" prop="managementNumber"></el-table-column> |
| | | <el-table-column label="æ ¡åæ¥æ" min-width="180" prop="lastCalibrationDate"></el-table-column> |
| | | <el-table-column label="䏿¬¡æ ¡åæ¥æ" min-width="180" prop="nextCalibrationDate"></el-table-column> |
| | | <el-table-column label="å建æ¶é´" min-width="180" prop="createTime"></el-table-column> |
| | | <el-table-column fixed="right" label="æä½" min-width="140"> |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导åº</el-button> |
| | | <el-button size="small" type="text" @click="edit(scope.row)">ç¼è¾</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="æ°å¢" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <div style="height: 50vh; overflow-y: auto"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'change' }]" label="æµè¯æ¥æ" |
| | | prop="testDate"> |
| | | <el-date-picker |
| | | v-model="form.testDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥è®¾å¤åç§°', trigger: 'change' }]" label="设å¤åç§°" |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" |
| | | class="table_input" |
| | | clearable |
| | | filterable |
| | | placeholder="设å¤åç§°" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{item.deviceName + item.managementNumber}} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设å¤ç¼å·"> |
| | | <el-input v-model="form.managementNumber" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æè¿æ ¡åæ¥æ"> |
| | | <el-input v-model="form.lastCalibrationDate" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="䏿¬¡æ ¡åæ¥æ"> |
| | | <el-input v-model="form.nextCalibrationDate" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ£æµè
" prop="recipientUser"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ ¸æ¥äºº" prop="recipientUser"> |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;" > |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ç»è®º"> |
| | | <el-input |
| | | v-model="form.conclusion" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <div> |
| | | <div style="display: flex; justify-content: flex-end; margin-bottom: 0.5em"> |
| | | <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">æ°å¢</el-button> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="form.illuminationDetectionAreaList" |
| | | height="40vh" |
| | | style="width: 100%; margin: auto"> |
| | | <el-table-column label="åºå·" type="index" width="80"></el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="æ£æµåºååç§°" |
| | | min-width="180" |
| | | prop="detectionAreaLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.detectionAreaLabel" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="æ£æµå¼" |
| | | min-width="300" |
| | | prop="name"> |
| | | <template> |
| | | <el-table-column align="center" label="ç¬¬ä¸æ¬¡" min-width="100" prop="valueOne"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.valueOne" :rows="1" @blur="getAverage(row)"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="ç¬¬äºæ¬¡" min-width="100" prop="valueTwo"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.valueTwo" :rows="1" @blur="getAverage(row)"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="ç¬¬ä¸æ¬¡" min-width="100" prop="valueThree"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.valueThree" :rows="1" @blur="getAverage(row)"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="å¹³åå¼" min-width="100" prop="average"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.average" :rows="1"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="夿³¨" |
| | | min-width="180" |
| | | prop="detectionAreaLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.remark" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | label="æä½" |
| | | width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)"> |
| | | å é¤ |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | search: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0 |
| | | }, |
| | | tableData: [], |
| | | dialogVisible: false, |
| | | submitLoading: false, |
| | | form: { |
| | | testDate: '', |
| | | deviceId: '', |
| | | managementNumber: '', |
| | | lastCalibrationDate: '', |
| | | nextCalibrationDate: '', |
| | | testerId: '', |
| | | checkerId: '', |
| | | conclusion: '', |
| | | illuminationDetectionAreaList: [] |
| | | }, |
| | | cascaderList: [], |
| | | responsibleOptions: [], |
| | | equipOptions: [], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initData() |
| | | }, |
| | | watch: { |
| | | dialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.form = { |
| | | deviceId: null, |
| | | illuminationDetectionAreaList: [] |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | getAverage(row) { |
| | | if (row.valueOne && row.valueTwo && row.valueThree) { |
| | | if (!isNaN(row.valueOne) && !isNaN(row.valueTwo) && !isNaN(row.valueThree)) { |
| | | const avg = Number(row.valueOne) + Number(row.valueTwo) + Number(row.valueThree) |
| | | console.log(avg) |
| | | row.average = Math.round(avg/3); |
| | | } else { |
| | | this.$message.warning("å¿
须为æ°åï¼") |
| | | } |
| | | } |
| | | }, |
| | | edit(row) { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getFeIlluminationDetectionArea + "?intensityIlluminationId=" + row.intensityIlluminationId).then(res => { |
| | | this.form = {...row} |
| | | this.form.illuminationDetectionAreaList = res.data; |
| | | this.dialogVisible = true |
| | | }); |
| | | }, |
| | | initData() { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getFeLightningProtection + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | }); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.search.size = val; |
| | | this.initData(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.search.current = val; |
| | | this.initData(); |
| | | }, |
| | | deleteRowFun(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeLightningProtection + '?intensityIlluminationId=' + row.intensityIlluminationId).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | feMeasuredQuantityListDelete(row, index) { |
| | | if (row.detectionAreaId) { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeIlluminationDetectionArea + '?detectionAreaId=' + row.detectionAreaId).then(res => { |
| | | if (res.code === 201) return |
| | | this.form.illuminationDetectionAreaList.splice(index, 1) |
| | | this.$message.success('å 餿åï¼') |
| | | }) |
| | | } else { |
| | | this.form.illuminationDetectionAreaList.splice(index, 1) |
| | | this.$message.success('å 餿åï¼') |
| | | } |
| | | }, |
| | | openDialog() { |
| | | this.$axios.get(this.$api.deviceScope.treeDevice).then(res => { |
| | | this.cascaderList = res.data; |
| | | }); |
| | | this.$nextTick(() => { |
| | | this.$refs['form'].clearValidate() |
| | | }) |
| | | this.getUserList() |
| | | }, |
| | | clickAdd() { |
| | | this.dialogVisible = true |
| | | this.getEquipOptions() |
| | | }, |
| | | // è·åææè®¾å¤ |
| | | getEquipOptions() { |
| | | this.equipOptions = [] |
| | | this.$axios.get(this.$api.deviceScope.deviceScopeSearch+'?status=0').then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | }) |
| | | }, |
| | | feMeasuredQuantityListAdd() { |
| | | const obj = { |
| | | detectionAreaLabel: null, |
| | | valueOne: null, |
| | | valueTwo: null, |
| | | valueThree: null, |
| | | average: null, |
| | | remark: null, |
| | | } |
| | | this.form.illuminationDetectionAreaList.push(obj) |
| | | }, |
| | | addPowerSupplyStability() { |
| | | this.submitLoading = true |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios.post(this.$api.facilitiesAndEnvironment.addFeLightningProtection, this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.submitLoading = false |
| | | if (res.code === 200) { |
| | | this.initData() |
| | | this.dialogVisible = false |
| | | } |
| | | }).catch(error => { |
| | | this.submitLoading = false |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | // è·åè´è´£äººä¿¡æ¯æ¥å£ |
| | | getUserList() { |
| | | this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { |
| | | if (res.code == 200) { |
| | | this.responsibleOptions = res.data |
| | | } |
| | | }) |
| | | }, |
| | | getCalibrationDateFun(val) { |
| | | const index = this.equipOptions.findIndex(item => item.id === val) |
| | | if (index > -1) { |
| | | this.form.managementNumber = this.equipOptions[index].managementNumber |
| | | this.form.lastCalibrationDate = this.equipOptions[index].lastCalibrationDate |
| | | this.form.nextCalibrationDate = this.equipOptions[index].nextCalibrationDate |
| | | } |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.exportFeIllumination + '?intensityIlluminationId=' + row.intensityIlluminationId,{responseType: "blob"}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | //å°Blob å¯¹è±¡è½¬æ¢æå符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'ç
§åº¦è®°å½' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'ç
§åº¦è®°å½' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | height: 3em; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="header"> |
| | | <div>é²é·æ£æµ</div> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="clickAdd">导 å
¥</el-button> |
| | | <el-button size="small" type="primary" @click="downLoadPost">导 åº</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="åæä»¶å" |
| | | min-width="180" |
| | | prop="fileName"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ£æµæ¥æ" |
| | | min-width="180" |
| | | prop="detectionDate"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æææ" |
| | | min-width="180" |
| | | prop="termValidity"> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="æ£æµåä½" |
| | | min-width="180" |
| | | prop="detectionUnit"> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" label="æä½" min-width="100"> |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="edit(scope.row)">ç¼è¾</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun(scope.row)">å é¤</el-button> |
| | | <el-button size="small" type="text" @click="download(scope.row)">ä¸è½½</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="æ° å¢" |
| | | width="50%"> |
| | | <div style="height: 50vh;"> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'blur' }]" label="æ£æµæ¥æ" |
| | | prop="detectionDate"> |
| | | <el-date-picker |
| | | v-model="form.detectionDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'blur' }]" label="æææ" |
| | | prop="termValidity"> |
| | | <el-date-picker |
| | | v-model="form.termValidity" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'blur' }]" label="æ£æµåä½" |
| | | prop="detectionUnit"> |
| | | <el-input v-model="form.detectionUnit" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ£æµåä½" > |
| | | <el-upload |
| | | :file-list="form.fileList" |
| | | :http-request="httpRequest" |
| | | :limit="1" |
| | | :on-exceed="handleExceed" |
| | | :on-remove="handleRemove" |
| | | action="#" |
| | | class="upload-demo" |
| | | drag |
| | | multiple> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> |
| | | </el-upload> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="addImport">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | search: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0 |
| | | }, |
| | | tableData: [], |
| | | dialogVisible: false, |
| | | form: { |
| | | fileList: [], |
| | | fileData: [] |
| | | }, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initData() |
| | | }, |
| | | watch: { |
| | | dialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.form = { |
| | | fileList: [], |
| | | fileData: [] |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | // å¯¼åº |
| | | downLoadPost() { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.exportOfLightningProtectionDetection,{responseType: "blob"}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | //å°Blob å¯¹è±¡è½¬æ¢æå符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'é²é·æ£æµå¯¼åº' + '.xlsx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'é²é·æ£æµå¯¼åº' + '.xlsx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | initData() { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getLightningProtectionDetection + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | }); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.search.size = val; |
| | | this.initData(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.search.current = val; |
| | | this.initData(); |
| | | }, |
| | | clickAdd() { |
| | | this.dialogVisible = true |
| | | }, |
| | | // æä»¶æ°éè¿å¤æ¶æé |
| | | handleExceed() { |
| | | this.$message({type: 'error', message: 'æå¤æ¯æ1个éä»¶ä¸ä¼ '}) |
| | | }, |
| | | // è¦çé»è®¤çä¸ä¼ è¡ä¸ºï¼å¯ä»¥èªå®ä¹ä¸ä¼ çå®ç°ï¼å°ä¸ä¼ çæä»¶ä¾æ¬¡æ·»å å°fileListæ°ç»ä¸,æ¯æå¤ä¸ªæä»¶ |
| | | httpRequest(option) { |
| | | this.form.fileData.push(option) |
| | | }, |
| | | addImport() { |
| | | console.log(this.form) |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | let params = new FormData() |
| | | if (this.form.lightningProtectionId) { |
| | | params.append("lightningProtectionId", this.form.lightningProtectionId) |
| | | } |
| | | params.append("termValidity", this.form.termValidity) |
| | | params.append("detectionUnit", this.form.detectionUnit) |
| | | params.append("detectionDate", this.form.detectionDate) |
| | | if (this.form.fileData.length > 0) { |
| | | params.append("file", this.form.fileData[0].file) |
| | | } |
| | | this.$axios.post(this.$api.facilitiesAndEnvironment.addLightningProtectionDetection, params, { |
| | | headers: {'Content-Type': 'multipart/form-data;'}, |
| | | noQs: true |
| | | }).then(res => { |
| | | if (res.code === 201) return; |
| | | this.dialogVisible = false |
| | | this.initData() |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | edit(row) { |
| | | this.dialogVisible = true |
| | | this.form = {...row} |
| | | this.form.fileList = [] |
| | | this.form.fileData = [] |
| | | this.form.fileList.push({name: row.systemFileName, url: "123434"}) |
| | | console.log(this.form) |
| | | }, |
| | | deleteRowFun(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteLightningProtectionDetection + '?lightningProtectionId=' + row.lightningProtectionId).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | handleRemove(file) { |
| | | this.$axios.delete(this.$api.personnel.deleteCNASFile + "?fileName=" + file.name).then(res => { |
| | | if (res.code === 201) return; |
| | | this.$message.success('å 餿åï¼') |
| | | let index = this.form.fileList.indexOf(fileName) |
| | | if (index != -1) { |
| | | this.successFileList.splice(index, 1) |
| | | } |
| | | }) |
| | | }, |
| | | download(row) { |
| | | let url = ''; |
| | | |
| | | // fileDownload.downloadIamge(url, row.fileName) |
| | | url = this.javaApi + 'img/' + row.systemFileName |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = row.fileName; |
| | | link.click(); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | height: 3em; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="header"> |
| | | <div>çµæºç¨³å®æ§</div> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openAddDia">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | | <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æµè¯å°ç¹" min-width="180" prop="testLocation"></el-table-column> |
| | | <el-table-column label="æµè¯æ¥æ" min-width="180" prop="testDate" width="testDate"></el-table-column> |
| | | <el-table-column label="ç»è®º" min-width="180" prop="conclusion"></el-table-column> |
| | | <el-table-column label="æ£æµè
" min-width="180" prop="testerUser"></el-table-column> |
| | | <el-table-column label="æ ¸æ¥äºº" min-width="180" prop="checkerUser"></el-table-column> |
| | | <el-table-column label="设å¤åç§°" min-width="180" prop="deviceName"></el-table-column> |
| | | <el-table-column label="设å¤ç¼å·" min-width="180" prop="managementNumber"></el-table-column> |
| | | <el-table-column label="æ ¡åæ¥æ" min-width="180" prop="lastCalibrationDate"></el-table-column> |
| | | <el-table-column label="䏿¬¡æ ¡åæ¥æ" min-width="180" prop="nextCalibrationDate"></el-table-column> |
| | | <el-table-column label="å建æ¶é´" min-width="180" prop="createTime"></el-table-column> |
| | | <el-table-column fixed="right" label="æä½" min-width="140"> |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导åº</el-button> |
| | | <el-button size="small" type="text" @click="edit(scope.row)">ç¼è¾</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="æ°å¢" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <div style="height: 50vh; overflow-y: auto"> |
| | | <el-form ref="form" :model="form" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯å°ç¹', trigger: 'blur' }]" label="æµè¯å°ç¹" |
| | | prop="testLocation"> |
| | | <el-input v-model="form.testLocation" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æµè¯æ¥æ', trigger: 'change' }]" label="æµè¯æ¥æ" |
| | | prop="testDate"> |
| | | <el-date-picker |
| | | v-model="form.testDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥è®¾å¤åç§°', trigger: 'change' }]" label="设å¤åç§°" |
| | | prop="deviceId"> |
| | | <el-select v-model="form.deviceId" |
| | | class="table_input" |
| | | clearable |
| | | filterable |
| | | placeholder="设å¤åç§°" |
| | | size="small" @change="getCalibrationDateFun"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.deviceName" :value="item.id"> |
| | | {{item.deviceName + item.managementNumber}} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设å¤ç¼å·"> |
| | | <el-input v-model="form.managementNumber" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æè¿æ ¡åæ¥æ"> |
| | | <el-input v-model="form.lastCalibrationDate" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="䏿¬¡æ ¡åæ¥æ"> |
| | | <el-input v-model="form.nextCalibrationDate" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ£æµè
" prop="recipientUser"> |
| | | <el-select v-model="form.testerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ ¸æ¥äºº" prop="recipientUser"> |
| | | <el-select v-model="form.checkerId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;" > |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="ç»è®º"> |
| | | <el-input |
| | | v-model="form.conclusion" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <div> |
| | | <div style="display: flex; justify-content: flex-end; margin-bottom: 0.5em"> |
| | | <el-button size="small" type="primary" @click="feMeasuredQuantityListAdd">æ°å¢</el-button> |
| | | </div> |
| | | <div> |
| | | <el-table |
| | | :data="form.feMeasuredQuantityList" |
| | | height="40vh" |
| | | style="width: 100%; margin: auto"> |
| | | <el-table-column label="åºå·" type="index" width="80"></el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="æµå®éåç§°" |
| | | min-width="180" |
| | | prop="measuredQuantityLabel"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.measuredQuantityLabel" :rows="1" type="textarea"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | align="center" |
| | | label="å¼" |
| | | min-width="300" |
| | | prop="name"> |
| | | <template> |
| | | <el-table-column align="center" label="A" min-width="100" prop="valueA"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.valueA" :rows="1"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="B" min-width="100" prop="valueB"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.valueB" :rows="1"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="C" min-width="100" prop="valueC"> |
| | | <template #default="{ row }"> |
| | | <el-input v-model="row.valueC" :rows="1"></el-input> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | fixed="right" |
| | | label="æä½" |
| | | width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" type="text" @click="feMeasuredQuantityListDelete(scope.row, scope.$index)"> |
| | | å é¤ |
| | | </el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | search: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0 |
| | | }, |
| | | tableData: [], |
| | | dialogVisible: false, |
| | | submitLoading: false, |
| | | form: { |
| | | testLocation: '', |
| | | testDate: '', |
| | | deviceId: '', |
| | | managementNumber: '', |
| | | lastCalibrationDate: '', |
| | | nextCalibrationDate: '', |
| | | testerId: '', |
| | | checkerId: '', |
| | | conclusion: '', |
| | | feMeasuredQuantityList: [] |
| | | }, |
| | | equipOptions: [], |
| | | cascaderList: [], |
| | | responsibleOptions: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initData() |
| | | }, |
| | | watch: { |
| | | dialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.form = { |
| | | deviceId: null, |
| | | feMeasuredQuantityList: [] |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | // åå§åè°ç¨ |
| | | initData() { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getLaboratoryFacilityPowerStablePage + '?size=' + this.search.size + '¤t=' + this.search.current).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | }); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.search.size = val; |
| | | this.initData(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.search.current = val; |
| | | this.initData(); |
| | | }, |
| | | // çµæºç¨³å®æ§ è¡¨æ ¼ä¸çè¡å é¤æé® |
| | | deleteRowFun(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteLaboratoryFacilityPowerStable + '?powerStableId=' + row.powerStableId).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | openAddDia () { |
| | | this.dialogVisible = true |
| | | this.getEquipOptions() |
| | | }, |
| | | // è·åææè®¾å¤ |
| | | getEquipOptions() { |
| | | this.equipOptions = [] |
| | | this.$axios.get(this.$api.deviceScope.deviceScopeSearch+'?status=0').then(res => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | }) |
| | | }, |
| | | // çµæºç¨³å®æ§-æå¼å¼¹æ¡è°ç¨è®¾å¤æ¥å£ï¼æ¥è¯¢ä½¿ç¨çè®¾å¤ |
| | | openDialog() { |
| | | this.$axios.get(this.$api.deviceScope.treeDevice).then(res => { |
| | | this.cascaderList = res.data; |
| | | }); |
| | | this.$nextTick(() => { |
| | | this.$refs['form'].clearValidate() |
| | | }) |
| | | this.getUserList() |
| | | }, |
| | | // |
| | | getCalibrationDateFun(val) { |
| | | const index = this.equipOptions.findIndex(item => item.id === val) |
| | | if (index > -1) { |
| | | this.form.managementNumber = this.equipOptions[index].managementNumber |
| | | this.form.lastCalibrationDate = this.equipOptions[index].lastCalibrationDate |
| | | this.form.nextCalibrationDate = this.equipOptions[index].nextCalibrationDate |
| | | } |
| | | }, |
| | | // çµæºç¨³å®æ§-æµå®éå¼¹æ¡ä¸è¡¨æ ¼çå é¤è¡ |
| | | feMeasuredQuantityListDelete(row, index) { |
| | | if (row.measuredQuantityId) { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeMeasuredQuantity + '?measuredQuantityId=' + row.measuredQuantityId).then(res => { |
| | | if (res.code === 201) return |
| | | this.form.feMeasuredQuantityList.splice(index, 1) |
| | | this.$message.success('å 餿åï¼') |
| | | }) |
| | | } else { |
| | | this.form.feMeasuredQuantityList.splice(index, 1) |
| | | this.$message.success('å 餿åï¼') |
| | | } |
| | | }, |
| | | // çµæºç¨³å®æ§-æµå®éè¡¨æ ¼æ°å¢è¡ |
| | | feMeasuredQuantityListAdd() { |
| | | const obj = { |
| | | measuredQuantityLabel: null, |
| | | valueA: null, |
| | | valueB: null, |
| | | valueC: null, |
| | | } |
| | | this.form.feMeasuredQuantityList.push(obj) |
| | | }, |
| | | // çµæºç¨³å®æ§ æ°å¢ |
| | | addPowerSupplyStability() { |
| | | this.submitLoading = true |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios.post(this.$api.facilitiesAndEnvironment.addLaboratoryFacilityPowerStable, this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.submitLoading = false |
| | | if (res.code === 200) { |
| | | this.initData() |
| | | this.dialogVisible = false |
| | | } |
| | | }).catch(error => { |
| | | this.submitLoading = false |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.exportFePowerStable + '?powerStableId=' + row.powerStableId,{responseType: "blob"}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | //å°Blob å¯¹è±¡è½¬æ¢æå符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'çµæºç¨³å®æ§' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = 'çµæºç¨³å®æ§' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // çµæºç¨³å®æ§ ç¹å»è¡ç¼è¾è§¦å |
| | | edit(row) { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getFeMeasuredQuantityService + "?powerStableId=" + row.powerStableId).then(res => { |
| | | this.form = {...row} |
| | | this.form.feMeasuredQuantityList = res.data; |
| | | this.dialogVisible = true |
| | | }); |
| | | }, |
| | | // è·åè´è´£äººä¿¡æ¯æ¥å£ |
| | | getUserList() { |
| | | this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { |
| | | if (res.code == 200) { |
| | | this.responsibleOptions = res.data |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | height: 3em; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <div class="header"> |
| | | <div>è¯éªåºå</div> |
| | | <div> |
| | | åç§°ï¼ |
| | | <el-input v-model="search.testAreaName" clearable size="small" style="width: 120px"></el-input> |
| | | <el-button size="small" type="primary" @click="initData">æ¥è¯¢</el-button> |
| | | <el-button size="small" type="primary" @click="clickAdd">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | highlight-current-row |
| | | style="width: 100%" |
| | | @row-click="clickRow"> |
| | | <el-table-column label="åºå·" type="index" width="60" align="center"></el-table-column> |
| | | <el-table-column label="æåº¦æ¶é´" min-width="180" prop="monthDate"></el-table-column> |
| | | <el-table-column label="è¯éªåºååç§°" min-width="180" prop="testAreaName"></el-table-column> |
| | | <el-table-column label="ç¡®è®¤ç¶æ" min-width="180" prop="isAffirm"> |
| | | <template slot-scope="scope"> |
| | | <el-tag type="danger" v-if="scope.row.isAffirm == 0">æªç¡®è®¤</el-tag> |
| | | <el-tag type="success" v-if="scope.row.isAffirm == 1">已确认</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="å¢è¡¥ä¿¡æ¯" min-width="180" prop="subjoin"></el-table-column> |
| | | <el-table-column fixed="right" label="æä½" min-width="180" align="center"> |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="downLoadPost(scope.row)">导åº</el-button> |
| | | <el-button size="small" type="text" @click="edit(scope.row)">ç¼è¾</el-button> |
| | | <el-button :disabled="scope.row.isAffirm === '1'" size="small" type="text" @click="openApprovalDialog(scope.row)">确认</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="header"> |
| | | <div>温湿度记å½ï¼{{ saveRow.monthDate }}</div> |
| | | <div> |
| | | <el-button v-if="saveRow.monthDate" size="small" type="primary" @click="dialogVisible1 = true">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table |
| | | :data="tableData1" |
| | | height="calc(100vh - 18em)" |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="60" align="center"></el-table-column> |
| | | <el-table-column label="æ¥æ" min-width="100" prop="recordDate"></el-table-column> |
| | | <el-table-column align="center" label="ä¸å" min-width="200"> |
| | | <template> |
| | | <el-table-column label="æ¶é´" min-width="110" prop="morningTestTime" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="温度" min-width="80" prop="morningTemp" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="湿度" min-width="80" prop="morningHum" show-overflow-tooltip></el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="è®°å½å" min-width="100" prop="morningRecorderUser"></el-table-column> |
| | | <el-table-column align="center" label="ä¸å" min-width="200"> |
| | | <template> |
| | | <el-table-column label="æ¶é´" min-width="110" prop="afternoonTime" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="温度" min-width="80" prop="afternoonTemp" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="湿度" min-width="80" prop="afternoonHum" show-overflow-tooltip></el-table-column> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="è®°å½å" min-width="100" prop="afternoonRecorderUser"></el-table-column> |
| | | <el-table-column label="夿³¨" min-width="100" prop="note" show-overflow-tooltip></el-table-column> |
| | | <el-table-column fixed="right" label="æä½" min-width="100"> |
| | | <template v-slot="scope"> |
| | | <el-button size="small" type="text" @click="edit1(scope.row)">ç¼è¾</el-button> |
| | | <el-button size="small" type="text" @click="deleteRowFun1(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" |
| | | @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible" |
| | | title="æç¤º" |
| | | width="50%"> |
| | | <div style="height: 20vh;"> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥æåº¦æ¶é´', trigger: 'blur' }]" label="æåº¦æ¶é´" |
| | | prop="monthDate"> |
| | | <el-date-picker |
| | | v-model="form.monthDate" |
| | | format="yyyy-MM" |
| | | placeholder="éæ©æä»½" |
| | | size="small" |
| | | style="width: 100%" |
| | | type="month" |
| | | value-format="yyyy-MM"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item :rules="[{ required: true, message: '请è¾å
¥è¯éªåºå', trigger: 'blur' }]" label="è¯éªåºå" |
| | | prop="testAreaName"> |
| | | <el-input v-model="form.testAreaName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | :visible.sync="dialogVisible1" |
| | | title="æç¤º" |
| | | width="50%" |
| | | @open="openDialog"> |
| | | <div style="height: 40vh;"> |
| | | <el-form ref="form1" :model="form1" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="æ¥æ"> |
| | | <el-date-picker |
| | | v-model="form1.recordDate" |
| | | format="yyyy-MM-dd" |
| | | placeholder="è¯·éæ©æ¥æ" |
| | | size="small" |
| | | style="width: 50%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åæ¶é´"> |
| | | <el-time-picker |
| | | v-model="form1.morningTestTime" |
| | | size="small" |
| | | value-format="HH:mm:ss" |
| | | format="HH:mm:ss" |
| | | style="width: 100%" |
| | | placeholder="è¯·éæ©æ¶é´"> |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸å温度"> |
| | | <el-input v-model="form1.morningTemp" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸å湿度"> |
| | | <el-input v-model="form1.morningHum" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åè®°å½å"> |
| | | <el-select v-model="form1.morningRecorderId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åæ¶é´"> |
| | | <el-time-picker |
| | | v-model="form1.afternoonTime" |
| | | size="small" |
| | | value-format="HH:mm:ss" |
| | | format="HH:mm:ss" |
| | | style="width: 100%" |
| | | placeholder="è¯·éæ©æ¶é´"> |
| | | </el-time-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸å温度"> |
| | | <el-input v-model="form1.afternoonTemp" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸å湿度"> |
| | | <el-input v-model="form1.afternoonHum" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¸åè®°å½å"> |
| | | <el-select v-model="form1.afternoonRecorderId" clearable filterable placeholder="è¯·éæ©" |
| | | size="small" style="width: 100%;"> |
| | | <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="夿³¨"> |
| | | <el-input |
| | | v-model="form1.note" |
| | | :rows="2" |
| | | placeholder="请è¾å
¥å
容" |
| | | type="textarea"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible1 = false">å æ¶</el-button> |
| | | <el-button type="primary" :loading="submitLoading" @click="addPowerSupplyStability1">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="approvalDialog" title="确认" width="30%" @close="subjoin = ''"> |
| | | <span> |
| | | å¢è¡¥ä¿¡æ¯ï¼ |
| | | <el-input v-model="subjoin" type="textarea"></el-input> |
| | | </span> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button :loading="approvalLoading" @click="subjoin = '', approvalDialog = false">ä¸ç¡®è®¤</el-button> |
| | | <el-button :loading="approvalLoading" type="primary" @click="handleApproval">确 认</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | search: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0, |
| | | testAreaName: '' |
| | | }, |
| | | search1: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0 |
| | | }, |
| | | tableData: [], |
| | | tableData1: [], |
| | | dialogVisible: false, |
| | | submitLoading: false, |
| | | dialogVisible1: false, |
| | | form: {}, |
| | | form1: {}, |
| | | saveRow: {}, |
| | | responsibleOptions: [], |
| | | approvalDialog: false, |
| | | approvalLoading: false, |
| | | subjoin: '', |
| | | approvalRow: {}, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.initData() |
| | | }, |
| | | watch: { |
| | | dialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.form = { |
| | | } |
| | | } |
| | | }, |
| | | dialogVisible1(newVal) { |
| | | if (!newVal) { |
| | | this.form1 = { |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | openApprovalDialog (row) { |
| | | this.approvalDialog = true |
| | | this.approvalRow = row |
| | | }, |
| | | handleApproval () { |
| | | this.approvalLoading = true |
| | | const params = { |
| | | dateId: this.approvalRow.dateId, |
| | | subjoin: this.subjoin, |
| | | } |
| | | this.$axios.post(this.$api.facilitiesAndEnvironment.affirmFeTempHumDate, params, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs: true |
| | | }).then(res => { |
| | | this.approvalLoading = false |
| | | if (res.code === 200) { |
| | | this.$message.success('确认æåï¼') |
| | | this.approvalDialog = false |
| | | this.initData() |
| | | } |
| | | }).catch(err => { |
| | | this.approvalDialog = false |
| | | }) |
| | | }, |
| | | openDialog() { |
| | | this.$axios.get(this.$api.deviceScope.selectUserList).then(res => { |
| | | if (res.code == 200) { |
| | | this.responsibleOptions = res.data |
| | | } |
| | | }) |
| | | }, |
| | | addPowerSupplyStability() { |
| | | this.$refs.form.validate((valid) => { |
| | | if (valid) { |
| | | this.submitLoading = true |
| | | this.$axios.post(this.$api.facilitiesAndEnvironment.addFeTempHumDate, this.form, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æ°å¢æå!') |
| | | this.submitLoading = false |
| | | this.initData() |
| | | this.dialogVisible = false |
| | | } |
| | | }).catch(err => { |
| | | this.submitLoading = false |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | addPowerSupplyStability1() { |
| | | if (!this.saveRow) { |
| | | this.$message.warning("è¯·éæ©è¯éªåºåï¼") |
| | | return |
| | | } |
| | | this.$refs.form1.validate((valid) => { |
| | | this.submitLoading = true |
| | | if (valid) { |
| | | this.form1.dateId = this.saveRow.dateId |
| | | this.$axios.post(this.$api.facilitiesAndEnvironment.addFeTempHumRecord, this.form1, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('æ°å¢æå!') |
| | | this.submitLoading = false |
| | | this.initData1(this.saveRow.dateId) |
| | | this.dialogVisible1 = false |
| | | } |
| | | }).catch(err => { |
| | | this.submitLoading = false |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | clickRow(row) { |
| | | this.saveRow = row |
| | | this.initData1(row.dateId) |
| | | }, |
| | | edit(row) { |
| | | this.form = {...row} |
| | | this.dialogVisible = true |
| | | }, |
| | | deleteRowFun(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeTempHumDate + '?dateId=' + row.dateId).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData() |
| | | }) |
| | | }) |
| | | }, |
| | | edit1(row) { |
| | | this.form1 = {...row} |
| | | this.dialogVisible1 = true |
| | | }, |
| | | // å¯¼åº |
| | | downLoadPost(row) { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.exportTemperatureAndHumidityRecords + '?dateId=' + row.dateId,{responseType: "blob"}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | //å°Blob å¯¹è±¡è½¬æ¢æå符串 |
| | | let reader = new FileReader(); |
| | | reader.readAsText(blob, 'utf-8'); |
| | | reader.onload = () => { |
| | | try { |
| | | let result = JSON.parse(reader.result); |
| | | if (result.message) { |
| | | this.$message.error(result.message); |
| | | } else { |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = '温湿度记å½' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } catch (err) { |
| | | console.log(err); |
| | | const url = URL.createObjectURL(blob); |
| | | const link = document.createElement('a'); |
| | | link.href = url; |
| | | link.download = '温湿度记å½' + '.docx'; |
| | | link.click(); |
| | | this.$message.success('å¯¼åºæå') |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | deleteRowFun1(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$axios.delete(this.$api.facilitiesAndEnvironment.deleteFeTempHumRecord + '?tempHumId=' + row.tempHumId).then(res => { |
| | | this.$message.success('å 餿åï¼') |
| | | this.initData1(this.saveRow.dateId) |
| | | }) |
| | | }) |
| | | }, |
| | | initData() { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getFeTempHumDate + '?size=' + this.search.size + '¤t=' + this.search.current + '&testAreaName=' + this.search.testAreaName).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData = res.data.records; |
| | | this.search.total = res.data.total; |
| | | if (res.data.records.length === 0) { |
| | | this.tableData1 = [] |
| | | this.saveRow.monthDate = '' |
| | | } |
| | | }); |
| | | }, |
| | | initData1(dateId) { |
| | | this.$axios.get(this.$api.facilitiesAndEnvironment.getFeTempHumRecordPage + '?size=' + this.search1.size + '¤t=' + this.search1.current + '&dateId=' + dateId).then(res => { |
| | | if (res.code === 201) return; |
| | | this.tableData1 = res.data.records; |
| | | this.search1.total = res.data.total; |
| | | }); |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.search.size = val; |
| | | this.initData(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.search.current = val; |
| | | this.initData(); |
| | | }, |
| | | handleSizeChange1(val) { |
| | | this.search1.size = val; |
| | | this.initData1(); |
| | | }, |
| | | handleCurrentChange1(val) { |
| | | this.search1.current = val; |
| | | this.initData1(); |
| | | }, |
| | | clickAdd() { |
| | | this.dialogVisible = true |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | height: 3em; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog v-loading="diaLoading" :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :visible.sync="formDia" |
| | | title="ä¸åºå¤çä¿¡æ¯" |
| | | width="80%" @close="closeThreeWastesDia"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="auto"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="夿³¨" prop="purposes"> |
| | | <el-input v-model="form.remark" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | <div style="text-align: right;margin-bottom: 10px"> |
| | | <el-button size="small" type="primary" @click="addRow">æ·»å </el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">æ¸
空</el-button> |
| | | </div> |
| | | <el-table :data="wastesDetailList" border height="300" style="width: 100%"> |
| | | <el-table-column align="center" label="åºå·" type="index" width="60" /> |
| | | <el-table-column header-align="center" label="æ¥æ¶äºº" prop="acceptor"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.acceptor" size="small"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="æ¥æ¶åä½" prop="receivingUnit"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.receivingUnit" size="small"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="åç§°" prop="designation"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.designation" size="small"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="移交人" prop="transferPeople" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.transferPeople" size="small"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="ä½ç§¯" prop="volume" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <el-input v-model="row.volume" size="small"/> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="éå¤çæ¥æ" prop="deliveryDate" width="180"> |
| | | <template slot-scope="{row}"> |
| | | <!-- <el-input v-model="row.deliveryDate" size="small"/> --> |
| | | <el-date-picker |
| | | value-format="yyyy-MM-dd" |
| | | style="width: 100%" |
| | | format="yyyy-MM-dd" |
| | | size="small" |
| | | v-model="row.deliveryDate" |
| | | type="date" |
| | | placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeThreeWastesDia">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="handleEdit">æ 交</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getInternalWastesOne, |
| | | addInternalWastes, |
| | | updateInternalWastes |
| | | } from '@/api/cnas/resourceDemand/facilitiesEnvironment/internalWastes' |
| | | |
| | | export default { |
| | | name: 'three-wastes-dialog', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | formDia: false, |
| | | diaLoading: false, |
| | | loading: false, |
| | | form: { |
| | | remark: '', |
| | | wastesId: '', |
| | | }, |
| | | rules: { |
| | | remark: [{required: false, message: '请填å夿³¨',trigger: 'blur'}], |
| | | }, |
| | | wastesDetailList: [], |
| | | operationType: '', |
| | | }; |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æå¼å¼¹æ¡ |
| | | openDia (type, row) { |
| | | this.formDia = true |
| | | this.operationType = type |
| | | if (type !== 'add') { |
| | | this.searchInfo(row) |
| | | } |
| | | }, |
| | | // æ¥è¯¢è¯¦æ
|
| | | searchInfo (row) { |
| | | this.diaLoading = true |
| | | getInternalWastesOne({wastesId: row.wastesId}).then(res => { |
| | | this.diaLoading = false |
| | | if (res.code === 200){ |
| | | this.form = res.data |
| | | this.wastesDetailList = this.form.wastesDetailList |
| | | } |
| | | }).catch(err => { |
| | | console.log(err) |
| | | this.diaLoading = false |
| | | }) |
| | | }, |
| | | // æäº¤å¼¹æ¡æ°æ® |
| | | handleEdit () { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | if (this.wastesDetailList.length === 0) { |
| | | this.$message.warning('请添å è¡¨æ ¼æ°æ®') |
| | | return |
| | | } |
| | | this.loading = true |
| | | const internalImplementDto = this.HaveJson(this.form) |
| | | internalImplementDto.wastesDetailList = this.HaveJson(this.wastesDetailList) |
| | | if (this.operationType === 'add') { |
| | | addInternalWastes(internalImplementDto).then(res => { |
| | | this.loading = false |
| | | if (res.code === 200){ |
| | | this.$message.success('æä½æå') |
| | | this.closeThreeWastesDia() |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } else if (this.operationType === 'edit') { |
| | | updateInternalWastes(internalImplementDto).then(res => { |
| | | this.loading = false |
| | | if (res.code === 200){ |
| | | this.$message.success('æä½æå') |
| | | this.closeThreeWastesDia() |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.loading = false |
| | | }) |
| | | } |
| | | } else { |
| | | console.log('error submit!!'); |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // å¢å è¡¨æ ¼è¡æ°æ® |
| | | addRow () { |
| | | this.wastesDetailList.push({ |
| | | acceptor: '', |
| | | receivingUnit: '', |
| | | designation: '', |
| | | transferPeople: '', |
| | | volume: '', |
| | | deliveryDate: '', |
| | | }) |
| | | }, |
| | | // æ¸
ç©ºè¡¨æ ¼æ°æ® |
| | | clearTable () { |
| | | this.wastesDetailList = [] |
| | | }, |
| | | closeThreeWastesDia () { |
| | | this.$refs.form.resetFields(); |
| | | this.formDia = false |
| | | this.$emit('closeThreeWastesDia') |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.remark"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">æ¥ è¯¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" @pagination="pagination" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <three-wastes-dialog v-if="threeWastesDia" ref="threeWastesDia" @closeThreeWastesDia="closeThreeWastesDia"></three-wastes-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ThreeWastesDialog from './three-wastes-dialog.vue'; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | | pageInternalWastes, |
| | | removeStandardSubstance, |
| | | exportInternalWastes |
| | | } from '@/api/cnas/resourceDemand/facilitiesEnvironment/internalWastes' |
| | | export default { |
| | | name: 'a6-three-wastes-treatment', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { |
| | | ThreeWastesDialog, |
| | | limsTable |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | searchForm: { |
| | | remark: '', |
| | | }, |
| | | tableColumn: [ |
| | | { |
| | | label: 'å建æ¶é´', |
| | | prop: 'createTime', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'å建人', |
| | | prop: 'createUserName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: '夿³¨', |
| | | prop: 'remark', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¿®æ¹æ¶é´', |
| | | prop: 'updateTime', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | label: 'ä¿®æ¹äºº', |
| | | prop: 'updateUserName', |
| | | minWidth: '100' |
| | | }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | | minWidth: '220', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: '导åº', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row) |
| | | } |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.openFormDia('edit', row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | color: '#f56c6c', |
| | | clickFun: (row) => { |
| | | this.delPlan(row) |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | tableData: [], |
| | | tableLoading: false, |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | total: 0, |
| | | threeWastesDia: false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.searchList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList () { |
| | | this.tableLoading = true |
| | | pageInternalWastes({...this.page,...this.searchForm}).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | } |
| | | }).catch(err => { |
| | | console.log('err---', err); |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | // å é¤ |
| | | delPlan (row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æ°æ®, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.tableLoading = true |
| | | removeStandardSubstance({wastesId:row.wastesId}).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200){ |
| | | this.$message.success('å 餿å') |
| | | this.searchList() |
| | | } |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | console.log('err---', err); |
| | | }) |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶å é¤' |
| | | }); |
| | | }); |
| | | }, |
| | | // æ°å¢ï¼ç¼è¾ï¼æ¹åå¼¹æ¡ |
| | | openFormDia (type, row) { |
| | | this.threeWastesDia = true |
| | | this.$nextTick(() => { |
| | | this.$refs.threeWastesDia.openDia(type, row) |
| | | }) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | exportInternalWastes({wastesId:row.wastesId}).then(res =>{ |
| | | this.outLoading = false |
| | | const blob = new Blob([res],{ type: 'application/msword' }); |
| | | this.$download.saveAs(blob, 'ä¸åºå¤ç导åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | closeThreeWastesDia () { |
| | | this.threeWastesDia = false |
| | | this.searchList() |
| | | }, |
| | | // éç½®æ¥è¯¢æ¡ä»¶ |
| | | resetSearchForm () { |
| | | this.searchForm.remark = ''; |
| | | this.searchList() |
| | | }, |
| | | // å页忢 |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.searchList(); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <el-tabs v-model="activeName" :lazy="true" type="border-card"> |
| | | <el-tab-pane label="设æ½åç¯å¢æ¡ä»¶è¦æ±" name="设æ½åç¯å¢æ¡ä»¶è¦æ±"> |
| | | <FacilitiesEnvironmentalConditions v-if="activeName === '设æ½åç¯å¢æ¡ä»¶è¦æ±'"/> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="ä¸åºå¤ç" name="ä¸åºå¤ç"> |
| | | <a6-three-wastes-treatment v-if="activeName === 'ä¸åºå¤ç'"></a6-three-wastes-treatment> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="è¿åºäººå管ç" name="è¿åºäººå管ç"> |
| | | <personnel-management v-if="activeName === 'è¿åºäººå管ç'"></personnel-management> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import FacilitiesEnvironmentalConditions from "../facilitiesEnvironment/component/facilities-environmental-conditions.vue"; |
| | | // // 夿¥äººå管ç |
| | | import ExternalPersonnelManagement from "../facilitiesEnvironment/component/Personnel-management.vue"; |
| | | import A6ThreeWastesTreatment from '../facilitiesEnvironment/component/three-wastes-treatment.vue'; |
| | | // import PersonnelManagement from '../do/a6-facilities-environment/Personnel-management.vue'; |
| | | |
| | | export default { |
| | | components: { |
| | | // PersonnelManagement, |
| | | A6ThreeWastesTreatment, |
| | | ExternalPersonnelManagement, |
| | | FacilitiesEnvironmentalConditions |
| | | }, |
| | | data() { |
| | | return { |
| | | activeName: '设æ½åç¯å¢æ¡ä»¶è¦æ±', |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | padding: 15px 0; |
| | | width: 100%; |
| | | border-radius: 15px; |
| | | } |
| | | v-deep .el-tabs--border-card>.el-tabs__content { |
| | | height: calc(100vh - 9em); |
| | | padding: 0; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <script> |
| | | |
| | | // import FormDia from '../do/a6-standard-material-list/formDia.vue'; |
| | | // import BorrowDia from '../do/a6-standard-material-list/borrowDia.vue'; |
| | | // import ReturnDia from '../do/a6-standard-material-list/returnDia.vue'; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | | getPageStandardSubstance, |
| | |
| | | prop: 'remark', |
| | | minWidth: '100' |
| | | }, |
| | | // { |
| | | // label: 'å建人', |
| | | // prop: 'createUser', |
| | | // minWidth: '100' |
| | | // }, |
| | | { |
| | | label: 'å建æ¶é´', |
| | | prop: 'createTime', |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="quarterSampleDia" title="å£åº¦æ½æ ·" width="90%" @close="quarterSampleDia = false"> |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px"> |
| | | <div style="width: 30%;display: flex;align-items: center;" > |
| | | <span style="width: 50px">ç¼å·ï¼</span> |
| | | <el-input v-model="quarterSampleForm.quarterNo" :disabled="operationType !== 'add'" size="small"></el-input> |
| | | </div> |
| | | <div v-if="operationType === 'add'"> |
| | | <el-button size="small" type="primary" @click="addQuarter">æ·»å </el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">æ¸
空</el-button> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <el-table v-loading="tableLoading" :data="quarterItems" border height="400" style="width: 100%"> |
| | | <el-table-column label="产åç±»å" prop="productType" width="200"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-input v-model="row.productType" size="small"/> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="责任人" prop="dutyUser" width="100"></el-table-column> |
| | | <el-table-column label="åå·" prop="productModel" width="120"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-input v-model="row.productModel" size="small" :disabled="operationType === 'view'"/> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="æ½æ ·æ°é" min-width="340" prop="spotCheckNumber"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-input v-model="row.spotCheckNumber" size="small" :disabled="operationType === 'view'"/> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType === 'add'" label="æ°é" min-width="120" prop="number"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-input v-model="row.number" size="small" :disabled="operationType === 'view'"/> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'add'" label="æ½æ ·æ¶é´" prop="spotCheckTime" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-date-picker v-model="row.spotCheckTime" |
| | | format="yyyy-MM-dd" |
| | | :disabled="operationType === 'view'" |
| | | placeholder="éæ©æ¥æ" |
| | | size="small" |
| | | clearable |
| | | style="width:100%" |
| | | type="date" |
| | | value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'add'" label="è¯æ ·ç»è®º" prop="result" width="130"> |
| | | <template v-slot="scope"> |
| | | <el-select v-model="scope.row.result" placeholder="è¯·éæ©" size="small" clearable :disabled="operationType === 'view'"> |
| | | <el-option label="åæ ¼" value="åæ ¼"></el-option> |
| | | <el-option label="ä¸åæ ¼" value="ä¸åæ ¼"></el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'add'" label="åæ ·äººå" prop="samplingUser" width="120"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-input v-model="row.samplingUser" size="small" :disabled="operationType === 'view'"/> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="夿³¨" prop="itemRemark" width="200"> |
| | | <template slot-scope="{row}"> |
| | | <template> |
| | | <el-input v-model="row.itemRemark" size="small" :disabled="operationType === 'view'"/> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'view'" fixed="right" label="æä½" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="deleteScope(scope.$index)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin: 10px 0"> |
| | | <span style="width: 70px">夿³¨ï¼</span> |
| | | <el-input v-model="quarterSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 43%" type="textarea"></el-input> |
| | | </div> |
| | | <div v-if="operationType !== 'add'"> |
| | | <el-form ref="form" :model="editForm" label-width="70px"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç¼å¶äººï¼"> |
| | | <el-select v-model="editForm.writeUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¼ç¾äººï¼"> |
| | | <el-select v-model="editForm.countersignUser" :disabled="operationType !=='edit'" multiple placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸äººï¼"> |
| | | <el-select v-model="editForm.examineUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¹å人ï¼"> |
| | | <el-select v-model="editForm.ratifyUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="quarterSampleDia = false">å æ¶</el-button> |
| | | <el-button v-if="operationType === 'add'" @click="quarterSampleDia = false">ä¿ å</el-button> |
| | | <el-button v-if="operationType !== 'add' && operationType !== 'view'" type="primary" @click="handleSample">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {addQuarter, getQuarter, updateQuarterOnOrder} from "@/api/business/productSamplingInfo"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | |
| | | export default { |
| | | name: "addQuarterItem", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | tableLoading: false, |
| | | quarterSampleDia: false, // å£åº¦æ½æ ·å¼¹æ¡ |
| | | quarterSampleForm: { |
| | | quarterNo: '', // ç¼å· |
| | | }, |
| | | quarterItems: [], |
| | | quarterTemItems: [], |
| | | operationType: '', |
| | | editForm: { |
| | | quarterId: '', |
| | | writeUser: '', // ç¼å¶äºº |
| | | countersignUser: [], // ä¼ç¾äºº |
| | | examineUser: '', // å®¡æ ¸äºº |
| | | ratifyUser: '', // æ¹å人 |
| | | }, |
| | | userList: [], |
| | | quarterRow: {}, |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getUserList() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | openDia (quarterTemItems, type) { |
| | | this.quarterSampleDia = true |
| | | this.operationType = type |
| | | if (type === 'add') { |
| | | if (quarterTemItems.length > 0) { |
| | | this.quarterItems = quarterTemItems |
| | | } |
| | | this.quarterSampleForm.quarterNo = getCurrentMonthTwoDigits() |
| | | } else { |
| | | this.tableLoading = true |
| | | this.quarterRow = quarterTemItems |
| | | getQuarter({quarterId: quarterTemItems.quarterId}).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.quarterItems = res.data.quarterItems |
| | | this.quarterSampleForm.quarterNo = res.data.quarterNo |
| | | this.quarterSampleForm.remark = res.data.remark |
| | | this.editForm.quarterId = res.data.quarterId |
| | | this.editForm.writeUser = res.data.writeUser |
| | | this.editForm.examineUser = res.data.examineUser |
| | | this.editForm.ratifyUser = res.data.ratifyUser |
| | | if (res.data.countersignUser) { |
| | | this.editForm.countersignUser = res.data.countersignUser.split(",").map(Number) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | // æå¨æ·»å |
| | | addQuarter () { |
| | | this.quarterItems.push({ |
| | | productType: '', |
| | | dutyUser: JSON.parse(localStorage.getItem("user")).name, |
| | | productModel: '', |
| | | spotCheckNumber: '', |
| | | number: '', |
| | | spotCheckTime: '', |
| | | result: '', |
| | | samplingUser: '', |
| | | itemRemark: '', |
| | | }) |
| | | }, |
| | | // æäº¤å£åº¦æ½æ · |
| | | handleSample () { |
| | | this.$confirm('æ¯å¦æäº¤è¯¥æ°æ®', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | if (this.operationType === 'add') { |
| | | this.quarterSampleForm.quarterItems = JSON.parse(JSON.stringify(this.quarterItems)) |
| | | this.quarterSampleForm.quarterItems.forEach(item => { |
| | | item.spotCheckNumber = item.spotCheckNumber + ' ' + (item.number == null ? "" : item.number) |
| | | }) |
| | | addQuarter(this.quarterSampleForm).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æäº¤æå') |
| | | this.quarterItems = [] |
| | | this.$parent.quarterTemItems = [] |
| | | this.closeQuarterSampleDia() |
| | | } |
| | | }) |
| | | } else { |
| | | const params = {...this.editForm} |
| | | if (params.countersignUser.length > 0) { |
| | | params.countersignUser = params.countersignUser.join(',') |
| | | } else { |
| | | params.countersignUser = '' |
| | | } |
| | | params.quarterItems = JSON.parse(JSON.stringify(this.quarterItems)) |
| | | updateQuarterOnOrder(params).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æäº¤æå') |
| | | this.quarterItems = [] |
| | | this.closeQuarterSampleDia() |
| | | } |
| | | }) |
| | | } |
| | | }).catch(() => { |
| | | this.$message({ |
| | | type: 'info', |
| | | message: '已忶' |
| | | }); |
| | | }); |
| | | |
| | | }, |
| | | // æ¸
ç©ºæ½æ ·è®¡å |
| | | clearTable () { |
| | | this.quarterItems = [] |
| | | this.$parent.quarterTemItems = [] |
| | | }, |
| | | // æå¨å é¤ |
| | | deleteScope (index) { |
| | | this.quarterItems.splice(index, 1) |
| | | }, |
| | | // å
³éå£åº¦æ½æ ·å¼¹æ¡ |
| | | closeQuarterSampleDia () { |
| | | this.quarterSampleDia = false |
| | | if (this.operationType === 'add') { |
| | | this.$parent.handleStockList() |
| | | } else { |
| | | this.$parent.refreshTable() |
| | | } |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | function getCurrentMonthTwoDigits() { |
| | | const currentDate = new Date(); |
| | | const year = currentDate.getFullYear(); |
| | | const currentMonth = currentDate.getMonth() + 1; |
| | | return year + currentMonth.toString().padStart(2, '0'); |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div style="display: flex;justify-content: space-between"> |
| | | <el-form :model="entity" ref="entity" size="small" :inline="true"> |
| | | <el-form-item label="ç¼å·" prop="quarterNo" v-show="tabIndex === 0"> |
| | | <el-input v-model="entity.quarterNo" clearable placeholder="请è¾å
¥" |
| | | size="small" |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">æ¥ è¯¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button v-if="tabIndex === 1" size="small" type="primary" @click="yearSample('add')">å¹´åº¦æ½æ ·</el-button> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <div class="table"> |
| | | <ul class="tab"> |
| | | <li v-for="(m,i) in tabList" :key="i" :class="{active:i===tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> |
| | | </ul> |
| | | <!--å£åº¦--> |
| | | <lims-table :tableData="tableData" :column="column" v-if="tabIndex === 0" |
| | | @pagination="pagination" :height="'calc(100vh - 290px)'" |
| | | :page="page" :tableLoading="tableLoading"></lims-table> |
| | | <!--年度--> |
| | | <lims-table :tableData="tableData1" :column="column1" v-if="tabIndex === 1" |
| | | @pagination="pagination1" :height="'calc(100vh - 290px)'" |
| | | key="tableData1" :page="page1" :tableLoading="tableLoading1"></lims-table> |
| | | </div> |
| | | </div> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="yearSampleDia" title="å¹´åº¦æ½æ ·" width="70%" |
| | | @close="closeYearSampleDia"> |
| | | <div style="display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px"> |
| | | <div style="width: 30%;display: flex;align-items: center;" > |
| | | <el-input v-if="operationType !=='view'" v-model="currentYear" size="small"/> |
| | | <span v-if="operationType ==='view'" style="width: 160px;font-size: 18px;font-weight: 600">{{currentYear}}</span> |
| | | </div> |
| | | <div v-if="operationType !== 'view'"> |
| | | <el-button size="small" type="primary" @click="addQuarter">æ·»å </el-button> |
| | | <el-button size="small" type="danger" @click="clearTable">æ¸
空</el-button> |
| | | </div> |
| | | </div> |
| | | <div> |
| | | <el-table :data="yearItems" border height="450" style="width: 100%"> |
| | | <el-table-column label="ç±»å«" prop="yearType" width="240"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.yearType" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.yearType}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="1" prop="january" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.january" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.january}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="2" prop="february" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.february" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.february}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="3" prop="march" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.march" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.march}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="4" prop="april" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.april" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.april}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="5" prop="may" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.may" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.may}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="6" prop="june" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.june" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.june}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="7" prop="july" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.july" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.july}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="8" prop="august" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.august" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.august}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="9" prop="september" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.september" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.september}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="10" prop="october" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.october" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.october}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="11" prop="november" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.november" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.november}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column header-align="center" label="12" prop="december" width="160"> |
| | | <template slot-scope="{row}"> |
| | | <template v-if="operationType !== 'view'"> |
| | | <el-input v-model="row.december" size="small" type="textarea" :rows="4"/> |
| | | </template> |
| | | <template v-else> |
| | | <span size="small">{{row.december}}</span> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-if="operationType !== 'view'" fixed="right" label="æä½" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="deleteScope(scope.$index)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 10px"> |
| | | <span style="width: 70px">注æäºé¡¹ï¼</span> |
| | | <el-input v-model="yearSampleForm.tableRemark" :disabled="operationType === 'view'" size="small" style="width: 50%" type="textarea"></el-input> |
| | | </div> |
| | | <div style="display: flex;align-items: center;margin-top: 10px"> |
| | | <span style="width: 70px">夿³¨ï¼</span> |
| | | <el-input v-model="yearSampleForm.remark" :disabled="operationType === 'view'" size="small" style="width: 50%" type="textarea"></el-input> |
| | | </div> |
| | | <div v-if="operationType !== 'add'"> |
| | | <el-form ref="form" :model="editYearFormRow" label-width="70px"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç¼å¶äººï¼"> |
| | | <el-select v-model="editYearFormRow.writeUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¼ç¾äººï¼"> |
| | | <el-select v-model="editYearFormRow.countersignUser" :disabled="operationType !=='edit'" multiple placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å®¡æ ¸äººï¼"> |
| | | <el-select v-model="editYearFormRow.examineUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¹å人ï¼"> |
| | | <el-select v-model="editYearFormRow.ratifyUser" :disabled="operationType !=='edit'" placeholder="è¯·éæ©" size="small" style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeYearSampleDia">å æ¶</el-button> |
| | | <el-button v-if="operationType !== 'view'" type="primary" @click="handleSample">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <add-quarter-item ref="addQuarterItem"></add-quarter-item> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import AddQuarterItem from "./components/addQuarterItem.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { |
| | | addSpotCheckYear, |
| | | deleteQuarter, deleteSpotCheckYear, |
| | | finalReportQuarter, |
| | | finalReportSpotCheckYear, |
| | | getQuarterPage, getSpotCheckYear, getSpotCheckYearPage, updateSpotCheckYear |
| | | } from "@/api/business/productSamplingInfo"; |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | |
| | | export default { |
| | | name: "b1-product-sampling-info", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {limsTable, AddQuarterItem}, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | upIndex: 0, |
| | | tabIndex: 0, |
| | | tabList: [ |
| | | { |
| | | label: 'å£åº¦', |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: '年度', |
| | | value: 1 |
| | | }, |
| | | ], |
| | | entity: { |
| | | quarterNo: null, |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | {label: 'ç¼å·', prop: 'quarterNo'}, |
| | | {label: '夿³¨', prop: 'remark'}, |
| | | {label: 'å建人', prop: 'createUserName'}, |
| | | {label: 'å建æ¶é´', prop: 'createTime'}, |
| | | { |
| | | dataType: 'action', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.editForm(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¥ç', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.viewQuarterInfo(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.handleDown(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.deleteQuarterInfo(row); |
| | | }, |
| | | } |
| | | ] |
| | | } |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | current:1 |
| | | }, |
| | | tableData1: [], |
| | | tableLoading1: false, |
| | | column1: [ |
| | | { label: 'åç§°', prop: 'yearHead' }, |
| | | { label: 'å建人', prop: 'createUserName' }, |
| | | { label: 'å建æ¶é´', prop: 'createTime' }, |
| | | { |
| | | dataType: 'action', |
| | | label: 'æä½', |
| | | operation: [ |
| | | { |
| | | name: 'ç¼è¾', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.editYearForm(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'æ¥ç', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.viewYearInfo(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'ä¸è½½', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.download(row); |
| | | }, |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | type: 'text', |
| | | clickFun: (row) => { |
| | | this.deleteYearInfo(row); |
| | | }, |
| | | }, |
| | | ] |
| | | } |
| | | ], |
| | | page1: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 1 |
| | | }, |
| | | yearSampleDia: false, // å¹´åº¦æ½æ · |
| | | yearSampleForm: { |
| | | tableRemark: '', |
| | | remark: '' |
| | | }, |
| | | yearItems: [], |
| | | currentYear: '', |
| | | operationType: '', |
| | | userList: [], |
| | | yearRow: {}, |
| | | editYearFormRow: { |
| | | yearId: '', |
| | | writeUser: '', // ç¼å¶äºº |
| | | countersignUser: null, // ä¼ç¾äºº |
| | | examineUser: '', // å®¡æ ¸äºº |
| | | ratifyUser: '', // æ¹å人 |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // æ¥è¯¢åè° |
| | | refreshTable(e) { |
| | | if (this.tabIndex === 0) { |
| | | this.getQuarterPageList() |
| | | } else if (this.tabIndex === 1) { |
| | | this.getSpotCheckYearPageList() |
| | | } |
| | | }, |
| | | getQuarterPageList () { |
| | | this.tableLoading = true |
| | | getQuarterPage({ |
| | | ...this.page,...this.entity |
| | | }).then(res => { |
| | | this.tableLoading = false |
| | | this.page.total = res.data.total |
| | | this.tableData = res.data.records |
| | | }).catch(err => { |
| | | this.tableLoading = false |
| | | }) |
| | | }, |
| | | getSpotCheckYearPageList () { |
| | | this.tableLoading1 = true |
| | | getSpotCheckYearPage({ |
| | | ...this.page1 |
| | | }).then(res => { |
| | | this.tableLoading1 = false |
| | | this.page1.total = res.data.total |
| | | this.tableData1 = res.data.records |
| | | }).catch(err => { |
| | | this.tableLoading1 = false |
| | | }) |
| | | }, |
| | | // éç½® |
| | | refresh() { |
| | | this.resetForm('entity') |
| | | this.refreshTable() |
| | | }, |
| | | pagination (page) { |
| | | this.page.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | pagination1 (page) { |
| | | this.page1.size = page.limit |
| | | this.refreshTable() |
| | | }, |
| | | // ç¼è¾å£åº¦æ½æ · |
| | | editForm (row) { |
| | | this.$refs.addQuarterItem.openDia(row, 'edit') |
| | | }, |
| | | // æ¥çå£åº¦æ½æ · |
| | | viewQuarterInfo (row) { |
| | | this.$refs.addQuarterItem.openDia(row, 'view') |
| | | }, |
| | | // å é¤å£åº¦æ½æ · |
| | | deleteQuarterInfo (row) { |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteQuarter({quarterId: row.quarterId}).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => {}) |
| | | }, |
| | | // å¯¼åº |
| | | handleDown (row) { |
| | | let randomNum = Math.random(); |
| | | finalReportQuarter({quarterId: row.quarterId, random: randomNum}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, 'å£åº¦æ½æ ·ä¿¡æ¯å¯¼åº.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // 年度ä¸è½½ |
| | | download(row) { |
| | | finalReportSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | this.outLoading = false |
| | | const blob = new Blob([res], { type: 'application/octet-stream' }); |
| | | this.$download.saveAs(blob, row.yearHead + '.docx') |
| | | this.$message.success('å¯¼åºæå') |
| | | }) |
| | | }, |
| | | // å é¤å¹´åº¦æ½æ · |
| | | deleteYearInfo (row) { |
| | | this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { |
| | | confirmButtonText: "ç¡®å®", |
| | | cancelButtonText: "åæ¶", |
| | | type: "warning" |
| | | }).then(() => { |
| | | deleteSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success('å 餿å') |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | }).catch(() => {}) |
| | | }, |
| | | // æ¥ç年度详æ
|
| | | viewYearInfo (row) { |
| | | this.operationType = 'view' |
| | | this.getUserList() |
| | | this.yearSampleDia = true |
| | | this.yearRow = row |
| | | getSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | if (res.code === 200) { |
| | | this.currentYear = res.data.yearHead |
| | | this.yearItems = res.data.yearItems |
| | | this.yearSampleForm.tableRemark = res.data.tableRemark |
| | | this.yearSampleForm.remark = res.data.remark |
| | | this.editYearFormRow.yearId = res.data.yearId |
| | | this.editYearFormRow.writeUser = res.data.writeUser |
| | | this.editYearFormRow.examineUser = res.data.examineUser |
| | | this.editYearFormRow.ratifyUser = res.data.ratifyUser |
| | | if (res.data.countersignUser) { |
| | | this.editYearFormRow.countersignUser = res.data.countersignUser.split(",").map(Number) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // ç¼è¾å¹´åº¦æ½æ · |
| | | editYearForm (row) { |
| | | this.operationType = 'edit' |
| | | this.getUserList() |
| | | this.yearSampleDia = true |
| | | getSpotCheckYear({yearId: row.yearId}).then(res => { |
| | | if (res.code === 200) { |
| | | this.currentYear = res.data.yearHead |
| | | this.yearItems = res.data.yearItems |
| | | this.yearSampleForm.tableRemark = res.data.tableRemark |
| | | this.yearSampleForm.remark = res.data.remark |
| | | this.editYearFormRow.yearId = res.data.yearId |
| | | this.editYearFormRow.writeUser = res.data.writeUser |
| | | this.editYearFormRow.examineUser = res.data.examineUser |
| | | this.editYearFormRow.ratifyUser = res.data.ratifyUser |
| | | if (res.data.countersignUser) { |
| | | this.editYearFormRow.countersignUser = res.data.countersignUser.split(",").map(Number) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // æäº¤å¹´åº¦è®¡å |
| | | handleSample () { |
| | | if (this.operationType === 'add') { |
| | | this.yearSampleForm.yearItems = JSON.parse(JSON.stringify(this.yearItems)) |
| | | this.yearSampleForm.yearHead = this.currentYear |
| | | addSpotCheckYear(this.yearSampleForm).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('æäº¤æå') |
| | | this.yearSampleForm = {} |
| | | this.yearItems = [] |
| | | this.closeYearSampleDia() |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | } else { |
| | | const params = {...this.editYearFormRow} |
| | | if (params.countersignUser != null) { |
| | | params.countersignUser = params.countersignUser.join(',') |
| | | } |
| | | params.yearItems = JSON.parse(JSON.stringify(this.yearItems)) |
| | | params.tableRemark = this.yearSampleForm.tableRemark |
| | | params.remark = this.yearSampleForm.remark |
| | | updateSpotCheckYear(params).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('ä¿®æ¹æå') |
| | | this.yearSampleForm = {} |
| | | this.editYearFormRow = { |
| | | yearId: '', |
| | | writeUser: '', // ç¼å¶äºº |
| | | countersignUser: [], // ä¼ç¾äºº |
| | | examineUser: '', // å®¡æ ¸äºº |
| | | ratifyUser: '', // æ¹å人 |
| | | } |
| | | this.yearItems = [] |
| | | this.closeYearSampleDia() |
| | | this.refreshTable() |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | yearSample (type) { |
| | | this.operationType = type |
| | | const currentDate = new Date(); |
| | | this.yearSampleDia = true |
| | | this.currentYear = currentDate.getFullYear() + 'å¹´å¹´åº¦æ½æ£è®¡å' |
| | | }, |
| | | // æ·»å 年度计å |
| | | addQuarter () { |
| | | this.yearItems.push({}) |
| | | }, |
| | | // æ¸
ç©ºæ½æ ·è®¡å |
| | | clearTable () { |
| | | this.yearItems = [] |
| | | }, |
| | | // æå¨å é¤ |
| | | deleteScope (index) { |
| | | this.yearItems.splice(index, 1) |
| | | }, |
| | | // 忢ä¸åtabè¡¨æ ¼ |
| | | handleTab(m, i) { |
| | | this.tabIndex = i; |
| | | if (this.tabIndex === 0) { |
| | | this.componentData.entity.quarterNo = this.entity.quarterNo |
| | | } |
| | | this.refreshTable() |
| | | }, |
| | | closeYearSampleDia () { |
| | | this.yearSampleForm = { |
| | | tableRemark: '', |
| | | remark: '' |
| | | } |
| | | this.yearItems = [] |
| | | this.yearSampleDia = false |
| | | }, |
| | | getStyle(){ |
| | | return 'height: calc(100% - '+'44'+'px)' |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | margin-bottom: 12px; |
| | | margin-top: 0; |
| | | padding-left: 0; |
| | | } |
| | | |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 6px 14px; |
| | | font-size: 14px; |
| | | color: #333333; |
| | | border: 1px solid #EEEEEE; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .tab li:nth-child(1) { |
| | | border-radius: 8px 0 0 8px; |
| | | } |
| | | |
| | | .tab li:nth-child(2) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | </style> |