Bläddra i källkod

Merge branch 'master' of http://119.23.210.103:3000/wy/zdqy_firm_former

cfort 1 år sedan
förälder
incheckning
2ea33eb818

+ 4 - 0
src/business/platform/data/templaterender/components/import-columns-dialog.vue

@@ -255,6 +255,10 @@ export default {
             if (this.active === 4) return
             if (this.active === 1) {
                 this.selectFieldsTable()
+                // console.log(this.dataTemplate, this.selectFieldsTableData, '111111111')
+                if (this.dataTemplate.attrs.form_key === 'gysxxb') {
+                    this.onlyKey = this.selectFieldsTableData.find(item => item.title === '供应商名称')
+                }
             } else {
                 if (this.$utils.isEmpty(this.importData)) {
                     this.selectFieldsTableData.forEach(s => {

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 0
src/utils/query.js


+ 352 - 0
src/views/component/cytopathologicalDiagnostic/cytopathologicalDiagnostic.vue

@@ -0,0 +1,352 @@
+<!-- lax -->
+<template>
+    <div class="cytopathologicalDiagnostic">
+
+        <el-table
+
+            :data="tableData"
+            :header-cell-style="headFirst"
+            :span-method="objectSpanMethod"
+            border
+            style="width: 100%; margin-top: 20px"
+        >
+
+            <el-table-column
+                prop="xuHao"
+                align="center"
+                label="序号"
+                width="180"
+            />
+            <el-table-column
+                align="center"
+                label="质量指标"
+            >
+
+                <el-table-column
+                    prop="zhiBiaoYiJi"
+                    align="center"
+                    width="180"
+                />
+                <el-table-column
+                    prop="zhiBiaoErJi"
+                    align="center"
+                    width="180"
+                />
+                <el-table-column
+                    prop="zhiBiaoSanJi"
+                    align="center"
+                    width="180"
+                />
+
+            </el-table-column>
+            <el-table-column
+                align="center"
+                prop="zongChou"
+                label="总例数/抽查数"
+            >
+                <template slot-scope="scope">
+                    <!-- <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px"> -->
+                    <!-- <el-form-item> -->
+                    <div v-if="readonly">{{ scope.row.zongChou }}</div>
+                    <el-input v-else v-model="scope.row.zongChou" type="number" placeholder="请输入内容" />
+                    <!-- </el-form-item> -->
+                    <!-- </el-form> -->
+
+                </template>
+
+            </el-table-column>
+            <el-table-column
+                align="center"
+                prop="buFuHeLiShu"
+                label="不符合例数"
+            >
+                <template slot-scope="scope">
+                    <!-- <el-form-item> -->
+                    <div v-if="readonly">{{ scope.row.buFuHeLiShu }}</div>
+                    <el-input v-else v-model="scope.row.buFuHeLiShu" type="number" placeholder="请输入内容" />
+                    <!-- </el-form-item> -->
+                </template>
+
+            </el-table-column>
+            <el-table-column
+                align="center"
+                prop="fuHeLv"
+                label="符合率"
+            >
+                <template slot-scope="scope">
+                    <div v-if="readonly">{{ scope.row.fuHeLv }}</div>
+                    <el-input v-else v-model="scope.row.fuHeLv" type="number" placeholder="请输入内容" />
+                </template>
+            </el-table-column>
+            <el-table-column
+                align="center"
+                prop="beiZhu"
+                label="备注"
+            >
+                <template slot-scope="scope">
+                    <div v-if="readonly">{{ scope.row.beiZhu }}</div>
+                    <el-input v-else v-model="scope.row.beiZhu" placeholder="请输入内容" />
+                </template>
+            </el-table-column>
+
+        </el-table>
+
+    </div>
+</template>
+
+<script>
+export default {
+    components: {
+        IbpsCustomDialog: () => import('@/business/platform/data/templaterender/custom-dialog')
+    },
+    props: {
+        formData: {
+            type: Object,
+            default: () => ({})
+        },
+        params: {
+            type: Object,
+            default: () => {}
+        },
+        readonly: {
+            type: Boolean,
+            default: false
+        }
+    },
+    data () {
+        return {
+            disable: this.params.nodeId !== 'Activity_023im00',
+
+            tableData: [
+                {
+                    xuHao: '1',
+                    zhiBiaoYiJi: '细胞病理诊断及时率',
+                    zhiBiaoErJi: '细胞病理诊断及时率',
+                    zhiBiaoSanJi: '细胞病理诊断及时率',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '2',
+                    zhiBiaoYiJi: '细胞学病理诊断质控符合率',
+                    zhiBiaoErJi: '非妇科细胞学',
+                    zhiBiaoSanJi: '穿刺细胞',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '2',
+                    zhiBiaoYiJi: '细胞学病理诊断质控符合率',
+                    zhiBiaoErJi: '非妇科细胞学',
+                    zhiBiaoSanJi: '脱落细胞',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '2',
+                    zhiBiaoYiJi: '细胞学病理诊断质控符合率',
+                    zhiBiaoErJi: '非妇科细胞学',
+                    zhiBiaoSanJi: '其他',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '2',
+                    zhiBiaoYiJi: '细胞学病理诊断质控符合率',
+                    zhiBiaoErJi: '非妇科细胞学',
+                    zhiBiaoSanJi: '合计',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '2',
+                    zhiBiaoYiJi: '细胞学病理诊断质控符合率',
+                    zhiBiaoErJi: '妇科细胞学(总)',
+                    zhiBiaoSanJi: '妇科细胞学(总)',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '2',
+                    zhiBiaoYiJi: '细胞学病理诊断质控符合率',
+                    zhiBiaoErJi: '妇科高级别及以上病变',
+                    zhiBiaoSanJi: '妇科高级别及以上病变',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '3',
+                    zhiBiaoYiJi: '疑难细胞病理讨论例数(记录)',
+                    zhiBiaoErJi: '疑难细胞病理讨论例数(记录)',
+                    zhiBiaoSanJi: '疑难细胞病理讨论例数(记录)',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '4',
+                    zhiBiaoYiJi: '细胞病理误诊及漏诊率',
+                    zhiBiaoErJi: '细胞病理误诊及漏诊率',
+                    zhiBiaoSanJi: '细胞病理误诊及漏诊率',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '5',
+                    zhiBiaoYiJi: '细胞病理报告双签率',
+                    zhiBiaoErJi: '细胞病理报告双签率',
+                    zhiBiaoSanJi: '细胞病理报告双签率',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                },
+                {
+                    xuHao: '6',
+                    zhiBiaoYiJi: '细胞病理报告的规范性',
+                    zhiBiaoErJi: '细胞病理报告的规范性',
+                    zhiBiaoSanJi: '细胞病理报告的规范性',
+                    zongChou: '',
+                    buFuHeLiShu: '',
+                    fuHeLv: '',
+                    beiZhu: ''
+                }
+            ],
+            ruleForm: {
+                xuHao: '',
+                zhiBiaoYiJi: '',
+                zhiBiaoErJi: '',
+                zhiBiaoSanJi: '',
+                zongChou: '',
+                buFuHeLiShu: '',
+                fuHeLv: '',
+                beiZhu: ''
+            },
+            rules: {
+                zongChou: [
+                    { required: true, message: '请输入总例数/抽查数', trigger: 'blur' }
+
+                ],
+
+                buFuHeLiShu: [
+                    { required: true, message: '请输入不符合例数', trigger: 'blur' }
+                ],
+                fuHeLv: [
+                    { required: true, message: '请输入符合率', trigger: 'blur' }
+                ]
+
+            }
+
+        }
+    },
+    computed: {
+
+    },
+    watch: {
+        tableData: {
+            handler (val) {
+                this.$emit('change-data', 'xbblzdzkbzb', val)
+            },
+            deep: true
+        },
+        'formData.xbblzdzkbzb': {
+            handler (val) {
+                this.tableData = val
+                // console.log('val', val)
+            }
+        }
+    },
+    created () {
+        // console.log(this.formData, this.params, this.readonly)
+    },
+    mounted () {
+
+    },
+    methods: {
+        objectSpanMethod ({ row, column, rowIndex, columnIndex }) {
+            if (columnIndex === 0) {
+                if (rowIndex === 1) {
+                    return [6, 1]
+                }
+                if (rowIndex === 2 || rowIndex === 3 || rowIndex === 4 || rowIndex === 5 || rowIndex === 6) {
+                    return [0, 0]
+                }
+                if (rowIndex === 0 || rowIndex === 7 || rowIndex === 8 || rowIndex === 9 || rowIndex === 10) {
+                    return [1, 1]
+                }
+            }
+            if (columnIndex === 1) {
+                if (rowIndex === 0 || rowIndex === 7 || rowIndex === 8 || rowIndex === 9 || rowIndex === 10) {
+                    return [1, 3]
+                }
+                if (rowIndex === 1) {
+                    return [6, 1]
+                }
+                if (rowIndex === 2 || rowIndex === 3 || rowIndex === 4 || rowIndex === 5 || rowIndex === 6) {
+                    return [0, 0]
+                }
+            }
+            if (columnIndex === 2) {
+                if (rowIndex === 0 || rowIndex === 7 || rowIndex === 8 || rowIndex === 9 || rowIndex === 10) {
+                    return [0, 0]
+                }
+                if (rowIndex === 1) {
+                    return [4, 1]
+                }
+                if (rowIndex === 2 || rowIndex === 3 || rowIndex === 4) {
+                    return [0, 0]
+                }
+
+                if (rowIndex === 5 || rowIndex === 6) {
+                    return [1, 2]
+                }
+            }
+            if (columnIndex === 3) {
+                if (rowIndex === 0 || rowIndex === 7 || rowIndex === 8 || rowIndex === 9 || rowIndex === 10) {
+                    return [0, 0]
+                }
+                if (rowIndex === 5 || rowIndex === 6) {
+                    return [0, 0]
+                }
+            }
+        },
+        headFirst ({ row, colunm, rowIndex, columnIndex }) {
+            if (rowIndex === 1) {
+            // 这里为了是将第二列的表头隐藏,就形成了合并表头的效果
+                return { display: 'none' }
+            }
+            return 'background:#f5f7fa'
+        }
+
+    }
+}
+</script>
+
+<style lang="scss">
+.cytopathologicalDiagnostic{
+    .el-table th {
+        background-color: #84d5cf !important;
+        font-size: 14px;
+        color: #000000;
+    }
+}
+
+</style>
+

+ 106 - 41
src/views/component/device/deviceDialog.vue

@@ -30,7 +30,7 @@
                                                 v-model="form.sheBeiMingChen"
                                                 size="mini"
                                                 template-key="sbysdhk"
-                                                :disabled="false"
+                                                :disabled="readonly"
                                                 type="dialog"
                                                 class="custom-dialog"
                                                 placeholder="请选择"
@@ -45,7 +45,8 @@
                                             <template slot="label">
                                                 <span class="required">设备名称:</span>
                                             </template>
-                                            <el-input v-model="form.sheBeiMingCheng" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.sheBeiMingCheng" size="mini" />
+                                            <span v-else>{{ form.sheBeiMingCheng ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
@@ -59,7 +60,7 @@
                                                 v-model="form.bianZhiBuMen"
                                                 type="position"
                                                 readonly-text="text"
-                                                :disabled="false"
+                                                :disabled="readonly"
                                                 :multiple="false"
                                                 size="mini"
                                                 :filter="filter"
@@ -89,6 +90,7 @@
                                                 <span class="required">建档时间:</span>
                                             </template>
                                             <el-date-picker
+                                                v-if="!readonly"
                                                 v-model="form.bianZhiShiJian"
                                                 style="width:100%"
                                                 type="datetime"
@@ -98,6 +100,7 @@
                                                 value-format="yyyy-MM-dd HH:mm"
                                                 size="mini"
                                             />
+                                            <span v-else>{{ form.bianZhiShiJian ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
@@ -118,19 +121,20 @@
                                             <template slot="label">
                                                 <span class="required">{{ hideSysDeviceNo?'设备编号':'原设备编号' }}:</span>
                                             </template>
-                                            <el-input v-model="form.yuanSheBeiBian" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.yuanSheBeiBian" size="mini" />
+                                            <span v-else>{{ form.yuanSheBeiBian ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="8">
                                         <el-form-item label="设备状态:" prop="sheBeiZhuangTa">
-                                            <span>{{ showState }}</span>
+                                            <span>{{ showState ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
                                 <el-row :gutter="20">
                                     <el-col :span="8">
                                         <el-form-item label="设备类型:" prop="sheBeiLeiXing">
-                                            <el-select v-model="form.sheBeiLeiXing" placeholder="请选择" size="mini" style="width:100%">
+                                            <el-select v-if="!readonly" v-model="form.sheBeiLeiXing" placeholder="请选择" size="mini" style="width:100%">
                                                 <el-option
                                                     v-for="item in ['检验系统','通用设备','软件','信息系统']"
                                                     :key="item"
@@ -138,6 +142,7 @@
                                                     :value="item"
                                                 />
                                             </el-select>
+                                            <span v-else>{{ form.sheBeiLeiXing ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="8">
@@ -145,7 +150,8 @@
                                             <template slot="label">
                                                 <span class="required">规格型号:</span>
                                             </template>
-                                            <el-input v-model="form.guiGeXingHao" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.guiGeXingHao" size="mini" />
+                                            <span v-else>{{ form.guiGeXingHao ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="8">
@@ -153,7 +159,7 @@
                                             <template slot="label">
                                                 <span class="required">接收时状态:</span>
                                             </template>
-                                            <el-select v-model="form.jieShouZhuangTai" placeholder="请选择" size="mini" style="width:100%">
+                                            <el-select v-if="!readonly" v-model="form.jieShouZhuangTai" placeholder="请选择" size="mini" style="width:100%">
                                                 <el-option
                                                     v-for="item in ['新设备','二手或翻新设备']"
                                                     :key="item"
@@ -161,6 +167,7 @@
                                                     :value="item"
                                                 />
                                             </el-select>
+                                            <span v-else>{{ form.jieShouZhuangTai ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
@@ -174,7 +181,7 @@
                                                 v-model="form.guanLiRen"
                                                 type="user"
                                                 readonly-text="text"
-                                                :disabled="false"
+                                                :disabled="readonly"
                                                 :multiple="false"
                                                 size="mini"
                                                 :filter="filter"
@@ -192,7 +199,7 @@
                                                 v-model="form.cunFangWeiZhi"
                                                 size="mini"
                                                 template-key="fjxzkdd"
-                                                :disabled="false"
+                                                :disabled="readonly"
                                                 type="dialog"
                                                 class="custom-dialog"
                                                 placeholder="请选择"
@@ -203,7 +210,8 @@
                                     </el-col>
                                     <el-col :span="8">
                                         <el-form-item label="固定资产号:">
-                                            <el-input v-model="form.ziChanBianHao" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.ziChanBianHao" size="mini" />
+                                            <span v-else>{{ form.ziChanBianHao ||'/' }}</span>
                                         </el-form-item>
 
                                     </el-col>
@@ -211,7 +219,8 @@
                                 <el-row :gutter="20">
                                     <el-col :span="8">
                                         <el-form-item label="厂家/品牌:">
-                                            <el-input v-model="form.changShang" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.changShang" size="mini" />
+                                            <span v-else>{{ form.changShang ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="8">
@@ -220,6 +229,7 @@
                                                 <span class="required">出厂日期</span>
                                             </template>
                                             <el-date-picker
+                                                v-if="!readonly"
                                                 v-model="form.chuChangRiQi"
                                                 style="width:100%"
                                                 type="date"
@@ -228,11 +238,13 @@
                                                 value-format="yyyy-MM-dd"
                                                 size="mini"
                                             />
+                                            <span v-else>{{ form.chuChangRiQi ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="8">
                                         <el-form-item label="出厂编号:">
-                                            <el-input v-model="form.jiShenXuHao" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.jiShenXuHao" size="mini" />
+                                            <span v-else>{{ form.jiShenXuHao ||'/' }}</span>
                                         </el-form-item>
 
                                     </el-col>
@@ -244,7 +256,7 @@
                                                 v-model="form.shiFouQiJianH"
                                                 size="mini"
                                                 template-key="gysxxdhk"
-                                                :disabled="false"
+                                                :disabled="readonly"
                                                 type="dialog"
                                                 class="custom-dialog"
                                                 placeholder="请选择"
@@ -256,12 +268,14 @@
                                     </el-col>
                                     <el-col :span="8">
                                         <el-form-item label="供应商电话:">
-                                            <el-input v-model="form.lianXiFangShi" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.lianXiFangShi" size="mini" />
+                                            <span v-else>{{ form.lianXiFangShi ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                     <el-col :span="8">
                                         <el-form-item label="注册证号:">
-                                            <el-input v-model="form.zhuCeZhengHao" size="mini" />
+                                            <el-input v-if="!readonly" v-model="form.zhuCeZhengHao" size="mini" />
+                                            <span v-else>{{ form.zhuCeZhengHao ||'/' }}</span>
                                         </el-form-item>
                                     </el-col>
                                 </el-row>
@@ -304,6 +318,7 @@
                                                     <el-col>
                                                         <el-form-item label="购进日期:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.gouJinRiQi"
                                                                 style="width:100%"
                                                                 type="date"
@@ -312,6 +327,7 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.gouJinRiQi ||'/' }}</span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -319,6 +335,7 @@
                                                     <el-col>
                                                         <el-form-item label="接收日期:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.jieShouRiQi"
                                                                 style="width:100%"
                                                                 type="date"
@@ -327,6 +344,7 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.jieShouRiQi ||'/' }}</span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -334,6 +352,7 @@
                                                     <el-col>
                                                         <el-form-item label="验收日期:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.yanShouRiQi"
                                                                 style="width:100%"
                                                                 type="date"
@@ -342,6 +361,7 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.yanShouRiQi ||'/' }}</span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -349,6 +369,7 @@
                                                     <el-col>
                                                         <el-form-item label="投入日期:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.qiYongRiQi"
                                                                 style="width:100%"
                                                                 type="date"
@@ -357,6 +378,7 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.qiYongRiQi ||'/' }}</span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -364,6 +386,7 @@
                                                     <el-col>
                                                         <el-form-item label="核查日期:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.biXuSheShi"
                                                                 style="width:100%"
                                                                 type="date"
@@ -372,6 +395,7 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.biXuSheShi ||'/' }}</span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -382,7 +406,7 @@
                                                                 v-model="form.biXuDeHuanJin"
                                                                 type="user"
                                                                 readonly-text="text"
-                                                                :disabled="false"
+                                                                :disabled="readonly"
                                                                 :multiple="false"
                                                                 size="mini"
                                                                 style="width:100%"
@@ -395,28 +419,35 @@
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="电源要求:">
-                                                            <el-input v-model="form.dianYuanYaoQiu" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.dianYuanYaoQiu" size="mini" />
+                                                            <span v-else>{{ form.dianYuanYaoQiu ||'/' }}</span>
+
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="环境要求:">
-                                                            <el-input v-model="form.huanJingYaoQiu" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.huanJingYaoQiu" size="mini" />
+                                                            <span v-else>{{ form.huanJingYaoQiu ||'/' }}</span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="使用年限(年):">
-                                                            <el-input v-model="form.heChaXiaoZhun" size="mini" type="number" />
+                                                            <el-input v-if="!readonly" v-model="form.heChaXiaoZhun" size="mini" type="number" />
+                                                            <span v-else>{{ form.heChaXiaoZhun ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="资产原值(元):">
-                                                            <el-input v-model="form.ziChanYuanZhi" size="mini" type="number" />
+                                                            <el-input v-if="!readonly" v-model="form.ziChanYuanZhi" size="mini" type="number" />
+                                                            <span v-else>{{ form.ziChanYuanZhi ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -426,7 +457,7 @@
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="是否维护:">
-                                                            <el-select v-model="form.shiFouWeiHu" placeholder="请选择" size="mini" style="width:100%">
+                                                            <el-select v-if="!readonly" v-model="form.shiFouWeiHu" placeholder="请选择" size="mini" style="width:100%">
                                                                 <el-option
                                                                     v-for="item in ['是','否']"
                                                                     :key="item"
@@ -434,18 +465,20 @@
                                                                     :value="item"
                                                                 />
                                                             </el-select>
+                                                            <span v-else>{{ form.shiFouWeiHu ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row>
                                                     <el-col>
-                                                        <el-form-item label="设备分组:">
+                                                        <el-form-item label="岗位/分组:">
                                                             <ibps-custom-dialog
                                                                 v-model="form.weiHuFangShi"
                                                                 size="mini"
                                                                 template-key="sbbqdhk"
                                                                 multiple
-                                                                :disabled="false"
+                                                                :disabled="readonly"
                                                                 type="dialog"
                                                                 class="custom-dialog"
                                                                 placeholder="请选择"
@@ -458,7 +491,7 @@
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="是否24H开机:">
-                                                            <el-select v-model="form.jianKongYiJu" placeholder="请选择" size="mini" style="width:100%">
+                                                            <el-select v-if="!readonly" v-model="form.jianKongYiJu" placeholder="请选择" size="mini" style="width:100%">
                                                                 <el-option
                                                                     v-for="item in ['是','否']"
                                                                     :key="item"
@@ -466,6 +499,8 @@
                                                                     :value="item"
                                                                 />
                                                             </el-select>
+                                                            <span v-else>{{ form.jianKongYiJu ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -473,12 +508,15 @@
                                                     <el-col>
                                                         <el-form-item label="开机时间:">
                                                             <el-time-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.kaiShiShiYong"
                                                                 placeholder="任意时间点"
                                                                 size="mini"
                                                                 style="width:100%"
                                                                 value-format="HH:mm:ss"
                                                             />
+                                                            <span v-else>{{ form.kaiShiShiYong ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -486,13 +524,15 @@
                                                     <el-col>
                                                         <el-form-item label="关机时间:">
                                                             <el-time-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.shiJiShiYongF"
                                                                 placeholder="任意时间点"
                                                                 size="mini"
                                                                 style="width:100%"
                                                                 value-format="HH:mm:ss"
                                                             />
-                                                        </el-form-item>
+                                                            <span v-else>{{ form.shiJiShiYongF ||'/' }}
+                                                            </span></el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <!-- <el-row>
@@ -533,7 +573,7 @@
                                                 <el-row>
                                                     <el-col>
                                                         <el-form-item label="是否校准:" prop="shiFouXiaoZhun">
-                                                            <el-select v-model="form.shiFouXiaoZhun" placeholder="请选择" size="mini" style="width:100%">
+                                                            <el-select v-if="!readonly" v-model="form.shiFouXiaoZhun" placeholder="请选择" size="mini" style="width:100%">
                                                                 <el-option
                                                                     v-for="item in ['是','否']"
                                                                     :key="item"
@@ -541,13 +581,17 @@
                                                                     :value="item"
                                                                 />
                                                             </el-select>
+                                                            <span v-else>{{ form.shiFouXiaoZhun ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="form.shiFouXiaoZhun==='是'">
                                                     <el-col>
                                                         <el-form-item label="检定/校准周期(月):" label-width="140">
-                                                            <el-input v-model="form.xiaoZhunZQ" size="mini" type="number" style="width:100%" />
+                                                            <el-input v-if="!readonly" v-model="form.xiaoZhunZQ" size="mini" type="number" style="width:100%" />
+                                                            <span v-else>{{ form.xiaoZhunZQ ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -558,7 +602,7 @@
                                                                 v-model="form.shiYongKeShi"
                                                                 size="mini"
                                                                 template-key="gysxxdhk"
-                                                                :disabled="false"
+                                                                :disabled="readonly"
                                                                 type="dialog"
                                                                 class="custom-dialog"
                                                                 placeholder="请选择"
@@ -572,6 +616,7 @@
                                                     <el-col>
                                                         <el-form-item label="最近校准时间:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.yiXiaoRiQi"
                                                                 style="width:100%"
                                                                 type="date"
@@ -580,6 +625,8 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.yiXiaoRiQi ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -587,6 +634,7 @@
                                                     <el-col>
                                                         <el-form-item label="校准有效期至:">
                                                             <el-date-picker
+                                                                v-if="!readonly"
                                                                 v-model="form.xiaoZhunYouXia"
                                                                 style="width:100%"
                                                                 type="date"
@@ -595,48 +643,62 @@
                                                                 value-format="yyyy-MM-dd"
                                                                 size="mini"
                                                             />
+                                                            <span v-else>{{ form.xiaoZhunYouXia ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="form.shiFouXiaoZhun==='是'">
                                                     <el-col>
                                                         <el-form-item label="校准证书编号:">
-                                                            <el-input v-model="form.zhengShuBianHa" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.zhengShuBianHa" size="mini" />
+                                                            <span v-else>{{ form.zhengShuBianHa ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="false">
                                                     <el-col>
                                                         <el-form-item label="校准机构:">
-                                                            <el-input v-model="form.shiWuShuoMing" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.shiWuShuoMing" size="mini" />
+                                                            <span v-else>{{ form.shiWuShuoMing ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="form.shiFouXiaoZhun==='是' && !isSheKou">
                                                     <el-col>
                                                         <el-form-item label="检定/校准参数:">
-                                                            <el-input v-model="form.jianDingXiao" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.jianDingXiao" size="mini" />
+                                                            <span v-else>{{ form.jianDingXiao ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="form.shiFouXiaoZhun==='是' && !isSheKou">
                                                     <el-col>
                                                         <el-form-item label="测量范围:">
-                                                            <el-input v-model="form.ceLiangGongZuo" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.ceLiangGongZuo" size="mini" />
+                                                            <span v-else>{{ form.ceLiangGongZuo ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="form.shiFouXiaoZhun==='是' && !isSheKou">
                                                     <el-col>
                                                         <el-form-item label="U/精确度/最大允差:" label-width="130">
-                                                            <el-input v-model="form.zuiDaYunCha" size="mini" style="width:100%" />
+                                                            <el-input v-if="!readonly" v-model="form.zuiDaYunCha" size="mini" style="width:100%" />
+                                                            <span v-else>{{ form.zuiDaYunCha ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
                                                 <el-row v-if="form.shiFouXiaoZhun==='是' && !isSheKou">
                                                     <el-col>
                                                         <el-form-item label="修正值:">
-                                                            <el-input v-model="form.xiuZhengZhiXiu" size="mini" />
+                                                            <el-input v-if="!readonly" v-model="form.xiuZhengZhiXiu" size="mini" />
+                                                            <span v-else>{{ form.xiuZhengZhiXiu ||'/' }}
+                                                            </span>
                                                         </el-form-item>
                                                     </el-col>
                                                 </el-row>
@@ -668,7 +730,7 @@
                                                         :download="true"
                                                         multiple
                                                         accept="*"
-                                                        :readonly="false"
+                                                        :readonly="readonly"
                                                         style="width:100%"
                                                     />
                                                 </el-form-item>
@@ -680,7 +742,7 @@
                                                         :download="true"
                                                         multiple
                                                         accept="*"
-                                                        :readonly="false"
+                                                        :readonly="readonly"
                                                         style="width:100%"
                                                     />
                                                 </el-form-item>
@@ -692,7 +754,7 @@
                                                         :download="true"
                                                         multiple
                                                         accept="*"
-                                                        :readonly="false"
+                                                        :readonly="readonly"
                                                         style="width:100%"
                                                     />
                                                 </el-form-item>
@@ -720,7 +782,7 @@
                                         </keep-alive>
                                     </template>
                                     <template v-else>
-                                        <component :is="item.component" :ref="item.ref" :list-data="form[item.data]" />
+                                        <component :is="item.component" :ref="item.ref" :readonly="readonly" :list-data="form[item.data]" />
                                     </template>
                                 </el-tab-pane>
                             </el-tabs>
@@ -752,6 +814,10 @@ export default {
         IbpsImage: () => import('@/business/platform/file/image')
     },
     props: {
+        readonly: {
+            type: Boolean,
+            default: false
+        },
         params: {
             type: Object,
             default: function () {
@@ -799,7 +865,6 @@ export default {
             isFirstyiXiaoRiQi: true,
             isFirstbianZhiBuMen: true,
             isSheKou: false,
-            readonly: false,
             activeName: 'one',
             dialogVisible: true,
             userId: userId,
@@ -810,7 +875,7 @@ export default {
             loading: false,
             title: '设备档案卡',
             toolbars: [
-                { key: 'save', label: '保存' },
+                { key: 'save', label: '保存', hidden: () => { return this.readonly } },
                 { key: 'cancel', label: '退出', type: 'danger', icon: 'ibps-icon-close' }
             ],
             initWidth: '1480px',

+ 56 - 30
src/views/component/device/index.vue

@@ -94,7 +94,7 @@
                         slot="customButton"
                         slot-scope="{row}"
                     >
-                        <el-button type="text" icon="el-icon-edit-outline" @click="goEdit(row)">修改</el-button>
+                        <el-button type="text" :icon="hasRole?'el-icon-edit-outline':'ibps-icon-eye'" @click="goEdit(row)">{{ hasRole?'修改':'查阅' }}</el-button>
                         <!-- <el-button type="text" icon="el-icon-view" @click="goLook(row)">查阅</el-button> -->
                         <el-button type="text" icon="ibps-icon-table" @click="goLookForm(row)">表单</el-button>
 
@@ -309,7 +309,15 @@
                 </ibps-crud>
             </template>
         </ibps-container>
-        <DeviceDialog v-if="deviceDialogShow" :params="params" :state-list="stateList" :tab-list="tabList" :hide-sys-device-no="hideSysDeviceNo" @close="close" />
+        <DeviceDialog
+            v-if="deviceDialogShow"
+            :params="params"
+            :state-list="stateList"
+            :tab-list="tabList"
+            :hide-sys-device-no="hideSysDeviceNo"
+            :readonly="!hasRole"
+            @close="close"
+        />
         <input id="" ref="file1" type="file" name="" accept=".xlsx,.xls" @change="handleUploadChange1">
         <input id="" ref="file2" type="file" name="" accept=".xlsx,.xls" @change="handleUploadChange2">
 
@@ -465,8 +473,8 @@ export default {
                     { key: 'customPrint', label: '打印标签', icon: 'ibps-icon-cog', type: 'warning' },
                     { key: 'customExport', label: '导出数据', icon: 'ibps-icon-sign-in', type: 'primary' },
                     { key: 'customImport', label: '导入数据', icon: 'ibps-icon-sign-in', type: 'primary' },
-                    { key: 'customSetting', label: '设置分组配置', icon: 'ibps-icon-cogs', type: 'info' },
-                    { key: 'customRemove', label: '删除', icon: 'ibps-icon-close', type: 'danger' }
+                    { key: 'customSetting', label: '岗位/分组配置', icon: 'ibps-icon-cogs', type: 'info' },
+                    { key: 'customRemove', label: '删除', icon: 'ibps-icon-close', type: 'danger', hidden: () => { return !this.hasRole } }
                 ],
                 // 查询条件
                 searchForm: {
@@ -480,7 +488,7 @@ export default {
                         { prop: '', label: '设备状态', fieldType: 'slot', slotName: 'deviceStatus' },
                         { prop: '', label: '放置地点', fieldType: 'slot', slotName: 'place' },
                         { prop: '', label: '管理人', fieldType: 'slot', slotName: 'managePeople' },
-                        { prop: '', label: '设备分组', fieldType: 'slot', slotName: 'deviceClass' }
+                        { prop: '', label: '岗位/分组', fieldType: 'slot', slotName: 'deviceClass' }
 
                     ]
                 },
@@ -496,7 +504,7 @@ export default {
                     { prop: 'guiGeXingHao', label: '规格型号', sortable: true },
                     { prop: 'sheBeiZhuangTa', label: '设备状态', sortable: true, slotName: 'deviceStateSlot' },
                     { prop: 'guanLiRen', label: '保管人', slotName: 'userSlot', sortable: true },
-                    { prop: 'weiHuFangShi', label: '设备分组', slotName: 'deviceSlot', sortable: true },
+                    { prop: 'weiHuFangShi', label: '岗位/分组', slotName: 'deviceSlot', sortable: true },
                     { prop: 'cunFangWeiZhi', label: '放置地点', slotName: 'placeSlot', sortable: true },
                     { prop: '', label: '操作', width: 130, slotName: 'customButton' }
                 ]
@@ -516,7 +524,7 @@ export default {
                 sheBeiLeiXing: '设备类型(检验系统/通用设备/软件/信息系统)',
                 shiFouWeiHu: '是否维护(是/否)',
                 shiFouXiaoZhun: '是否校准(是/否)',
-                weiHuFangShi: '设备分组',
+                weiHuFangShi: '岗位/分组',
                 guiGeXingHao: '规格型号',
                 cunFangDiDian: '存放地点(格式:房间号+空格+房间名)',
                 guanLiRen: '保管人',
@@ -556,7 +564,7 @@ export default {
                 weiHuRiQi: '维护日期*',
                 weiHuXiangMuC: '维护项目*'
             },
-            dateFieldRange: ['chuChangRiQi', 'yanShouRiQi', 'jieShouRiQi', 'qiYongRiQi', 'yiXiaoRiQi', 'xiaoZhunYouXia', 'biXuSheShi'],
+            dateFieldRange: ['chuChangRiQi', 'yanShouRiQi', 'jieShouRiQi', 'qiYongRiQi', 'yiXiaoRiQi', 'xiaoZhunYouXia'],
             requiredFieldMap: {
                 bianZhiBuMen: '部门',
                 sheBeiMingCheng: '设备名称',
@@ -572,8 +580,8 @@ export default {
                 'jieShouRiQi': '接收日期',
                 'qiYongRiQi': '投入日期',
                 'yiXiaoRiQi': '已校日期',
-                'xiaoZhunYouXia': '校准有效期至',
-                'biXuSheShi': '核查日期'
+                'xiaoZhunYouXia': '校准有效期至'
+                // 'biXuSheShi': '核查日期'
             },
             validationRules: {
                 '设备状态': {
@@ -626,11 +634,17 @@ export default {
             },
             stateList: { '停用': '停用', '报废': '报废', '合格': '合格' },
             hideSysDeviceNo: false,
-            tabList: {}
+            tabList: {},
+            hasRole: true
         }
     },
     async mounted () {
-        const { stateList, hideSysDeviceNo, tabList } = await getSetting('device') || {}
+        const { stateList, hideSysDeviceNo, tabList, hasDeviceRole } = await getSetting('device') || {}
+        if (hasDeviceRole) {
+            console.debug('hasDeviceRole', hasDeviceRole)
+            const { role, isSuper } = this.$store.getters || {}
+            this.hasRole = isSuper || role.some(r => hasDeviceRole.includes(r.alias))
+        }
         if (stateList) {
             console.debug('stateList', stateList)
             this.stateList = stateList
@@ -735,7 +749,7 @@ export default {
                 })
                 parameters.parameters.push(obj)
             }
-            // 设备分组搜索(可多选)
+            // 岗位/分组搜索(可多选)
             if (this.search.deviceClass) {
                 const obj = { relation: 'OR', parameters: [] }
                 this.search.deviceClass.split(',').forEach(item => {
@@ -861,6 +875,7 @@ export default {
             this.customDialogVisible = true
         },
         handleCustomRemove (selection) {
+            if (!this.hasRole) return
             console.log('selection', selection)
             if (!selection || selection.length === 0) {
                 return this.$message.warning('请选择要删除的数据!')
@@ -977,7 +992,7 @@ export default {
             }
         },
         async switchExportData (data) {
-            const deviceGroupSql = `select id_,wei_hu_gang_wei_ from t_sbwhgwpzb` // 设备分组信息
+            const deviceGroupSql = `select id_,wei_hu_gang_wei_ from t_sbwhgwpzb` // 岗位/分组信息
             const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb` // 供应商信息
             const { variables: { data: deviceGroupData }} = await this.$common.request('sql', deviceGroupSql)
             const { variables: { data: gysData }} = await this.$common.request('sql', supplierSql)
@@ -986,7 +1001,7 @@ export default {
                 const item = exportData[i]
                 item.bianZhiBuMen = this.switchIdToDept(item.bianZhiBuMen.split(',')[0])
                 item.guanLiRen = this.switchIdToUserName(item.guanLiRen.split(',')[0])
-                item.biXuDeHuanJin = this.switchIdToUserName(item.biXuDeHuanJin.split(',')[0])
+                // item.biXuDeHuanJin = this.switchIdToUserName(item.biXuDeHuanJin.split(',')[0])
                 item.weiHuFangShi = this.switchDeviceIdToName(item.weiHuFangShi, deviceGroupData)
                 item.shiYongKeShi = this.switchGYSIdToName(item.shiYongKeShi, gysData)
                 if (this.stateList[item.sheBeiZhuangTa]) {
@@ -995,7 +1010,7 @@ export default {
             }
             return exportData
         },
-        // 设备分组id 转 设备分组名称
+        // 岗位/分组id 转 岗位/分组名称
         switchDeviceIdToName (val, deviceGroupList) {
             const result = []
             const valList = val?.split(',') || []
@@ -1390,17 +1405,17 @@ export default {
                     element.guanLiRen = ''
                 }
                 // 处理核查人
-                if (element.biXuDeHuanJin !== '') {
-                    const checkPerson = employeeList.find(i => i.userName === element.biXuDeHuanJin.trim())
-                    if (checkPerson) {
-                        const checkPersonId = checkPerson.userId
-                        element.biXuDeHuanJin = checkPersonId
-                    } else {
-                        element.biXuDeHuanJin = ''
-                    }
-                } else {
-                    element.biXuDeHuanJin = ''
-                }
+                // if (element.biXuDeHuanJin !== '') {
+                //     const checkPerson = employeeList.find(i => i.userName === element.biXuDeHuanJin.trim())
+                //     if (checkPerson) {
+                //         const checkPersonId = checkPerson.userId
+                //         element.biXuDeHuanJin = checkPersonId
+                //     } else {
+                //         element.biXuDeHuanJin = ''
+                //     }
+                // } else {
+                //     element.biXuDeHuanJin = ''
+                // }
             })
         },
         handleDeviceGroupInfo (list, deviceGroupList) {
@@ -1418,7 +1433,7 @@ export default {
             const workBook = xlsx.read(dataBinary, { type: 'binary', cellDates: true })
             const workSheet = workBook.Sheets[workBook.SheetNames[0]]
             const data = xlsx.utils.sheet_to_json(workSheet)
-            let importData = this.switchDeviceObj(data, this.deviceColumns)
+            let importData = this.switchDeviceObj(data, { ...this.deviceColumns, t: '设备分组' }) // 这个t用于兼容老版本的模板
             importData.forEach(i => {
                 delete i.sheBeiShiBieH // 设备编号需自动生成
                 // i.sheBeiZhuangTa = '合格'
@@ -1427,11 +1442,22 @@ export default {
                     i.sheBeiZhuangTa = keyFound[0]
                 }
             })
+            const isNewVersion = importData.some(i => i.weiHuFangShi) // 判断是否是最新模板
+            if (isNewVersion) { // 使用岗位/分组
+                importData.forEach(i => {
+                    delete i.t
+                })
+            } else { // 使用设备分组
+                importData.forEach(i => {
+                    i.weiHuFangShi = i.t
+                    delete i.t
+                })
+            }
             const currentPosition = this.level
             const { userList = [], deptList = [] } = this.$store.getters || {}
             const positionSql = `select id_,fang_jian_ming_ha from t_jjqfjb where di_dian_ = ${currentPosition}` // 房间信息
             const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb where di_dian_ = ${currentPosition}` // 供应商信息
-            const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 设备分组信息
+            const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 岗位/分组信息
             const currentTime = dayjs().format('YYYY-MM-DD HH:mm')
             const currentApartment = this.$store.getters.userInfo.employee.positions
             const currentUser = this.userId
@@ -1581,7 +1607,7 @@ export default {
             const { userList = [], deptList = [] } = this.$store.getters || {}
             const positionSql = `select id_,fang_jian_ming_ha from t_jjqfjb where di_dian_ = ${currentPosition}` // 房间信息
             const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb where di_dian_ = ${currentPosition}` // 供应商信息
-            const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 设备分组信息
+            const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 岗位/分组信息
             const currentTime = dayjs().format('YYYY-MM-DD HH:mm')
             const currentApartment = this.$store.getters.userInfo.employee.positions
             const currentUser = this.userId

+ 5 - 1
src/views/component/device/maintenance.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="table">
-        <div class="button">
+        <div v-if="!readonly" class="button">
             <el-button size="mini" icon="el-icon-plus" type="success" @click="goAdd">添加</el-button>
             <el-button size="mini" icon="el-icon-close" type="danger" @click="goDelete">删除</el-button>
         </div>
@@ -59,6 +59,10 @@ export default {
         listData: {
             type: Array,
             default: () => []
+        },
+        readonly: {
+            type: Boolean,
+            default: false
         }
     },
     data () {

+ 5 - 1
src/views/component/device/moreDevices.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="table">
-        <div class="button">
+        <div v-if="!readonly" class="button">
             <el-button size="mini" icon="el-icon-plus" type="success" @click="goAdd">添加</el-button>
             <el-button size="mini" icon="el-icon-close" type="danger" @click="goDelete">删除</el-button>
         </div>
@@ -65,6 +65,10 @@ export default {
         listData: {
             type: Array,
             default: () => []
+        },
+        readonly: {
+            type: Boolean,
+            default: false
         }
     },
     data () {

+ 1 - 0
src/views/component/facility/facilityData.vue

@@ -180,6 +180,7 @@ export default {
         },
         // 初始化数据
         initData (data) {
+            data = data.replace(/\n/g, '')
             const ans = JSON.parse(data)
             const result = []
             if (this.isFirst) {

+ 7 - 5
src/views/component/personnelFile/index.vue

@@ -385,11 +385,13 @@ export default {
         checkData (val) {
             const nameArr = ['name', 'jianDingZiGeZ', 'gender']
             let identification = 0
-            nameArr.forEach((item, i) => {
-                if (val[item] === '' || val[item] === null) {
-                    identification = 1
-                }
-            })
+            if (this.buttonType === 1) {
+                nameArr.forEach((item, i) => {
+                    if (val[item] === '' || val[item] === null) {
+                        identification = 1
+                    }
+                })
+            }
             return identification === 0
         },
         tipsMess (val) {

+ 271 - 0
src/views/component/qualityControl/cytopathologyTechnique.vue

@@ -0,0 +1,271 @@
+<template>
+    <div>
+        <div class="cytopathologyTechnique">
+            <el-row type="flex">
+                <el-col class="button">
+                    <div class="title">细胞病理技术质控子表</div>
+                    <div v-if="isRead" />
+                    <div v-else>
+                        <el-button type="primary" size="mini" icon="ibps-icon-add" @click="handleAdd"> 添加</el-button>
+                        <el-button type="primary" size="mini" icon="ibps-icon-copy" @click="handleCopy"> 复制</el-button>
+                        <el-button type="danger" size="mini" icon="ibps-icon-remove" @click="handleDelete"> 删除</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <el-row type="flex">
+                <el-col>
+                    <el-table ref="external" :data="reagentBatchDataFilter" @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="50" />
+                        <el-table-column label="标本类型">
+                            <el-table-column label="细胞学号" width="120" prop="biaoBenLeiXing">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.biaoBenLeiXing" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.biaoBenLeiXing }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+                        <el-table-column label="液基制片">
+                            <el-table-column label="优" prop="yeJiYou">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.yeJiYou" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.yeJiYou }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="良" prop="yeJiLiang">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.yeJiLiang" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.yeJiLiang }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格" prop="yeJiHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.yeJiHeGe" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.yeJiHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" prop="yeJiBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.yeJiBuHeGe" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.yeJiBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="涂  片">
+                            <el-table-column label="优" prop="tuPianYou">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.tuPianYou" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.tuPianYou }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="良" prop="tuPianLiang">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.tuPianLiang" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.tuPianLiang }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格" prop="tuPianHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.tuPianHeGe" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.tuPianHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" prop="tuPianBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.tuPianBuHeGe" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.tuPianBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="细胞蜡块">
+                            <el-table-column label="优" prop="xiBaoYou">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.xiBaoYou" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.xiBaoYou }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="良" prop="xiBaoLiang">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.xiBaoLiang" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.xiBaoLiang }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格" prop="xiBaoHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.xiBaoHeGe" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.xiBaoHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" prop="xiBaoBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.xiBaoBuHeGe" type="number" size="mini" maxlength="32" placeholder="请输入" />
+                                    <span v-else>{{ row.xiBaoBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="备注" width="120" prop="beiZhu">
+                            <template slot-scope="{row}">
+                                <el-input v-if="!isRead" v-model="row.beiZhu" size="mini" maxlength="32" placeholder="请输入" />
+                                <span v-else>{{ row.beiZhu }}</span>
+                            </template>
+                        </el-table-column>
+
+                        <!--<el-table-column label="可接受范围(≥80%)" prop="biaoZhun">
+                            <template slot-scope="{row}">
+                                <el-input v-if="!isRead" v-model="row.biaoZhun" size="mini" maxlength="32" placeholder="请输入" @input="handleInput" />
+                                <span v-else>{{ row.biaoZhun }}</span>
+                            </template>
+                        </el-table-column>-->
+                    </el-table>
+                    <el-pagination
+                        layout="total,sizes,prev, pager, next,jumper"
+                        :current-page="requestPage.pageNo"
+                        :page-size="requestPage.limit"
+                        :page-sizes="[10,15,20,30,50,100]"
+                        :total="reagentBatchData.length"
+                        @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange"
+                    />
+                </el-col>
+            </el-row>
+        </div>
+    </div>
+</template>
+<script>
+import { cloneDeep } from 'lodash'
+export default {
+    props: {
+        formData: {
+            type: Object,
+            default: () => {}
+        },
+        readonly: {
+            type: Boolean,
+            default: false
+        },
+        params: {
+            type: Object,
+            default: () => {}
+        }
+    },
+    data () {
+        return {
+            reagentBatchData: [],
+            disabled: false,
+            requestPage: {
+                limit: 10,
+                pageNo: 1
+            },
+            multipleSelection: [],
+            isRead: false
+        }
+    },
+    computed: {
+        reagentBatchDataFilter () {
+            return this.reagentBatchData.slice((this.requestPage.pageNo - 1) * (this.requestPage.limit), (this.requestPage.pageNo - 1) * (this.requestPage.limit) + this.requestPage.limit)
+        }
+    },
+    watch: {
+        'formData.xbbljszkzb': {
+            handler (value, old) {
+                if (value && value.length) {
+                    this.reagentBatchData = value
+                }
+            }
+        },
+        reagentBatchData: {
+            handler (value, old) {
+                this.$emit('change-data', 'xbbljszkzb', value)
+            },
+            deep: true
+        }
+    },
+    mounted () {
+        this.isRead = this.readonly
+    },
+    methods: {
+        handleSelectionChange (val) {
+            this.multipleSelection = val
+        },
+        handleAdd () {
+            debugger
+            this.reagentBatchData.push({
+                biaoBenLeiXing: '',
+                yeJiYou: '',
+                yeJiLiang: '',
+                yeJiHeGe: '',
+                yeJiBuHeGe: '',
+                tuPianYou: '',
+                tuPianLiang: '',
+                tuPianHeGe: '',
+                tuPianBuHeGe: '',
+                xiBaoYou: '',
+                xiBaoLiang: '',
+                xiBaoHeGe: '',
+                xiBaoBuHeGe: '',
+                beiZhu: ''
+            })
+        },
+        // 删除
+        handleDelete () {
+            this.$confirm('确定删除当前选中数据?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                if (this.multipleSelection.length > 0) {
+                    this.reagentBatchData = this.reagentBatchData.filter(row => !this.multipleSelection.includes(row))
+                } else {
+                    this.$message.warning('请选择数据')
+                }
+            })
+        },
+        // 复制
+        handleCopy () {
+            if (this.multipleSelection.length > 0) {
+                this.reagentBatchData = this.reagentBatchData.concat(cloneDeep(this.multipleSelection))
+            } else {
+                this.$message.warning('请选择数据')
+            }
+        },
+        // 当前页码改变
+        handleCurrentChange (val) {
+            this.requestPage.pageNo = val
+        },
+        // 页码选择器改变
+        handleSizeChange (val) {
+            this.requestPage.limit = val
+            this.requestPage.pageNo = 1
+        }
+    }
+}
+</script>
+<style lang="scss" scoped>
+.cytopathologyTechnique{
+    margin-bottom: 20px;
+    .button{
+        display: flex;
+        justify-content: space-between;
+        padding: 0px 0px 0px 15px;
+        background: #f0ffff;
+        .title {
+            color: #999999;
+            font-size: 12px;
+            font-weight: bold;
+           // margin-bottom: 0;
+        }
+        .el-button {
+            margin: 0;
+        }
+    }
+    ::v-deep .el-table__header th {
+        background-color: #84d5cf !important;
+        color: #080808;
+        text-align: center;
+    }
+
+}
+
+</style>

+ 374 - 0
src/views/component/qualityControl/specialStainingQCStats.vue

@@ -0,0 +1,374 @@
+<template>
+    <div>
+        <div class="cytopathologyTechnique">
+            <el-row type="flex">
+                <el-col class="button">
+                    <div class="title">特殊染色质控统计子表</div>
+                    <div v-if="isRead" />
+                    <div v-else>
+                        <el-button type="primary" size="mini" icon="ibps-icon-add" @click="handleAdd"> 添加</el-button>
+                        <el-button type="primary" size="mini" icon="ibps-icon-copy" @click="handleCopy"> 复制</el-button>
+                        <el-button type="danger" size="mini" icon="ibps-icon-remove" @click="handleDelete"> 删除</el-button>
+                    </div>
+                </el-col>
+            </el-row>
+            <el-row type="flex">
+                <el-col>
+                    <!-- 为表格添加 summary-method 属性和 show-summary 属性 -->
+                    <el-table ref="external" :data="reagentBatchDataFilter" @selection-change="handleSelectionChange" :summary-method="getSummaries" show-summary>
+                        <el-table-column type="selection" v-if="!isRead" width="45" />
+                        <el-table-column label="选择项目" width="70" prop="xiangMu">
+                            <template slot-scope="{row}">
+                                <ibps-custom-dialog
+                                    v-model="row.xiangMu"
+                                    template-key="nlfwdhk"
+                                    placeholder="请选择"
+                                    store="id"
+                                    icon="ibps-icon-search-plus"
+                                    type="dialog"
+                                    :disabled="isRead"
+                                    @change="(value,selectedObjects)=>{ handleXiangMuChange(row,value,selectedObjects)}"
+                                />
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="项目" width="95" prop="xiangMuMingCheng" v-show="false">
+                            <template slot-scope="{row}">
+                                <el-input v-if="!isRead" v-model="row.xiangMuMingCheng" size="mini" maxlength="32"  />
+                                <span v-else>{{ row.xiangMuMingCheng }}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="抽检量" width="80" prop="chouJianLiang">
+                            <template slot-scope="{row}">
+                                <el-input v-if="!isRead" v-model="row.chouJianLiang" type="number" size="mini" maxlength="32"  />
+                                <span v-else>{{ row.chouJianLiang }}</span>
+                            </template>
+                        </el-table-column>
+
+                        <el-table-column label="切片质量">
+                            <el-table-column label="合格" width="75" prop="qiePianHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.qiePianHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'qiePian')" />
+                                    <span v-else>{{ row.qiePianHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" width="75" prop="qiePianBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.qiePianBuHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'qiePian')" />
+                                    <span v-else>{{ row.qiePianBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格%" width="80" prop="qiePianBaiFenBi">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.qiePianBaiFenBi" type="number" size="mini" maxlength="32"  />
+                                    <span v-else>{{ row.qiePianBaiFenBi }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="染色定位">
+                            <el-table-column label="合格" width="75" prop="ranSeHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.ranSeHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'ranSe')" />
+                                    <span v-else>{{ row.ranSeHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" width="75" prop="ranSeBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.ranSeBuHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'ranSe')" />
+                                    <span v-else>{{ row.ranSeBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格%" width="80" prop="ranSeBaiFenBi">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.ranSeBaiFenBi" type="number" size="mini" maxlength="32"  />
+                                    <span v-else>{{ row.ranSeBaiFenBi }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="背景">
+                            <el-table-column label="合格" width="75" prop="beiJingHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.beiJingHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'beiJing')" />
+                                    <span v-else>{{ row.beiJingHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" width="75" prop="beiJingBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.beiJingBuHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'beiJing')" />
+                                    <span v-else>{{ row.beiJingBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格%" width="80" prop="beiJingBaiFenBi">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.beiJingBaiFenBi" type="number" size="mini" maxlength="32"  />
+                                    <span v-else>{{ row.beiJingBaiFenBi }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="清晰度">
+                            <el-table-column label="合格" width="75" prop="qingXiDuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.qingXiDuHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'qingXiDu')" />
+                                    <span v-else>{{ row.qingXiDuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" width="75" prop="qingXiDuBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.qingXiDuBuHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'qingXiDu')" />
+                                    <span v-else>{{ row.qingXiDuBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格%" width="80" prop="qingXiDuBaiFenBi">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.qingXiDuBaiFenBi" type="number" size="mini" maxlength="32"  />
+                                    <span v-else>{{ row.qingXiDuBaiFenBi }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="对照">
+                            <el-table-column label="合格" width="75" prop="duiZhaoHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.duiZhaoHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'duiZhao')" />
+                                    <span v-else>{{ row.duiZhaoHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="不合格" width="75" prop="duiZhaoBuHeGe">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.duiZhaoBuHeGe" type="number" size="mini" maxlength="32" @input="calculatePercentage(row, 'duiZhao')" />
+                                    <span v-else>{{ row.duiZhaoBuHeGe }}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="合格%" width="80" prop="duiZhaoBaiFenBi">
+                                <template slot-scope="{row}">
+                                    <el-input v-if="!isRead" v-model="row.duiZhaoBaiFenBi" type="number" size="mini" maxlength="32"  />
+                                    <span v-else>{{ row.duiZhaoBaiFenBi }}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table-column>
+
+                        <el-table-column label="考核人" width="75" prop="kaoHeRen">
+                            <template slot-scope="{row}">
+                                <ibps-user-selector
+                                    v-model="row.kaoHeRen"
+                                    placeholder="请选择"
+                                    type="user"
+                                    :multiple="false"
+                                    store="id"
+                                    :disabled="isRead"
+                                />
+                            </template>
+                        </el-table-column>
+
+                    </el-table>
+                    <el-pagination
+                        layout="total,sizes,prev, pager, next,jumper"
+                        :current-page="requestPage.pageNo"
+                        :page-size="requestPage.limit"
+                        :page-sizes="[10,15,20,30,50,100]"
+                        :total="reagentBatchData.length"
+                        @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange"
+                    />
+                </el-col>
+            </el-row>
+        </div>
+    </div>
+</template>
+<script>
+import { cloneDeep } from 'lodash'
+import IbpsUserSelector from '@/business/platform/org/selector'
+import IbpsCustomDialog from '@/business/platform/data/templaterender/custom-dialog'
+
+export default {
+    components: {
+        'ibps-user-selector': IbpsUserSelector,
+        'ibps-custom-dialog': IbpsCustomDialog
+    },
+    props: {
+        formData: {
+            type: Object,
+            default: () => {}
+        },
+        readonly: {
+            type: Boolean,
+            default: false
+        },
+        params: {
+            type: Object,
+            default: () => {}
+        }
+    },
+    data () {
+        return {
+            reagentBatchData: [],
+            disabled: false,
+            requestPage: {
+                limit: 10,
+                pageNo: 1
+            },
+            multipleSelection: [],
+            isRead: false
+        }
+    },
+    computed: {
+        reagentBatchDataFilter () {
+            return this.reagentBatchData.slice((this.requestPage.pageNo - 1) * (this.requestPage.limit), (this.requestPage.pageNo - 1) * (this.requestPage.limit) + this.requestPage.limit)
+        }
+    },
+    watch: {
+        'formData.tsrszktjzb': {
+            handler (value, old) {
+                if (value && value.length) {
+                    this.reagentBatchData = value
+                }
+            }
+        },
+        reagentBatchData: {
+            handler (value, old) {
+                this.$emit('change-data', 'tsrszktjzb', value)
+            },
+            deep: true
+        }
+    },
+    mounted () {
+        this.isRead = this.readonly || this.params.nodeId === 'Activity_1a3ctxw' || this.params.nodeId === 'Activity_08fmwlm'
+    },
+    methods: {
+        handleSelectionChange (val) {
+            this.multipleSelection = val
+        },
+        handleAdd () {
+            this.reagentBatchData.push({
+                xiangMu: '',
+                xiangMuMingCheng: '',
+                chouJianLiang: '',
+                qiePianHeGe: '',
+                qiePianBuHeGe: '',
+                qiePianBaiFenBi: '',
+                ranSeHeGe: '',
+                ranSeBuHeGe: '',
+                ranSeBaiFenBi: '',
+                beiJingHeGe: '',
+                beiJingBuHeGe: '',
+                beiJingBaiFenBi: '',
+                qingXiDuHeGe: '',
+                qingXiDuBuHeGe: '',
+                qingXiDuBaiFenBi: '',
+                duiZhaoHeGe: '',
+                duiZhaoBuHeGe: '',
+                duiZhaoBaiFenBi: '',
+                kaoHeRen: ''
+            })
+        },
+        // 删除
+        handleDelete () {
+            this.$confirm('确定删除当前选中数据?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                if (this.multipleSelection.length > 0) {
+                    this.reagentBatchData = this.reagentBatchData.filter(row => !this.multipleSelection.includes(row))
+                } else {
+                    this.$message.warning('请选择数据')
+                }
+            })
+        },
+        // 复制
+        handleCopy () {
+            if (this.multipleSelection.length > 0) {
+                this.reagentBatchData = this.reagentBatchData.concat(cloneDeep(this.multipleSelection))
+            } else {
+                this.$message.warning('请选择数据')
+            }
+        },
+        // 当前页码改变
+        handleCurrentChange (val) {
+            this.requestPage.pageNo = val
+        },
+        // 页码选择器改变
+        handleSizeChange (val) {
+            this.requestPage.limit = val
+            this.requestPage.pageNo = 1
+        },
+        handleXiangMuChange (row, value, selectedObjects) {
+            row.xiangMuMingCheng = selectedObjects.jian_yan_xiang_mu
+        },
+        // 计算合格率
+        calculatePercentage (row, prefix) {
+            const qualified = Number(row[`${prefix}HeGe`]) || 0
+            const unqualified = Number(row[`${prefix}BuHeGe`]) || 0
+            const total = qualified + unqualified
+            if (total > 0) {
+                row[`${prefix}BaiFenBi`] = ((qualified / total) * 100).toFixed(2)
+            } else {
+                row[`${prefix}BaiFenBi`] = '0.00'
+            }
+        },
+        // 新增合计方法
+        getSummaries (param) {
+            const { columns, data } = param
+            const sums = []
+            columns.forEach((column, index) => {
+                if (index === 0) {
+                    sums[index] = '合计'
+                    return
+                }
+                if (column.property && (column.property.includes('HeGe') || column.property.includes('BuHeGe') || column.property.includes('chouJianLiang'))) {
+                    const values = data.map(item => Number(item[column.property]))
+                    if (!values.every(value => isNaN(value))) {
+                        sums[index] = values.reduce((prev, curr) => {
+                            const value = Number(curr)
+                            if (!isNaN(value)) {
+                                return prev + curr
+                            } else {
+                                return prev
+                            }
+                        }, 0)
+                        this.formData[column.property] = sums[index]
+                    } else {
+                        sums[index] = ''
+                    }
+                } else {
+                    sums[index] = ''
+                }
+            })
+
+            return sums
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.cytopathologyTechnique{
+    margin-bottom: 20px;
+    .button{
+        display: flex;
+        justify-content: space-between;
+        padding: 0px 0px 0px 15px;
+        background: #f0ffff;
+        .title {
+            color: #999999;
+            font-size: 12px;
+            font-weight: bold;
+           // margin-bottom: 0;
+        }
+        .el-button {
+            margin: 0;
+        }
+    }
+    ::v-deep .el-table__header th {
+        background-color: #84d5cf !important;
+        color: #080808;
+        text-align: center;
+    }
+    ::v-deep .el-table .cell {
+        padding-left: 5px;
+        padding-right: 5px;
+    }
+}
+</style>

+ 6 - 6
src/views/platform/examination/constants.js

@@ -120,12 +120,12 @@ export const statusOption = [
         label: '已发布',
         value: '已发布',
         type: 'primary'
-    },
-    {
-        label: '已结束',
-        value: '已结束',
-        type: 'success'
     }
+    // {
+    //     label: '已结束',
+    //     value: '已结束',
+    //     type: 'success'
+    // }
 ]
 
 const qualifiedType = [
@@ -157,7 +157,7 @@ export const basicColumn = [
 
 export const infoColumn = [
     { prop: 'questionCount', label: '题数', width: 65 },
-    { prop: 'duration', label: '考试时长', width: 85 },
+    { prop: 'duration', label: '考试时长', slotName: 'examTime', width: 85 },
     { prop: 'limitCount', label: '限考次数', width: 85 },
     { prop: 'limitDate', label: '限考时间', width: 120 },
     { prop: 'isRand', label: '是否随机', slotName: 'isRand', width: 65 },

+ 4 - 1
src/views/platform/examination/exam/list.vue

@@ -40,6 +40,9 @@
             <template slot="randWay" slot-scope="{row}">
                 <div>{{ row.isRand==='1' ?['未知','题型','难度'][+row.randWay]:'/' }}</div>
             </template>
+            <template slot="examTime" slot-scope="{row}">
+                <div>{{ transformTime(row.duration) }}</div>
+            </template>
         </ibps-crud>
         <exam-edit
             v-if="showEditDialog"
@@ -288,7 +291,7 @@ export default {
                                 bankName: item.bankName,
                                 examinee: item.examinee,
                                 questionCount: item.isRand === '1' ? parseFloat(item.randTotal) : parseFloat(item.questionCount),
-                                duration: this.transformTime(item.duration),
+                                duration: item.duration,
                                 limitCount: item.limitCount,
                                 limitDate: item.limitDate,
                                 qualifiedRadio: item.qualifiedRadio,

Vissa filer visades inte eftersom för många filer har ändrats