zouyu
2024-03-15 3ad119ce8540ccd941f97c272d95180618ff0965
Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before
已修改5个文件
315 ■■■■ 文件已修改
src/assets/api/controller.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-inspection-order.vue 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b2-standard.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/view/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -36,6 +36,7 @@
    selectCustomPageList: "/user/selectCustomPageList", //获取客户列表
    delCustomById: "/user/delCustomById", //删除客户信息
    addCustom: "/user/addCustom", //新增客户信息
    getUserNow: "/user/getUserNow", //获取当前登录的用户信息
}
const dataReporting = {
@@ -105,14 +106,15 @@
    addDeviceParameter: "/deviceScope/addDeviceParameter", //添加设备详情参数
    delDeviceParameter: "/deviceScope/delDeviceParameter", //删除设备详情参数
    upDeviceParameter: "/deviceScope/upDeviceParameter", //修改设备详情参数
  authorizedPerson: "/user/getDeviceManager", //获取授权人
  selectEquipmentOverview: "/deviceScope/selectEquipmentOverview", //获取设备总览
  uploadFile: "/deviceScope/uploadFile", //上传图片
  selectDevicePrincipal: "/user/getDeviceManager", //获取设备负责人
    authorizedPerson: "/user/getDeviceManager", //获取授权人
    selectEquipmentOverview: "/deviceScope/selectEquipmentOverview", //获取设备总览
    uploadFile: "/deviceScope/uploadFile", //上传图片
    selectDevicePrincipal: "/user/getDeviceManager", //获取设备负责人
}
const insOrder = {
    selectInsOrderParameter: "/insOrder/selectInsOrderParameter", //查询检验下单
    getDeviceManager: "/user/getDeviceManager", //获取指派人员
}
const insOrderPlan = {
src/components/do/b1-ins-order/add.vue
@@ -30,11 +30,39 @@
    .search_input {
        width: calc(100% - 120px);
    }
    .node_i {
        color: orange;
        font-size: 18px;
    }
</style>
<style>
    .ins_order_add .el-input-group__append,
    .el-input-group__prepend {
        padding: 0 10px;
    }
    .ins_order_add .el-tree-node__content {
        height: 32px;
        font-size: 14px;
        border-radius: 2px;
    }
    .ins_order_add .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
        color: #3A7BFA;
    }
    .ins_order_add .has-gutter .el-table__cell .cell {
        line-height: 30px;
        background-color: #fafafa;
    }
    .ins_order_add .has-gutter .el-table__cell {
        background-color: #fafafa !important;
    }
    .ins_order_add .el-table__row .cell {
        font-size: 12px;
    }
</style>
@@ -90,7 +118,8 @@
                    <div class="search_label"><span class="required-span">* </span>样品名称:</div>
                    <div class="search_input">
                        <el-input readonly size="small" v-model="addObj.sample">
                            <template slot="append"><el-button slot="append" icon="el-icon-search" @click=""></el-button></template>
                            <template slot="append"><el-button slot="append" icon="el-icon-search"
                                    @click="selectStandardTree = true"></el-button></template>
                        </el-input>
                    </div>
                </el-col>
@@ -130,7 +159,8 @@
                <el-col class="search_thing" :span="6">
                    <div class="search_label"><span class="required-span">* </span>样品数量:</div>
                    <div class="search_input">
                        <el-input-number size="small" v-model="addObj.sampleNum" :controls="false" :min="0" :precision="0" style="width: 50%;"></el-input-number>
                        <el-input-number size="small" v-model="addObj.sampleNum" :controls="false" :min="0" :max="1000"
                            :precision="0" style="width: 50%;" @change="onSample"></el-input-number>
                    </div>
                </el-col>
                <el-col class="search_thing" :span="6">
