| | |
| | | margin: 10px; |
| | | padding: 15px; |
| | | background-color: white; |
| | | height: calc(100vh - 15vh); |
| | | height: calc(100vh - 18vh); |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .order_num{ |
| | | .order_num { |
| | | border-radius: 1rem; |
| | | width: 35px; |
| | | height: 25px; |
| | |
| | | <el-button size="small">重置</el-button> |
| | | </div> |
| | | <div class="thing"> |
| | | <el-table :data="tableData" style="width: 100%;" row-key="id" default-expand-all |
| | | <el-table :data="tableData" style="width: 100%;" row-key="code" default-expand-all |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}" :key="upIndex"> |
| | | <el-table-column type="index" width="50" label="序号"> |
| | | </el-table-column> |
| | | <el-table-column prop="date" label="申请单号"> |
| | | <el-table-column prop="code" label="申请单号" width="200px"> |
| | | <template slot-scope="scope"> |
| | | <div style="display: flex;"> |
| | | <div v-if="scope.row.code=='01'" style="color: #3caaff;background-color: #eff5ff;" class="order_num">01</div> |
| | | <div v-else-if="scope.row.code=='02'" style="color: #57c981;background-color: #f1fbf4;" class="order_num">02</div> |
| | | <div v-else-if="scope.row.code=='03'" style="color: #dfa8fb;background-color: #faf2ff;" class="order_num">03</div> |
| | | <div>{{scope.row.date}}</div> |
| | | <div v-if="scope.row.orderNum=='01'" style="color: #3caaff;background-color: #eff5ff;" class="order_num"> |
| | | 01 |
| | | </div> |
| | | <div v-else-if="scope.row.orderNum=='02'" style="color: #57c981;background-color: #f1fbf4;" |
| | | class="order_num"> |
| | | 02</div> |
| | | <div v-else-if="scope.row.orderNum=='03'" style="color: #dfa8fb;background-color: #faf2ff;" |
| | | class="order_num"> |
| | | 03</div> |
| | | <div>{{scope.row.code}}</div> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="name" label="检验结果"> |
| | | <el-table-column prop="name" label="名称"> |
| | | </el-table-column> |
| | | <el-table-column prop="address" label="地址"> |
| | | <el-table-column prop="unit" label="单位"> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="80"> |
| | | <el-table-column prop="required" label="要求值"> |
| | | </el-table-column> |
| | | <el-table-column prop="internal" label="内控值"> |
| | | </el-table-column> |
| | | <el-table-column prop="testValue" label="检验值"> |
| | | </el-table-column> |
| | | <el-table-column prop="checker" label="执行人"> |
| | | </el-table-column> |
| | | <el-table-column prop="instrumentname" label="检验日期"> |
| | | </el-table-column> |
| | | <el-table-column prop="testState" label="检验状态"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="primary" v-if="isIfReport(scope.row)">上报</el-button> |
| | | <el-button size="mini" type="warning" @click="openUpDia(scope.row)" |
| | | v-else-if="scope.row.code=='03'&&scope.row.insId==undefined&&scope.row.address==null">分配</el-button> |
| | | <el-button size="mini" type="success" @click="openUpInsDia(scope.row)" |
| | | v-else-if="scope.row.code=='03'&&scope.row.insId==undefined&&scope.row.name==null">检验</el-button> |
| | | <el-tag type="success" v-if="scope.row.testState==1">合格</el-tag> |
| | | <el-tag type="danger" v-else-if="scope.row.testState==0">不合格</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="startTime" label="检验开始" width="100px"> |
| | | </el-table-column> |
| | | <el-table-column prop="endTime" label="检验结束" width="100px"> |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="150"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="primary" v-if="isIfReport(scope.row)" |
| | | @click="addReported(scope.row.id)">上报</el-button> |
| | | <el-button size="mini" type="text" @click="openUpDia(scope.row)" |
| | | v-if="scope.row.orderNum=='02'">分配</el-button> |
| | | <el-button size="mini" type="text" @click="openUpInsDia(scope.row)" |
| | | v-if="scope.row.orderNum=='02'">检验</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <el-dialog title="分配设备和人员" :visible.sync="upDia" width="500px" top="30vh"> |
| | | <div class="body"> |
| | | <el-row style="line-height: 46px;"> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">人员:</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input v-model="upData.address" size="small" clearable></el-input> |
| | | <el-select v-model="upData.checker" size="medium" clearable style="width: 100%;"> |
| | | <el-option v-for="(a, ai) in users" :key="ai" :label="a.name" :value="a.id"></el-option> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">设备:</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-cascader v-model="upData.device" :options="devices" size="medium" style="width: 100%;" clearable |
| | | :props="{label: 'name',value: 'id',emitPath: false}" :show-all-levels="false"></el-cascader> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | <el-dialog title="检验" :visible.sync="upInsDia" width="500px"> |
| | | <div class="body" style="max-height: 50vh;overflow-y: auto;"> |
| | | <el-row style="line-height: 46px;"> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">样品编码:</el-col> |
| | | <el-col :span="8">{{upData.date}}</el-col> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">样品名称:</el-col> |
| | | <el-col :span="8">{{upData.date}}</el-col> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">申请单编码:</el-col> |
| | | <el-col :span="7">{{upData.insId}}</el-col> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">样品名称:</el-col> |
| | | <el-col :span="7">{{upData.productName}}</el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 46px;"> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">检验项目:</el-col> |
| | | <el-col :span="8">{{upData.date}}</el-col> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">单位:</el-col> |
| | | <el-col :span="8">{{upData.date}}</el-col> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">检验项目:</el-col> |
| | | <el-col :span="7">{{upData.name}}</el-col> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">单位:</el-col> |
| | | <el-col :span="7">{{upData.unit}}</el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 46px;"> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">标准值:</el-col> |
| | | <el-col :span="8">{{upData.date}}</el-col> |
| | | <el-col :span="4" style="font-size: 14px;text-align: right;">内控值:</el-col> |
| | | <el-col :span="8">{{upData.date}}</el-col> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">标准值:</el-col> |
| | | <el-col :span="7">{{upData.required}}</el-col> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">内控值:</el-col> |
| | | <el-col :span="7">{{upData.internal}}</el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 46px;"> |
| | | <el-col :span="5" style="font-size: 14px;text-align: right;">检验状态:</el-col> |
| | | <el-col :span="7"> |
| | | <el-tag type="success" v-if="upData.testState==1">合格</el-tag> |
| | | <el-tag type="danger" v-else-if="upData.testState==0">不合格</el-tag> |
| | | <el-tag type="info" v-else>无结果</el-tag> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 46px;"> |
| | | <el-col style="text-align: right;"><el-button size="mini" @click="addRes">添加检验值</el-button></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col> |
| | | <el-table :data="upData.res" border style="width: 99.9%;" :key="upIndex2"> |
| | | <el-table :data="upData.testValue" border style="width: 99.9%;" :key="upIndex2"> |
| | | <el-table-column type="index" width="100" label="序号"> |
| | | </el-table-column> |
| | | <el-table-column label="检验值"> |
| | |
| | | <el-table-column label="操作" width="60"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" |
| | | @click.native.prevent="deleteRow(scope.$index, upData.res)">删除</el-button> |
| | | @click.native.prevent="deleteRow(scope.$index, upData.testValue)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" @click="submitUpData">提 交</el-button> |
| | | <el-button type="primary" @click="submitUpData2">提 交</el-button> |
| | | <el-button @click="upInsDia = false">取 消</el-button> |
| | | </span> |
| | | </el-dialog> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | get, |
| | | post, |
| | | wpost, |
| | | postFile |
| | | } from "@/api/util/requestUtil.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | date: [], |
| | | userName: null, |
| | | }, |
| | | tableData: [{ |
| | | id: 1, |
| | | insId: 123, |
| | | date: '2016-05-02', |
| | | name: null, |
| | | address: '上海市普陀区金沙江路 1518 弄', |
| | | children: [{ |
| | | id: 33, |
| | | date: '2016-05-01', |
| | | name: null, |
| | | res: '[{"number": 1},{"number": 2}]', |
| | | address: '上海市普陀区金沙江路 1519 弄' |
| | | }, { |
| | | id: 34, |
| | | date: '2016-05-01', |
| | | name: null, |
| | | res: '[{"number": 1,"res": "不合格"},{"number": 3,"res": "不合格"}]', |
| | | address: '上海市普陀区金沙江路 1519 弄', |
| | | children: [{ |
| | | id: 35, |
| | | date: 'hhh', |
| | | name: null, |
| | | res: '[{"number": 1},{"number": 2}]', |
| | | address: '上海市普陀区金沙江路 1519 弄' |
| | | }] |
| | | }] |
| | | }, { |
| | | id: 2, |
| | | insId: 123, |
| | | date: '2016-05-04', |
| | | name: null, |
| | | address: '上海市普陀区金沙江路 1517 弄', |
| | | children: [] |
| | | }, { |
| | | id: 3, |
| | | insId: 123, |
| | | date: '2016-05-01', |
| | | children: [{ |
| | | id: 31, |
| | | date: '2016-05-01', |
| | | name: null, |
| | | res: '[{"number": 1},{"number": 2}]', |
| | | address: '上海市普陀区金沙江路 1519 弄' |
| | | }, { |
| | | id: 32, |
| | | date: '2016-05-01', |
| | | name: null, |
| | | res: '[]', |
| | | address: null |
| | | }] |
| | | }], |
| | | tableData: [], |
| | | upDia: false, |
| | | upData: {}, |
| | | upIndex: 0, |
| | | upInsDia: false, |
| | | upIndex2: 0 |
| | | upIndex2: 0, |
| | | users: [], |
| | | devices: [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.selectDataList() |
| | | this.getUsers() |
| | | this.getDevices() |
| | | }, |
| | | methods: { |
| | | selectDataList() { |
| | | this.tableData.forEach(a => { |
| | | a.code = '01' |
| | | if (a.children != undefined) { |
| | | a.children.forEach(b => { |
| | | b.code = '02' |
| | | if (b.children != undefined) { |
| | | b.children.forEach(c => { |
| | | c.code = '03' |
| | | c.res = JSON.parse(c.res) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | get(this.$url.selectAllPlan).then(res => { |
| | | this.tableData = JSON.parse(JSON.stringify(res.data).replaceAll('pid', 'code').replaceAll('samplename', |
| | | 'name').replaceAll('inspectionStatus', 'testState')) |
| | | this.tableData.forEach(a => { |
| | | a.orderNum = '01' |
| | | if (a.children != undefined) { |
| | | a.children.forEach(b => { |
| | | b.orderNum = '02' |
| | | if (b.testValue == undefined) { |
| | | b.testValue = [] |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | this.upIndex++ |
| | | }) |
| | | this.upIndex++ |
| | | }, |
| | | isIfReport(row) { |
| | | var count = 0 |
| | | if (row.children == undefined) return false |
| | | row.children.forEach(a => { |
| | | if (a.name != null && a.name != undefined) count++ |
| | | if (a.testState != null && a.testState != undefined) count++ |
| | | }) |
| | | return row.insId != undefined && count == row.children.length |
| | | return row.testState == undefined && row.orderNum == '01' && count == row |
| | | .children.length |
| | | }, |
| | | openUpDia(row) { |
| | | this.upDia = true |
| | | this.upData = { |
| | | id: row.id, |
| | | address: row.address |
| | | id: row.code, |
| | | checker: null, |
| | | device: null |
| | | } |
| | | }, |
| | | submitUpData() { |
| | | this.tableData.forEach(a => { |
| | | a.children.forEach(b => { |
| | | if (b.id == this.upData.id) { |
| | | b.address = this.upData.address |
| | | } |
| | | }) |
| | | if (this.upData.checker == null || this.upData.checker == '') { |
| | | this.$message.error('人员未分配') |
| | | return |
| | | } else if (this.upData.device == null || this.upData.device == '') { |
| | | this.$message.error('设备未分配') |
| | | return |
| | | } |
| | | wpost(this.$url.distribution, { |
| | | id: this.upData.id, |
| | | userId: this.upData.checker, |
| | | instrumentId: this.upData.device |
| | | }).then(res => { |
| | | this.$message.success('分配成功') |
| | | this.upDia = false |
| | | this.selectDataList() |
| | | }) |
| | | this.$message.success('修改成功') |
| | | this.upIndex++ |
| | | this.upDia = false |
| | | }, |
| | | openUpInsDia(row) { |
| | | this.upInsDia = true |
| | | this.upData = this.HaveJson(row) |
| | | var str = [] |
| | | JSON.parse('[' + this.upData.testValue + ']').forEach(a => { |
| | | str.push({ |
| | | number: a |
| | | }) |
| | | }) |
| | | this.upData.testValue = this.HaveJson(str) |
| | | this.tableData.forEach(a => { |
| | | a.children.forEach(b => { |
| | | if (b.code == this.upData.code) { |
| | | this.upData.insId = a.code |
| | | this.upData.productName = a.name |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | deleteRow(index, rows) { |
| | | rows.splice(index, 1); |
| | | }, |
| | | addRes() { |
| | | this.upData.res.push({ |
| | | this.upData.testValue.push({ |
| | | "number": null |
| | | }) |
| | | this.upIndex2++ |
| | | }, |
| | | getUsers() { |
| | | get(this.$url.choosecheck).then(res => { |
| | | this.users = res.data |
| | | }) |
| | | }, |
| | | getDevices() { |
| | | get(this.$url.chooseinstum).then(res => { |
| | | this.devices = res.data |
| | | }) |
| | | }, |
| | | addReported(id) { |
| | | wpost(this.$url.reported, { |
| | | id: id |
| | | }).then(res => { |
| | | this.$message.success('上报成功') |
| | | this.selectDataList() |
| | | }).catch(e => { |
| | | this.$message.error('上报失败') |
| | | }) |
| | | }, |
| | | submitUpData2() { |
| | | var data = [] |
| | | this.upData.testValue.forEach(a => { |
| | | data.push(a.number) |
| | | }) |
| | | wpost(this.$url.check, { |
| | | id: this.upData.code, |
| | | value: data.toString() |
| | | }).then(res => { |
| | | this.$message.success('提交成功') |
| | | this.upInsDia = false |
| | | this.selectDataList() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | </script> |