李林
2024-03-05 20c353ea04bd6e317ed6b9dc3a3aa943f847534a
标准库及部分功能调整
已修改6个文件
已添加1个文件
440 ■■■■ 文件已修改
src/assets/api/controller.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/tool/value-table.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/a5-capacity-scope.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b2-standard.vue 247 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/standard_method.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/view/enter.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/menu.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -9,7 +9,8 @@
        laboratoryScope,
        deviceScope,
        systemLog,
        standardTree
        standardTree,
        standardMethod
    }
}
@@ -108,4 +109,11 @@
const standardTree = {
    selectStandardTreeList: "/standardTree/selectStandardTreeList", //获取标准树
    addStandardTree: "/standardTree/addStandardTree", //添加标准树
    addStandardMethodList: "/standardTree/addStandardMethodList", //给标准树添加检验标准
    selectsStandardMethodByFLSSM: "/standardTree/selectsStandardMethodByFLSSM", //根据标准树进行标准查询
}
const standardMethod = {
    selectStandardMethodList: "/standardMethod/selectStandardMethodList", //获取标准方法列表
    selectStandardMethods: "/standardMethod/selectStandardMethods", //获取标准方法枚举
}
src/components/tool/value-table.vue
@@ -223,7 +223,7 @@
                                order: 'asc'
                            }
                        },
                        isIndex: false,
                        isIndex: true,
                        showSelect: false,
                        select: true,
                        row: 1,
@@ -264,7 +264,7 @@
                            order: 'asc'
                        }
                    },
                    isIndex: false,
                    isIndex: true,
                    showSelect: false,
                    select: true,
                    row: 1,
src/components/view/a5-capacity-scope.vue
@@ -125,7 +125,7 @@
                        deviceGroup: null,
                        orderBy: {
                            field: 'id',
                            order: 'desc'
                            order: 'asc'
                        }
                    },
                    isIndex: false,
@@ -159,7 +159,8 @@
                        },
                        laboratory:{
                            select:[]
                        }
                        },
                        method:{select:[]}
                    },
                    selectField: {
                        inspectionItemType: {
@@ -176,7 +177,8 @@
                        },
                        laboratory:{
                            select:[]
                        }
                        },
                        method:{select:[]}
                    },
                    requiredAdd: ['inspectionItem', 'manHour', 'inspectionItemType','inspectionValueType','inspectionItemClassify','laboratory','unit','method','price','manDay','deviceGroup','checkoutNumber','valueType'],
                    requiredUp: ['inspectionItem', 'manHour', 'inspectionItemType','inspectionValueType','inspectionItemClassify','laboratory','unit','method','price','manDay','deviceGroup','checkoutNumber','valueType']
@@ -186,7 +188,7 @@
                        specimenName: null,
                        orderBy: {
                            field: 'id',
                            order: 'desc'
                            order: 'asc'
                        }
                    },
                    isIndex: false,