@@ -151,16 +181,53 @@
                <el-col class="search_thing" :span="6">
                    <div class="search_label">留样数量:</div>
                    <div class="search_input">
                        <el-input-number size="small" v-model="addObj.leaveNum" :controls="false" :min="0" :disabled="addObj.isLeave == 0" style="width: 50%;"></el-input-number>
                        <el-input-number size="small" v-model="addObj.leaveNum" :controls="false" :min="0"
                            :disabled="addObj.isLeave == 0" style="width: 50%;"></el-input-number>
                    </div>
                </el-col>
                <el-col class="search_thing" :span="12">
                <el-col class="search_thing" :span="6" style="align-items: flex-start;margin: 8px 0;">
                    <div class="search_label">备注:</div>
                    <div class="search_input">
                        <el-input size="small" placeholder="请输入" clearable v-model="addObj.remark"></el-input>
                        <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 2}" size="small" clearable
                            v-model="addObj.remark"></el-input>
                    </div>
                </el-col>
                <el-col class="search_thing" :span="6">
                    <div class="search_label" style="width: 160px;">是否涉及配套样品:</div>
                    <div class="search_input" style="width: calc(100% - 160px);">
                        <el-radio-group v-model="addObj.mating" @change="$refs.sampleTable.doLayout()">
                            <el-radio :label="1">是</el-radio>
                            <el-radio :label="0">否</el-radio>
                        </el-radio-group>
                    </div>
                </el-col>
            </el-row>
        </div>
        <div style="display: flex;">
            <el-table class="el-table" ref="sampleTable" :data="sampleList" height="300px" tooltip-effect="dark" border
                @selection-change="selectSample">
                <el-table-column type="selection" width="60"></el-table-column>
                <el-table-column type="index" label="序号" width="65" align="center"></el-table-column>
                <el-table-column prop="sample" label="样品名称" align="center" show-overflow-tooltip
                    min-width="100"></el-table-column>
                <el-table-column prop="joinName" label="配套样品名称" width="140" align="center" v-if="addObj.mating==1">
                    <template slot-scope="scope">
                        <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}"
                            v-model="scope.row.joinName"></el-input>
                    </template>
                </el-table-column>
                <el-table-column prop="joinModel" label="配套样品型号" width="140" align="center" v-if="addObj.mating==1">
                    <template slot-scope="scope">
                        <el-input size="small" type="textarea" :autosize="{ minRows: 1, maxRows: 1}"
                            v-model="scope.row.joinModel"></el-input>
                    </template>
                </el-table-column>
                <el-table-column label="操作" width="65" align="center">
                    <template slot-scope="scope">
                        <el-button type="text" size="small" @click="">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
        </div>
        <el-dialog title="选择客户" :visible.sync="selectUserDia" width="70%">
            <div class="body" style="height: 60vh;" v-if="selectUserDia">
@@ -169,6 +236,34 @@
            <span slot="footer" class="dialog-footer">
                <el-button @click="selectUserDia = false">取 消</el-button>
                <el-button type="primary" @click="selectUser">确 定</el-button>
            </span>
        </el-dialog>
        <el-dialog title="选择样品" :visible.sync="selectStandardTree" width="400px">
            <div class="body" style="height: 60vh;overflow-y: auto;" v-if="selectStandardTree">
                <el-row>
                    <el-col :span="24">
                        <el-input placeholder="输入关键字进行搜索" suffix-icon="el-icon-search" v-model="search" size="small"
                            style="margin-bottom: 5px;" clearable @blur="searchFilter" @clear="searchFilter"
                            @keyup.enter.native="searchFilter"></el-input>
                    </el-col>
                </el-row>
                <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }" node-key="label"
                    :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
                    @node-collapse="nodeClose" :default-expanded-keys="expandedKeys">
                    <div class="custom-tree-node" slot-scope="{ node, data }">
                        <el-row>
                            <el-col :span="24">
                                <span><i
                                        :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                                    {{ data.code }} {{ data.label }}</span>
                            </el-col>
                        </el-row>
                    </div>
                </el-tree>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="selectStandardTree = false">取 消</el-button>
                <el-button type="primary" @click="activeStandardTree">确 定</el-button>
            </span>
        </el-dialog>
    </div>
@@ -194,6 +289,7 @@
                    code: null,
                    laboratory: null,
                    appointedTime: null,
                    factory: null,
                    sample: null,
                    sampleType: null,
                    sampleNum: null,
@@ -201,7 +297,8 @@
                    isLeave: 0,
                    leaveNum: null,
                    remark: null,
                    otcCode: null
                    otcCode: null,
                    mating: 0
                },
                type: [],
                selectUserDia: false,
