李林
2024-03-14 5e130ba040fe5e266435b76940caa7a42d5188e8
功能调整
已修改4个文件
234 ■■■■■ 文件已修改
src/assets/api/controller.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue 208 ●●●●● 补丁 | 查看 | 原始文档 | 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 = {
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/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"