lj-tag-double.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. <!--双标签组件:标签属性+标签内容-->
  2. <!--slots-->
  3. <!--default-->
  4. <template>
  5. <div class="lj-tag" :class="setTagCls" @click.stop="handleClickTag">
  6. <span class="tag-value">
  7. <slot name="default">
  8. {{value}}
  9. </slot>
  10. </span>
  11. <template v-if="doubleValue">
  12. <span class="tag-double-value">
  13. <slot name="double">
  14. {{ doubleValue }}
  15. </slot>
  16. </span>
  17. </template>
  18. </div>
  19. </template>
  20. <script>
  21. export default {
  22. name: "lj-tag",
  23. props: {
  24. // 标签类型=> default: 默认;
  25. type: {
  26. type: String,
  27. default: "default"
  28. },
  29. // 标签文本
  30. value: {
  31. type: String/Number,
  32. default: ""
  33. },
  34. // 标签副文本,值
  35. doubleValue: {
  36. type: String/Number,
  37. default: ""
  38. },
  39. // 是否为圆角
  40. round: {
  41. type: Boolean,
  42. default: false
  43. },
  44. // 是否为空心样式
  45. plain: {
  46. type: Boolean,
  47. default: false
  48. },
  49. // 是否为浅色模式
  50. light: {
  51. type: Boolean,
  52. default: false
  53. },
  54. // 标签尺寸=> large 16px 28px; medium 14px 24px; small:12px 16px; mini:10px 14px;
  55. size: {
  56. type: String,
  57. default: "small"
  58. },
  59. // 双标签,值颜色
  60. valueColor: {
  61. type: String,
  62. default: ""
  63. },
  64. // 文本颜色
  65. textColor: {
  66. type: String,
  67. default: ""
  68. },
  69. // 标签颜色
  70. color: {
  71. type: String,
  72. default: ""
  73. }
  74. },
  75. computed: {
  76. setTagCls() {
  77. let cls = ""
  78. cls += " lj-tab-" + this.type;
  79. if (this.round) {
  80. cls += " lj-tag-round"
  81. }
  82. if (this.light) {
  83. cls += " lj-tag-light"
  84. }
  85. if (this.plain) {
  86. cls += " lj-tag-plain"
  87. }
  88. if (this.doubleValue) {
  89. cls += " lj-tag-double"
  90. }
  91. cls += " lj-tab-" + this.size
  92. return cls
  93. }
  94. },
  95. methods: {
  96. handleClickTag() {
  97. this.$emit('tagclick')
  98. }
  99. }
  100. }
  101. </script>
  102. <style lang="less" scoped>
  103. .lj-tag {
  104. display: inline-flex;
  105. border: 1px solid transparent;
  106. box-sizing: content-box;
  107. border-radius: 2px;
  108. .tag-value {
  109. flex-shrink: 0;
  110. }
  111. .tag-double-value {
  112. word-break:break-all;
  113. border-radius: 2px;
  114. background-color: #fff;
  115. }
  116. }
  117. .lj-tag-plain {
  118. background-color: unset!important;
  119. }
  120. .lj-tab-default {
  121. background-color: @light-system-gray6;
  122. border-color: @light-system-gray6;
  123. .tag-value, .tag-double-value {
  124. color: @light-label-secondary;
  125. }
  126. }
  127. .lj-tab-primary {
  128. background-color: @light-system-blue;
  129. border-color: @light-system-blue;
  130. // border-color: @musePrimary;
  131. .tag-value, .tag-double-value {
  132. color: @light-system-blue;
  133. }
  134. &:not(.lj-tag-plain) {
  135. .tag-value, .tag-double-value {
  136. color: @light-barkground-elevated-primary;
  137. }
  138. }
  139. &.lj-tag-light {
  140. background-color: rgba(33, 150, 243, 0.2);
  141. border-color: rgba(33, 150, 243, 0.2);
  142. .tag-value, .tag-double-value {
  143. color: @light-system-blue;
  144. }
  145. }
  146. &.lj-tag-double {
  147. background-color: @light-system-blue;
  148. border-color: @light-system-blue;
  149. .tag-value {
  150. // color: @musePrimary;
  151. // color: @light-system-blue;
  152. color: @light-barkground-elevated-primary;
  153. }
  154. .tag-double-value {
  155. border-radius: 2px;
  156. background-color: #fff;
  157. color: @light-system-blue;
  158. }
  159. }
  160. }
  161. .lj-tab-success {
  162. background-color: @light-system-green2;
  163. border-color: @light-system-green2;
  164. &.lj-tag-light {
  165. background-color: rgba(52, 199, 89, 0.2);
  166. border-color: rgba(52, 199, 89, 0.2);
  167. }
  168. .tag-value, .tag-double-value {
  169. color: @light-system-green2;
  170. // color: #fff;
  171. }
  172. &:not(.lj-tag-plain) {
  173. .tag-value, .tag-double-value {
  174. color: @light-barkground-elevated-primary;
  175. }
  176. }
  177. &.lj-tag-light {
  178. background-color: rgba(0, 122, 255, 0.18);
  179. border-color: transparent;
  180. .tag-value {
  181. // color: @musePrimary;
  182. color: @light-system-green2;
  183. // color: @light-barkground-elevated-primary;
  184. }
  185. }
  186. &.lj-tag-double {
  187. background-color: @light-system-green2;
  188. border-color: @light-system-green2;
  189. .tag-value {
  190. // color: @musePrimary;
  191. // color: @light-system-green2;
  192. color: @light-barkground-elevated-primary;
  193. }
  194. .tag-double-value {
  195. border-radius: 2px;
  196. background-color: #fff;
  197. color: @light-system-green2;
  198. }
  199. }
  200. }
  201. .lj-tab-danger {
  202. background-color: @light-system-red;
  203. border-color: @light-system-red;
  204. .tag-value, .tag-double-value {
  205. color: @light-system-red;
  206. }
  207. &:not(.lj-tag-plain) {
  208. .tag-value, .tag-double-value {
  209. color: @light-barkground-elevated-primary;
  210. }
  211. }
  212. &.lj-tag-light {
  213. background-color: rgb(255, 59, 48, 0.2)!important;
  214. border-color: rgb(255, 59, 48, 0.2)!important;
  215. .tag-value {
  216. // color: @musePrimary;
  217. // color: @light-system-red;
  218. color: @light-barkground-elevated-primary;
  219. }
  220. .tag-double-value {
  221. border-radius: 2px;
  222. background-color: #fff;
  223. color: @light-system-red;
  224. }
  225. }
  226. &.lj-tag-double {
  227. background-color: rgb(255, 59, 48, 0.18);
  228. border-color: transparent;
  229. .tag-value {
  230. // color: @musePrimary;
  231. color: @light-barkground-elevated-primary;
  232. // color: @light-barkground-elevated-primary;
  233. }
  234. .tag-double-value {
  235. border-radius: 2px;
  236. background-color: #fff;
  237. color: @light-system-red;
  238. }
  239. }
  240. }
  241. .lj-tab-warning {
  242. background-color: @light-system-orange;
  243. border-color: @light-system-orange;
  244. &.lj-tag-light {
  245. background-color: rgb(255, 149, 0, 0.2);
  246. border-color: rgba(255, 149, 0, 0.2);
  247. }
  248. // border-color: @musePrimary;
  249. .tag-value, .tag-double-value {
  250. color: @light-system-orange;
  251. }
  252. &:not(.lj-tag-plain) {
  253. .tag-value, .tag-double-value {
  254. color: @light-barkground-elevated-primary;
  255. }
  256. }
  257. &.lj-tag-double {
  258. background-color: @light-system-orange;
  259. border-color: @light-system-orange;
  260. .tag-value {
  261. // color: @musePrimary;
  262. // color: @light-system-blue;
  263. color: @light-barkground-elevated-primary;
  264. }
  265. .tag-double-value {
  266. border-radius: 2px;
  267. background-color: #fff;
  268. color: @light-system-orange;
  269. }
  270. }
  271. }
  272. .lj-tab-mini {
  273. font-size: 10px;
  274. line-height: 14px;
  275. .tag-value, .tag-double-value {
  276. padding: 0px 2px;
  277. }
  278. }
  279. .lj-tab-small {
  280. font-size: 12px;
  281. line-height: 16px;
  282. .tag-value, .tag-double-value {
  283. padding: 1px 4px;
  284. }
  285. &.lj-tag-round {
  286. .tag-value, .tag-double-value {
  287. padding: 1px 6px;
  288. }
  289. }
  290. }
  291. .lj-tab-medium {
  292. font-size: 13px;
  293. line-height: 24px;
  294. .tag-value, .tag-double-value {
  295. padding: 0px 8px;
  296. }
  297. }
  298. .lj-tab-large {
  299. font-size: 16px;
  300. line-height: 28px;
  301. .tag-value, .tag-double-value {
  302. padding: 0px 12px;
  303. }
  304. }
  305. .lj-tag-round {
  306. border-radius: 100px;
  307. }
  308. .lj-tab-purple {
  309. background-color: @light-system-indigo;
  310. border-color: @light-system-indigo;
  311. &.lj-tag-light {
  312. background-color: rgb(255, 149, 0, 0.2);
  313. border-color: rgba(255, 149, 0, 0.2);
  314. }
  315. // border-color: @musePrimary;
  316. .tag-value, .tag-double-value {
  317. color: @light-system-indigo;
  318. }
  319. &:not(.lj-tag-plain) {
  320. .tag-value, .tag-double-value {
  321. color: @light-barkground-elevated-primary;
  322. }
  323. }
  324. &.lj-tag-double {
  325. background-color: @light-system-indigo;
  326. border-color: @light-system-indigo;
  327. .tag-value {
  328. // color: @musePrimary;
  329. // color: @light-system-blue;
  330. color: @light-barkground-elevated-primary;
  331. }
  332. .tag-double-value {
  333. border-radius: 2px;
  334. background-color: #fff;
  335. color: @light-system-indigo;
  336. }
  337. }
  338. }
  339. .lj-tab-black {
  340. background-color: @light-system-gray1;
  341. border-color: @light-system-gray1;
  342. &.lj-tag-light {
  343. background-color: rgb(255, 149, 0, 0.2);
  344. border-color: rgba(255, 149, 0, 0.2);
  345. }
  346. // border-color: @musePrimary;
  347. .tag-value, .tag-double-value {
  348. color: @light-system-gray1;
  349. }
  350. &:not(.lj-tag-plain) {
  351. .tag-value, .tag-double-value {
  352. color: @light-barkground-elevated-primary;
  353. }
  354. }
  355. &.lj-tag-double {
  356. background-color: @light-system-gray1;
  357. border-color: @light-system-gray1;
  358. .tag-value {
  359. // color: @musePrimary;
  360. // color: @light-system-blue;
  361. color: @light-barkground-elevated-primary;
  362. }
  363. .tag-double-value {
  364. border-radius: 2px;
  365. background-color: #fff;
  366. color: @light-system-gray1;
  367. }
  368. }
  369. }
  370. </style>