@@ -230,13 +327,23 @@
                        }
                    },
                    selectField: {},
                }
                },
                selectStandardTree: false,
                search: null,
                list: [],
                selectTree: null,
                expandedKeys: [],
                sampleList: [],
                sampleIds: [],
                methodList: []
            }
        },
        mounted() {
            this.selectEnumByCategoryForType()
            this.getUserNow()
            this.selectStandardTreeList()
        },
        methods:{
        methods: {
            selectEnumByCategoryForType() {
                this.$axios.post(this.$api.enums.selectEnumByCategory, {
                    category: "紧急程度"
@@ -259,9 +366,90 @@
                this.addObj.code = selects.code
                this.selectUserDia = false
            },
            save(){
            save() {
                console.log(this.addObj);
            },
            getUserNow() {
                this.$axios.get(this.$api.user.getUserNow).then(res => {
                    let selects = res.data
                    if (selects == null) return
                    this.addObj.userId = selects.id
                    this.addObj.company = selects.company
                    this.addObj.custom = selects.name
                    this.addObj.code = selects.code
                })
            },
            searchFilter() {
                this.$refs.tree.filter(this.search)
            },
            nodeOpen(data, node, el) {
                $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
            },
            nodeClose(data, node, el) {
                $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
            },
            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(' - ', '')
            },
            getNodeParent(val) {
                if (val.parent != null) {
                    this.selectTree += ' - ' + val.label
                    this.getNodeParent(val.parent)
                }
            },
            selectStandardTreeList() {
                this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => {
                    this.list = res.data
                    this.list.forEach(a => {
                        a.children.forEach(b => {
                            this.expandedKeys.push(b.label)
                        })
                    })
                })
            },
            filterNode(value, data) {
                if (!value) return true;
                return data.label.indexOf(value) !== -1;
            },
            activeStandardTree() {
                let trees = this.selectTree.split(" - ")
                if (trees.length < 4) {
                    this.$message.error('未选择样品')
                    return
                }
                this.addObj.factory = trees[0]
                this.addObj.laboratory = trees[1]
                this.addObj.sampleType = trees[2]
                this.addObj.sample = trees[3]
                this.addObj.model = trees[4]
                this.selectStandardTree = false
                this.onSample()
            },
            selectSample(val) {
                val.forEach(a => {
                    this.sampleIds = a.id
                })
            },
            onSample() {
                this.sampleList = []
                if (this.addObj.sampleNum == 0 || this.addObj.sample == null || this.addObj.sample == '') return
                for (var i = 0; i < this.addObj.sampleNum; i++) {
                    this.sampleList.push({
                        sample: this.addObj.sample,
                        joinName: null,
                        joinModel: null
                    })
                }
                this.$refs.sampleTable.doLayout()
            }
        }
    }
</script>
</script>
src/components/view/b1-inspection-order.vue
@@ -147,14 +147,16 @@
            </el-dialog>
            <!-- 下发 -->
            <el-dialog title="检验下发" :visible.sync="issuedDialogVisible" width="30%" :before-close="handleClose">
                <el-form :label-position="labelPosition" :model="formData" label-width="150px" ref="ruleForm">
                <el-form :label-position="labelPosition" :model="formData2" label-width="150px" ref="ruleForm">
                    <el-form-item label="约定时间:">
                        <el-date-picker style="width:100%" format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="formData.downTime"
                        <el-date-picker style="width:100%" format="yyyy-MM-dd" value-format="yyyy-MM-dd" v-model="formData2.appointed2"
                            type="date" size="small" placeholder="选择时间">
                        </el-date-picker>
                    </el-form-item>
                    <el-form-item >
                    </el-form-item>
                    <el-form-item label="指派人员:">
                        <el-select v-model="formData.equipmentManager" placeholder="请选择" size="small" style="width:100%">
                        <el-select v-model="formData2.getUserMenu" placeholder="请选择" size="small" style="width:100%">
                            <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value">
                            </el-option>
                        </el-select>
@@ -162,12 +164,12 @@
                </el-form>
                <span slot="footer" class="dialog-footer">
                    <el-row>
                        <el-button @click="handleClose">取 消</el-button>
                        <el-button type="primary" @click="submitForm" :loading="upLoad">确 定</el-button>
                        <el-button @click="handleClose2">取 消</el-button>
                        <el-button type="primary" @click="submitForm2" :loading="upLoad">确 定</el-button>
                    </el-row>
                </span>
            </el-dialog>
            <el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="70%" :before-close="handleClose">
            <el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="70%" :before-close="handleClose2">
                <div style="height: 70vh;overflow-y: auto;">
                    <ValueTable ref="ValueTableDataLook" :url="$api.deviceScope.selectDeviceParameter"
                        :componentData="componentDataDataLook" :key="upIndex" />
@@ -197,8 +199,12 @@
                verifyDialogVisible: false,
                quashDialogVisible: false,
                issuedDialogVisible: false,
                issuedDialogVisible2: false,
                dataDialogVisible: false,
                formData: {},
                formData0:{},
                formData1:{},
                formData2:{},
                // 人员列表
                personList: [],
                labelPosition: 'right',
@@ -240,21 +246,21 @@
                        method: 'handleIssued'
                    }],
                    tagField: {
                        deviceStatus: {
                        type: {
                            select: [{
                                value: 0,
                                type: 'success',
                                label: '正常'
                                label: '普通'
                            }, {
                                value: 1,
                                type: 'warning',
                                label: '报废'
                                label: '优先'
                            }, {
                                value: 2,
                                type: 'danger',
                                label: '保修'
                                label: '紧急'
                            }]
                        }
                        },
                    },
                    linkEvent:{
                      deviceName:{
@@ -326,8 +332,21 @@
        mounted() {
            this.entityCopy = this.HaveJson(this.componentData.entity)
            this.getPower()
            this.getAuthorizedPerson()
        },
        methods: {
            getAuthorizedPerson(){
            this.$axios.get(this.$api.deviceScope.selectDevicePrincipal).then(res => {
                    let data = []
                    res.data.forEach(a=>{
                        data.push({
                            label: a.name,
                            value: a.id
                        })
                    })
                    this.personList = data
                })
      },
            refreshTable() {
                this.$refs['ValueTable'].selectList()
            },
@@ -367,6 +386,13 @@
                this.dataDialogVisible = false;
                this.upLoad = false;
            },
            handleClose2() {
                this.verifyDialogVisible = false;
                this.quashDialogVisible = false;
                this.issuedDialogVisible = false;
                this.dataDialogVisible = false;
                this.upLoad = false;
            },
            // 详情
            selectAllByOne(row) {
                //打开弹框
@@ -394,6 +420,28 @@
            // 下发
            handleIssued(row) {
                this.issuedDialogVisible = true;
                this.issuedDialogVisible2 = true;
            },
            submitForm2(){
                this.upLoad = true;
                this.$axios.post(this.$api.insOrder.getDeviceManager, this.formData2, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res => {
                    if (res.code === 201) {
                        this.upLoad = false
                        return
                    }
                    this.$message.success('修改成功')
                    this.upLoad = false
                    this.refreshTable()
                    this.dialogVisible = false
                }).catch(e => {
                    this.$message.error('修改失败')
                    this.dialogVisible = false
                    this.upLoad = false
                })
            },
            submitForm() {
                this.upLoad = true;
@@ -403,7 +451,7 @@
                delete this.formData.createUser
                delete this.formData.updateUser
                this.formData.authorizedPerson = authorizedPerson
                this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.formData, {
                this.$axios.post(this.$api.insOrder.getDeviceManager, this.formData, {
                    headers: {
                        'Content-Type': 'application/json'
                    }
src/components/view/b2-standard.vue
@@ -97,9 +97,9 @@
                    <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true"></el-button>
                </el-col>
            </el-row>
            <el-tree :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'label' }"
                node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current
                @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="false">
            <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'label' }"
                node-key="label" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current
                @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad" :expand-on-click-node="false" :default-expanded-keys="expandedKeys">
                <div class="custom-tree-node" slot-scope="{ node, data }">
                    <el-row>
                        <el-col :span="21">
@@ -325,7 +325,8 @@
                        deviceGroup:{select:[]}
                    },
                    selectField: {},
                }
                },
                expandedKeys:[]
            }
        },
        mounted() {
@@ -462,6 +463,13 @@
                this.treeLoad = true
                this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => {
                    this.list = res.data
                    this.list.forEach(a=>{
                        a.children.forEach(b=>{
                            b.children.forEach(c=>{
                                this.expandedKeys.push(c.label)
                            })
                        })
                    })
                    this.treeLoad = false
                })
            },
src/view/index.vue
@@ -162,8 +162,7 @@
    }
    .tag>.el-icon-s-unfold,
    .el-icon-s-fold,
    .tag>.el-icon-delete {
    .el-icon-s-fold{
        font-size: 16px;
        cursor: pointer;
        margin: 0 8px;
@@ -211,6 +210,11 @@
    .active_tab i {
        display: inline;
        color: #3A7BFA;
        border-radius: 50%;
    }
    .active_tab i:hover{
        background-color: rgba(0, 0, 0, 0.08);
    }
    .component_view {
@@ -311,7 +315,6 @@
                        <i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive!=0"></i>
                    </div>
                </div>
                <i class="el-icon-delete" @click="allDel" title="删除所有标签页"></i>
            </div>
            <div class="component_view">
                <component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="com.k" v-show="com.k == tabActive"