@@ -225,6 +227,7 @@
            this.selectEnumByCategoryForSpecial()
            this.selectEnumByCategoryForInspectionValueType()
            this.obtainItemParameterList()
            this.selectStandardMethods()
            this.getPower('0')
        },
        methods: {
@@ -306,6 +309,19 @@
                    this.itemParameterData.tagField.laboratory.select = data
                })
            },
            selectStandardMethods() {
                this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => {
                    let data = []
                    res.data.forEach(a=>{
                        data.push({
                            label: a.name,
                            value: a.code
                        })
                    })
                    this.itemParameterData.selectField.method.select = data
                    this.itemParameterData.tagField.method.select = data
                })
            },
            // æƒé™åˆ†é…
            getPower(radio) {
                let power = JSON.parse(sessionStorage.getItem('power'))
src/components/view/b2-standard.vue
@@ -1,6 +1,7 @@
<style scoped>
    .standard {
        padding: 20px 0;
        display: flex;
    }
    .left {
@@ -9,8 +10,8 @@
        background-color: white;
        padding: 15px;
    }
    .custom-tree-node{
    .custom-tree-node {
        width: 100%;
        line-height: 32px;
    }
@@ -18,18 +19,45 @@
    .custom-tree-node .el-icon-delete {
        color: #3A7BFA;
        opacity: 0;
        position: relative;
        right: 0;
        font-size: 16px;
        font-size: 18px;
    }
    .custom-tree-node:hover .el-icon-delete {
        opacity: 1;
    }
    .node_i{
    .node_i {
        color: orange;
        font-size: 18px;
    }
    .right {
        margin-left: 5px;
        width: calc(100% - 305px);
        height: calc(100% - 40px);
    }
    .right .title {
        height: 50px;
        line-height: 50px;
        padding: 0 10px;
        background-color: white;
    }
    .standard_table{
        border-top: 1px solid #ebeef5;
        background-color: white;
    }
    .product_table{
        border-top: 1px solid #ebeef5;
        height: calc(100% - 275px);
        margin-top: 5px;
        background-color: white;
    }
    .product_table .el-table{
        height: 100%;
    }
</style>
<style>
@@ -40,8 +68,20 @@
    }
    .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
        background: rgba(58, 124, 253, 0.1);
        color: #3A7BFA;
    }
    .standard .has-gutter .el-table__cell .cell{
        line-height: 38px;
        background-color: #fafafa;
    }
    .standard .has-gutter .el-table__cell{
        background-color: #fafafa !important;
    }
    .standard .standard_table .el-table__row .cell{
        font-size: 14px;
    }
</style>
@@ -62,8 +102,9 @@
                @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad">
                <div class="custom-tree-node" slot-scope="{ node, data }">
                    <el-row>
                        <el-col :span="22">
                            <span><i :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                        <el-col :span="21">
                            <span><i
                                    :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                                {{ data.code }} {{ data.label }}</span>
                        </el-col>
                        <el-col :span="2" style="text-align: right;">
@@ -75,7 +116,57 @@
                </div>
            </el-tree>
        </div>
        <div class="right"></div>
        <div class="right">
            <el-row class="title">
                <el-col :span="10" style="font-size: 14px;color: #999;">{{selectTree}}</el-col>
                <el-col :span="selectTree==''?24:14" style="text-align: right;">
                    <el-button size="small" type="primary" @click="addStandardDia = true" v-if="addStandardMethod">新增标准</el-button>
                    <el-button size="small" type="primary">新增项目</el-button>
                    <el-button size="small">
                        <i class="el-icon-delete" style="color: #3A7BFA;"></i>
                        <span style="color: #3A7BFA;">删除</span>
                    </el-button>
                </el-col>
            </el-row>
            <el-row class="standard_table" v-loading="standardListLoad">
                <el-table class="el-table" :data="standardList" style="width: 100%;" height="220px" tooltip-effect="dark">
                    <el-table-column prop="code" label="标准编号" show-overflow-tooltip>
                        <template slot-scope="scope">
                            <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column prop="name" label="标准名称" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="备注" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="createUserName" label="创建人"></el-table-column>
                    <el-table-column prop="createTime" label="创建时间" width="250px"></el-table-column>
                    <el-table-column label="操作" width="100" align="center">
                        <template slot-scope="scope">
                            <el-button type="text" size="small">删除</el-button>
                        </template>
                    </el-table-column>
                </el-table>
            </el-row>
            <el-row class="product_table">
                <el-table :data="productList" style="width: 100%;" height="100%" tooltip-effect="dark" stripe :fit="true" border>
                    <el-table-column type="selection" width="65"></el-table-column>
                    <el-table-column prop="code" label="检验项" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="name" label="检验项类型" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="检验项小类" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="实验室" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="计量单位" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="单价" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="工时" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="工时分组" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="设备组" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="区间" show-overflow-tooltip></el-table-column>
                    <el-table-column prop="remark" label="要求值">
                        <template slot-scope="scope">
                            <el-input size="small" placeholder="要求值" v-model="scope.row.ask"></el-input>
                        </template>
                    </el-table-column>
                </el-table>
            </el-row>
        </div>
        <el-dialog title="分类添加" :visible.sync="addDia" width="400px">
            <div class="body">
                <el-row style="line-height: 50px;">
@@ -84,8 +175,7 @@
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-select v-model="addOb.factory" size="small" style="width: 100%;" clearable>
                            <el-option v-for="(a, ai) in factory" :key="ai" :value="a.value"
                                :label="a.label"></el-option>
                            <el-option v-for="(a, ai) in factory" :key="ai" :value="a.value" :label="a.label"></el-option>
                        </el-select>
                    </el-col>
                </el-row>
@@ -95,8 +185,7 @@
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-select v-model="addOb.laboratory" size="small" style="width: 100%;" clearable>
                            <el-option v-for="(a, ai) in laboratory" :key="ai" :value="a.value"
                                :label="a.label"></el-option>
                            <el-option v-for="(a, ai) in laboratory" :key="ai" :value="a.value" :label="a.label"></el-option>
                        </el-select>
                    </el-col>
                </el-row>
@@ -106,8 +195,7 @@
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-select v-model="addOb.sampleType" size="small" style="width: 100%;" clearable>
                            <el-option v-for="(a, ai) in sampleType" :key="ai" :value="a.value"
                                :label="a.label"></el-option>
                            <el-option v-for="(a, ai) in sampleType" :key="ai" :value="a.value" :label="a.label"></el-option>
                        </el-select>
                    </el-col>
                </el-row>
@@ -117,8 +205,7 @@
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-select v-model="addOb.sample" size="small" style="width: 100%;" clearable>
                            <el-option v-for="(a, ai) in sample" :key="ai" :value="a.value"
                                :label="a.label"></el-option>
                            <el-option v-for="(a, ai) in sample" :key="ai" :value="a.value" :label="a.label"></el-option>
                        </el-select>
                    </el-col>
                </el-row>
@@ -136,6 +223,24 @@
                <el-button type="primary" @click="addStandardTree" :loading="addLoad">ç¡® å®š</el-button>
            </span>
        </el-dialog>
        <el-dialog title="新增标准" :visible.sync="addStandardDia" width="400px">
            <div class="body">
                <el-row style="line-height: 50px;">
                    <el-col :span="6" style="text-align: right;">
                        <span class="required-span">* </span>标准名称:
                    </el-col>
                    <el-col :span="16" :offset="1">
                        <el-select v-model="standardId" size="small" style="width: 100%;" clearable>
                            <el-option v-for="(a, ai) in standardEnum" :key="ai" :value="a.value" :label="a.label"></el-option>
                        </el-select>
                    </el-col>
                </el-row>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="addStandardDia = false">取 æ¶ˆ</el-button>
                <el-button type="primary" @click="addStandardMethodList" :loading="addLoad2">ç¡® å®š</el-button>
            </span>
        </el-dialog>
    </div>
</template>
@@ -145,7 +250,7 @@
            return {
                search: null,
                list: [],
                returntree: null,
                selectTree: '',
                factory: [],
                addDia: false,
                addOb: {
@@ -160,7 +265,15 @@
                sampleType: [],
                sample: [],
                treeLoad: false,
                addPower: false
                addPower: false,
                standardList: [],
                standardEnum: [],
                addStandardDia: false,
                standardId: null,
                addStandardMethod: true,
                addLoad2: false,
                productList: [],
                standardListLoad: false
            }
        },
        mounted() {
@@ -170,6 +283,7 @@
            this.obtainItemParameterList()
            this.selectEnumByCategoryForsampleType()
            this.selectTestObjectByName()
            this.selectStandardMethods()
        },
        methods: {
            filterNode(value, data) {
@@ -182,10 +296,22 @@
            refresh() {
                this.upIndex++
            },
            handleNodeClick(val) { //树的值
                this.returntree = val
                if (val.code === '[5]' && val.children === undefined) {
            handleNodeClick(val, node, el) { //树的值
                this.selectTree = ''
                this.getNodeParent(node)
                this.selectTree = this.selectTree.replace(' - ','')
                let data = this.selectTree.split(' - ')
                let data2 = ''
                for(let index = data.length - 1; index >= 0; index--){
                    data2 += " - " + data[index]
                }
                this.selectTree = data2.replace(' - ','')
                this.selectsStandardMethodByFLSSM()
            },
            getNodeParent(val){
                if(val.parent!=null){
                    this.selectTree += ' - ' + val.label
                    this.getNodeParent(val.parent)
                }
            },
            remove(node, data) {
@@ -196,7 +322,7 @@
                    const children = parent.data.children || parent.data;
                    const index = children.findIndex(d => d.id === data.id);
                    children.splice(index, 1);
                }).catch(e => {})
            },
            nodeOpen(data, node, el) {
@@ -219,9 +345,9 @@
                    this.sampleType = res.data
                })
            },
            selectStandardTreeList(){
            selectStandardTreeList() {
                this.treeLoad = true
                this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res=>{
                this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => {
                    this.list = res.data
                    this.treeLoad = false
                })
@@ -229,7 +355,7 @@
            obtainItemParameterList() {
                this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => {
                    let data = []
                    res.data.forEach(a=>{
                    res.data.forEach(a => {
                        data.push({
                            label: a.laboratoryName,
                            value: a.laboratoryName
@@ -241,7 +367,7 @@
            selectTestObjectByName() {
                this.$axios.get(this.$api.capacityScope.selectTestObjectByName).then(res => {
                    let data = []
                    res.data.forEach(a=>{
                    res.data.forEach(a => {
                        data.push({
                            label: a.specimenName,
                            value: a.specimenName
@@ -250,20 +376,48 @@
                    this.sample = data
                })
            },
            addStandardTree(){
                if(this.addOb.factory==null||this.addOb.factory=='') {
            selectStandardMethods() {
                this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => {
                    let data = []
                    res.data.forEach(a => {
                        data.push({
                            label: a.name,
                            value: a.id
                        })
                    })
                    this.standardEnum = data
                })
            },
            addStandardMethodList(){
                if (this.standardId == null || this.standardId == '') {
                    this.$message.error('标准方法未选择')
                    return
                }
                this.addLoad2 = true
                this.$axios.post(this.$api.standardTree.addStandardMethodList,{
                    standardId: this.standardId,
                    tree: this.selectTree
                }).then(res=>{
                    this.addLoad2 = false
                    this.addStandardDia = false
                    this.$message.success('添加成功')
                    this.selectsStandardMethodByFLSSM()
                })
            },
            addStandardTree() {
                if (this.addOb.factory == null || this.addOb.factory == '') {
                    this.$message.error('工厂是必填项')
                    return
                }
                if(this.addOb.laboratory==null||this.addOb.laboratory=='') {
                if (this.addOb.laboratory == null || this.addOb.laboratory == '') {
                    this.$message.error('实验室是必填项')
                    return
                }
                if(this.addOb.sampleType==null||this.addOb.sampleType=='') {
                if (this.addOb.sampleType == null || this.addOb.sampleType == '') {
                    this.$message.error('样品大类是必填项')
                    return
                }
                if(this.addOb.sample==null||this.addOb.sample=='') {
                if (this.addOb.sample == null || this.addOb.sample == '') {
                    this.$message.error('样品是必填项')
                    return
                }
@@ -286,16 +440,31 @@
                    this.addLoad = false
                })
            },
            getPower(){
            selectsStandardMethodByFLSSM(){
                this.standardListLoad = true
                this.$axios.post(this.$api.standardTree.selectsStandardMethodByFLSSM,{
                    tree: this.selectTree
                }).then(res=>{
                    this.standardListLoad = false
                    this.standardList = res.data
                })
            },
            getPower() {
                let power = JSON.parse(sessionStorage.getItem('power'))
                let add = false
                let addStandardMethod = false
                for (var i = 0; i < power.length; i++) {
                    if(power[i].menuMethod=='addStandardTree'){
                    if (power[i].menuMethod == 'addStandardTree') {
                        add = true
                    }
                    if (power[i].menuMethod == 'addStandardMethodList') {
                        addStandardMethod = true
                    }
                }
                this.addPower = add
            }
                this.addStandardMethod = addStandardMethod
            },
        }
    }
</script>
</script>
src/components/view/standard_method.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,147 @@
<style scoped>
    .title {
        height: 60px;
        line-height: 60px;
    }
    .search {
        background-color: #fff;
        height: 80px;
        display: flex;
        align-items: center;
    }
    .search_thing {
        width: 350px;
        display: flex;
        align-items: center;
    }
    .search_label {
        width: 110px;
        font-size: 14px;
        text-align: right;
    }
    .search_input {
        width: calc(100% - 110px);
    }
    .table {
        margin-top: 10px;
        background-color: #fff;
        width: calc(100% - 40px);
        height: calc(100% - 60px - 80px - 10px - 40px);
        padding: 20px;
    }
</style>
<template>
    <div class="standard_method">
        <div>
            <el-row class="title">
                <el-col :span="12" style="padding-left: 20px;">标准方法</el-col>
                <el-col :span="12" style="text-align: right;">
                    <!-- <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">新增</el-button> -->
                </el-col>
            </el-row>
        </div>
        <div class="search">
            <div class="search_thing">
                <div class="search_label">标准编号:</div>
                <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                        v-model="componentData.entity.code" @keyup.enter.native="refreshTable()"></el-input></div>
            </div>
            <div class="search_thing">
                <div class="search_label">标准名称:</div>
                <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                        v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div>
            </div>
            <div class="search_thing" style="padding-left: 30px;">
                <el-button size="small" @click="refresh()">重 ç½®</el-button>
                <el-button size="small" type="primary" @click="refreshTable()">查 è¯¢</el-button>
            </div>
        </div>
        <div class="table">
            <ValueTable ref="ValueTable" :url="$api.standardMethod.selectStandardMethodList" :componentData="componentData" :key="upIndex"/>
        </div>
    </div>
</template>
<script>
    import ValueTable from '../tool/value-table.vue'
    export default {
        components: {
            ValueTable
        },
        data() {
            return {
                componentData: {
                    entity: {
                        code: null,
                        name: null,
                        orderBy: {
                            field: 'id',
                            order: 'asc'
                        }
                    },
                    isIndex: true,
                    showSelect: false,
                    select: true,
                    do: [{
                        id: 'update',
                        font: '编辑',
                        type: 'text',
                        method: 'doDiy',
                        field:['createUserName','updateUserName']
                    },{
                        id: 'delete',
                        font: '删除',
                        type: 'text',
                        method: 'doDiy'
                    }],
                    tagField: {},
                    selectField: {},
                    requiredAdd:['code','name'],
                    requiredUp:['code','name']
                },
                entityCopy: {},
                upIndex: 0,
                addDia: false,
                addPower: true
            }
        },
        mounted() {
            this.entityCopy = this.HaveJson(this.componentData.entity)
            this.getPower()
        },
        methods: {
            refreshTable() {
                this.$refs['ValueTable'].selectList()
            },
            refresh() {
                this.componentData.entity = this.HaveJson(this.entityCopy)
                this.upIndex++
            },
            // æƒé™åˆ†é…
            getPower(){
                let power = JSON.parse(sessionStorage.getItem('power'))
                let up = false
                let del = false
                let add = false
                for (var i = 0; i < power.length; i++) {
                    /* if(power[i].menuMethod=='addEnum'){
                        add = true
                    } */
                }
                if(!del){
                    this.componentData.do.splice(1, 1)
                }
                if(!up){
                    this.componentData.do.splice(0, 1)
                }
                this.addPower = add
            }
        }
    }
</script>
src/view/enter.vue
@@ -108,7 +108,7 @@
            <el-input v-model="ruleForm.account" placeholder="请输入账号" clearable></el-input>
          </el-form-item>
          <el-form-item label="密码" prop="pwd">
            <el-input v-model="ruleForm.pwd" placeholder="请输入密码" clearable show-password></el-input>
            <el-input v-model="ruleForm.pwd" placeholder="请输入密码" clearable show-password @keyup.enter.native="submitForm('ruleForm')"></el-input>
          </el-form-item>
          <el-form-item style="margin-bottom: 8px;">
            <el-col :span="12"><el-checkbox v-model="ruleForm.remumberme">记住密码</el-checkbox></el-col>
static/js/menu.js
@@ -189,7 +189,7 @@
    {
        v: "4 é€šç”¨è¦æ±‚",
        i: "el-icon-tickets",
        p: "selectCustomEnumLists selectProductEnumLists",
        p: "",
        c: [{
                v: "通用要求",
                i: "font icon-24gl-clipboardList",
@@ -543,9 +543,9 @@
        }, {
            v: "实验室的检测能力档案",
            i: "font icon-24gl-clipboardList",
            u: "",
            u: "standard_method",
            g: "7.2 æ–¹æ³•的选择、验证和确认",
            p: ""
            p: "selectStandardMethodList"
        }, {
            v: "标准查新",
            i: "font icon-24gl-clipboardList",