Merge branch 'dev' into dev_tides
| | |
| | | let currentInsItem = null; |
| | | // æ¥æ¶å°ä¸»çº¿ç¨å¤çé»è¾çæ¶æ¯ |
| | | self.onmessage = function (event) { |
| | | console.log(2222, event); |
| | | // ä¿å主线ç¨ä¼ è¿æ¥çå¼ |
| | | const data = JSON.parse(event.data); |
| | | if (currentTable != data.currentTable) { |
| | |
| | | } |
| | | |
| | | .el-menu-item, .el-submenu__title { |
| | | overflow: hidden !important; |
| | | text-overflow: ellipsis !important; |
| | | white-space: nowrap !important; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .el-submenu__title span { |
| | | white-space: normal; |
| | | word-break: break-all; |
| | | line-height: 20px; |
| | | flex: 1; |
| | | padding-right: 20px; |
| | | } |
| | | |
| | | .el-menu-item { |
| | | display: flex; |
| | | align-items: center; |
| | | padding-right: 20px !important; |
| | | } |
| | | .el-menu-item span { |
| | | white-space: normal; |
| | | word-break: break-all; |
| | | line-height: 20px; |
| | | flex: 1; |
| | | } |
| | | |
| | | // menu hover |
| | |
| | | methods: { |
| | | templateWrite() { |
| | | var option = {}; |
| | | console.log(2222, this.data); |
| | | if (this.data != null && this.data != "") { |
| | | option = JSON.parse(this.data); |
| | | console.log(11111, option); |
| | | } else { |
| | | let rowlen = {}; |
| | | let columnlen = {}; |
| | |
| | | if (state) { |
| | | this.imgUrl = this.fileUrl.replaceAll('word', 'img') |
| | | } |
| | | console.log(11111, this.imgUrl) |
| | | return state; |
| | | }, |
| | | isPdf() { |
| | |
| | | :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue" |
| | | :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop" |
| | | :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true" |
| | | :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType === 'action' ? getWidth(item.operation) : item.width" align="center"> |
| | | :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType == 'action' ? btnWidth : item.width" align="center"> |
| | | <!-- <div class="123" v-if="item.type == ''"> --> |
| | | <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope"> |
| | | <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" /> |
| | |
| | | </div> |
| | | |
| | | <!-- æé® --> |
| | | <div v-else-if="item.dataType == 'action'"> |
| | | <div v-else-if="item.dataType == 'action'" |
| | | :style="`width:${getWidth(item.operation, scope.row)}`"> |
| | | <template v-for="(o, key) in item.operation"> |
| | | <el-button v-show="o.type != 'upload'" size="mini" v-if="o.showHide ? o.showHide(scope.row) : true" |
| | | :disabled="o.disabled ? o.disabled(scope.row) : false" :icon="iconFn(o)" :plain="o.plain" |
| | |
| | | }, |
| | | rowStyle: { |
| | | type: Object || Function, |
| | | default: () => { }, |
| | | default: () => null, |
| | | }, |
| | | tableData: { |
| | | type: Array, |
| | |
| | | data() { |
| | | return { |
| | | spanList: [], |
| | | btnWidth: "120px", |
| | | }; |
| | | }, |
| | | mounted() { |
| | |
| | | }); |
| | | }, |
| | | methods: { |
| | | getWidth(row) { |
| | | getWidth(row, row0) { |
| | | let count = 0; |
| | | row.forEach((a) => { |
| | | if (a.showHide!==undefined && a.showHide()) { |
| | | if (a.showHide !== undefined && a.showHide(row0)) { |
| | | count += a.name.length; |
| | | } else if(!a.showHide) { |
| | | } else if (!a.showHide) { |
| | | count += a.name.length; |
| | | } |
| | | }); |
| | | return count * 15 + 70 + "px"; |
| | | this.btnWidth = count * 15 + 50 + "px"; |
| | | return count * 15 + 50 + "px"; |
| | | }, |
| | | iconFn(row) { |
| | | if (row.name === "ç¼è¾" || row.name === "ä¿®æ¹") { |
| | |
| | | this.$emit("pagination", { page: page, limit: limit }); |
| | | }, |
| | | indexMethod(index) { |
| | | // return index * 2; |
| | | return (this.page.current - 1) * this.page.size + index + 1; |
| | | }, |
| | | // ç¹å»åå
æ ¼linkäºä»¶ |
| | |
| | | v-if="isUpFile"> |
| | | <input type="file" @change="handleFileUpload" accept="application/pdf" ref="fileInput" /> |
| | | </div> |
| | | <p style="color: red;font-size: 12px;margin: 16px 0;" v-if="canvasNumPages > 0">æç¤ºï¼å¨æä»¶èå´å
ï¼åå»é¼ æ çç« ï¼åå»é¼ æ å·²çå¥½ç« å¤å¯å é¤å½åç« </p> |
| | | <div style="color: red;font-size: 12px;margin: 16px 0;" v-if="canvasNumPages > 0">æç¤ºï¼å¨æä»¶èå´å
ï¼åå»é¼ æ çç« ï¼åå»é¼ æ å·²çå¥½ç« å¤å¯å é¤å½åç« </div> |
| | | <canvas ref="pdfCanvas" @click="e => handleCanvasClick(e, index)" style="border: 1px solid #000;" |
| | | @dblclick="e => removeStamp(e, index)" v-for="(item, index) in canvasNumPages" :key="index"></canvas> |
| | | </div> |
| | |
| | | } |
| | | }, |
| | | loadMore(){ |
| | | console.log('æ»å¨äº',this.isLoding) |
| | | if (this.isLoding) return |
| | | this.isLoding = true |
| | | setTimeout(() => { |
| | |
| | | Vue.prototype.HaveJson = (val) => { |
| | | return JSON.parse(JSON.stringify(val)); |
| | | }; |
| | | Vue.prototype.javaApi = process.env.VUE_APP_BASE_API |
| | | ? process.env.VUE_APP_BASE_API |
| | | : "http://localhost:8001"; |
| | | Vue.prototype.javaApi = "http://114.132.189.42:7012"; |
| | | Vue.prototype.checkPermi = checkPermi; |
| | | Vue.prototype.uploadHeader = { |
| | | Authorization: "Bearer " + getToken(), |
| | |
| | | NProgress.start() |
| | | if (getToken()) { |
| | | to.meta.title && store.dispatch('settings/setTitle', to.meta.title) |
| | | console.log(to.path) |
| | | /* has token*/ |
| | | if (to.path === '/login') { |
| | | next({ path: '/' }) |
| | |
| | | component: () => import("@/views/login"), |
| | | hidden: true, |
| | | }, |
| | | // ç¬¬ä¸æ¹ç»å½é¡µ |
| | | { |
| | | path: "/thirdpartylogin", |
| | | component: () => import("@/views/thirdpartylogin"), |
| | | hidden: true, |
| | | }, |
| | | // ç¬¬ä¸æ¹ç»å½é¡µä¸è½¬ |
| | | { |
| | | path: "/logindemo", |
| | | component: () => import("@/views/logindemo"), |
| | | hidden: true, |
| | | }, |
| | | { |
| | | path: "/callbacklccpn", |
| | | component: () => import("@/views/tideLogin.vue"), |
| | |
| | | hidden: true, |
| | | }, |
| | | { |
| | | path: "", |
| | | path: "/", |
| | | component: Layout, |
| | | redirect: "index", |
| | | children: [ |
| | |
| | | LogOut({ commit, state }) { |
| | | return new Promise((resolve, reject) => { |
| | | logout(state.token) |
| | | .then(() => { |
| | | commit("SET_TOKEN", ""); |
| | | commit("SET_ROLES", []); |
| | | commit("SET_PERMISSIONS", []); |
| | | removeToken(); |
| | | resolve(); |
| | | .then((res) => { |
| | | if (res.data) { |
| | | window.location.href = res.data |
| | | } else { |
| | | commit("SET_TOKEN", ""); |
| | | commit("SET_ROLES", []); |
| | | commit("SET_PERMISSIONS", []); |
| | | removeToken(); |
| | | resolve(); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | |
| | | <template> |
| | | <div> |
| | | <TableCard :showTitle="false"> |
| | | <template slot="form"> |
| | | <div class="action-box"> |
| | | <div></div> |
| | | <div class="flex"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="showDialog(undefined)"> |
| | | æ°å»º |
| | | </el-button> |
| | | <el-button icon="el-icon-upload2" size="small" @click="exportExcel"> |
| | | 导åºExcel |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <div class="flex"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="showDialog(undefined)"> |
| | | æ°å»º |
| | | </el-button> |
| | | <el-button icon="el-icon-upload2" size="small" @click="exportExcel"> |
| | | 导åºExcel |
| | | </el-button> |
| | | </div> |
| | | <limsTable :column="columns" :currentChange="rowClick" :height="'25vh'" :highlightCurrentRow="true" |
| | | :isSelection="false" :rowStyle="tableRowStyle" :table-data="tableData" rowKey="id" |
| | | @pagination="pagination" :page="page" style="margin-top: 18px;"> |
| | | <template v-slot:consumablesTypeSlot="{ row }"> |
| | | {{ findType(row.consumablesType) }} |
| | | </template> |
| | | <template v-slot:table> |
| | | <limsTable :column="columns" :currentChange="rowClick" :height="'25vh'" :highlightCurrentRow="true" |
| | | :isSelection="false" :rowStyle="tableRowStyle" :table-data="tableData" rowKey="id" |
| | | style="margin-top: 18px; padding: 0 15px;"> |
| | | <template v-slot:consumablesTypeSlot="{ row }"> |
| | | {{ findType(row.consumablesType) }} |
| | | </template> |
| | | <template v-slot:operation="scope"> |
| | | <el-button size="small" type="text" @click="showDialog(scope.row)">ç¼è¾</el-button> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="handleDelete(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </limsTable> |
| | | <div class="pagination"> |
| | | <div></div> |
| | | <el-pagination :page-size="pagination.pageSize" :page-sizes="[10, 20, 30, 40]" :total="pagination.total" |
| | | layout="total, sizes, prev, pager, next, jumper" @current-change="handleCurrent" @size-change="handleSize"> |
| | | </el-pagination> |
| | | </div> |
| | | <template v-slot:operation="scope"> |
| | | <el-button size="small" type="text" @click="showDialog(scope.row)">ç¼è¾</el-button> |
| | | <el-button size="small" style="color: #f56c6c" type="text" @click="handleDelete(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </TableCard> |
| | | </limsTable> |
| | | <el-divider></el-divider> |
| | | <div> |
| | | <ConsumableProject ref="consumableProject"></ConsumableProject> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from './index.vue'; |
| | | import Edit from "./Edit.vue" |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | |
| | | |
| | | export default { |
| | | dicts: ["consumables_type"], |
| | | components: { |
| | | TableCard, limsTable, Edit, ConsumableProject |
| | | }, |
| | | components: {limsTable, Edit, ConsumableProject}, |
| | | props: { |
| | | contentsId: { |
| | | type: Number, |
| | |
| | | } |
| | | ], |
| | | tableData: [], |
| | | pagination: { |
| | | page: { |
| | | current: 1, |
| | | pageSize: 20, |
| | | size: 20, |
| | | total: 0 |
| | | }, |
| | | options: [], |
| | |
| | | }, |
| | | methods: { |
| | | async fetchData() { |
| | | procurementSuppliesList({ contentId: this.contentsId }).then(res => { |
| | | procurementSuppliesList({ contentId: this.contentsId, ...this.page }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | | if (this.tableData.length > 0) { |
| | | this.rowClick(this.tableData[0]) |
| | | } |
| | |
| | | this.$download.saveAs(blob, 'èæå表.xlsx') |
| | | }) |
| | | }, |
| | | handleCurrent() { |
| | | }, |
| | | handleSize() { |
| | | pagination(page) { |
| | | this.page.size = page.limit |
| | | this.fetchData() |
| | | }, |
| | | handleDelete(row) { |
| | | deleteProcurementSuppliesList({ id: row.id }).then(res => { |
| | |
| | | this.$refs.consumableProject.fetchListId(row) |
| | | }, |
| | | tableRowStyle({ row }) { |
| | | if (row.currentAmount <= row.lowerLimit) { |
| | | if(row.currentAmount <= row.lowerLimit) { |
| | | return { background: '#ffcaca' } |
| | | } else { |
| | | return {} |
| | | return { background: '#fff' } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | <style scoped> |
| | | .flex { |
| | | display: flex; |
| | | } |
| | | |
| | | .action-box { |
| | | width: 100%; |
| | | padding-top: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .pagination { |
| | | padding-top: 15px; |
| | | padding-right: 10px; |
| | | display: flex; |
| | | justify-content: space-between |
| | | text-align: right; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <el-row class="card-box"> |
| | | <el-col :span="4" v-for="(item, index) in cardList" :key="index"> |
| | | <CardPanel |
| | | :isActive="isActive" |
| | | :data="item" |
| | | :index="index" |
| | | @handleCard="handleCard" |
| | | /> |
| | | </el-col> |
| | | <el-col :span="24" v-if="cardList.length==0" style="color: #909399;font-size: 14px;text-align: center;margin-top: 20px;">ææ æ°æ®</el-col> |
| | | </el-row> |
| | | <TableCard title="èæä¿¡æ¯" :showForm="false" style="margin-top: 5px"> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | style="margin-top: 18px; padding: 0 15px;" |
| | | :height="'20vh'" |
| | | :column="columns" |
| | | :table-data="tableData" |
| | | > |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | <div> |
| | | <el-row class="card-box"> |
| | | <el-col :span="4" v-for="(item, index) in cardList" :key="index"> |
| | | <CardPanel |
| | | :isActive="isActive" |
| | | :data="item" |
| | | :index="index" |
| | | @handleCard="handleCard" |
| | | /> |
| | | </el-col> |
| | | <el-col :span="24" v-if="cardList.length==0" style="color: #909399;font-size: 14px;text-align: center;margin-top: 20px;">ææ æ°æ®</el-col> |
| | | </el-row> |
| | | <div class="title">èæä¿¡æ¯</div> |
| | | <limsTable |
| | | style="margin-top: 18px; padding: 0 15px;" |
| | | :height="'20vh'" |
| | | :column="columns" |
| | | :table-data="tableData" |
| | | > |
| | | </limsTable> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import CardPanel from './CardPanel.vue'; |
| | | import TableCard from './index.vue'; |
| | | import { procurementSuppliesList } from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro" |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | |
| | | export default { |
| | | components: { CardPanel, TableCard, limsTable }, |
| | | components: { CardPanel, limsTable }, |
| | | props: { |
| | | contentsId: { |
| | | type: Number, |
| | |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .title { |
| | | position: relative; |
| | | font-size: 18px; |
| | | color: #333; |
| | | font-weight: 400; |
| | | padding-left: 10px; |
| | | margin-left: 15px; |
| | | } |
| | | |
| | | .title::before { |
| | | position: absolute; |
| | | left: 0; |
| | | top: 4px; |
| | | content: ''; |
| | | width: 4px; |
| | | height: 18px; |
| | | background-color: #3A7BFA; |
| | | border-radius: 2px; |
| | | } |
| | | .card-box { |
| | | width: 100%; |
| | | padding-left: 5px; |
| | |
| | | <template> |
| | | <div> |
| | | <TableCard :showTitle="false"> |
| | | <template slot="form"> |
| | | <div class="action-box"> |
| | | <div></div> |
| | | <div class="flex"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="showDialog"> |
| | | æ·»å é¡¹ç® |
| | | </el-button> |
| | | <el-button icon="el-icon-upload2" size="small" @click="exportExcel"> |
| | | å¯¼åº |
| | | </el-button> |
| | | </div> |
| | | </div> |
| | | <div class="flex"> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="showDialog"> |
| | | æ·»å é¡¹ç® |
| | | </el-button> |
| | | <!-- <el-button icon="el-icon-upload2" size="small" @click="exportExcel">--> |
| | | <!-- 导åº--> |
| | | <!-- </el-button>--> |
| | | </div> |
| | | <limsTable |
| | | :column="columns" |
| | | :height="'25vh'" |
| | | :isSelection="true" |
| | | :table-data="tableData" |
| | | @pagination="pagination" |
| | | :page="page" |
| | | style="margin-top: 18px;" |
| | | > |
| | | <template v-slot:operation="scope"> |
| | | <el-button size="small" type="text" @click="deleteData(scope.row)">å é¤</el-button> |
| | | </template> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="columns" |
| | | :height="'25vh'" |
| | | :isSelection="true" |
| | | :table-data="tableData" |
| | | style="margin-top: 18px; padding: 0 15px;" |
| | | > |
| | | <template v-slot:operation="scope"> |
| | | <el-button size="small" type="text" @click="deleteData(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </limsTable> |
| | | <div class="pagination"> |
| | | <div></div> |
| | | <el-pagination |
| | | :page-size="pagination.pageSize" |
| | | :page-sizes="[10, 20, 30, 40]" |
| | | :total="pagination.total" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | @current-change="handleCurrent" |
| | | @size-change="handleSize" |
| | | > |
| | | </el-pagination> |
| | | </div> |
| | | </template> |
| | | </TableCard> |
| | | </limsTable> |
| | | <AddProject ref="AddProjectRef" @submit="fetchData"/> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from './index.vue'; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import Edit from "./Edit.vue" |
| | | import AddProject from './AddProject.vue'; |
| | |
| | | } from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro"; |
| | | |
| | | export default { |
| | | components: { |
| | | TableCard, limsTable, Edit, AddProject |
| | | }, |
| | | components: {limsTable, Edit, AddProject}, |
| | | data() { |
| | | return { |
| | | columns: [ |
| | |
| | | } |
| | | ], |
| | | tableData: [], |
| | | pagination: { |
| | | page: { |
| | | current: 1, |
| | | pageSize: 20, |
| | | size: 20, |
| | | total: 0 |
| | | }, |
| | | listId: 0, |
| | |
| | | async fetchData() { |
| | | if (this.listId === 0) return |
| | | procurementSuppliesExpendlist({ |
| | | procurementSuppliesListId:this.listId |
| | | procurementSuppliesListId:this.listId, |
| | | ...this.page |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.tableData = res.data |
| | | } |
| | | }) |
| | | }, |
| | | pagination (page) { |
| | | this.page.size = page.limit |
| | | this.fetchData() |
| | | }, |
| | | showDialog() { |
| | | this.$refs.AddProjectRef.openDialog(this.row); |
| | |
| | | } |
| | | }) |
| | | }, |
| | | handleCurrent() { |
| | | }, |
| | | handleSize() { |
| | | }, |
| | | exportExcel() { |
| | | } |
| | | } |
| | |
| | | |
| | | <style scoped> |
| | | .flex { |
| | | display: flex; |
| | | } |
| | | |
| | | .action-box { |
| | | width: 100%; |
| | | padding-top: 10px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | text-align: right; |
| | | } |
| | | |
| | | .pagination { |
| | |
| | | margin-right: 20px; |
| | | margin-bottom: 20px; |
| | | "> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="addOrUpdateStore('add')">æ·»å |
| | | </el-button> |
| | | <el-button icon="el-icon-download" size="small" @click="importExcel"> |
| | | 导åºexcel |
| | | </el-button> |
| | | <el-button size="small" type="primary" @click="searchList">å·æ°</el-button> |
| | | <el-button icon="el-icon-plus" size="small" type="primary" @click="addOrUpdateStore('add')">æ·»å </el-button> |
| | | <el-button icon="el-icon-download" size="small" @click="importExcel">导åºexcel</el-button> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 20em)'" :table-data="storageTableData" |
| | |
| | | consumableOptions: [], |
| | | options: [], |
| | | storageTableData: [], |
| | | searchForm: { |
| | | orderBy: { |
| | | field: "id", |
| | | order: "desc", |
| | | }, |
| | | }, |
| | | saveLoading: false, |
| | | }; |
| | | }, |
| | |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | this.tableLoading = true |
| | | storeList({ ...this.page, ...this.searchForm }).then(res => { |
| | | storeList({ ...this.page}).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.storageTableData = res.data.records |
| | |
| | | </el-tree> |
| | | </div> |
| | | <div class="purchase-right"> |
| | | <el-tabs v-model="activeName" @tab-click="handleClick"> |
| | | <el-tabs v-model="activeName"> |
| | | <el-tab-pane label="èææ»è§" name="first" :lazy="true"> |
| | | <ConsumableOverview v-if="activeName == 'first'" :contentsId="contentsId"></ConsumableOverview> |
| | | </el-tab-pane> |
| | |
| | | } from '@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro' |
| | | |
| | | export default { |
| | | name: 'ServiceAndSupplyPro', |
| | | data() { |
| | | return { |
| | | tabsKey: 0, |
| | |
| | | // ç¹å»æ èç¹ |
| | | handleNodeClick(data) { |
| | | this.contentsId = data.id; |
| | | }, |
| | | handleClick(tab, event) { |
| | | console.log(tab, event); |
| | | }, |
| | | }, |
| | | created() { |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | // import ZTTable from "../caorui/ZTTable/index.vue"; |
| | | // import TableCard from "../caorui/TableCard/index.vue"; |
| | | // import axios from "axios"; |
| | | import FormDia from "../supplierManage/component/formDia.vue"; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | |
| | | } from '@/api/cnas/externalService/supplierManage/supplierManage' |
| | | |
| | | export default { |
| | | name: "a6-supplier-manage-new", |
| | | name: "SupplierManage", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { |
| | | limsTable, |
| | |
| | | import ScrollPagination from '@/components/index/scroll-paging.vue' |
| | | import {selectUserCondition} from "@/api/business/inspectionTask"; |
| | | export default { |
| | | name: 'Personaloverview', |
| | | components: { |
| | | ScrollPagination |
| | | }, |
| | |
| | | } |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | |
| | | import Communicate from './tabs/communicate.vue' |
| | | import {addDepartmentLims, delDepartmentLims, selectCNSAPersonTree} from "@/api/cnas/personal/personalList"; |
| | | export default { |
| | | name: 'PersonnelInfo', |
| | | components: { |
| | | PersonnelList, personnelInformation, PersonnelTraining, JobResponsibilities, rewardPunishmentRecord, TrainingRecord, Mandate, PersonnelCapacity, Communicate |
| | | }, |
| | |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.activeName = this.$route.query.activeName || '人ååºæ¬ä¿¡æ¯' |
| | | this.geList(); |
| | | }, |
| | | methods: { |
| | |
| | | <template> |
| | | <div class="Complaint"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ ·åç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="queryParams.sampleCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æ ·åç¼å·" prop="sampleCode"> |
| | | <el-input v-model="queryParams.sampleCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æè¯åç§°" prop="complainName"> |
| | | <el-input v-model="queryParams.complainName" 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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æè¯åç§°ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="queryParams.complainName" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <div> |
| | | <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">导åº</el-button> |
| | | <el-button size="small" type="primary" @click="openAdd">æ°å¢</el-button> |
| | | </div> |
| | |
| | | } from '@/api/cnas/process/complaint.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | name: 'Complaint', |
| | | components: { |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | | tableLoading: false, |
| | | addPower: false, |
| | | outLoading: false, |
| | | addDialogVisible: false, |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .dialog-body { |
| | |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">æ¥ è¯¢</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style="text-align: right; margin-bottom: 20px"> |
| | | <el-button size="small" type="primary" @click="goAdd">æ°å¢</el-button> |
| | | <div style="text-align: right; margin-bottom: 20px"> |
| | | <el-button size="small" type="primary" @click="goAdd">æ°å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <el-table v-loading="tableListLoading" :data="tableList" |
| | |
| | | import { selectUserCondition } from "@/api/business/inspectionTask"; |
| | | |
| | | export default { |
| | | name: "a7-Inspection-Order-Form", |
| | | name: "Demand", |
| | | components: { limsTable }, |
| | | data() { |
| | | return { |
| | |
| | | this.$emit('closeCarryOutDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | }) |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | name: 'a7-Ensure-results-validity', |
| | | name: 'EnsureResultsValidity', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, filePreview, EvaluateDialog, CarryOutDialog, DetailFormDialog }, |
| | | data() { |
| | |
| | | this.$emit('closeDia') |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | |
| | | this.$emit('closeProcessingDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | this.$emit('closeRecordsDia') |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | this.showStep = step |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | import { mapGetters } from "vuex"; |
| | | |
| | | export default { |
| | | name: 'a7-quality-control-plan', |
| | | name: 'QualityControlPlan', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, RectifyDialogNew, ProcessingSheet, RecordsDialog, DetailFormDialog }, |
| | | data() { |
| | |
| | | minWidth: '160' |
| | | }, { |
| | | dataType: 'action', |
| | | minWidth: '170', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | |
| | | minWidth: '150px' |
| | | }, { |
| | | dataType: 'action', |
| | | width: '260', |
| | | label: 'æä½', |
| | | fixed: 'right', |
| | | operation: [ |
| | |
| | | this.getUserList() |
| | | }, |
| | | getUserList() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition({ type: 2 }).then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <formDIa v-if="formDIa" ref="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIa> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import TableCard from '@/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue'; |
| | | import formDIa from './component/formDIa.vue'; |
| | | import { delMethodVerify, exportMethodVerify, pagesMethodVerify } from '@/api/cnas/process/method/methodVerification' |
| | | |
| | | export default { |
| | | name: 'a7-method-verification', |
| | | name: 'MethodVerification', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { TableCard, limsTable, formDIa }, |
| | | components: { limsTable, formDIa }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | page: { |
| | | size: 20, |
| | | current: 1, |
| | | total: 0 |
| | | }, |
| | | total: 0, |
| | | formDIa: false, |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" |
| | | @pagination="pagination" :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | <lims-table :tableData="tableData" :column="tableColumn" :height="'calc(100vh - 250px)'" |
| | | @pagination="pagination" :page="page" :tableLoading="tableLoading"></lims-table> |
| | | </div> |
| | | <formDIaChange v-if="formDIa" ref="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIaChange> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue'; |
| | | import formDIaChange from './component/formDIaChange.vue'; |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import { |
| | |
| | | } from '@/api/cnas/process/method/standardMethodsChange' |
| | | |
| | | export default { |
| | | name: 'a7-changes-standard-methods', |
| | | name: 'StandardMethodschange', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, formDIaChange, TableCard }, |
| | | components: { limsTable, formDIaChange }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="æ åå·" prop="standardNo"> |
| | | <el-form-item label="æ åå·" prop="standardNo" v-if="tabIndex === '0'"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.standardNo"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="åæ¡£åç§°" prop="archivedName" v-if="tabIndex === '1'"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="searchForm.archivedName"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">æ¥ è¯¢</el-button> |
| | |
| | | <div> |
| | | <div class="table"> |
| | | <div class="table-tab"> |
| | | <el-radio-group v-model="tabIndex" @input="searchList"> |
| | | <el-radio-group v-model="tabIndex" @change="searchList"> |
| | | <el-radio-button label="0">ä»å¹´æ åè®°å½</el-radio-button> |
| | | <el-radio-button label="1">å岿¡£æ¡</el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-if="tabIndex === '0'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table :column="tableColumn" :height="'calc(100vh - 26em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | | <lims-table :column="tableColumn" :height="'calc(100vh - 26em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </lims-table> |
| | | </div> |
| | | <div v-if="tabIndex === '1'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <lims-table :column="oldTableColumn" :height="'calc(100vh - 20em)'" :table-data="oldTableData" |
| | | :table-loading="oldTableLoading" :page="oldPage" @pagination="oldPagination"> |
| | | </lims-table> |
| | | </template> |
| | | </TableCard> |
| | | <lims-table :column="oldTableColumn" :height="'calc(100vh - 20em)'" :table-data="oldTableData" |
| | | :table-loading="oldTableLoading" :page="oldPage" @pagination="oldPagination"> |
| | | </lims-table> |
| | | </div> |
| | | </div> |
| | | <!-- å岿¡£æ¡æ¹åå¼¹æ¡--> |
| | |
| | | <FormDialog v-if="formDialog" ref="formDialog" @closeDia="closeDia"></FormDialog> |
| | | <EditFormDia v-if="editFormDialog" ref="editFormDialog" @closeEditDia="closeEditDia"></EditFormDia> |
| | | <el-dialog :visible.sync="viewRocordDia" title="详æ
" width="80%" @close="approvalDialog = false"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 26em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" style="padding: 0 15px;margin-bottom: 16px" :page="page1" |
| | | @pagination="pagination1"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 26em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" style="padding: 0 15px;margin-bottom: 16px" :page="page1" |
| | | @pagination="pagination1"> |
| | | </limsTable> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import TableCard from '@/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue'; |
| | | import FormDialog from './component/FormDialog.vue'; |
| | | import EditFormDia from './component/EditFormDia.vue'; |
| | | import { |
| | | addSearchNewArchived, exportMethodSearchNew, |
| | | pageMethodSearchNew, pageSearchNewArchived, pageSearchNewBackups, ratifySearchNewArchivedr |
| | | } from '@/api/cnas/process/method/standardNoveltyRetrieval' |
| | | import {selectUserCondition} from "@/api/performance/class"; |
| | | |
| | | export default { |
| | | name: 'a7-standard-novelty-retrieval', |
| | | name: 'StandardNoveltyRetrieval', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { |
| | | FormDialog, |
| | | TableCard, |
| | | limsTable, |
| | | EditFormDia |
| | | }, |
| | |
| | | searchForm: { |
| | | year: '', |
| | | standardNo: '', |
| | | archivedName: '' |
| | | }, |
| | | options: [ |
| | | { label: 'ä¸åå¹´', value: '1' }, |
| | |
| | | methods: { |
| | | // æ¥è¯¢å表 |
| | | searchList() { |
| | | let params = {} |
| | | if (this.tabIndex === '0') { |
| | | params = { |
| | | entity: { |
| | | standardNo: this.searchForm.standardNo, |
| | | }, |
| | | page: this.page |
| | | } |
| | | } else { |
| | | params = { |
| | | entity: {}, |
| | | page: this.oldPage |
| | | } |
| | | } |
| | | if (this.tabIndex === '0') { |
| | | this.tableLoading = true |
| | | pageMethodSearchNew({ ...params.oldPage, ...params.entity }).then(res => { |
| | | pageMethodSearchNew({ standardNo: this.searchForm.standardNo, ...this.page }).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | |
| | | }) |
| | | } else { |
| | | this.oldTableLoading = true |
| | | pageSearchNewArchived({ |
| | | ...params.page, ...params.entity |
| | | }).then(res => { |
| | | pageSearchNewArchived({archivedName: this.searchForm.archivedName, ...this.oldPage}).then(res => { |
| | | this.oldTableLoading = false |
| | | if (res.code === 200) { |
| | | console.log('res>>>>>>>>>>>>', res) |
| | | this.oldTableData = res.data.records |
| | | this.oldPage.total = res.data.total |
| | | } |
| | |
| | | <template> |
| | | <div> |
| | | <div> |
| | | <!-- <div class="view-title"> |
| | | <span>ä¸ç¬¦å项çåå¸</span> |
| | | <span> |
| | | <el-button size="medium" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> --> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 120px">年份ï¼</span> |
| | | <el-input v-model="searchForm.distributionYear" clearable size="small"></el-input> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="small" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <div class="btn"> |
| | | <el-button size="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </div> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="年份" prop="laboratoryName"> |
| | | <el-input v-model="searchForm.distributionYear" clearable size="small"></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 class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 19em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 19em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <form-dia v-if="formDia" ref="formDia" @closeDia="closeDia"></form-dia> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import FormDia from './components/formDia.vue'; |
| | | import { |
| | | pageInconsistentDistribution, |
| | |
| | | } from '@/api/cnas/process/nonconformingWork.js' |
| | | |
| | | export default { |
| | | name: 'a7-distribution-of-nonconforming', |
| | | name: 'NonconformingDistribution', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { FormDia, TableCard, limsTable }, |
| | | components: { FormDia, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .view-title { |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 60px; |
| | | padding-left: 20px; |
| | | } |
| | | |
| | | .search-background { |
| | | width: 100%; |
| | | height: 80px; |
| | | line-height: 80px; |
| | | background-color: #ffffff; |
| | | display: flex; |
| | | position: relative; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | |
| | | .table { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 16px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 120px">åçé¨é¨ï¼</span> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="åçé¨é¨" prop="occurrenceDepartment"> |
| | | <el-input v-model="searchForm.occurrenceDepartment" clearable size="small"></el-input> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="small" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | </div> |
| | | <div class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 19em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | </div> |
| | | </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 class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 19em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" :page="page" |
| | | @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <quality-info v-if="qualityInfo" ref="qualityInfo"></quality-info> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import QualityInfo from './components/qualityInfo.vue'; |
| | | import { |
| | | pageSuperviseDetailAccording, |
| | |
| | | } from '@/api/cnas/process/nonconformingWork.js' |
| | | |
| | | export default { |
| | | name: 'a7-nonconforming-item', |
| | | name: 'NonconformingItem', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { QualityInfo, TableCard, limsTable }, |
| | | components: { QualityInfo, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .view-title { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 60px; |
| | | padding-left: 20px; |
| | | } |
| | | |
| | | .search-background { |
| | | width: 100%; |
| | | height: 80px; |
| | | line-height: 80px; |
| | | background-color: #ffffff; |
| | | display: flex; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | |
| | | .table { |
| | | background-color: #ffffff; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="report-results"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ£éªæ¥åç¼å·ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.insReportCode" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æ£éªæ¥åç¼å·" prop="insReportCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.insReportCode" |
| | | @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> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower">导åº</el-button> |
| | | <el-button size="small" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | </div> |
| | |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | export default { |
| | | name: 'ReportResults', |
| | | components: { |
| | | limsTable |
| | | }, |
| | |
| | | |
| | | <style scoped> |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | } |
| | | |
| | | .tables td { |
| | | height: 40px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | |
| | | .en { |
| | | font-size: 12px; |
| | | word-break: break-word; |
| | | /* èªå¨æè¡ */ |
| | | overflow-wrap: break-word; |
| | | /* 鲿¢æº¢åº */ |
| | | white-space: normal; |
| | | /* é»è®¤æ¢è¡ */ |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | top: 16px; |
| | | right: 20px; |
| | | } |
| | | </style> |
| | |
| | | <div class="capacity-scope"> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;" @tab-click="queryParams.totaldealId = ''"> |
| | | <el-tab-pane label="å¡«å" name="å¡«å" style="height: 100%;" :key="1"> |
| | | <el-button size="small" type="primary" @click="handleAdd0" style="margin-left: 20px;">æ°å¢</el-button> |
| | | <el-button size="small" type="primary" @click="handleAdd0" style="margin-bottom: 10px">æ°å¢</el-button> |
| | | <div class="table" style="height: calc(100% - 200px)" v-if="activeName == 'å¡«å'"> |
| | | <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" |
| | | key="tableData" |
| | | :height="'calc(100vh - 290px)'" :page="page" @pagination="pagination"></lims-table> |
| | | key="tableData" :height="'calc(100vh - 290px)'" :page="page" @pagination="pagination"></lims-table> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="åå²è®°å½" name="åå²è®°å½" style="height: 100%;" :key="2"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å¹´æï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="queryParams0.month" type="month" placeholder="éæ©æ" format="yyyy-MM" |
| | | value-format="yyyy-MM" size="small" @change="refreshTable()"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | </div> |
| | | <el-form :model="queryParams0" ref="queryParams0" size="small" :inline="true"> |
| | | <el-form-item label="å¹´æ" prop="month"> |
| | | <el-date-picker v-model="queryParams0.month" type="month" placeholder="éæ©æ" format="yyyy-MM" |
| | | value-format="yyyy-MM" size="small" @change="refreshTable()"> |
| | | </el-date-picker> |
| | | </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 class="table"> |
| | | <lims-table :tableData="tableData0" :column="column0" :tableLoading="tableLoading" |
| | | key="tableData0" |
| | |
| | | pageProcessTotaldeal, |
| | | } from "@/api/cnas/process/sampleDisposal"; |
| | | export default { |
| | | name: 'SampleDisposal', |
| | | components: { |
| | | limsTable, |
| | | filePreview, |
| | | }, |
| | | name: "SampleDisposal", |
| | | data() { |
| | | return { |
| | | activeName: 'å¡«å', |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 140px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .downPdf { |
| | | opacity: 0 !important; |
| | | } |
| | | |
| | | .tables { |
| | | table-layout: fixed; |
| | | width: 100%; |
| | | } |
| | | |
| | | .tables td { |
| | |
| | | font-size: 14px; |
| | | word-wrap: break-word; |
| | | white-space: normal; |
| | | } |
| | | |
| | | .en { |
| | | font-size: 12px; |
| | | word-break: break-word; |
| | | /* èªå¨æè¡ */ |
| | | overflow-wrap: break-word; |
| | | /* 鲿¢æº¢åº */ |
| | | white-space: normal; |
| | | /* é»è®¤æ¢è¡ */ |
| | | } |
| | | |
| | | .user-info { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-evenly; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .user-info .el-button { |
| | |
| | | <template> |
| | | <div class="uncertainty-evaluation"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ¥ååç§°ï¼</div> |
| | | <div class="search_input"><el-input v-model="queryParams.reportName" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æ¥ååç§°" prop="reportName"> |
| | | <el-input v-model="queryParams.reportName" 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> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <el-button :loading="outLoading" size="small" style="margin-right: 16px;margin-top: 3px;" type="primary" |
| | | @click="handleDown0">导åº</el-button> |
| | | <div style="display: flex;align-items: center;"> |
| | | <el-button :loading="outLoading" size="small" type="primary" style="margin-right: 10px" @click="handleDown0">导åº</el-button> |
| | | <el-upload ref='upload' :action="action" :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'> |
| | | :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'> |
| | | <el-button :loading="upLoading" size="small" type="primary">导å
¥</el-button></el-upload> |
| | | </div> |
| | | </div> |
| | |
| | | } from '@/api/cnas/process/uncertainty.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | name: 'Uncertainty', |
| | | components: { |
| | | limsTable, |
| | | filePreview |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 80px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | top: 16px; |
| | | right: 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | |
| | | <div class="table"> |
| | | <el-table :data="tableList.slice((page.current - 1) * page.size,page.current * page.size)" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | tooltip-effect="dark" style="width: 74%;" height="100%" :span-method="spanMethod"> |
| | | tooltip-effect="dark" height="100%" :span-method="spanMethod"> |
| | | <el-table-column type="index" label="åºå·" align="center" width="65"></el-table-column> |
| | | <el-table-column prop="deviceName" align="center" min-width="100" label="设å¤åç§°"></el-table-column> |
| | | <el-table-column prop="fileType" align="center" label="æä»¶åç¼"></el-table-column> |
| | |
| | | <el-table-column prop="anotherName" align="center" label="å«å" min-width="100"></el-table-column> |
| | | <el-table-column prop="matchingName" align="center" label="å¹é
åç§°" min-width="100"></el-table-column> |
| | | <el-table-column prop="formula" align="center" label="å
¬å¼"></el-table-column> |
| | | <el-table-column prop="section" fixed="right" label="æä½" width="120"> |
| | | <el-table-column fixed="right" label="æä½" width="120" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" @click="dataConfig(scope.row)">æ°éé
ç½®</el-button> |
| | | </template> |
| | |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | width: calc(100vw - 1em); |
| | | height: calc(100vh - 18em); |
| | | } |
| | | |
| | |
| | | { |
| | | label: "设å¤åç±»", prop: "largeCategory", dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.equipmentList.find(m => m.value == params).label |
| | | if (this.equipmentList.find(m => m.value == params)) { |
| | | return this.equipmentList.find(m => m.value == params).label |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | return this.equipmentList.find(m => m.value == params).type |
| | | if (this.equipmentList.find(m => m.value == params)) { |
| | | return this.equipmentList.find(m => m.value == params).type |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | { label: "åä»·", prop: "unitPrice" }, |
| | |
| | | treeDevice, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | name: 'Device', |
| | | components: { |
| | | QuantityValueTraceabilityPlan, |
| | | EquipmentAcceptance, |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | |
| | | <template> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-menu style="height: 100vh;" @select="clickSelect" :default-active="activeName"> |
| | | <el-menu @select="clickSelect" :default-active="activeName"> |
| | | <el-menu-item index="çµæºç¨³å®æ§"> |
| | | <span slot="title">çµæºç¨³å®æ§</span> |
| | | </el-menu-item> |
| | |
| | | </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" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" background |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog :visible.sync="dialogVisible" title="æ°å¢" width="50%" @open="openDialog"> |
| | |
| | | <el-table |
| | | :data="tableData" |
| | | height="calc(100vh - 18em)" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | style="width: 100%"> |
| | | <el-table-column label="åºå·" type="index" width="120"> |
| | | <template v-slot="scope"> |
| | |
| | | </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" |
| | | @size-change="handleSizeChange" background |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog |
| | |
| | | </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"> |
| | | background 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"> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]" background |
| | | :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]" |
| | | <el-pagination :current-page="1" :page-size="search1.size" :page-sizes="[10, 20, 30, 50, 100]" background |
| | | :total="search1.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange1" |
| | | @current-change="handleCurrentChange1"> |
| | | </el-pagination> |
| | |
| | | <template> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | |
| | | <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> |
| | | <div class="capacity-scope"> |
| | | <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> |
| | | |
| | | <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 '../facilitiesEnvironment/component/Personnel-management.vue'; |
| | | |
| | | export default { |
| | | components: { |
| | | // PersonnelManagement, |
| | | A6ThreeWastesTreatment, |
| | | PersonnelManagement, |
| | | FacilitiesEnvironmentalConditions |
| | | }, |
| | | data() { |
| | | return { |
| | | activeName: '设æ½åç¯å¢æ¡ä»¶è¦æ±', |
| | | } |
| | | <script> |
| | | import FacilitiesEnvironmentalConditions from "../facilitiesEnvironment/component/facilities-environmental-conditions.vue"; |
| | | import A6ThreeWastesTreatment from '../facilitiesEnvironment/component/three-wastes-treatment.vue'; |
| | | import PersonnelManagement from '../facilitiesEnvironment/component/Personnel-management.vue'; |
| | | export default { |
| | | name: 'FacilitiesEnvironment', |
| | | components: { |
| | | A6ThreeWastesTreatment, |
| | | PersonnelManagement, |
| | | FacilitiesEnvironmentalConditions |
| | | }, |
| | | data() { |
| | | return { |
| | | activeName: '设æ½åç¯å¢æ¡ä»¶è¦æ±', |
| | | } |
| | | } |
| | | </script> |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .main { |
| | | width: 100%; |
| | | border-radius: 15px; |
| | | } |
| | | |
| | | <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> |
| | | </style> |
| | |
| | | } from '@/api/cnas/resourceDemand/standardMaterailRequistion/standardMaterailRequistion' |
| | | |
| | | export default { |
| | | name: 'StandardMaterailRequistion', |
| | | components: { |
| | | limsTable |
| | | // TableCard, |
| | | // ZTTable, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | import BorrowDia from '../standardMaterial/component/borrowDia.vue'; |
| | | import ReturnDia from '../standardMaterial/component/returnDia.vue'; |
| | | export default { |
| | | name: 'StandardMaterial', |
| | | components: { |
| | | limsTable, |
| | | FormDia, |
| | |
| | | }, |
| | | methods: { |
| | | getTableData() { |
| | | getPageAcceptance(this.form).then(res => { |
| | | getPageAcceptance({...this.form, ...this.page}).then(res => { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | }) |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 150px">ä¸åæ ¼æè¿°ï¼</span> |
| | | <el-input v-model="searchForm.raiseResult" clearable size="small"></el-input> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="small" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="ä¸åæ ¼æè¿°" prop="raiseResult"> |
| | | <el-input v-model="searchForm.raiseResult" clearable size="small"></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 class="table"> |
| | | <div> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 17em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" @pagination="pagination" |
| | | :page="page"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | </div> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 17em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" @pagination="pagination" |
| | | :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | <corrective-info v-if="correctiveInfo" ref="correctiveInfo"></corrective-info> |
| | | <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog"></ViewTestRecord> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import CorrectiveInfo from './components/correctiveInfo.vue'; |
| | | // import QualityInfo from '../do/a7-nonconforming-item/qualityInfo.vue'; |
| | | import ViewTestRecord from './components/ViewTestRecord.vue'; |
| | | import { |
| | | pageSuperviseDetailCorrect, |
| | |
| | | } from '@/api/cnas/systemManagement/correctiveAction.js' |
| | | |
| | | export default { |
| | | name: 'a8-corrective-action', |
| | | name: 'CorrectiveAction', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { |
| | | // QualityInfo, |
| | | CorrectiveInfo, |
| | | limsTable, |
| | | TableCard, |
| | | ViewTestRecord |
| | | }, |
| | | data() { |
| | |
| | | <template> |
| | | <div> |
| | | <div class="capacity-scope"> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span v-if="tabIndex === '0'" class="search-group"> |
| | | <span style="width: 150px">åä½åç§°ï¼</span> |
| | | <el-input v-model="searchForm.unitName" clearable size="small"></el-input> |
| | | </span> |
| | | <span v-if="tabIndex === '1'" class="search-group"> |
| | | <span style="width: 150px">æä»¶åç§°ï¼</span> |
| | | <el-input v-model="searchForm1.fileName" clearable size="small"></el-input> |
| | | </span> |
| | | <span class="search-group"> |
| | | <el-button size="small" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <div class="btn"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="åä½åç§°" prop="unitName" v-if="tabIndex === '0'"> |
| | | <el-input v-model="searchForm.unitName" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶åç§°" prop="fileName" v-if="tabIndex === '1'"> |
| | | <el-input v-model="searchForm1.fileName" clearable size="small"></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 v-if="tabIndex === '0'" size="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | <el-upload v-if="tabIndex === '1'" ref='upload' :action="action" :before-upload="beforeUpload" |
| | | :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'> |
| | | :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'> |
| | | <el-button :loading="upLoading" size="small" type="primary">导å
¥</el-button> |
| | | </el-upload> |
| | | </div> |
| | |
| | | </el-radio-group> |
| | | </div> |
| | | <div v-if="tabIndex === '0'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 22em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" @pagination="pagination" |
| | | :page="page"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 22em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" @pagination="pagination" |
| | | :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | <div v-if="tabIndex === '1'"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 22em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" style="padding: 0 15px;margin-bottom: 16px" @pagination="pagination0"> |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | <limsTable :column="tableColumn1" :height="'calc(100vh - 22em)'" :table-data="tableData1" |
| | | :table-loading="tableLoading1" @pagination="pagination0"> |
| | | </limsTable> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import FormDialog from './components/formDialog.vue'; |
| | | import filePreview from '@/components/Preview/filePreview.vue' |
| | |
| | | } from '@/api/cnas/systemManagement/customerSatisfaction.js' |
| | | |
| | | export default { |
| | | name: 'a8-customer-satisfaction', |
| | | name: 'CustomerSatisfaction', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { filePreview, FormDialog, limsTable, TableCard }, |
| | | components: { filePreview, FormDialog, limsTable }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .view-title { |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | height: 60px; |
| | | padding-left: 20px; |
| | | } |
| | | |
| | | .search-background { |
| | | width: 100%; |
| | | height: 80px; |
| | | line-height: 80px; |
| | | background-color: #ffffff; |
| | | display: flex; |
| | | position: relative; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | |
| | | .table { |
| | | background-color: #ffffff; |
| | | } |
| | | |
| | | .table-tab { |
| | | margin: 0 20px 20px 20px; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | top: 16px; |
| | | right: 20px; |
| | | margin: 0 0 20px 0; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æä»¶åæ§ç³è¯· --> |
| | | <div class="controlled-file-application" style="height: 100%;"> |
| | | <div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ç³è¯·æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="ç³è¯·æä»¶ç¼å·" prop="laboratoryName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @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> |
| | | <!-- <div class="search_thing"> |
| | | <div class="search_label">ç³è¯·äººï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="queryParams.createUserName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> --> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns" style="padding-left: 30px;"> |
| | | <el-button size="small" type="primary" |
| | | @click="addDialogVisible = true, addInfo = {}, file = null">æä»¶åæ§ç³è¯·</el-button> |
| | | <div> |
| | | <el-button size="small" type="primary" icon="el-icon-plus" |
| | | @click="addDialogVisible = true, addInfo = {}, file = null">æä»¶åæ§ç³è¯·</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 5px; |
| | | } |
| | | |
| | | .stamp { |
| | | cursor: pointer; |
| | | border: #fff 1px solid; |
| | |
| | | <template> |
| | | <!-- åæ¾åæ¶è®°å½ --> |
| | | <div class="distribution-collection-record" style="height: 100%;"> |
| | | <div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="queryParams.documentCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input v-model="queryParams.documentCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶åç§°" prop="laboratoryNumber"> |
| | | <el-input v-model="queryParams.name" 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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input v-model="queryParams.name" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns" style="padding-left: 30px;"> |
| | | <el-button v-if="addPower" size="small" type="primary" |
| | | @click="addDialogVisible = true, addInfo = {}, radio = 'åæ¾', file = null">æ·»å åæ¾è®°å½</el-button> |
| | | <div> |
| | | <el-button v-if="addPower" size="small" type="primary" icon="el-icon-plus" |
| | | @click="addDialogVisible = true, addInfo = {}, radio = 'åæ¾', file = null">æ·»å åæ¾è®°å½</el-button> |
| | | <el-button v-if="outPower" :loading="outLoading" size="small" type="primary" @click="handleOut">导åº</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 5px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æä»¶åæ´ç³è¯· --> |
| | | <div class="file-change-request" style="height: 100%;"> |
| | | <div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ç³è¯·æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="queryParams.code" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="ç³è¯·æä»¶ç¼å·" prop="code"> |
| | | <el-input v-model="queryParams.code" 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> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns"> |
| | | <el-button size="small" type="primary" |
| | | @click="addDialogVisible = true, addInfo = {}, currentFile = {}, title = 'æä»¶åæ´ç³è¯·', file = null">æä»¶åæ´ç³è¯·</el-button> |
| | | <div> |
| | | <el-button size="small" type="primary" icon="el-icon-plus" |
| | | @click="addDialogVisible = true, addInfo = {}, currentFile = {}, title = 'æä»¶åæ´ç³è¯·', file = null">æä»¶åæ´ç³è¯·</el-button> |
| | | <el-button :loading="outLoading" size="small" type="primary" @click="handleOut">导åº</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <el-dialog :title="title" :visible.sync="addDialogVisible" top="0vh" width="950px"> |
| | | <el-row> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>ç³è¯·ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.code" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">审æ¹äººï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.checkUser" :disabled="title == 'å®¡æ ¸'" filterable size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <div v-loading="diaLoading"> |
| | | <el-row> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label"><span style="color:red;margin-right: 4px;">*</span>ç³è¯·ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.code" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ææåæ´æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="addInfo.expectAlterDate" :disabled="title == 'å®¡æ ¸'" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" size="small" style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-col> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">审æ¹äººï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.checkUser" :disabled="title == 'å®¡æ ¸'" filterable size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å®é
åæ´æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="addInfo.actuallyAlterDate" :disabled="title == 'å®¡æ ¸'" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" size="small" style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </el-col> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ææåæ´æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="addInfo.expectAlterDate" :disabled="title == 'å®¡æ ¸'" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" size="small" style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="24" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">éæ©æä»¶ï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.alterBeforeCode" :disabled="title == 'å®¡æ ¸'" allow-create clearable filterable |
| | | size="small" style="width: 100%;" @change="getCurrentFile"> |
| | | <el-option v-for="item in fileList" :key="item.documentCode" :label="item.title" |
| | | :value="item.documentCode"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å®é
åæ´æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker v-model="addInfo.actuallyAlterDate" :disabled="title == 'å®¡æ ¸'" format="yyyy-MM-dd" |
| | | placeholder="éæ©æ¥æ" size="small" style="width: 100%;" type="date" value-format="yyyy-MM-dd"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <h4 class="title">å½åæä»¶ä¿¡æ¯</h4> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.documentCode" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.name" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶çæ¬ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.version" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æäº¤äººï¼</div> |
| | | <div class="search_input"><el-select v-model="currentFile.createUser" disabled filterable size="small" |
| | | style="width: 100%;"> |
| | | </el-col> |
| | | <el-col :span="24" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">éæ©æä»¶ï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.alterBeforeCode" :disabled="title == 'å®¡æ ¸'" allow-create clearable filterable |
| | | size="small" style="width: 100%;" @change="getCurrentFile"> |
| | | <el-option v-for="item in fileList" :key="item.documentCode" :label="item.title" |
| | | :value="item.documentCode"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <h4 class="title">å½åæä»¶ä¿¡æ¯</h4> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.documentCode" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.name" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶çæ¬ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.version" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æäº¤äººï¼</div> |
| | | <div class="search_input"><el-select v-model="currentFile.createUser" disabled filterable size="small" |
| | | style="width: 100%;"> |
| | | <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select></div> |
| | | </div> |
| | | </el-col> |
| | | <!-- <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">å®¡æ ¸äººï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="addInfo.version" disabled></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">ä½åºäººï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="addInfo.version" disabled></el-input></div> |
| | | </div> |
| | | </el-col> --> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æäº¤æ¶é´ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.createTime" clearable disabled placeholder="请è¾å
¥" |
| | | size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">å®¡æ ¸æ¶é´ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.effectiveDate" clearable disabled placeholder="请è¾å
¥" |
| | | size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <!-- <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">ä½åºæ¶é´ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="addInfo.version" disabled></el-input></div> |
| | | </div> |
| | | </el-col> --> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶ç¶æï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="currentFile.state" disabled size="small" style="width: 100%;"> |
| | | <el-option v-for="item in fileState" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <!-- <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶è¯´æï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="addInfo.instructions" type="textarea" |
| | | :rows="2" disabled></el-input></div> |
| | | </div> |
| | | </el-col> --> |
| | | <el-col :span="24"> |
| | | <h4 class="title">æä»¶åæ´ç³è¯·</h4> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´åç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterAfterCode" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´ååç§°ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterAfterName" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åä¸çæ¬å¤çï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.method" :disabled="title == 'å®¡æ ¸'" size="small" style="width: 100%;"> |
| | | <el-option label="ä½åº" value="ä½åº"></el-option> |
| | | <el-option label="åæ¡£ä¸å¯ç¨" value="åæ¡£ä¸å¯ç¨"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æäº¤æ¶é´ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.createTime" clearable disabled placeholder="请è¾å
¥" |
| | | size="small"></el-input></div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´åçæ¬ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterAfterVersion" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="16" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´è¯´æï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterNote" :disabled="title == 'å®¡æ ¸'" :rows="2" |
| | | clearable placeholder="请è¾å
¥" size="small" type="textarea"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col v-if="title != 'å®¡æ ¸'" :span="24" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">ç¸å
³éä»¶ï¼</div> |
| | | <div class="search_input"><el-upload v-if="addDialogVisible" :auto-upload="false" :multiple="false" |
| | | :on-change="handleChangeUpload" accept='.pdf' action="#" style="margin: 8px 0 0px 50px;"> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">å®¡æ ¸æ¶é´ï¼</div> |
| | | <div class="search_input"><el-input v-model="currentFile.effectiveDate" clearable disabled placeholder="请è¾å
¥" |
| | | size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">æä»¶ç¶æï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="currentFile.state" disabled size="small" style="width: 100%;"> |
| | | <el-option v-for="item in fileState" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <h4 class="title">æä»¶åæ´ç³è¯·</h4> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´åç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterAfterCode" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´ååç§°ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterAfterName" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åä¸çæ¬å¤çï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.method" :disabled="title == 'å®¡æ ¸'" size="small" style="width: 100%;"> |
| | | <el-option label="ä½åº" value="ä½åº"></el-option> |
| | | <el-option label="åæ¡£ä¸å¯ç¨" value="åæ¡£ä¸å¯ç¨"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="8" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´åçæ¬ï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterAfterVersion" :disabled="title == 'å®¡æ ¸'" clearable |
| | | placeholder="请è¾å
¥" size="small"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="16" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">åæ´è¯´æï¼</div> |
| | | <div class="search_input"><el-input v-model="addInfo.alterNote" :disabled="title == 'å®¡æ ¸'" :rows="2" |
| | | clearable placeholder="请è¾å
¥" size="small" type="textarea"></el-input></div> |
| | | </div> |
| | | </el-col> |
| | | <el-col v-if="title != 'å®¡æ ¸'" :span="24" style="margin-bottom: 16px;"> |
| | | <div class="search_thing" style="width: 100%;"> |
| | | <div class="search_label">ç¸å
³éä»¶ï¼</div> |
| | | <div class="search_input"><el-upload v-if="addDialogVisible" :auto-upload="false" :multiple="false" |
| | | :on-change="handleChangeUpload" accept='.pdf' action="#" style="margin: 8px 0 0px 50px;"> |
| | | <el-button size="small" type="primary">ä¸ä¼ éä»¶</el-button> |
| | | </el-upload></div> |
| | | </div> |
| | | </el-col> |
| | | <UpPdfStamp v-if="title == 'å®¡æ ¸' && addDialogVisible" ref="UpPdfStamp" :isUpFile="false" @uploadPDF="uploadPDF"> |
| | | </UpPdfStamp> |
| | | </el-row> |
| | | </div> |
| | | </el-col> |
| | | <UpPdfStamp v-if="title == 'å®¡æ ¸' && addDialogVisible" ref="UpPdfStamp" :isUpFile="false" @uploadPDF="uploadPDF"> |
| | | </UpPdfStamp> |
| | | </el-row> |
| | | </div> |
| | | <span v-if="title != 'å®¡æ ¸'" slot="footer" class="dialog-footer"> |
| | | <el-button @click="addDialogVisible = false">å æ¶</el-button> |
| | | <el-button :loading="addLoading" type="primary" @click="handleAdd">ç¡® å®</el-button> |
| | |
| | | noCheckLoading: false, |
| | | checkLoading: false, |
| | | addDialogVisible: false, |
| | | diaLoading: false, |
| | | addInfo: {}, |
| | | addPower: false, |
| | | outPower: false, |
| | |
| | | let alterBeforeCode = this.addInfo.alterBeforeCode |
| | | this.getCurrentFile(alterBeforeCode) |
| | | this.addDialogVisible = true |
| | | this.diaLoading = true |
| | | checkManageDocumentAlterPdf({ id: row.id }).then(res => { |
| | | // |
| | | this.diaLoading = false |
| | | const blob = new Blob([res]); |
| | | const file = new File([blob], row.name, { type: 'application/pdf' }) |
| | | this.$refs.UpPdfStamp.lookFile(file) |
| | | this.currentInfo = row |
| | | }).catch(err => { |
| | | this.diaLoading = false |
| | | console.log(err) |
| | | }) |
| | | }, |
| | | // å®¡æ ¸ä¿å |
| | | async uploadPDF(pdfBlob) { |
| | | uploadPDF(pdfBlob) { |
| | | const file = new File([pdfBlob], this.fileName, { type: 'application/pdf' }) |
| | | console.log('file---', file) |
| | | const formData = new FormData(); |
| | | formData.append('file', pdfBlob, this.fileName + '.pdf'); // æä»¶å段 |
| | | formData.append('file', file, this.fileName + '.pdf'); // æä»¶å段 |
| | | formData.append('id', this.currentInfo.id); // æä»¶ååæ®µ |
| | | formData.append('state', this.type); // æä»¶ååæ®µ |
| | | |
| | | let res = await checkManageDocumentAlter(formData) |
| | | this.checkLoading = false |
| | | this.noCheckLoading = false |
| | | if (res.code == 200) { |
| | | checkManageDocumentAlter(formData).then(res => { |
| | | this.$message({ message: 'æä½æå', type: 'success' }); |
| | | this.addDialogVisible = false; |
| | | this.checkLoading = false |
| | | this.noCheckLoading = false |
| | | this.refreshTable() |
| | | return true |
| | | } else { |
| | | this.$message({ message: 'æä½å¤±è´¥', type: 'error' }); |
| | | }).catch(err => { |
| | | this.checkLoading = false |
| | | this.noCheckLoading = false |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | // æäº¤å®¡æ ¸ |
| | | handleCheckSub(type) { |
| | |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 5px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | h4.title { |
| | |
| | | <template> |
| | | <!-- æä»¶æ¸
å --> |
| | | <div class="file-list" style="height: 100%;"> |
| | | <div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.name" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶åç§°" prop="name"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.name" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶ç¶æ" prop="state"> |
| | | <el-select v-model="queryParams.state" size="small" @change="refreshTable()"> |
| | | <el-option :label="item.label" :value="item.value" v-for="(item, index) in fileState" |
| | | :key="index"></el-option> |
| | | </el-select> |
| | | </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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¶æï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="queryParams.state" size="small" @change="refreshTable()"> |
| | | <el-option :label="item.label" :value="item.value" v-for="(item, index) in fileState" |
| | | :key="index"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns" style="padding-left: 30px;"> |
| | | <div> |
| | | <el-upload :action="action" :multiple="false" accept='.xls,.xlsx' :headers="uploadHeader" |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' :on-success="handleSuccessUp" |
| | | :show-file-list="false"> |
| | | :on-change="beforeUpload" :on-error="onError" ref='upload' :on-success="handleSuccessUp" |
| | | :show-file-list="false"> |
| | | <el-button size="small" type="primary" :loading="upLoading">导å
¥</el-button></el-upload> |
| | | </div> |
| | | </div> |
| | |
| | | { |
| | | label: "ç±»å«", prop: "type", width: "120px", dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.fileType.find((m) => m.value == params).label; |
| | | if (this.fileType.find((m) => m.value == params)) { |
| | | return this.fileType.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | return this.fileType.find((m) => m.value == params).type; |
| | | if (this.fileType.find((m) => m.value == params)) { |
| | | return this.fileType.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | |
| | | { |
| | | label: "æä»¶ç¶æ", prop: "state", dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.fileState.find((m) => m.value == params).label; |
| | | if (this.fileState.find((m) => m.value == params)) { |
| | | return this.fileState.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | return this.fileState.find((m) => m.value == params).type; |
| | | if (this.fileState.find((m) => m.value == params)) { |
| | | return this.fileState.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 110px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 5px; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æä»¶ä½åºç³è¯· --> |
| | | <div class="file-obsoletion-request" style="height: 100%;"> |
| | | <div> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"><el-input v-model="queryParams.documentCode" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input v-model="queryParams.documentCode" 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> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns" style="padding-left: 30px;"> |
| | | <el-button size="small" type="primary" |
| | | @click="addDialogVisible = true, addInfo = {}, file = null">æä»¶ä½åºç³è¯·</el-button> |
| | | <div> |
| | | <el-button size="small" type="primary" icon="el-icon-plus" |
| | | @click="addDialogVisible = true, addInfo = {}, file = null">æä»¶ä½åºç³è¯·</el-button> |
| | | <el-button :loading="outLoading" size="small" type="primary" @click="handleOut">导åº</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | <!-- <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ä½åºæ¹å¼ï¼</div> |
| | | <div class="search_input"> |
| | | <el-select v-model="addInfo.method" size="small" style="width: 100%;"> |
| | | <el-option label="ä½åº" value="ä½åº"></el-option> |
| | | <el-option label="æ æ" value="æ æ"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </el-col> --> |
| | | <el-col :span="12" style="margin-bottom: 16px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ææä½åºæ¶é´ï¼</div> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px); |
| | | padding: 20px; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 5px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="file-handling"> |
| | | <div class="capacity-scope"> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;"> |
| | | <el-tab-pane :label="item.name" :name="item.component" v-for="(item, index) in tabList" :key="index" |
| | | style="height: 100%;"> |
| | | <component :is="item.component" :key="item.component"></component> |
| | | <component :is="item.component" :key="item.component" v-if="activeName === item.component"></component> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | |
| | | import FileChangeRequest from './components/FileChangeRequest.vue' |
| | | import FileObsoletionRequest from './components/FileObsoletionRequest.vue' |
| | | export default { |
| | | name: 'DocumentControl', |
| | | components: { |
| | | FileList, |
| | | ControlledFileApplication, |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .file-handling { |
| | | margin-top: 10px; |
| | | height: calc(100% - 20px); |
| | | } |
| | | |
| | | >>>.el-tabs__content { |
| | | height: 100%; |
| | | padding: 0; |
| | | padding-top: 10px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æä»¶å®¡æ¹è®°å½ --> |
| | | <div class="DocumentApprovalRecords"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶åç§°" prop="documentName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openAdd('æ°å¢')">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> |
| | | :height="'calc(100vh - 230px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <!-- æ°å¢/ç¼è¾ --> |
| | | <el-dialog :title="title" :visible.sync="addDia" width="500px"> |
| | | <el-form :model="addForm" ref="addForm" :rules="addRules" label-position="right" label-width="120px"> |
| | | <el-form :model="addForm" ref="addForm" :rules="addRules" label-position="right" label-width="100px"> |
| | | <el-form-item label="æä»¶åç§°" prop="documentName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="addForm.documentName"></el-input> |
| | | </el-form-item> |
| | |
| | | pageManageRecordCheck |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | export default { |
| | | name: 'ApprovalRecord', |
| | | components: { |
| | | limsTable |
| | | }, |
| | |
| | | prop: "documentVersion", |
| | | }, |
| | | { label: "ç¼å¶", prop: "writeUser" }, |
| | | { label: "å®¡æ ¸", prop: "checkUser" }, |
| | | { label: "æ¹å", prop: "ratifyUser" }, |
| | | { label: "æ¹åæ¥æ", prop: "ratifyDate" }, |
| | | { label: "å®¡æ ¸äºº", prop: "checkUserName" }, |
| | | { label: "æ¹å人", prop: "ratifyUserName" }, |
| | | // { label: "æ¹åæ¥æ", prop: "ratifyDate" }, |
| | | { label: "夿³¨", prop: "remark" }, |
| | | { |
| | | dataType: "action", |
| | |
| | | |
| | | <style scoped> |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | } |
| | | |
| | | .search_thing { |
| | | width: 350px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 110px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | right: 16px; |
| | | top: 20px; |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | justify-content: space-between; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- ä½åºæä»¶éæ¯è®°å½ --> |
| | | <div class="ObsoleteDocumentDestructionRecords"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶åç§°" prop="documentName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openAdd">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | export default { |
| | | name: 'CancellationRecord', |
| | | components: { |
| | | limsTable |
| | | }, |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 16px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æææä»¶ï¼å
ãå¤é¨æä»¶ï¼çåæ¾ä¸åæ¶è®°å½ --> |
| | | <div class="DistributionRetrievalRecordsAllDocuments"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶åç§°" prop="documentName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentName" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openAdd">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | name: 'DistributionCollectionRecord', |
| | | components: { |
| | | limsTable |
| | | }, |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- 夿¥æä»¶ç¡®è®¤è®°å½ --> |
| | | <div class="ExternalDocumentConfirmationRecords"> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;"> |
| | | <div class="capacity-scope"> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;" @change="getTableData"> |
| | | <el-tab-pane label="å¡«å" name="å¡«å" style="height: 100%;"> |
| | | <div style="display: flex;align-items: center;justify-content: flex-end;margin-right: 20px;"> |
| | | <div style="display: flex;align-items: center;justify-content: flex-end;margin-bottom: 10px"> |
| | | <el-button size="small" type="primary" @click="openAdd('æ°å¢')" style="margin-left: 20px;">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button size="small" type="primary" :loading="upLoading">导å
¥</el-button></el-upload> |
| | | </div> |
| | | <div class="table" style="height: calc(100% - 200px)"> |
| | | <!-- <ValueTable ref="ValueTable0" :url="$api.manageRecordTotal.pageManageRecordVerify" |
| | | :componentData="componentData0" :key="upIndex0" :delUrl="$api.manageRecordTotal.delManageRecordVerify" |
| | | :upUrl="$api.manageRecordTotal.doManageRecordVerify" /> --> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading0" |
| | | :height="'calc(100vh - 270px)'" @pagination="pagination0"></lims-table> |
| | | </div> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading0" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination0"></lims-table> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="åå²è®°å½" name="åå²è®°å½" style="height: 100%;"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å¹´ï¼</div> |
| | | <div class="search_input"> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="å¹´" prop="year"> |
| | | <el-date-picker v-model="queryParams.year" type="year" placeholder="鿩年" format="yyyy" value-format="yyyy" |
| | | size="small" @change="refreshTable()"> |
| | | size="small" @change="refreshTable()"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | </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> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 280px)'" @pagination="pagination"></lims-table> |
| | | </div> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <!-- 详æ
/ä¸è½½/å®¡æ ¸ --> |
| | |
| | | doManageRecordVerify |
| | | } from '@/api/cnas/systemManagement/documentRecords.js' |
| | | export default { |
| | | name: 'OutDocumenRecordt', |
| | | components: { |
| | | filePreview, |
| | | limsTable, |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | // this.entityCopy = this.HaveJson(this.componentData.entity); |
| | | this.getList() |
| | | this.getList0() |
| | | this.getTableData(); |
| | | }, |
| | | methods: { |
| | | getTableData() { |
| | | if (this.activeName === 'å¡«å') { |
| | | this.getList0() |
| | | } else { |
| | | this.getList() |
| | | } |
| | | }, |
| | | openAdd(title, row) { |
| | | this.title = title; |
| | | if (row) { |
| | |
| | | }); |
| | | }, |
| | | pagination0({ page, limit }) { |
| | | this.pag0.current = page; |
| | | this.page0.current = page; |
| | | this.page0.size = limit; |
| | | this.getList0(); |
| | | }, |
| | |
| | | <template> |
| | | <!-- æä»¶å®æå®¡æ¥è®°å½ --> |
| | | <div class="PeriodicDocumentReviewRecords"> |
| | | <div class="capacity-scope"> |
| | | <el-tabs type="border-card" v-model="activeName" style="height: 100%;"> |
| | | <el-tab-pane label="å¡«å" name="å¡«å" style="height: 100%;"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶åç§°ï¼</div> |
| | | <div class="search_input"><el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="queryParams.documentName" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶åç§°" prop="documentName"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="queryParams.documentName" @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @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> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btns"> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-upload :action="action" :multiple="false" :show-file-list="false" accept='.doc,.docx' |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | :headers="uploadHeader" :on-change="beforeUpload" :on-error="onError" ref='upload' v-if="upPower" |
| | | :on-success="handleSuccessUp" style="display:inline-block;margin-left: 20px;"> |
| | | <el-button type="primary" size="small">导å
¥</el-button></el-upload> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="åå²è®°å½" name="åå²è®°å½" style="height: 100%;"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">å¹´ï¼</div> |
| | | <div class="search_input"> |
| | | <div> |
| | | <el-form :model="queryParams0" ref="queryParams0" size="small" :inline="true"> |
| | | <el-form-item label="å¹´" prop="year"> |
| | | <el-date-picker v-model="queryParams0.year" type="year" placeholder="鿩年" format="yyyy" |
| | | value-format="yyyy" size="small" @change="refreshTable(1)"> |
| | | value-format="yyyy" size="small" @change="refreshTable(1)"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh(1)">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable(1)">æ¥ è¯¢</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable(1)">æ¥ è¯¢</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="refresh(1)">é ç½®</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="table"> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading" |
| | |
| | | pageManageDocumentList, |
| | | } from '@/api/cnas/systemManagement/documentControl.js' |
| | | export default { |
| | | name: 'RegularReviewsRecord', |
| | | components: { |
| | | limsTable, |
| | | filePreview |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 140px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | >>>.el-tabs__content { |
| | | height: 100%; |
| | | } |
| | | |
| | | .btns { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 5px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <!-- æä»¶ä¿®è®¢ç³è¯·å®¡æ¹è®°å½ --> |
| | | <div class="DocumentRevisionRequestApprovalRecords"> |
| | | <div class="capacity-scope"> |
| | | <div class="search"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æä»¶ç¼å·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </div> |
| | | <div> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> |
| | | <el-form-item label="æä»¶ç¼å·" prop="documentCode"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="queryParams.documentCode" |
| | | @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> |
| | | <div class="search_thing" style="padding-left: 30px;"> |
| | | <el-button size="small" @click="refresh()">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> |
| | | </div> |
| | | <div class="btn"> |
| | | <div> |
| | | <el-button size="small" type="primary" @click="openAdd" v-if="addPower">æ°å¢</el-button> |
| | | <el-button size="small" type="primary" @click="handleDown" :loading="outLoading" v-if="outPower" |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | style="display:inline-block;margin-left: 20px;">导åº</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | |
| | | selectUserCondition, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | export default { |
| | | components: { |
| | | filePreview, |
| | | limsTable |
| | | }, |
| | | name: 'RevisionRecord', |
| | | components: {filePreview, limsTable}, |
| | | data() { |
| | | return { |
| | | addPower: true, |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 46px; |
| | | display: flex; |
| | | align-items: center; |
| | | position: relative; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search_thing { |
| | |
| | | |
| | | .search_input { |
| | | width: calc(100% - 110px); |
| | | } |
| | | |
| | | .table { |
| | | margin-top: 10px; |
| | | background-color: #fff; |
| | | height: calc(100% - 60px - 80px - 10px - 40px); |
| | | padding: 20px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | .tables { |
| | |
| | | left: 0; |
| | | } |
| | | |
| | | >>>.el-dialog__body { |
| | | height: auto; |
| | | } |
| | | |
| | | .btn { |
| | | position: absolute; |
| | | right: 20px; |
| | | top: 16px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å审é¨é¨ï¼</span> |
| | | <el-input v-model="searchForm.department" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="å审é¨é¨" prop="department"> |
| | | <el-input v-model="searchForm.department" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <audit-inspection-dia v-if="auditInspectionDia" ref="auditInspectionDia" |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">æ¶é´ï¼</span> |
| | | <el-input v-model="searchForm.meetingDate" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="æ¶é´" prop="meetingDate"> |
| | | <el-input v-model="searchForm.meetingDate" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <audit-meeting-sign-dia v-if="auditMeetingSignDia" ref="auditMeetingSignDia" |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å®¡æ ¸ç®çï¼</span> |
| | | <el-input v-model="searchForm.purposes" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="å®¡æ ¸ç®ç" prop="laboratoryName"> |
| | | <el-input v-model="searchForm.purposes" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 200px">ä¸åæ ¼æè¿°ï¼</span> |
| | | <el-input v-model="searchForm.raiseResult" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="ä¸åæ ¼æè¿°" prop="laboratoryName"> |
| | | <el-input v-model="searchForm.raiseResult" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <corrective-action-d-ia v-if="correctiveActionDIa" ref="correctiveActionDIa" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import CorrectiveActionDIa from './correctiveActionDIa.vue'; |
| | | import ViewTestRecord from './ViewTestRecord.vue'; |
| | |
| | | export default { |
| | | name: 'correctiveAction', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { CorrectiveActionDIa, limsTable, TableCard, ViewTestRecord }, |
| | | components: { CorrectiveActionDIa, limsTable, ViewTestRecord }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å®¡æ ¸ç®çï¼</span> |
| | | <el-input v-model="searchForm.purposes" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="å®¡æ ¸ç®ç" prop="purposes"> |
| | | <el-input v-model="searchForm.purpose" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" @pagination="pagination" :page="page"> |
| | | :table-loading="tableLoading" @pagination="pagination" :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | <implement-plan-dia v-if="implementPlanDia" ref="implementPlanDia" |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å
审ç®çï¼</span> |
| | | <el-input v-model="searchForm.purpose" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="å
审ç®ç" prop="purpose"> |
| | | <el-input v-model="searchForm.purpose" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" @pagination="pagination" :page="page"> |
| | | :table-loading="tableLoading" @pagination="pagination" :page="page"> |
| | | </limsTable> |
| | | </div> |
| | | <year-plan-dia v-if="yearPlanDia" ref="yearPlanDia" @closeYearDia="closeYearDia"></year-plan-dia> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="capacity-scope"> |
| | | <el-tabs v-model="activeName" class="tab-panel" type="border-card"> |
| | | <el-tab-pane label="年度计å" name="yearPlan"> |
| | | <year-plan></year-plan> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | padding: 15px 0; |
| | | } |
| | | |
| | | .tab-panel { |
| | | background: #fff; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">è¯å®¡å°ç¹ï¼</span> |
| | | <el-input v-model="searchForm.judgingLocation" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="è¯å®¡å°ç¹" prop="judgingLocation"> |
| | | <el-input v-model="searchForm.judgingLocation" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <management-form-d-ia v-if="managementFormDIa" ref="managementFormDIa" |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">ä¼è®®å°ç¹ï¼</span> |
| | | <el-input v-model="searchForm.place" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="ä¼è®®å°ç¹" prop="place"> |
| | | <el-input v-model="searchForm.place" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <meeting-records-dia v-if="meetingRecordsDia" ref="meetingRecordsDia" |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="search-background"> |
| | | <span class="search-group"> |
| | | <span style="width: 160px">å°ç¹ï¼</span> |
| | | <el-input v-model="searchForm.place" clearable size="small"></el-input> |
| | | <el-button size="small" style="margin-left: 10px" @click="resetSearchForm">é ç½®</el-button> |
| | | <el-button size="small" type="primary" @click="searchList">æ¥ è¯¢</el-button> |
| | | </span> |
| | | <span class="search-group"> |
| | | <div class="search"> |
| | | <div> |
| | | <el-form :model="searchForm" ref="searchForm" size="small" :inline="true"> |
| | | <el-form-item label="å°ç¹" prop="place"> |
| | | <el-input v-model="searchForm.place" clearable size="small"></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="small" type="primary" @click="openFormDia('add')">æ° å¢</el-button> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData" |
| | | :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination"> |
| | | :table-loading="tableLoading" :page="page" @pagination="pagination"> |
| | | </limsTable> |
| | | </div> |
| | | <review-report-dia v-if="reviewReportDia" ref="reviewReportDia" @closeYearDia="closeYearDia"></review-report-dia> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .search-background { |
| | | width: 100%; |
| | | height: 60px; |
| | | line-height: 60px; |
| | | .search { |
| | | height: 46px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .search-group { |
| | | display: flex; |
| | | align-items: center; |
| | | margin: 0 20px; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="capacity-scope"> |
| | | <el-tabs v-model="activeName" class="tab-panel" type="border-card"> |
| | | <el-tab-pane label="管çè¯å®¡è®¡å" name="yearPlan"> |
| | | <management-review-plan></management-review-plan> |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | padding: 15px 0; |
| | | } |
| | | |
| | | .tab-panel { |
| | | background: #fff; |
| | | } |
| | | </style> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" :total="page.total" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" background |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog title="æç¤º" :visible.sync="dialogVisible" width="50%"> |
| | |
| | | </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" |
| | | layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" background |
| | | @current-change="handleCurrentChange"> |
| | | </el-pagination> |
| | | <el-dialog title="æç¤º" :visible.sync="dialogVisible" width="50%"> |
| | |
| | | <template> |
| | | <div class="main"> |
| | | <div class="capacity-scope"> |
| | | <el-tabs v-model="activeName" type="border-card" :lazy="true"> |
| | | <el-tab-pane label="å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§" name="å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§"> |
| | | <HazardIdentificationRiskAssessment v-if="activeName === 'å±é©å ç´ è¾¨è¯ä¸é£é©è¯ä»·ç»æä¸è§'" /> |
| | |
| | | import listRiskAnalysisControlPlans |
| | | from "./components//listRiskAnalysisControlPlans.vue"; |
| | | export default { |
| | | name: 'MeasuresDealRisks', |
| | | components: { HazardIdentificationRiskAssessment, listRiskAnalysisControlPlans }, |
| | | data() { |
| | | return { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .main { |
| | | width: 100%; |
| | | } |
| | | |
| | | /deep/ .el-tabs--border-card>.el-tabs__content { |
| | | height: calc(100vh - 9em); |
| | | padding: 0; |
| | |
| | | } |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition().then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | |
| | | import {mapGetters} from "vuex"; |
| | | |
| | | export default { |
| | | name: 'FinishedProductSampling', |
| | | data() { |
| | | return { |
| | | stockList: [], |
| | |
| | | </div> |
| | | <div> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination" |
| | | key="tableData0"></lims-table> |
| | | :rowClassName="rowClassName" :height="'calc(100vh - 270px)'" @pagination="pagination" |
| | | key="tableData0"></lims-table> |
| | | </div> |
| | | <!--æ¥åæ¥ç--> |
| | | <el-dialog title="æ¥åæ¥ç" :visible.sync="issuedVisible" width="80vw" :modal-append-to-body="false" |
| | |
| | | |
| | | <script> |
| | | import { getYearAndMonthAndDays } from "@/utils/date"; |
| | | // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; |
| | | import onlyoffice from "@/components/Onlyoffice/onlyoffice.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { selectInsOrderPlanList, selectUserCondition } from "@/api/business/inspectionTask"; |
| | |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | |
| | | export default { |
| | | name: 'InspectionReview', |
| | | components: { |
| | | filePreview, |
| | | onlyoffice, |
| | | limsTable, |
| | | // ShowInfo, |
| | | }, |
| | | dicts: ["urgency_level", "inspection_task_state"], |
| | | computed: { |
| | |
| | | prop: "type", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.urgencyLevel.find((m) => m.value == params).label; |
| | | if (this.urgencyLevel.find((m) => m.value == params)) { |
| | | return this.urgencyLevel.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (this.urgencyLevel.find((m) => m.value == params)) { |
| | | return this.urgencyLevel.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | |
| | | prop: "insState", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params) |
| | | .label; |
| | | if (this.inspectionTaskState.find((m) => m.value == params)) { |
| | | return this.inspectionTaskState.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | if (this.inspectionTaskState.find((m) => m.value == params)) { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { label: "æ£éªäºº", prop: "userName" }, |
| | |
| | | this.handleReview(row); |
| | | }, |
| | | disabled: (row) => { |
| | | return row.userName == null || row.userName && !row.userName.includes(this.nickName) |
| | | return row.checkName == null || (row.checkName && !row.checkName.includes(this.nickName)) |
| | | } |
| | | }, |
| | | { |
| | |
| | | fullscreen: false, |
| | | option: null, |
| | | orderTypeList: [ |
| | | { label: 'å§æè¯éª', value: 'Customer-ordered test' }, |
| | | { label: 'æ½æ£', value: 'æ½æ£' }, |
| | | { label: 'è¿åæ£éª', value: 'è¿åæ£éª' }, |
| | | { label: 'å£åº¦æ£éª', value: 'Quarterly inspection' }, |
| | | { label: 'å§æè¯éª', value: 'Customer-ordered test', type: 'success' }, |
| | | { label: 'æ½æ£', value: 'æ½æ£', type: 'danger' }, |
| | | { label: 'è¿åæ£éª', value: 'è¿åæ£éª', type: 'info' }, |
| | | { label: 'å£åº¦æ£éª', value: 'Quarterly inspection', type: '' }, |
| | | ], |
| | | urgencyLevel: [], |
| | | inspectionTaskState: [], |
| | |
| | | this.currentTime = getYearAndMonthAndDays() |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | activated() { |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | |
| | | } |
| | | return ""; |
| | | }, |
| | | // æ¥ç产ä¸é¾ä¿¡æ¯ |
| | | // openInfoDialog (row) { |
| | | // this.showInfoDialog = true |
| | | // this.$nextTick(() => { |
| | | // this.$refs.showInfoDialog.getInfo(row.ifsInventoryId) |
| | | // }) |
| | | // }, |
| | | selectAllByOne(row) { |
| | | this.isCopper = row.isCopper |
| | | this.customsInspection = row |
| | |
| | | // æ¥çæ¥å |
| | | handleIssued(row) { |
| | | // todo: æ¥çæ¥åç»ä»¶ |
| | | /* if (!row.tempUrlPdf) return this.$message.warning('æä»¶æªä¸ä¼ ') |
| | | this.currentInfo = row |
| | | this.lookDialogVisible = true*/ |
| | | console.log(this.javaApi) |
| | | this.currentInfo = row; |
| | | let fileName = row.url |
| | |
| | | } |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | <style scoped> |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 100px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .ins-order-plan-main .search { |
| | | width: 100%; |
| | | height: 40px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .ins-order-plan-main .center { |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | padding-top: 0px; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | padding-left: 6px; |
| | | } |
| | | |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 4px 10px; |
| | | 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-last-child(1) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3a7bfa; |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .center .center-options .center-title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: right; |
| | | } |
| | | |
| | | .center .center-options .center-title span:last-child { |
| | | color: #3a7bfa; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .view-self-checkbox { |
| | | margin-left: 50px; |
| | | } |
| | | </style> |
| | | <style> |
| | | .ins-order-plan-main .el-form-item__label { |
| | | color: #000; |
| | | } |
| | | </style> |
| | | <template> |
| | | <div class="ins-order-plan-main"> |
| | | <div style="height: 100%"> |
| | |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="dataDialogVisible" title="æ°æ®æ¥ç" width="80%"> |
| | | <div v-if="dataDialogVisible" style="height: 70vh; overflow-y: auto"> |
| | | <div v-if="dataDialogVisible" style="height: 74vh; overflow-y: auto"> |
| | | <div> |
| | | <el-form :model="entity" :inline="true"> |
| | | <el-form-item label="æ£éªé¡¹" prop="outputWorkTime"> |
| | |
| | | prop: "insState", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params).label; |
| | | if (this.inspectionTaskState.find((m) => m.value == params)) { |
| | | return this.inspectionTaskState.find((m) => m.value == params).label; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | if (this.inspectionTaskState.find((m) => m.value == params)) { |
| | | return this.inspectionTaskState.find((m) => m.value == params).type; |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | }, |
| | | { label: "æ£éªäºº", prop: "userName" }, |
| | |
| | | return (row.userName == null || row.insState == 3 || row.insState == 5) && this.checkPermi(['update:product:onPlan']) |
| | | }, |
| | | }, |
| | | { |
| | | name: "æ¥çå·¥æ¶", |
| | | type: "text", |
| | | clickFun: (row) => { |
| | | this.viewManHour(row); |
| | | }, |
| | | showHide: (row) => { |
| | | return this.checkPermi(['get:working:hours:byOrder']) |
| | | }, |
| | | }, |
| | | // { |
| | | // name: "æ¥çå·¥æ¶", |
| | | // type: "text", |
| | | // clickFun: (row) => { |
| | | // this.viewManHour(row); |
| | | // }, |
| | | // showHide: (row) => { |
| | | // return this.checkPermi(['get:working:hours:byOrder']) |
| | | // }, |
| | | // }, |
| | | { |
| | | name: "æ£éª", |
| | | type: "text", |
| | |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | |
| | | ], |
| | | lookPage: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 0, |
| | | }, |
| | | lookTableLoading: false, |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .search { |
| | | background-color: #fff; |
| | | height: 40px; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 20px; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 50px; |
| | | } |
| | | |
| | | .search_label { |
| | | width: 100px; |
| | | font-size: 14px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .search_input { |
| | | width: calc(100% - 120px); |
| | | } |
| | | |
| | | .ins-order-plan-main .search { |
| | | width: 100%; |
| | | height: 40px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .ins-order-plan-main .center { |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | padding-top: 0px; |
| | | } |
| | | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | padding-left: 6px; |
| | | } |
| | | |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 4px 10px; |
| | | 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-last-child(1) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3a7bfa; |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .center .center-options .center-title { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: right; |
| | | } |
| | | |
| | | .center .center-options .center-title span:last-child { |
| | | color: #3a7bfa; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | |
| | | .view-self-checkbox { |
| | | margin-left: 50px; |
| | | } |
| | | </style> |
| | | <style> |
| | | .ins-order-plan-main .el-form-item__label { |
| | | color: #000; |
| | | } |
| | | </style> |
| | |
| | | @click="openUnPassDialog('add')">ä¸åæ ¼å¤ç</el-button> |
| | | <el-button size="small" type="primary" @click="sampleVisible = true; uploadSample();">æ ·å忢</el-button> |
| | | <!-- <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">ä»»å¡åæ¢</el-button>--> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="viewManHour">æäº¤</el-button> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">æäº¤</el-button> |
| | | <!-- 夿 ¸ --> |
| | | <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">éè¿</el-button> |
| | | <el-button v-if="state == 2" size="medium" @click="upInsReview(0)">ä¸éè¿</el-button> |
| | |
| | | } |
| | | }, |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px"> |
| | | <div v-if="active==1"> |
| | | <el-form :inline="true" :model="addObj1" label-width="90px"> |
| | | <el-form-item label="æ ·ååå·:" style="margin-bottom: 6px"> |
| | | <el-form-item label="æ ·ååå·:" style="margin-bottom: 6px;margin-top: 6px"> |
| | | <el-select v-model="model" :placeholder="active>1 ? '' : '请è¾å
¥'" |
| | | allow-create clearable default-first-option filterable |
| | | size="small" |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªæ å:"> |
| | | <el-form-item label="æ£éªæ å:" style="margin-bottom: 6px;margin-top: 6px"> |
| | | <el-select v-model="standardMethodListId" :loading="methodLoad" |
| | | :placeholder="active>1 ? '' : '请è¾å
¥'" clearable size="small" |
| | | @change="changeStandardMethodListId" @focus="methodFocus"> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style="margin-top: 3px"> |
| | | <div style="margin-bottom: 6px;margin-top: 6px"> |
| | | <el-button v-show="active==1" :disabled="sampleList.length === 2" size="small" type="primary" @click="handleSplitCountNum">æå</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | justify-content: space-between; |
| | | margin-bottom: 10px; |
| | | } |
| | | >>>.warning-row { |
| | | color: #1890FF; |
| | | } |
| | | </style> |
| | |
| | | </el-form> |
| | | </div> |
| | | <div> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <div style="display: flex;justify-content: space-between;background-color: #F5F7FB;margin-bottom: 6px"> |
| | | <div v-if="active==1"> |
| | | <el-form :inline="true" :model="addObj1" label-width="90px"> |
| | | <el-form-item label="æ ·ååå·:" style="margin-bottom: 6px"> |
| | | <el-form-item label="æ ·ååå·:" style="margin-bottom: 6px;margin-top: 6px"> |
| | | <el-select v-model="model" :placeholder="active>1 ? '' : '请è¾å
¥'" |
| | | allow-create clearable default-first-option filterable |
| | | size="small" |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="æ£éªæ å:"> |
| | | <el-form-item label="æ£éªæ å:" style="margin-bottom: 6px;margin-top: 6px"> |
| | | <el-select v-model="standardMethodListId" :loading="methodLoad" |
| | | :placeholder="active>1 ? '' : '请è¾å
¥'" clearable size="small" |
| | | @change="changeStandardMethodListId" @focus="methodFocus"> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div style="margin-top: 3px"> |
| | | <div style="margin-bottom: 6px;margin-top: 6px"> |
| | | <el-button v-show="active==1" :disabled="sampleList.length === 2" size="small" type="primary" @click="handleSplitCountNum">æå</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | notificationRawOrder({ifsInventoryId:this.customsInspection.id}).then(res => { |
| | | if (res.code === 200) { |
| | | if (res.data === 1) { |
| | | this.dialogVisible2 = true |
| | | this.dialogMessage2 = 'å½åæ¹æ¬¡çæ ·åå·²æ£éªè¿, å¯ä»¥å
æ£' |
| | | if (this.orderType != 1) { |
| | | this.dialogVisible2 = true |
| | | this.dialogMessage2 = 'å½åæ¹æ¬¡çæ ·åå·²æ£éªè¿, å¯ä»¥å
æ£' |
| | | } |
| | | } else if (res.data === 2) { |
| | | this.dialogVisible2 = true |
| | | this.dialogMessage2 = 'å½åæ¹æ¬¡çæ ·åå·²è¶
20å¨, éè¦å¤çº§å¤æ¬¡æ£éª' |
| | |
| | | }) |
| | | // æ¥æ£æµç¨ |
| | | selectStandardTreeListByPartNo({partNo:this.customsInspection.partNo}).then(res => { |
| | | this.addObj.sample = res.data.label |
| | | this.codeLevel = res.data.code |
| | | this.$set(this.addObj, 'qtyArrived', this.customsInspection.qtyArrived) |
| | | this.$set(this.addObj, 'partNo', this.customsInspection.partNo) |
| | | this.$set(this.addObj, 'receiverDate', this.customsInspection.receiverDate) |
| | | this.$set(this.addObj, 'orderNo', this.customsInspection.orderNo) |
| | | this.$set(this.addObj, 'declareUser', this.customsInspection.declareUser) |
| | | this.$set(this.addObj, 'testQuantity', this.customsInspection.testQuantity) |
| | | this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas) |
| | | this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo) |
| | | this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc) |
| | | if (this.orderType == 1) { |
| | | this.$set(this.addObj, 'orderType', 'Quarterly inspection') |
| | | if (res.data !== null) { |
| | | this.addObj.sample = res.data.label |
| | | this.codeLevel = res.data.code |
| | | this.$set(this.addObj, 'qtyArrived', this.customsInspection.qtyArrived) |
| | | this.$set(this.addObj, 'partNo', this.customsInspection.partNo) |
| | | this.$set(this.addObj, 'receiverDate', this.customsInspection.receiverDate) |
| | | this.$set(this.addObj, 'orderNo', this.customsInspection.orderNo) |
| | | this.$set(this.addObj, 'declareUser', this.customsInspection.declareUser) |
| | | this.$set(this.addObj, 'testQuantity', this.customsInspection.testQuantity) |
| | | this.$set(this.addObj, 'buyUnitMeas', this.customsInspection.buyUnitMeas) |
| | | this.$set(this.addObj, 'updateBatchNo', this.customsInspection.updateBatchNo) |
| | | this.$set(this.addObj, 'partDetail', this.customsInspection.partDesc) |
| | | if (this.orderType == 1) { |
| | | this.$set(this.addObj, 'orderType', 'Quarterly inspection') |
| | | } |
| | | const str = res.data.treeName.split('-') |
| | | this.selectTreeTem = str.join(' - ') |
| | | this.selectTree = str.join(' - ') |
| | | this.addListInfo(this.codeLevel, res.data) // åæææ ·åæ¯åºå®çï¼å°±é»è®¤èµå¼ä¸æ¡æ°æ®ï¼å¯æå |
| | | this.selectInsOrderTemplate() // åæææ¨¡æ¿å表æ¥è¯¢ |
| | | } else { |
| | | this.dialogVisible = true |
| | | this.dialogMessage = res.message |
| | | } |
| | | const str = res.data.treeName.split('-') |
| | | this.selectTreeTem = str.join(' - ') |
| | | this.selectTree = str.join(' - ') |
| | | this.addListInfo(this.codeLevel, res.data) // åæææ ·åæ¯åºå®çï¼å°±é»è®¤èµå¼ä¸æ¡æ°æ®ï¼å¯æå |
| | | this.selectInsOrderTemplate() // åæææ¨¡æ¿å表æ¥è¯¢ |
| | | }).catch(err => { |
| | | this.dialogVisible = true |
| | | this.dialogMessage = err.message |
| | | |
| | | }) |
| | | } |
| | | }, |
| | |
| | | this.addObj.model = (trees[4] == undefined ? null : trees[4]) |
| | | this.addObj.ifsInventoryId = this.customsInspection.id |
| | | this.saveLoad = true |
| | | if (this.addObj.createTime) { |
| | | delete this.addObj.createTime |
| | | } |
| | | addInsOrder({ |
| | | insOrder: this.addObj, |
| | | sampleList: sampleList.map(a => { |
| | |
| | | background-color: #ffffff; |
| | | |
| | | } |
| | | |
| | | >>>.warning-row { |
| | | color: #1890FF; |
| | | } |
| | | </style> |
| | |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | |
| | | ], |
| | | page1: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableData2: [], |
| | |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc' }, |
| | | { label: 'å
æ£', prop: 'isExemption' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'å
æ£', |
| | | prop: 'isExemption', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'å
æ£' |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: 'æ ·ååç§°', |
| | | prop: 'sampleName', |
| | |
| | | ], |
| | | page2: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableData3: [], |
| | |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc' }, |
| | | { label: 'å
æ£', prop: 'isExemption' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'å
æ£', |
| | | prop: 'isExemption', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'å
æ£' |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: 'æ ·ååç§°', |
| | | prop: 'sampleName', |
| | |
| | | ], |
| | | page3: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableData4: [], |
| | |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc' }, |
| | | { label: 'å
æ£', prop: 'isExemption' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'å
æ£', |
| | | prop: 'isExemption', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'å
æ£' |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | { |
| | | label: 'æ ·ååç§°', |
| | | prop: 'sampleName', |
| | |
| | | ], |
| | | page4: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | entity: { |
| | |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | activated () { |
| | | this.refreshTable() |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // ç¹å»æ¥è¯¢åè° |
| | |
| | | </el-table> |
| | | <el-table ref="productTable" v-loading="getProductLoad" :data="productList" |
| | | :row-class-name="tableRowClassName" border class="el-table" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | :key="upIndex" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" |
| | | max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" |
| | | @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> |
| | | <el-table-column v-if="active==1" :selectable="selectable0" type="selection" width="65"></el-table-column> |
| | |
| | | } from "@/api/business/rawMaterialOrder"; |
| | | import { |
| | | addInsOrder, addInsOrderTemplate, delInsOrderTemplate, |
| | | getQuarterOnOrder, |
| | | getQuarterOnOrder, selectInsOrderTemplateById, |
| | | selectOrderManDay, |
| | | updateInsOrder, |
| | | upInsOrder, |
| | |
| | | import {selectsStandardMethodByFLSSM} from "@/api/standard/standardLibrary"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {selectCustomPageList} from "@/api/system/customer"; |
| | | import {mapGetters} from "vuex"; |
| | | |
| | | export default { |
| | | name: 'Add', |
| | |
| | | limsTable, |
| | | cableConfig, |
| | | AuxiliaryWireCore |
| | | }, |
| | | computed:{ |
| | | ...mapGetters(["nickName"]), |
| | | }, |
| | | dicts: ['check_type1', 'urgency_level', 'form_type', 'sample_status_list'], |
| | | data() { |
| | |
| | | this.isSpecial = true |
| | | this.$nextTick(() => { |
| | | this.$refs.productTable.doLayout(); |
| | | this.upIndex++ |
| | | }); |
| | | }, |
| | | getQuarterOnOrderList () { |
| | |
| | | }, |
| | | // è·åç¨æ·å表 |
| | | getAuthorizedPerson() { |
| | | selectUserCondition().then(res => { |
| | | selectUserCondition({ type: 1 }).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | |
| | | backtrack([], nums); |
| | | return result; |
| | | }, |
| | | tableRowClassName({ |
| | | row, |
| | | rowIndex |
| | | }) { |
| | | if (row.state === 0) { |
| | | tableRowClassName({row, rowIndex}) { |
| | | if (row.state == 1) { |
| | | console.log('row.state---', row.state) |
| | | return 'warning-row'; |
| | | } else { |
| | | return ''; |
| | | } |
| | | return 'warning-row'; |
| | | }, |
| | | selectInsOrderTemplate() { |
| | | selectInsOrderTemplate({company: this.addObj.company}).then(res => { |
| | |
| | | selectInsOrderTemplateById({id: e}).then(res => { |
| | | let obj = JSON.parse(res.data) |
| | | //å¶å人设置为å½åç»å½ç¨æ· |
| | | let user = JSON.parse(localStorage.getItem('user')) |
| | | let user = this.nickName |
| | | obj.addObj.custom = user.name |
| | | obj.addObj.userId = user.userId |
| | | this.addObj = obj.addObj; |
| | | this.sampleList = obj.sampleList; |
| | | this.selectTree = obj.selectTree |
| | | this.rowClick(this.sampleList[0]) |
| | | }) |
| | | }, |
| | | delSampleAndProduct() { |
| | |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .el-table .warning-row .cell { |
| | | color: #3A7BFA; |
| | | >>>.warning-row { |
| | | color: #1890FF; |
| | | } |
| | | </style> |
| | |
| | | this.$refs.productTable.doLayout() |
| | | }) |
| | | }, |
| | | tableRowClassName({ |
| | | row, |
| | | rowIndex |
| | | }) { |
| | | tableRowClassName({row, rowIndex}) { |
| | | if (row.state === 0) { |
| | | return ''; |
| | | } |
| | |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .ins_order_config .el-table .warning-row .cell { |
| | | color: #3A7BFA; |
| | | >>>.warning-row { |
| | | color: #1890FF; |
| | | } |
| | | </style> |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | .el-table .warning-row .cell { |
| | | color: #3A7BFA; |
| | | >>>.warning-row { |
| | | color: #1890FF; |
| | | } |
| | | </style> |
| | |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="æ ·åç¼å·" prop="sampleCode" v-if="more">--> |
| | | <!-- <el-input v-model="entity.sampleCode" clearable placeholder="请è¾å
¥" size="small"--> |
| | | <!-- @keyup.enter.native="refreshTable">--> |
| | | <!-- </el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="ä¸åæ¶é´" prop="createTime" v-if="more"> |
| | | <el-date-picker v-model="entity.createTime" clearable format="yyyy-MM-dd" placeholder="éæ©æ¥æ" size="small" |
| | | style="width:100%" type="date" value-format="yyyy-MM-dd HH:mm:ss"> |
| | |
| | | <script> |
| | | import vueQr from 'vue-qr' |
| | | import PrintJS from 'print-js' |
| | | import file from "@/utils/file"; |
| | | import PrintDialog from "@/views/business/productOrder/components/printDialog.vue"; |
| | | import AddInspectionDia from "@/views/business/productOrder/components/addInspectionDia.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | import { downFile, getFileList, selectSampleAndProductByOrderId } from "@/api/business/rawMaterialOrder"; |
| | | import {mapGetters} from "vuex"; |
| | | // import Inspection from "../do/b1-inspect-order-plan/Inspection.vue"; |
| | | export default { |
| | | name: 'ProductOrder', |
| | | components: { |
| | | limsTable, |
| | | AddInspectionDia, |
| | |
| | | tableData: [], |
| | | tableLoading: false, |
| | | column: [ |
| | | { label: 'å§æç¼å·', prop: 'entrustCode', width: '160px' }, |
| | | { |
| | | label: "å§æç¼å·", |
| | | prop: "entrustCode", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "changeEntrustCode", |
| | | }, |
| | | { label: 'å§æåä½', prop: 'company' }, |
| | | { label: 'æ ·ååç§°', prop: 'sampleName' }, |
| | | { |
| | | label: "æ ·ååç§°", |
| | | prop: "sampleName", |
| | | width: "160px", |
| | | dataType: "link", |
| | | linkMethod: "selectAllByOne", |
| | | }, |
| | | { label: 'æ ·ååå·', prop: 'sampleModel' }, |
| | | { label: 'æ ·åæ°é', prop: 'sampleNum' }, |
| | | { label: 'æ£éªäºº', prop: 'testingName' }, |
| | |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | state: 0,// 0:å°è´¦é¡µï¼1ï¼æ£éªé¡µé¢,2æ£éªé¡µé¢(夿 ¸)ï¼é»è®¤ä¸º0,3æ°æ®æ¥ç |
| | |
| | | tableDataLook: [], |
| | | tableDataLookPage: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableDataLookColumn: [ |
| | |
| | | ], |
| | | pageFile: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | formData: {}, |
| | |
| | | ], |
| | | pageDelete: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | deleteDialogVisible: false, |
| | |
| | | this.refreshTable() |
| | | this.getAuthorizedPerson() |
| | | }, |
| | | activated() { |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | // æ¥è¯¢åè¡¨æ°æ® |
| | | refreshTable() { |
| | |
| | | }, |
| | | // æå¼ä¿®æ¹å§æç¼å·å¼¹æ¡ |
| | | changeEntrustCode(row) { |
| | | if (this.tabIndex !== 1) { |
| | | return |
| | | } |
| | | this.entrustCodeVisible = true |
| | | this.entrustCodeInfo = { ...row } |
| | | }, |
| | |
| | | }, |
| | | // 详æ
|
| | | selectAllByOne(row) { |
| | | this.active = 2; |
| | | // console.log(row); |
| | | // //æå¼å¼¹æ¡ |
| | | // this.dialogVisible = true; |
| | | // //row = ç¹å»å¯¹åºè¡å¼ |
| | | // //å¤å¶ç»formData |
| | | // this.formData = this.HaveJson(row); |
| | | this.currentId = row.id |
| | | this.examine = 1 |
| | | this.$router.push({ |
| | | path: "/productOrder/add", query: { |
| | | examine: 1, |
| | | active: 2, |
| | | currentId: row.id |
| | | } |
| | | }); |
| | | }, |
| | | // æ°æ®æ¥ç |
| | | handleDataLook(row) { |
| | |
| | | closeDia () { |
| | | this.tableDataLookPage = { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | } |
| | | this.dataDialogVisible = false |
| | |
| | | // ä¸è½½æ¥å |
| | | download(row) { |
| | | let url = row.urlS ? row.urlS : row.url; |
| | | if (url) { |
| | | this.$download.saveAs(url, row.entrustCode); |
| | | if(url){ |
| | | url = url.split('.')[0]+'.pdf' |
| | | const link = document.createElement('a'); |
| | | link.href = this.javaApi + url; |
| | | link.target = '_blank'; |
| | | document.body.appendChild(link); |
| | | link.click(); |
| | | } |
| | | }, |
| | | // æ¤é |
| | |
| | | } |
| | | }, |
| | | getUserList(){ |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition().then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | |
| | | import { selectUserCondition } from "@/api/performance/class"; |
| | | |
| | | export default { |
| | | name: "b1-product-sampling-info", |
| | | name: "ProductSamplingInfo", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, AddQuarterItem }, |
| | | data() { |
| | |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | |
| | | ], |
| | | page1: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | yearSampleDia: false, // å¹´åº¦æ½æ · |
| | |
| | | return 'height: calc(100% - ' + '44' + 'px)' |
| | | }, |
| | | getUserList() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition().then((res) => { |
| | | this.userList = res.data; |
| | | }) |
| | | }, |
| | |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | |
| | | export default { |
| | | name: 'RawMaterialInspection', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, DataLookVisible }, |
| | | data() { |
| | |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | tableData1: [], |
| | |
| | | { label: 'é¶ä»¶æè¿°', prop: 'partDesc' }, |
| | | { label: 'ä¾åºååç§°', prop: 'supplierName' }, |
| | | { label: 'ä¸åæ ¼æè¿°', prop: 'unqualifiedDesc' }, |
| | | { label: 'å
æ£', prop: 'isExemption' }, |
| | | { |
| | | dataType: 'tag', |
| | | label: 'å
æ£', |
| | | prop: 'isExemption', |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return 'å
æ£' |
| | | } else { |
| | | return null |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | if (params == 1) { |
| | | return 'success' |
| | | } else { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | { label: 'æ ·ååç§°', prop: 'sampleName' }, |
| | | { label: 'æ ·ååå·', prop: 'sampleModel' }, |
| | | { label: 'æ£éªäºº', prop: 'userName' }, |
| | |
| | | ], |
| | | page1: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | more: false, |
| | |
| | | openIFS() { |
| | | this.btnLoading = true |
| | | getIfsOrder().then(res => { |
| | | this.resetForm('componentData') |
| | | this.refreshTable() |
| | | this.btnLoading = false |
| | | }).catch(err => { |
| | |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {delFile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; |
| | | export default { |
| | | name: 'ReportPreparation', |
| | | components: { limsTable, onlyoffice }, |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | // è·å人åå表 |
| | | getAuthorizedPerson() { |
| | | selectUserCondition({ type: 0 }).then((res) => { |
| | | selectUserCondition({ type: 1 }).then((res) => { |
| | | let data = []; |
| | | res.data.forEach((a) => { |
| | | data.push({ |
| | |
| | | upWarehouse |
| | | } from "@/api/business/sample"; |
| | | export default { |
| | | name: 'Sample', |
| | | components: { |
| | | Detail |
| | | }, |
| | |
| | | import {pageInsUnPass} from "@/api/business/unpass"; |
| | | |
| | | export default { |
| | | name: 'Unpass', |
| | | components: {limsTable}, |
| | | data() { |
| | | return { |
| | |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | size: 20, |
| | | current: 1 |
| | | }, |
| | | } |
| | |
| | | methods: { |
| | | // è·³è½¬é¡µé¢ |
| | | goAddList(m) { |
| | | this.$router.push({name: m.jumpPath}) |
| | | this.$router.push({name: m.jumpPath, query: { activeName: m.jumpId }}) |
| | | }, |
| | | getList(){ |
| | | const key = `_${this.currentPage}` |
| | |
| | | }, |
| | | methods: { |
| | | async goLogin() { |
| | | const { |
| | | data: { data }, |
| | | } = await getSsoAuthUrl() |
| | | window.location.href = data |
| | | // this.$router.push({ path: '/thirdpartylogin' }) |
| | | await getSsoAuthUrl().then(res => { |
| | | window.location.href = res.data |
| | | }) |
| | | }, |
| | | getCode() { |
| | | getCodeImg().then(res => { |
| | |
| | | computed: {}, |
| | | methods: { |
| | | async goLogin() { |
| | | const { |
| | | data: { data } |
| | | } = await getSsoAuthUrl() |
| | | window.location.href = data |
| | | await getSsoAuthUrl().then(res => { |
| | | window.location.href = res.data |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | refresh() { |
| | | this.entity = {}; |
| | | this.entity.dateTime = [] |
| | | this.setDate() |
| | | this.refreshTable(); |
| | | }, |
| | | openAdd() { |
| | |
| | | </div> |
| | | </div> |
| | | <div class="table"> |
| | | <TableCard :showForm="false" :showTitle="false"> |
| | | <template v-slot:table> |
| | | <limsTable |
| | | :column="tableColumn" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | :page="page" |
| | | style="padding: 0 15px" |
| | | :height="'calc(100vh - 290px)'" |
| | | @pagination="pagination" |
| | | > |
| | | </limsTable> |
| | | </template> |
| | | </TableCard> |
| | | <limsTable |
| | | :column="tableColumn" |
| | | :table-data="tableData" |
| | | :table-loading="tableLoading" |
| | | :page="page" |
| | | style="padding: 0 15px" |
| | | :height="'calc(100vh - 290px)'" |
| | | @pagination="pagination" |
| | | > |
| | | </limsTable> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import { getYearAndMonthAndDays } from "@/utils/date"; |
| | | import TableCard from "@/components/TableCard/index.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import { selectAuxiliaryAllByMonth } from "@/api/performance/manHour"; |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | TableCard, |
| | | limsTable |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | <style scoped> |
| | | .standard { |
| | | padding-top: 10px; |
| | | display: flex; |
| | | height: calc(100vh - 90px); |
| | | } |
| | | |
| | | .left { |
| | | width: 330px; |
| | | height: calc(100% - 40px - 10px); |
| | | background-color: white; |
| | | padding: 15px; |
| | | } |
| | | |
| | | .custom-tree-node { |
| | | width: 100%; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | .custom-tree-node .el-icon-delete { |
| | | color: #3a7bfa; |
| | | opacity: 0; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .custom-tree-node:hover .el-icon-delete { |
| | | opacity: 1; |
| | | } |
| | | |
| | | .custom-tree-node .el-icon-edit { |
| | | color: #3a7bfa; |
| | | opacity: 0; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .custom-tree-node:hover .el-icon-edit { |
| | | opacity: 1; |
| | | } |
| | | |
| | | .node_i { |
| | | color: orange; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .right { |
| | | margin-left: 5px; |
| | | width: calc(100% - 350px); |
| | | height: calc(100% - 40px); |
| | | } |
| | | |
| | | .right .title { |
| | | height: 34px; |
| | | line-height: 34px; |
| | | padding: 0 10px; |
| | | background-color: white; |
| | | } |
| | | |
| | | .standard_table { |
| | | border-top: 1px solid #ebeef5; |
| | | background-color: white; |
| | | } |
| | | |
| | | .product_table { |
| | | border-top: 1px solid #ebeef5; |
| | | height: calc(100% - 235px); |
| | | margin-top: 5px; |
| | | background-color: white; |
| | | user-select: none; |
| | | } |
| | | |
| | | .product_table .el-table { |
| | | height: calc(100% - 35px) !important; |
| | | } |
| | | |
| | | .sort { |
| | | width: 80% !important; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | >>>.el-table__body-wrapper { |
| | | height: calc(100% - 46px) !important; |
| | | } |
| | | |
| | | >>>.header-class { |
| | | height: 40px !important; |
| | | } |
| | | |
| | | >>>.header-class th.el-table__cell>.cell { |
| | | line-height: 20px !important; |
| | | padding-top: 0 !important; |
| | | padding-bottom: 0 !important; |
| | | } |
| | | |
| | | >>>.el-table__row { |
| | | height: 35px !important; |
| | | } |
| | | |
| | | .search { |
| | | border-bottom: 1px solid #ebeef5; |
| | | margin-bottom: 16px; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | padding-bottom: 10px; |
| | | } |
| | | |
| | | .search-item { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .search-item .el-row { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search-item .el-col { |
| | | margin-left: 0; |
| | | } |
| | | |
| | | .more-edit .dialog-footer { |
| | | position: absolute; |
| | | top: 15px; |
| | | right: 70px; |
| | | } |
| | | |
| | | >>>.is-disabled .el-textarea__inner { |
| | | background: rgba(0, 0, 0, 0.05) !important; |
| | | } |
| | | |
| | | >>>.el-table__body-wrapper::-webkit-scrollbar { |
| | | height: 14px; |
| | | /* 设置æ»å¨æ¡å®½åº¦ */ |
| | | } |
| | | </style> |
| | | <style> |
| | | .standard .el-tree-node__content { |
| | | height: 32px; |
| | | font-size: 14px; |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .standard .has-gutter .el-table__cell .cell { |
| | | line-height: 34px; |
| | | background-color: #f8f8f8; |
| | | } |
| | | |
| | | .standard .has-gutter .el-table__cell { |
| | | background-color: #fafafa !important; |
| | | } |
| | | |
| | | .standard .standard_table .el-table__row .cell { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .standard .el-table .warning-row .cell { |
| | | color: #bababa; |
| | | } |
| | | |
| | | .standard .el-table-filter__list { |
| | | max-height: 400px; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .standard .el-upload { |
| | | width: 100%; |
| | | } |
| | | |
| | | .standard .el-upload-dragger { |
| | | width: 100%; |
| | | } |
| | | |
| | | .standard .handleBtn.is-disabled .el-upload:focus { |
| | | color: #c0c4cc !important; |
| | | } |
| | | |
| | | .standard .avatar-uploader .el-upload { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | </style> |
| | | |
| | | <template> |
| | | <div class="standard"> |
| | | <div class="left"> |
| | |
| | | }, |
| | | }; |
| | | </script> |
| | | <style scoped> |
| | | .standard { |
| | | padding-top: 10px; |
| | | display: flex; |
| | | height: calc(100vh - 90px); |
| | | } |
| | | |
| | | .left { |
| | | width: 330px; |
| | | height: calc(100% - 40px - 10px); |
| | | background-color: white; |
| | | padding: 15px; |
| | | } |
| | | |
| | | .custom-tree-node { |
| | | width: 100%; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | .custom-tree-node .el-icon-delete { |
| | | color: #3a7bfa; |
| | | opacity: 0; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .custom-tree-node:hover .el-icon-delete { |
| | | opacity: 1; |
| | | } |
| | | |
| | | .custom-tree-node .el-icon-edit { |
| | | color: #3a7bfa; |
| | | opacity: 0; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .custom-tree-node:hover .el-icon-edit { |
| | | opacity: 1; |
| | | } |
| | | |
| | | .node_i { |
| | | color: orange; |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .right { |
| | | margin-left: 5px; |
| | | width: calc(100% - 350px); |
| | | height: calc(100% - 40px); |
| | | } |
| | | |
| | | .right .title { |
| | | height: 34px; |
| | | line-height: 34px; |
| | | padding: 0 10px; |
| | | background-color: white; |
| | | } |
| | | |
| | | .standard_table { |
| | | border-top: 1px solid #ebeef5; |
| | | background-color: white; |
| | | } |
| | | |
| | | .product_table { |
| | | border-top: 1px solid #ebeef5; |
| | | height: calc(100% - 235px); |
| | | margin-top: 5px; |
| | | background-color: white; |
| | | user-select: none; |
| | | } |
| | | |
| | | .product_table .el-table { |
| | | height: calc(100% - 35px) !important; |
| | | } |
| | | |
| | | .sort { |
| | | width: 80% !important; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | >>>.el-table__body-wrapper { |
| | | height: calc(100% - 46px) !important; |
| | | } |
| | | |
| | | >>>.header-class { |
| | | height: 40px !important; |
| | | } |
| | | |
| | | >>>.header-class th.el-table__cell>.cell { |
| | | line-height: 20px !important; |
| | | padding-top: 0 !important; |
| | | padding-bottom: 0 !important; |
| | | } |
| | | |
| | | >>>.el-table__row { |
| | | height: 35px !important; |
| | | } |
| | | |
| | | .search { |
| | | border-bottom: 1px solid #ebeef5; |
| | | margin-bottom: 16px; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | padding-bottom: 10px; |
| | | } |
| | | |
| | | .search-item { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .search-item .el-row { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .search-item .el-col { |
| | | margin-left: 0; |
| | | } |
| | | |
| | | .more-edit .dialog-footer { |
| | | position: absolute; |
| | | top: 15px; |
| | | right: 70px; |
| | | } |
| | | |
| | | >>>.is-disabled .el-textarea__inner { |
| | | background: rgba(0, 0, 0, 0.05) !important; |
| | | } |
| | | |
| | | >>>.el-table__body-wrapper::-webkit-scrollbar { |
| | | height: 14px; |
| | | /* 设置æ»å¨æ¡å®½åº¦ */ |
| | | } |
| | | </style> |
| | | <style scoped> |
| | | .standard .el-tree-node__content { |
| | | height: 32px; |
| | | font-size: 14px; |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { |
| | | color: #3a7bfa; |
| | | } |
| | | |
| | | .standard .has-gutter .el-table__cell .cell { |
| | | line-height: 34px; |
| | | background-color: #f8f8f8; |
| | | } |
| | | |
| | | .standard .has-gutter .el-table__cell { |
| | | background-color: #fafafa !important; |
| | | } |
| | | |
| | | .standard .standard_table .el-table__row .cell { |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .standard .el-table .warning-row .cell { |
| | | color: #bababa; |
| | | } |
| | | |
| | | .standard .el-table-filter__list { |
| | | max-height: 400px; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .standard .el-upload { |
| | | width: 100%; |
| | | } |
| | | |
| | | .standard .el-upload-dragger { |
| | | width: 100%; |
| | | } |
| | | |
| | | .standard .handleBtn.is-disabled .el-upload:focus { |
| | | color: #c0c4cc !important; |
| | | } |
| | | |
| | | .standard .avatar-uploader .el-upload { |
| | | height: 80px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | // æ¥è¯¢åè° |
| | | refreshTable(row) { |
| | | selectSampleAndProductByOrderId({id: row.id}).then(res => { |
| | | selectSampleAndProductByOrderId({id: row.id, ...this.page}).then(res => { |
| | | this.tableLoading = false |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records |
| | |
| | | import { obtainItemParameterList } from '@/api/structural/laboratoryScope' |
| | | |
| | | export default { |
| | | name: 'Capability', |
| | | components: {limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog}, |
| | | data() { |
| | | return { |
| | |
| | | import { getToken } from "@/utils/auth"; |
| | | |
| | | export default { |
| | | name: 'Laboratory', |
| | | components: { |
| | | limsTable, |
| | | }, |
| | |
| | | import limsTable from '@/components/Table/lims-table.vue' |
| | | import {addCustom, delCustomById, selectCustomPageList, upCustom} from "@/api/system/customer"; |
| | | export default { |
| | | name: 'Customer', |
| | | components: { |
| | | limsTable |
| | | }, |
| | |
| | | ], |
| | | page: { |
| | | total:0, |
| | | size:10, |
| | | size:20, |
| | | current:0 |
| | | }, |
| | | tableLoading: false, |
| | |
| | | <el-table-column label="åºå·" align="center" type="index" /> |
| | | <el-table-column label="å§å" align="center" key="nickName" prop="nickName" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="è´¦å·" align="center" key="userName" prop="userName" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="è§è²" align="center" key="roleName" prop="roleName" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="ç¶æ" align="center" key="status"> |
| | | <template slot-scope="scope"> |
| | | <el-switch v-model="scope.row.status" active-value="0" inactive-value="1" |