1
lzhe
2024-05-13 f5edc2904945f37b164a7874d502cf002fae024e
1
已修改15个文件
已添加1个文件
428 ■■■■■ 文件已修改
src/views/console/authority/datascope.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/authority/role/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/base/code-rules.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/resource/attach.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/soam/oss-system.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/system/data-scope-manager.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/system/meta-object-type/index.vue 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/widgets/components/ver.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/master/person/main/personDepartment.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/master/person/main/personPerson.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/master/person/main/personPost.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/realtime-status/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/station-live.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/status-record.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mdc/time-analysis.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/notification/business.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/authority/datascope.vue
@@ -354,7 +354,7 @@
        margin-bottom: 8px;
    }
    .attachSize {
        color:#3b8e8e;
        color:#409eff;
        padding: 0 10px;
        font-size: 12px;
        background-color: #ebf4f4;
src/views/console/authority/role/index.vue
@@ -369,7 +369,7 @@
    line-height: 41px;
    font-size: 14px;
    text-align: center;
    background-color: #3b8e8e;
    background-color: #409eff;
    color: #fff;
}
.rolePage .roleContainer ul {
@@ -389,7 +389,7 @@
}
.rolePage .roleContainer ul li .active {
    font-weight: bold;
    color: #3b8e8e;
    color: #409eff;
}
.rolePage .roleContainer ul li:hover {
    background-color: #f5f7fa;
@@ -411,7 +411,7 @@
.role-main-title {
    padding: 6px 10px;
    font-size: 14px;
    background-color: #d8e8d8;
    background-color: #9dc7f2;
    margin-bottom: 8px;
    border-radius: 2px;
}
@@ -431,7 +431,7 @@
    text-overflow: ellipsis;
}
.role-main-header ul li.titleActive {
    border: 1px solid #3b8e8e;
    border: 1px solid #409eff;
}
.role-main-header ul li.role-header-add {
    display: inline-block;
src/views/console/base/code-rules.vue
@@ -2,7 +2,7 @@
 * @Author: lzhe lzhe@example.com
 * @Date: 2024-03-26 10:28:33
 * @LastEditors: lzhe lzhe@example.com
 * @LastEditTime: 2024-04-17 17:52:50
 * @LastEditTime: 2024-05-13 11:39:54
 * @FilePath: /smart-web/src/views/master/person/main/index.vue
 * @Description: è¿™æ˜¯é»˜è®¤è®¾ç½®,请设置`customMade`, æ‰“å¼€koroFileHeader查看配置 è¿›è¡Œè®¾ç½®: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
@@ -69,28 +69,29 @@
                <el-button @click="closeDrawer">取消</el-button>
            </div>
        </el-drawer>
        <el-dialog title="规则分类" v-model="visible" :width="500">
        <el-dialog title="规则分类" v-model="visible" :width="600" @closed="closeVisible('closed')">
            <el-form :model="classificationForm" :rules="classificationRules" ref="dialogForm" label-width="120px"
                label-position="center">
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="分类规则" prop="code">
                            <el-input v-model="classificationForm.code" placeholder="分类规则" clearable></el-input>
                        <el-form-item label="分类字段" prop="classify">
                            <el-select v-model="classificationForm.classify" style="width: 100%" placeholder="请选择">
                                <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="分类字典" prop="name">
                            <el-input v-model="classificationForm.name" placeholder="分类字典" clearable></el-input>
                        <el-form-item label="分类字典">
                            <el-input v-model="classificationForm.dictionary" placeholder="分类字典" clearable></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <el-button @click="visible = false">取消</el-button>
                <el-button type="primary" :loading="isSaveing" @click="classificationSubmit()">确定</el-button>
                <el-button type="primary" :loading="isSaveing" @click="classificationSubmit">确定</el-button>
            </template>
        </el-dialog>
    </div>
</template>
<script>
@@ -98,13 +99,19 @@
        name: "apiscope",
        data(){
            return {
                classificationRules: {},
                classificationForm: {},
                classificationRules: {
                    classify: [
                        { required: true, message: "请选择分类字段" }
                    ]
                },
                classificationForm: {
                    classify: "",
                    dictionary: ""
                },
                isSaveing: false,
                visible: false,
                drawerPath: "",
                searchData: {
                    menuId: "",
                    size: "15",
                    current: "1"
                },
@@ -138,8 +145,33 @@
        },
        methods: {
            closeVisible(flag) {
                if(flag == "closed") {
                    this.classificationForm = {
                        classify: "",
                        dictionary: ""
                    }
                    this.$refs.dialogForm.resetFields();
                };
            },
            classificationSubmit() {
                this.$refs.dialogForm.validate(async (valid) => {
                    if (valid) {
                        this.isSaveing = false;
                        // this.$HTTP.post("/api/blade-system/data-scope/submit",obj).then(res=> {
                        //     this.isSaveing = false;
                        //     if(res.code == 200) {
                        //         this.$emit('success', this.addDictForm, this.mode);
                        //         this.visible = false;
                        //         this.$message.success("操作成功");
                        //     }else {
                        //         this.$alert(res.message, "提示", {type: 'error'});
                        //     }
                        // })
                    }else{
                        return false;
                    }
                })
            },
            openVisible() {
                this.visible = true;
@@ -196,7 +228,7 @@
                // }else {
                //     this.parentId = '0';
                // }
                // this.$HTTP.get("/api/blade-system/menu/lazy-list",{parentId: this.parentId}).then(res=> {
                // this.$HTTP.get("/api/blade-system/dict/dictionary-tree?code=code_rule_for_biz_objects").then(res=> {
                //     if(res.code == 200) {
                //         res.data.forEach(node => {
                //             node.hasChildren = !node.hasChildren;
src/views/console/resource/attach.vue
@@ -247,7 +247,7 @@
        margin-bottom: 8px;
    }
    .attachSize {
        color:#3b8e8e;
        color:#409eff;
        padding: 0 10px;
        font-size: 12px;
        background-color: #ebf4f4;
src/views/console/soam/oss-system.vue
@@ -647,7 +647,7 @@
    top: 18px;
    right: 16px;
    font-size: 14px;
    color: #3b8e8e;
    color: #409eff;
}
.show-list li .logo {
    width: 66px;
@@ -786,8 +786,8 @@
    top: 20px;
}
.card .top .title .taginfo {
    color: #3b8e8e;
    border: 1px solid #3b8e8e;
    color: #409eff;
    border: 1px solid #409eff;
    border-radius: 4px;
    font-size: 14px;
    margin-left: 10px;
@@ -804,7 +804,7 @@
    padding: 20px;
}
.card .bottom .info .img {
    background-color: #3b8e8e;
    background-color: #409eff;
    border-radius: 6px;
    display: flex;
    justify-content: center;
@@ -831,7 +831,7 @@
    font-size: 14px;
}
.card .bottom .info .info-right .tag span{
    color: #3b8e8e;
    color: #409eff;
    cursor: pointer;
    padding: 0 !important;
    min-height: 14px !important;
src/views/console/system/data-scope-manager.vue
@@ -325,7 +325,7 @@
        margin-bottom: 8px;
    }
    .attachSize {
        color:#3b8e8e;
        color:#409eff;
        padding: 0 10px;
        font-size: 12px;
        background-color: #ebf4f4;
src/views/console/system/meta-object-type/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,312 @@
<!--
 * @Author: lzhe lzhe@example.com
 * @Date: 2024-03-26 10:28:33
 * @LastEditors: lzhe lzhe@example.com
 * @LastEditTime: 2024-05-13 12:15:04
 * @FilePath: /smart-web/src/views/master/person/main/index.vue
 * @Description: è¿™æ˜¯é»˜è®¤è®¾ç½®,请设置`customMade`, æ‰“å¼€koroFileHeader查看配置 è¿›è¡Œè®¾ç½®: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
    <div class="aposcope-main">
        <div class="aposcope-left">
            <div class="left-title">业务列表</div>
            <el-tree :data="tableData" row-key="id" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef" default-expand-all :highlight-current="true" :expand-on-click-node="false" :default-checked-keys="treeCheck"/>
        </div>
        <div class="aposcope-right">
            <div class="right-top">
                <div>
                    <el-button type="primary" @click="addData">+ æ·»åŠ è§„åˆ™</el-button>
                    <el-button type="danger" plain @click="delData" disabled>删除</el-button>
                </div>
                <el-button @click="openVisible">开启规则分类</el-button>
            </div>
            <div class="right-content" v-if="searchDataList.length == 0">
                <!-- <img src="./quesheng.bd026700.png" /> -->
                <div>
                    <span>暂无数据</span>
                    <!-- <span @click="addData">添加规则</span> -->
                </div>
            </div>
            <el-table v-if="searchDataList.length != 0" ref="searchDataListRef" :data="searchDataList" border style="width: 100%;margin-top: 20px;" class="multipleTableRef" @selection-change="searchHandleSelectionChange">
                <el-table-column type="selection" width="55" />
                <el-table-column prop="moduleCode" label="接口模块"></el-table-column>
                <el-table-column prop="controllerCode" label="Controller"></el-table-column>
                <el-table-column prop="scopeName" label="action"></el-table-column>
                <el-table-column prop="httpMethod" label="Http方法"></el-table-column>
                <el-table-column prop="scopePath" label="api地址"></el-table-column>
            </el-table>
        </div>
        <el-drawer :title="'当前选中菜单路径'+drawerPath" v-model="drawer" :direction="direction" :before-close="handleClose" size="780" class="drawerClass">
            <el-form :inline="true" :model="drawerSearchData" abel-width="120px">
                <el-form-item label="接口模块">
                    <el-select v-model="drawerSearchData.moduleCode" style="width: 100%">
                        <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/>
                    </el-select>
                </el-form-item>
                <el-form-item label="接口Controller">
                    <el-select v-model="drawerSearchData.controllerCode" style="width: 100%">
                        <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/>
                    </el-select>
                </el-form-item>
                <el-form-item>
                    <el-button type="primary" @click="drawerSearchclick">搜索</el-button>
                </el-form-item>
            </el-form>
            <div>
                <div class="dict-table">
                    <el-table ref="multipleTableRef" :data="drawerTableData" border style="width: 100%" class="multipleTableRef" @selection-change="drawerHandleSelectionChange">
                        <el-table-column type="selection" width="55" />
                        <el-table-column prop="className" label="接口模块"></el-table-column>
                        <el-table-column prop="controllerCode" label="Controller"></el-table-column>
                        <el-table-column prop="name" label="action"></el-table-column>
                        <el-table-column prop="httpMethod" label="Http方法"></el-table-column>
                        <el-table-column prop="url" label="api地址"></el-table-column>
                    </el-table>
                </div>
            </div>
            <div class="drawer-foot">
                <el-button type="primary" @click="drawerConfirm" disabled>添加</el-button>
                <el-button @click="closeDrawer">取消</el-button>
            </div>
        </el-drawer>
        <el-dialog title="规则分类" v-model="visible" :width="600" @closed="closeVisible('closed')">
            <el-form :model="classificationForm" :rules="classificationRules" ref="dialogForm" label-width="120px"
                label-position="center">
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="分类字段" prop="classify">
                            <el-select v-model="classificationForm.classify" style="width: 100%" placeholder="请选择">
                                <el-option v-for="item in aList" :key="item.id" :label="item.title" :value="item.id"/>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="分类字典">
                            <el-input v-model="classificationForm.dictionary" placeholder="分类字典" clearable></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <template #footer>
                <el-button @click="visible = false">取消</el-button>
                <el-button type="primary" :loading="isSaveing" @click="classificationSubmit">确定</el-button>
            </template>
        </el-dialog>
    </div>
</template>
<script>
    export default {
        name: "apiscope",
        data(){
            return {
                treeCheck: [],
                classificationRules: {
                    classify: [
                        { required: true, message: "请选择分类字段" }
                    ]
                },
                classificationForm: {
                    classify: "",
                    dictionary: ""
                },
                isSaveing: false,
                visible: false,
                drawerPath: "",
                searchData: {
                    size: "15",
                    current: "1"
                },
                searchDataList: [],  //右侧数据list
                aList: [],
                drawerSearchData: {
                    moduleCode: "",
                    controllerCode: "",
                    menuId: "",
                    size: "-1"
                },
                direction: "rtl",
                drawer: false,
                defalutProps: {
                    label: 'dictValue',
                      children: 'children',
                    isLeaf: 'hasChildren'
                },
                parentId: "0",
                tableData: [],
                searchSelection: []
            }
        },
        created(){
        },
        mounted(){
            this.getMenuList();
        },
        components: {
        },
        methods: {
            closeVisible(flag) {
                if(flag == "closed") {
                    this.classificationForm = {
                        classify: "",
                        dictionary: ""
                    }
                    this.$refs.dialogForm.resetFields();
                };
            },
            classificationSubmit() {
                this.$refs.dialogForm.validate(async (valid) => {
                    if (valid) {
                        this.isSaveing = false;
                        // this.$HTTP.post("/api/blade-system/data-scope/submit",obj).then(res=> {
                        //     this.isSaveing = false;
                        //     if(res.code == 200) {
                        //         this.$emit('success', this.addDictForm, this.mode);
                        //         this.visible = false;
                        //         this.$message.success("操作成功");
                        //     }else {
                        //         this.$alert(res.message, "提示", {type: 'error'});
                        //     }
                        // })
                    }else{
                        return false;
                    }
                })
            },
            openVisible() {
                this.visible = true;
            },
            closeDrawer() {
                this.drawer = false;
            },
            drawerConfirm() {
                this.drawer = false;
            },
            searchHandleSelectionChange(selection) {
                this.searchSelection = selection;
            },
            drawerHandleSelectionChange() {
            },
            drawerSearchclick() {
                this.drawerSearchData.menuId = this.searchData.menuId;
                var obj = {};
                for(var key in this.drawerSearchData) {
                    if(this.drawerSearchData[key]) {
                        obj[key] = this.drawerSearchData[key];
                    }
                }
                this.$HTTP.get("/api/blade-system/resource-definition/page",obj).then(res=> {
                    if(res.code == 200) {
                        this.drawerTableData = res.data.records;
                    }
                })
            },
            handleClose(done) {
                done();
            },
            handleNodeClick(data) {
                // this.drawerPath = data.name;
                // console.log(data,data.name,222)
                // this.searchData.menuId = data.id;
                // this.$HTTP.get("/api/blade-system/api-scope/list",this.searchData).then(res=> {
                //     if(res.code == 200) {
                //         this.searchDataList = res.data.records;
                //     }
                // })
            },
            getMenuList() {
                this.$HTTP.get("/api/blade-system/dict/dictionary-tree?code=code_rule_for_biz_objects").then(res=> {
                    if(res.code == 200) {
                        this.tableData = res.data;
                        // this.treeCheck = idarr;  //获取选中数据
                    }
                })
            },
            addData() {
                // this.drawerSearchclick();
                // this.drawer = true;
            },
            delData() {
                if(this.searchSelection.length == 0) {
                    this.$message({
                      message: '请选择至少一条数据',
                      type: 'warning'
                    });
                    return;
                }
                var selStr = "";
                this.searchSelection.map(item=> {
                    selStr += item.id + ","
                })
                selStr = selStr.replace(/,$/, '');
                var that = this;
                // this.$HTTP.post("/api/blade-system/data-scope/remove?ids="+selStr).then(res=> {
                //     if(res.code == 200) {
                //         that.$message.success("操作成功");
                //         that.drawerSearchclick();
                //     }
                // })
            }
        }
    }
</script>
<style scoped>
.aposcope-main {
    display: flex;
    min-height: 100%;
    margin: 8px;
}
.aposcope-left {
    width: 240px;
    margin-right: 8px;
    padding: 4px;
    background-color: #fff;
}
.aposcope-right {
    flex: 1;
    padding: 8px;
    background-color: #fff;
}
.left-title {
    font-size: 16px;
    text-align: center;
    height: 38px;
    line-height: 38px;
    border-bottom: 1px solid #e2e2e2;
    background-color: #409eff;
    color: #fff;
    border-radius: 2px 2px 0 0;
    margin-bottom: 12px;
}
.right-content {
    text-align: center;
}
.right-content img {
    width: 350px;
    height: 350px;
}
.right-content > div {
    font-size: 14px;;
}
.right-content > div span:nth-child(2) {
    margin-left: 8px;
    color: #409eff;
    cursor: pointer;
}
/deep/ .drawerClass {
    padding: 8px;
}
.datascope-drawer-btn {
    margin-bottom: 8px;
}
.drawer-foot {
    margin-top: 20px;
}
.right-top {
    display: flex;
    justify-content: space-between;
}
</style>
src/views/home/widgets/components/ver.vue
@@ -160,15 +160,15 @@
<style scoped>
    ul {list-style: none;margin-bottom: 10px;overflow: hidden;}
    ul li {float: left;margin-bottom: 8px;}
    ul li div,.addMenu{border: 1px solid #3b8e8e;margin-top: 10px;height: 43px;margin-left: 10px;display: flex;align-items: center;justify-content: center;color: #3b8e8e;border-radius: 2px;border-radius: 2px;white-space: nowrap;cursor: pointer;min-width: 112px;}
    ul li div,.addMenu{border: 1px solid #409eff;margin-top: 10px;height: 43px;margin-left: 10px;display: flex;align-items: center;justify-content: center;color: #409eff;border-radius: 2px;border-radius: 2px;white-space: nowrap;cursor: pointer;min-width: 112px;}
    ul li div:hover {background-color: #ebf4f4;}
    .addMenu {border: 1px dashed #3b8e8e;}
    .addMenu {border: 1px dashed #409eff;}
    ..addMenu:hover {border: 1px dashed #104E8B;}
    .parent-children-title {margin-left: 10px;margin-top: 24px;font-weight: 700;font-size: 14px;text-align: left;color: #333;}
    .parent-children {display: flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;align-items: flex-start;padding-left: 10px;box-sizing: border-box;}
    .parent-children span {margin-left: 10px;margin-top: 10px;width: 22%;border: 0.5px solid #20B2AA;border-radius: 2px;height: 43px;display: flex;align-items: center;justify-content: center;cursor: pointer;position: relative;min-width: 112px;}
    .parent-children span:hover {border: 1px solid #104E8B;}
    .triangle-topright {width: 0;height: 0;border-top: 28px solid #3b8e8e;border-left: 28px solid transparent;position: absolute;right: 0;top: 0;}
    .triangle-topright {width: 0;height: 0;border-top: 28px solid #409eff;border-left: 28px solid transparent;position: absolute;right: 0;top: 0;}
    .icon-topright {position: absolute;right: 2px;top: 2px;z-index: 2;color: #fff;}
    .drawer-foot {text-align: right;margin-top: 8px;margin-bottom: 8px;margin-right: 20px;}
</style>
src/views/master/person/main/personDepartment.vue
@@ -248,7 +248,7 @@
        border-left: 0px;
    }
    .person-left-active {
        background-color: #3b8e8e;
        background-color: #409eff;
        color: #fff;
    }
    .person-left-search {
src/views/master/person/main/personPerson.vue
@@ -437,7 +437,7 @@
}
.person-left-active {
    background-color: #3b8e8e;
    background-color: #409eff;
    color: #fff;
}
src/views/master/person/main/personPost.vue
@@ -234,7 +234,7 @@
        border-left: 0px;
    }
    .person-left-active {
        background-color: #3b8e8e;
        background-color: #409eff;
        color: #fff;
    }
    .person-left-search {
src/views/mdc/realtime-status/index.vue
@@ -389,7 +389,7 @@
    .status-card-bottom {
        font-weight: 700;
        font-size: 14px;
        color: #3b8e8e;
        color: #409eff;
        display: flex;
        align-items: center;
        justify-content: flex-start;
src/views/mdc/station-live.vue
@@ -763,7 +763,7 @@
    position: absolute;
    right: 10px;
    top: -2px;
    color: #3b8e8e;
    color: #409eff;
    cursor: pointer;
}
.status-wrap.align-left, .status-wrap:first-child {
@@ -776,7 +776,7 @@
    justify-content: start;
}
.collect-status {
    color: #3b8e8e;
    color: #409eff;
    margin-right: 16px;
    font-size: 14px;
}
@@ -803,6 +803,6 @@
    flex-wrap: wrap;
}
.status-wrap /deep/ .el-checkbox.el-checkbox--large {
    color: #3b8e8e;
    color: #409eff;
}
</style>
src/views/mdc/status-record.vue
@@ -384,7 +384,7 @@
        flex-wrap: wrap;
    }
    .status-wrap /deep/ .el-checkbox.el-checkbox--large {
        color: #3b8e8e;
        color: #409eff;
    }
    .fact-analysis-realtim {
        display: flex;
@@ -418,7 +418,7 @@
        position: absolute;
        right: 10px;
        top: -2px;
        color: #3b8e8e;
        color: #409eff;
        cursor: pointer;
    }
    .aposcope-right /deep/ .el-tabs__content {
src/views/mdc/time-analysis.vue
@@ -48,7 +48,7 @@
                            <el-collapse v-model="activeNames" accordion>
                            <el-collapse-item v-for="(item,index) in setTitle" :name="index + 1">
                                <template #title>
                                    <el-icon size="16" color="#3b8e8e"><Memo /></el-icon>
                                    <el-icon size="16" color="#409eff"><Memo /></el-icon>
                                    <span class="collr-title">班次{{index + 1}}</span>
                                    <el-button size="small">{{item.indexName}}</el-button>
                                </template>
@@ -81,7 +81,7 @@
                            <el-collapse v-model="activeNames1" accordion>
                                <el-collapse-item v-for="(item,index) in setTitle1" :name="index + 1">
                                    <template #title>
                                        <el-icon size="16" color="#3b8e8e"><Memo /></el-icon>
                                        <el-icon size="16" color="#409eff"><Memo /></el-icon>
                                        <span class="collr-title">{{item.name}}</span>
                                        <el-button size="small" v-if="index != 0">{{item.indexName}}</el-button>
                                    </template>
src/views/notification/business.vue
@@ -343,7 +343,7 @@
    justify-content: space-between;
    margin: 24px 0 0 0;
    padding: 0 20px 0 10px;
    border-left: 6px solid #3b8e8e;
    border-left: 6px solid #409eff;
}
.ct-span {
    color: #101010;
@@ -404,9 +404,9 @@
}
.tagItem {
    margin: 10px 10px 10px 0;
    background-color: #3b8e8e;
    background-color: #409eff;
    color: #fff;
    border-color: #3b8e8e;
    border-color: #409eff;
    display: inline-block;
    font-size: 12px;
    padding: 4px 10px;