|  |  |  | 
|---|
|  |  |  | <!-- eslint-disable vue/no-use-v-if-with-v-for --> | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <div class="page-view"> | 
|---|
|  |  |  | <div class="table-view"> | 
|---|
|  |  |  | <el-table | 
|---|
|  |  |  | ref="table" | 
|---|
|  |  |  | border | 
|---|
|  |  |  | :data="tableList.tableInfomation" | 
|---|
|  |  |  | tooltip-effect="dark" | 
|---|
|  |  |  | :height="'calc(100% - 0px)'" | 
|---|
|  |  |  | style="width: 100%" | 
|---|
|  |  |  | :lazy="tableList.lazy" | 
|---|
|  |  |  | :show-summary="showSummary.show" | 
|---|
|  |  |  | :summary-method="getSummaries" | 
|---|
|  |  |  | :span-method="arraySpanMethod" | 
|---|
|  |  |  | @selection-change="handleSelectionChange" | 
|---|
|  |  |  | :header-cell-style="{ background: '#ECF4FF', color: '#666' }" | 
|---|
|  |  |  | :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '12px', 'font-family': 'PingFangSC' }" | 
|---|
|  |  |  | size="mini" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <el-table-column v-if="tableList.selectIndex" type="index" label="序号" width="50"></el-table-column> | 
|---|
|  |  |  | <el-table-column v-if="selectBox" type="selection" width="40"> </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | v-for="(item, i) in tableList.tableColumn" | 
|---|
|  |  |  | :key="i" | 
|---|
|  |  |  | 
|---|
|  |  |  | :min-width="item.min" | 
|---|
|  |  |  | show-overflow-tooltip | 
|---|
|  |  |  | :sortable="item.sortable" | 
|---|
|  |  |  | v-if="item.isShowColumn" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> | 
|---|
|  |  |  | <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div> | 
|---|
|  |  |  | <span v-else-if="item.isTime">{{ | 
|---|
|  |  |  | dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) === "1900-01-01 00:06:26" | 
|---|
|  |  |  | ? "--" | 
|---|
|  |  |  | : dateFormat("YYYY-mm-dd HH:MM:SS", scope.row[item.prop]) | 
|---|
|  |  |  | }}</span> | 
|---|
|  |  |  | <span v-else-if="item.isClick && scope.row[item.prop]" class="sel-name" @click="selNameClick(scope.row)">{{ | 
|---|
|  |  |  | scope.row[item.prop] | 
|---|
|  |  |  | }}</span> | 
|---|
|  |  |  | <span v-else-if="item.isFirst">{{ scope.row[item.prop] ? "是" : "否" }}</span> | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | v-else-if="item.isSalesLeadClick && scope.row[item.prop]" | 
|---|
|  |  |  | class="sel-name" | 
|---|
|  |  |  | @click="selSalesLeadClick(scope.row)" | 
|---|
|  |  |  | >{{ scope.row[item.prop] }}</span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | v-else-if="item.isClientClick && scope.row[item.prop]" | 
|---|
|  |  |  | class="sel-name" | 
|---|
|  |  |  | @click="selClientClick(scope.row)" | 
|---|
|  |  |  | >{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | v-else-if="item.isContactClick && scope.row[item.prop]" | 
|---|
|  |  |  | class="sel-name" | 
|---|
|  |  |  | @click="selContactsClick(scope.row)" | 
|---|
|  |  |  | >{{ scope.row[item.prop] }}</span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | v-else-if="item.isMasterClick && scope.row[item.prop]" | 
|---|
|  |  |  | class="sel-name" | 
|---|
|  |  |  | @click="selMasterClick(scope.row)" | 
|---|
|  |  |  | >{{ scope.row[item.prop] }}</span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | v-else-if="item.isServiceOrder && scope.row[item.prop]" | 
|---|
|  |  |  | class="sel-name" | 
|---|
|  |  |  | @click="selServiceOrderClick(scope.row)" | 
|---|
|  |  |  | >{{ scope.row[item.prop] }}</span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | v-else-if="item.isCommonClick && scope.row[item.prop]" | 
|---|
|  |  |  | class="sel-name" | 
|---|
|  |  |  | @click="selCommonClick(scope.row)" | 
|---|
|  |  |  | >{{ scope.row[item.prop] }}</span | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <div v-else-if="item.isProductName" class="product-view"> | 
|---|
|  |  |  | <ul v-if="scope.row.products && scope.row.products.length > 0"> | 
|---|
|  |  |  | <li v-for="(item, index) in scope.row.products" :key="index"> | 
|---|
|  |  |  | <div class="name-view"> | 
|---|
|  |  |  | {{ item.name }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </li> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | <div v-else class="no-product">{{ "--" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div v-else-if="item.isProductAmount" class="product-view"> | 
|---|
|  |  |  | <ul v-if="scope.row.products && scope.row.products.length > 0"> | 
|---|
|  |  |  | <li v-for="(item, index) in scope.row.products" :key="index"> | 
|---|
|  |  |  | <div class="name-view"> | 
|---|
|  |  |  | {{ item.amount }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </li> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | <div v-else class="no-product">{{ "--" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div v-else-if="item.isProductPrice" class="product-view"> | 
|---|
|  |  |  | <ul v-if="scope.row.products && scope.row.products.length > 0"> | 
|---|
|  |  |  | <li v-for="(item, index) in scope.row.products" :key="index"> | 
|---|
|  |  |  | <div class="name-view"> | 
|---|
|  |  |  | {{ item.price }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </li> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | <div v-else class="no-product">{{ "--" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div v-else-if="item.isProductTotal" class="product-view"> | 
|---|
|  |  |  | <ul v-if="scope.row.products && scope.row.products.length > 0"> | 
|---|
|  |  |  | <li v-for="(item, index) in scope.row.products" :key="index"> | 
|---|
|  |  |  | <div class="name-view"> | 
|---|
|  |  |  | {{ item.total }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </li> | 
|---|
|  |  |  | </ul> | 
|---|
|  |  |  | <div v-else class="no-product">{{ "--" }}</div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | 
|---|
|  |  |  | <el-empty description="暂无数据"></el-empty> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-table> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <div class="overSpread1" v-show="iscolopen" @click="onMaskClick"></div> | 
|---|
|  |  |  | <div class="styleBtn"> | 
|---|
|  |  |  | <i @click="checkCol()" class="label">...</i> | 
|---|
|  |  |  | <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList"> | 
|---|
|  |  |  | <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox> | 
|---|
|  |  |  | </el-checkbox-group> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | props: { | 
|---|
|  |  |  | selectBox: { | 
|---|
|  |  |  | type: Boolean, | 
|---|
|  |  |  | default: true | 
|---|
|  |  |  | default: false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | tableList: { | 
|---|
|  |  |  | type: Object, | 
|---|
|  |  |  | default: () => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | selectBox: true, | 
|---|
|  |  |  | selectIndex: true, | 
|---|
|  |  |  | tableInfomation: [], // 接口返回数据 | 
|---|
|  |  |  | showcol: [], | 
|---|
|  |  |  | allcol: [], | 
|---|
|  |  |  | tableColumn: [ | 
|---|
|  |  |  | // table表单 | 
|---|
|  |  |  | { label: "", prop: "", min: 200, tooltip: true } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return {} | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | iscolopen: false, | 
|---|
|  |  |  | showcol: [] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: {}, | 
|---|
|  |  |  | watch: { | 
|---|
|  |  |  | "tableList.showcol": { | 
|---|
|  |  |  | handler(newVal) { | 
|---|
|  |  |  | this.showcol = newVal | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | immediate: true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | onMaskClick() { | 
|---|
|  |  |  | this.iscolopen = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | checkCol() { | 
|---|
|  |  |  | this.iscolopen = !this.iscolopen | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | selectCheckBoxList(val) { | 
|---|
|  |  |  | this.$emit("selTableCol", val) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | handleReserve(row) { | 
|---|
|  |  |  | return row._id ? row._id : row.id | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | .querySelector(".el-table__footer") | 
|---|
|  |  |  | var cell = current.rows[0].cells | 
|---|
|  |  |  | for (let i = 0; i < this.showSummary.mergeNumber; i++) { | 
|---|
|  |  |  | cell[i].style.display = "none" | 
|---|
|  |  |  | cell[i] && cell[i].style && (cell[i].style.display = "none") | 
|---|
|  |  |  | } | 
|---|
|  |  |  | cell[this.showSummary.mergeNumber].classList.remove("is-left") | 
|---|
|  |  |  | cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() | 
|---|
|  |  |  | if (cell[this.showSummary.mergeNumber]) { | 
|---|
|  |  |  | if (cell[this.showSummary.mergeNumber].classList) { | 
|---|
|  |  |  | cell[this.showSummary.mergeNumber].classList.remove("is-left") | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (cell[this.showSummary.mergeNumber].colSpan) { | 
|---|
|  |  |  | cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 0) | 
|---|
|  |  |  | sums[index + 1] | 
|---|
|  |  |  | if (column.property === "taxUnitPrice") { | 
|---|
|  |  |  | let sumPrice = 0 | 
|---|
|  |  |  | this.tableList.tableInfomation.map((item) => { | 
|---|
|  |  |  | item.products.map((val) => { | 
|---|
|  |  |  | console.log(val.price) | 
|---|
|  |  |  | sumPrice += parseFloat(val.price) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | console.log((sums[index + 1] = sumPrice)) | 
|---|
|  |  |  | console.log(sumPrice) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (column.property === "priceTax") { | 
|---|
|  |  |  | let sumPrice = 0 | 
|---|
|  |  |  | this.tableList.tableInfomation.map((item) => { | 
|---|
|  |  |  | item.products.map((val) => { | 
|---|
|  |  |  | console.log(val.price) | 
|---|
|  |  |  | sumPrice += parseFloat(val.total) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | sums[index + 1] = sumPrice | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (column.property === "productAmount") { | 
|---|
|  |  |  | let sumPrice = 0 | 
|---|
|  |  |  | this.tableList.tableInfomation.map((item) => { | 
|---|
|  |  |  | item.products.map((val) => { | 
|---|
|  |  |  | console.log(val.price) | 
|---|
|  |  |  | sumPrice += parseFloat(val.amount) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | sums[index + 1] = sumPrice | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | console.log(sums) | 
|---|
|  |  |  | // console.log(sums) | 
|---|
|  |  |  | return sums | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | s[1] = s[1].substring(0, prec) //小数点位数超出长度时截取前面的位数 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return s.join(dec) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 时间显示 | 
|---|
|  |  |  | dateFormat(fmt, date) { | 
|---|
|  |  |  | let ret = "" | 
|---|
|  |  |  | date = new Date(date) | 
|---|
|  |  |  | const opt = { | 
|---|
|  |  |  | "Y+": date.getFullYear().toString(), // 年 | 
|---|
|  |  |  | "m+": (date.getMonth() + 1).toString(), // 月 | 
|---|
|  |  |  | "d+": date.getDate().toString(), // 日 | 
|---|
|  |  |  | "H+": date.getHours().toString(), // 时 | 
|---|
|  |  |  | "M+": date.getMinutes().toString(), // 分 | 
|---|
|  |  |  | "S+": date.getSeconds().toString() // 秒 | 
|---|
|  |  |  | // 有其他格式化字符需求可以继续添加,必须转化成字符串 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (let k in opt) { | 
|---|
|  |  |  | ret = new RegExp("(" + k + ")").exec(fmt) | 
|---|
|  |  |  | if (ret) { | 
|---|
|  |  |  | fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return fmt | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 新建编辑选择弹窗 | 
|---|
|  |  |  | selNameClick(row) { | 
|---|
|  |  |  | this.$emit("selCommonClick", row) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 销售线索 | 
|---|
|  |  |  | selSalesLeadClick(row) { | 
|---|
|  |  |  | this.$emit("selSalesLeadClick", row) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 客户名称 | 
|---|
|  |  |  | selClientClick(row) { | 
|---|
|  |  |  | this.$emit("selClientClick", row) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 联系人姓名 | 
|---|
|  |  |  | selContactsClick(row) { | 
|---|
|  |  |  | this.$emit("selContactsClick", row) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 销售总单 | 
|---|
|  |  |  | selMasterClick(row) { | 
|---|
|  |  |  | this.$emit("selMasterClick", row) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 客户服务单 | 
|---|
|  |  |  | selServiceOrderClick(row) { | 
|---|
|  |  |  | this.$emit("selServiceOrderClick", row) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 公共(销售机会、报价单、销售总单、销售子单。。。) | 
|---|
|  |  |  | selCommonClick(row) { | 
|---|
|  |  |  | this.$emit("selCommonClick", row) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- Add "scoped" attribute to limit CSS to this component only --> | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .page-view { | 
|---|
|  |  |  | margin-top: 20px; | 
|---|
|  |  |  | margin-right: 10px; | 
|---|
|  |  |  | margin-bottom: 40px; | 
|---|
|  |  |  | .table-view { | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | .blue { | 
|---|
|  |  |  | width: 70px; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | 
|---|
|  |  |  | background-color: $color-primary; | 
|---|
|  |  |  | border-radius: 4px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .sel-name { | 
|---|
|  |  |  | color: $color-primary; | 
|---|
|  |  |  | cursor: pointer; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .product-view { | 
|---|
|  |  |  | // background: #cc7d7d; | 
|---|
|  |  |  | margin-left: -10px; | 
|---|
|  |  |  | margin-right: -11px; | 
|---|
|  |  |  | li { | 
|---|
|  |  |  | height: 22px; | 
|---|
|  |  |  | line-height: 22px; | 
|---|
|  |  |  | .name-view { | 
|---|
|  |  |  | padding-left: 10px; | 
|---|
|  |  |  | border-bottom: 1px solid #ebeef5; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .no-bottom { | 
|---|
|  |  |  | border-bottom: 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | li:last-child .name-view { | 
|---|
|  |  |  | border-bottom: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .no-product { | 
|---|
|  |  |  | height: 22px; | 
|---|
|  |  |  | line-height: 22px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep { | 
|---|
|  |  |  | .el-table__footer-wrapper tbody td.el-table__cell { | 
|---|
|  |  |  | background-color: #fff; | 
|---|
|  |  |  | text-align: right; | 
|---|
|  |  |  | .el-table__footer-wrapper { | 
|---|
|  |  |  | tbody td.el-table__cell { | 
|---|
|  |  |  | background-color: #fff; | 
|---|
|  |  |  | font-weight: bold; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ::v-deep .el-table .cell { | 
|---|
|  |  |  | font-size: 12px; | 
|---|
|  |  |  | line-height: 17px; | 
|---|
|  |  |  | font-family: PingFangSC; | 
|---|
|  |  |  | color: rgba(0, 0, 0, 0.9); | 
|---|
|  |  |  | .el-button--text { | 
|---|
|  |  |  | width: auto; | 
|---|
|  |  |  | height: auto; | 
|---|
|  |  |  | font-family: PingFangSC-Medium, sans-serif; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ::v-deep .el-table .el-table__cell { | 
|---|
|  |  |  | padding: 6px 0 !important; | 
|---|
|  |  |  | height: 35px; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ::v-deep { | 
|---|
|  |  |  | .el-table .cell .el-button--text.el-button--small { | 
|---|
|  |  |  | padding: 4px 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ::v-deep .el-table .el-table__cell { | 
|---|
|  |  |  | padding: 6px 0 !important; | 
|---|
|  |  |  | height: 35px; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .overSpread1 { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | position: fixed; | 
|---|
|  |  |  | top: 0; | 
|---|
|  |  |  | left: 0; | 
|---|
|  |  |  | background: rgba(0, 0, 0, 0); | 
|---|
|  |  |  | z-index: 10; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .styleBtn { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | width: 30px; | 
|---|
|  |  |  | height: 36px; | 
|---|
|  |  |  | // line-height: 26px; | 
|---|
|  |  |  | // background: #06c062; | 
|---|
|  |  |  | top: 0; | 
|---|
|  |  |  | right: -6px; | 
|---|
|  |  |  | z-index: 11; | 
|---|
|  |  |  | .label { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | top: 6px; | 
|---|
|  |  |  | font-size: 20px; | 
|---|
|  |  |  | // line-height: 5px; | 
|---|
|  |  |  | cursor: pointer; | 
|---|
|  |  |  | color: #000; | 
|---|
|  |  |  | transform: rotate(-90deg); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .checkbox-group { | 
|---|
|  |  |  | width: 160px; | 
|---|
|  |  |  | height: 300px; | 
|---|
|  |  |  | overflow: auto; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | line-height: 25px; | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | border-radius: 16px; | 
|---|
|  |  |  | padding: 12px; | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | right: 0; | 
|---|
|  |  |  | top: 30px; | 
|---|
|  |  |  | z-index: 99; | 
|---|
|  |  |  | box-shadow: 0 0 2px 2px #f8f8f8; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|