华西海圻ELN前端工程
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

522 lines
27 KiB

3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
  1. <template>
  2. <div>
  3. <LineLabel v-if="label" :label="label" />
  4. <div v-for="(item, index) in formConfig" :key="index">
  5. <template v-if="item.type === 'cardItem'">
  6. <div class="grid-container">
  7. <div v-for="(sItem, key) in item.config" class="form-item"
  8. :class="sItem.span == 1 ? 'full-row' : ''" :key="key">
  9. <template v-if="sItem.type === 'input'">
  10. <div class="form-title">{{ $t(sItem.label) }}</div>
  11. <HandleFormItem :field-item-label="fieldItemLabel" @blur="onBlur(key, $event)" :item="sItem"
  12. v-model="formFields[key]" :field-key="prefixKey + '_' + key" @copy="onCopy(sItem, key)"
  13. :error="errors[key]" @update:error="errors[key] = false"
  14. :orange-bg="orangeBgFields[key]" />
  15. </template>
  16. <template v-else-if="sItem.type === 'inputNumber'">
  17. <div class="form-title">{{ $t(sItem.label) }}</div>
  18. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  19. type="inputNumber" @blur="onBlur(key, $event)" :item="sItem"
  20. @input="onInputNumberChange(key, $event)" v-model="formFields[key]"
  21. @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
  22. :orange-bg="orangeBgFields[key]" />
  23. </template>
  24. </div>
  25. </div>
  26. </template>
  27. <template v-else-if="item.type === 'conditionItem'">
  28. <div class="form-item ">
  29. <div class="form-title fs-16" v-if="item.label">{{ $t(item.label) }}</div>
  30. <div v-for="(sItem, key) in item.config" class="c-Item grid-container">
  31. <div class="p-r-20">
  32. <div class="form-title">{{ $t(sItem.label) }}</div>
  33. <div class="flex flex1">
  34. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  35. type="select" :item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
  36. @change="(e, type) => onSelectChange(key, e, type)" :error="errors[key]"
  37. @update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
  38. </div>
  39. </div>
  40. <div class="p-l-20">
  41. <div v-show="isShowOther(formFields[key])">
  42. <div class="form-title">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
  43. $t("template.common.other") }}</div>
  44. <div class="flex flex1">
  45. <HandleFormItem :field-item-label="fieldItemLabel"
  46. :field-key="prefixKey + '_' + sItem.otherCode" @blur="onBlur(key, $event)"
  47. :item="getOtherItem(sItem)" v-model="formFields[sItem.otherCode]"
  48. @copy="onCopy(sItem, key)" :error="errors[sItem.otherCode]"
  49. @update:error="errors[sItem.otherCode] = false" />
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. </template>
  56. <template v-else-if="item.type === 'attachment'">
  57. <div class="form-item ">
  58. <div class="form-title fs-16" v-if="item.label">{{ $t(item.label) }}</div>
  59. <div v-for="(sItem, key) in item.config" class="c-Item grid-container">
  60. <div class="p-r-20">
  61. <div class="form-title">{{ $t(sItem.label) }}</div>
  62. <div class="flex flex1">
  63. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  64. type="attachment" :item="sItem" :value="formFields[key]" @copy="onCopy(sItem, key)"
  65. @change="(e) => onAttachmentChange(key, e)" :error="errors[key]"
  66. @update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </template>
  72. <template v-else-if="item.type === 'cellItem'">
  73. <div class="form-item ">
  74. <div class="form-title fs-16" v-if="item.label">{{ $t(item.label) }}</div>
  75. <div class="grid-container gap2">
  76. <div v-for="(sItem, key) in item.config" class="c-Item" :class="getSpanClass(sItem)" :key="key">
  77. <div class="form-title" v-if="sItem.label">{{ $t(sItem.label) }}</div>
  78. <div v-if="sItem.type === 'dateTime'" class="flex1">
  79. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  80. type="dateTime" :item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
  81. :error="errors[key]" @update:error="errors[key] = false"
  82. :orange-bg="orangeBgFields[key]" />
  83. </div>
  84. <div v-else-if="sItem.type === 'select'">
  85. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  86. type="select" :item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
  87. @change="(e, type) => onSelectChange(key, e, type)" :error="errors[key]"
  88. @update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
  89. </div>
  90. <div v-else-if="sItem.type === 'input'" class="item-center">
  91. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  92. @blur="onBlur(key, $event)" :item="sItem" v-model="formFields[key]"
  93. @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
  94. :ref = "key"
  95. :orange-bg="orangeBgFields[key]" />
  96. <span v-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
  97. <HandleFormItem class="ml-10" v-else-if="sItem.subType === 'button'" type="button" :item="getButtonItem(sItem)"
  98. :value="formFields[sItem.subKey]"
  99. @clickButton="(e,val,data) => handleClickButton(e, sItem,val,data)" />
  100. </div>
  101. <div v-else-if="sItem.type === 'textarea'">
  102. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  103. @blur="onBlur(key, $event)" type="textarea" :item="sItem" v-model="formFields[key]"
  104. @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
  105. :orange-bg="orangeBgFields[key]" />
  106. </div>
  107. <div v-else-if="sItem.type === 'clickable'" class="flex1">
  108. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  109. type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]"
  110. @update:error="errors[key] = false" @resetRecord="resetRecord(key)" :item="sItem"
  111. :value="formFields[key]" />
  112. </div>
  113. <div v-else-if="sItem.type === 'checkboxList'" class="flex1">
  114. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  115. type="checkboxList" :item="sItem" :value="formFields[key]"
  116. @copy="onCopy(sItem, key)" @change="(e) => onAttachmentChange(key, e)"
  117. :error="errors[key]" @update:error="errors[key] = false"
  118. :orange-bg="orangeBgFields[key]" />
  119. </div>
  120. <div v-else-if="isRegent(sItem)" class="flex1">
  121. <HandleFormItem
  122. @beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, key)"
  123. :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key" :type="sItem.type"
  124. sourceFrom="baseInfoFormPackage" :error="errors[key]"
  125. @update:error="errors[key] = false"
  126. @onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, key, sItem)"
  127. :item="sItem" :value="formFields[key]" />
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </template>
  133. <template v-else-if="item.type === 'step'">
  134. <div class="grid-container gap2">
  135. <div v-for="(sItem, key) in item.config" class="c-Item flex item-center"
  136. :class="getSpanClass(sItem)" :key="key">
  137. <div class="step-form-title"
  138. :style="{ 'width': sItem.labelWidth ? sItem.labelWidth + 'px' : '150px' }" v-if="sItem.label">
  139. {{ $t(sItem.label) }}</div>
  140. <div v-if="sItem.type === 'dateTime'" class="flex1">
  141. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  142. type="dateTime" :item="sItem" v-model="formFields[key]" @copy="onCopy(sItem, key)"
  143. :error="errors[key]" @update:error="errors[key] = false"
  144. :orange-bg="orangeBgFields[key]" />
  145. </div>
  146. <div v-else-if="sItem.type === 'select'" class="flex flex1">
  147. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  148. type="select" :item="sItem" style="width: auto;flex:1" v-model="formFields[key]"
  149. @copy="onCopy(sItem, key)" @change="(e, type) => onSelectChange(key, e, type)"
  150. :error="errors[key]" @update:error="errors[key] = false"
  151. :orange-bg="orangeBgFields[key]" />
  152. <div v-show="isShowOther(formFields[key])" class="flex flex1">
  153. <div class="other-title">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
  154. $t("template.common.other") }}</div>
  155. <div class="flex">
  156. <HandleFormItem :field-item-label="fieldItemLabel"
  157. :field-key="prefixKey + '_' + sItem.otherCode" @blur="onBlur(key, $event)"
  158. :item="getOtherItem(sItem)" v-model="formFields[sItem.otherCode]"
  159. @copy="onCopy(sItem, key)" :error="errors[sItem.otherCode]"
  160. @update:error="errors[sItem.otherCode] = false"
  161. :orange-bg="orangeBgFields[sItem.otherCode]" />
  162. </div>
  163. </div>
  164. </div>
  165. <div v-else-if="sItem.type === 'input'" class="flex flex1">
  166. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  167. @blur="onBlur(key, $event)" class="flex1" :item="sItem" v-model="formFields[key]"
  168. @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
  169. :orange-bg="orangeBgFields[key]" />
  170. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  171. class="ml-10" v-if="sItem.subType === 'select'" type="select" :item="getSubItem(sItem)"
  172. v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
  173. @change="(e, type) => onSelectChange(sItem.subKey, e, type)" :error="errors[sItem.subKey]"
  174. @update:error="errors[sItem.subKey] = false"
  175. :orange-bg="orangeBgFields[sItem.subKey]" />
  176. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  177. class="ml-10" v-if="sItem.subType === 'input'" type="input" :item="getSubItem(sItem)"
  178. v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
  179. :error="errors[sItem.subKey]" @blur="onBlur(sItem.subKey, $event)"
  180. @update:error="errors[sItem.subKey] = false"
  181. :orange-bg="orangeBgFields[sItem.subKey]" />
  182. <div class="ml-10 item-span" v-else-if="sItem.subType === 'span'">{{
  183. formFields[sItem.subKey] }}</div>
  184. <span v-else-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
  185. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  186. class="ml-10" v-else-if="sItem.subType === 'clickable'" type="clickable"
  187. @clickable="handleClickable(sItem, sItem.subKey)" :item="getClickableItem(sItem)"
  188. :error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
  189. @resetRecord="resetRecord(sItem.subKey)" :value="formFields[sItem.subKey]" />
  190. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  191. class="ml-10" v-else-if="isRegent(sItem, 'subType')" :type="sItem.subType"
  192. :item="getRegentItem(sItem, 'subType')" sourceFrom="baseInfoFormPackage"
  193. @beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)"
  194. @onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)"
  195. :error="errors[sItem.subKey]" @update:error="errors[sItem.subKey] = false"
  196. :value="formFields[sItem.subKey]" />
  197. <div v-show="isShowOther(formFields[sItem.subKey])" class="flex flex1">
  198. <div class="other-title">{{ sItem.otherLabel ? $t(sItem.otherLabel) :
  199. $t("template.common.other") }}</div>
  200. <div class="flex flex1">
  201. <HandleFormItem :field-item-label="fieldItemLabel"
  202. :field-key="prefixKey + '_' + sItem.otherCode" @blur="onBlur(key, $event)"
  203. :item="getOtherItem(sItem)" v-model="formFields[sItem.otherCode]"
  204. @copy="onCopy(sItem, key)" :error="errors[sItem.otherCode]"
  205. @update:error="errors[sItem.otherCode] = false"
  206. :orange-bg="orangeBgFields[sItem.otherCode]" />
  207. </div>
  208. </div>
  209. <!-- <div class="clickable" :class="getFillType(sItem.subFillType)" v-else-if = "sItem.subType ==='clickable'" @click="handleClickable(sItem,$event)">
  210. <span v-if="formFields[sItem.subKey]">{{ formFields[sItem.subKey] }}</span>
  211. <span v-else class="default-placeholder-text">请选择</span>
  212. </div> -->
  213. </div>
  214. <div v-else-if="sItem.type === 'inputNumber'" class="flex flex1">
  215. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  216. type="inputNumber" @blur="onBlur(key, $event)" class="flex1" :item="sItem"
  217. @input="onInputNumberChange(key, $event)" :value="formFields[key]"
  218. @copy="onCopy(sItem, key)" :error="errors[key]" @update:error="errors[key] = false"
  219. :orange-bg="orangeBgFields[key]" />
  220. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  221. class="ml-10" v-if="sItem.subType === 'select'" type="select" :item="getSubItem(sItem)"
  222. v-model="formFields[sItem.subKey]" @copy="onCopy(sItem, key)"
  223. @change="(e, type) => onSelectChange(sItem.subKey, e, type)" :error="errors[sItem.subKey]"
  224. @update:error="errors[sItem.subKey] = false"
  225. :orange-bg="orangeBgFields[sItem.subKey]" />
  226. <div class="ml-10 item-span" v-else-if="sItem.subType === 'span'">{{
  227. formFields[sItem.subKey] }}</div>
  228. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  229. class="ml-10" v-else-if="sItem.subType === 'clickable'"
  230. @clickable="handleClickable(sItem, sItem.subKey)" :error="errors[sItem.subKey]"
  231. type="clickable" @update:error="errors[sItem.subKey] = false"
  232. @resetRecord="resetRecord(sItem.subKey)" :item="getClickableItem(sItem)"
  233. :value="formFields[sItem.subKey]" />
  234. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + sItem.subKey"
  235. class="ml-10" v-else-if="isRegent(sItem, 'subType')" sourceFrom="baseInfoFormPackage"
  236. :error="errors[sItem.subKey]" :type="sItem.subType"
  237. @beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, sItem.subKey)"
  238. @onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, sItem.subKey, sItem)"
  239. :item="getRegentItem(sItem, 'subType')" :value="formFields[sItem.subKey]" />
  240. </div>
  241. <div v-else-if="sItem.type === 'clickable'" class="flex flex1">
  242. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  243. type="clickable" @clickable="handleClickable(sItem, key)" :error="errors[key]"
  244. @update:error="errors[key] = false" @resetRecord="resetRecord(key)" :item="sItem"
  245. :value="formFields[key]" />
  246. </div>
  247. <div v-else-if="sItem.type === 'checkboxList'" class="flex flex1">
  248. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  249. type="checkboxList" :item="sItem" :value="formFields[key]" @copy="onCopy(sItem, key)"
  250. @change="(e) => onAttachmentChange(key, e)" :error="errors[key]"
  251. @update:error="errors[key] = false" :orange-bg="orangeBgFields[key]" />
  252. </div>
  253. <div v-else-if="isRegent(sItem)" class="flex item-center flex1">
  254. <HandleFormItem :field-item-label="fieldItemLabel" sourceFrom="baseInfoFormPackage"
  255. @beforeReagentSubmit="(data, callback) => onBeforeReagentSubmit(data, callback, key)"
  256. @onRegentSubmit="(data, inputValue) => onRegentSubmit(data, inputValue, key, sItem)"
  257. :field-key="prefixKey + '_' + key" :type="sItem.type" :error="errors[key]"
  258. @update:error="errors[key] = false" :item="getRegentItem(sItem)"
  259. :value="formFields[key]" />
  260. <span v-if="sItem.subType === 'text'" class="sub-text">{{ $t(sItem.subText) }}</span>
  261. </div>
  262. </div>
  263. </div>
  264. </template>
  265. <template v-else-if="item.type === 'checkboxList'">
  266. <div class="form-item ">
  267. <div class="form-title fs-16" v-if="item.label">{{ $t(item.label) }}</div>
  268. <div v-for="(sItem, key) in item.config" class="c-Item grid-container">
  269. <div class="p-r-20 item-center">
  270. <div class="form-title mr-20">{{ $t(sItem.label) }}</div>
  271. <div class="flex flex1">
  272. <HandleFormItem :field-item-label="fieldItemLabel" :field-key="prefixKey + '_' + key"
  273. type="checkboxList" :item="sItem" :value="formFields[key]"
  274. @copy="onCopy(sItem, key)" @change="(e) => onAttachmentChange(key, e)"
  275. :error="errors[key]" @update:error="errors[key] = false"
  276. :orange-bg="orangeBgFields[key]" />
  277. </div>
  278. </div>
  279. </div>
  280. </div>
  281. </template>
  282. </div>
  283. </div>
  284. </template>
  285. <script>
  286. import HandleFormItem from "./HandleFormItem.vue";
  287. import LineLabel from "./LineLabel.vue";
  288. import { isShowOther } from "@/utils/formPackageCommon.js";
  289. import { isRegent } from "@/utils/index.js";
  290. import formPackageMixins from '@/components/Template/mixins/formPackageMixins.js'
  291. export default {
  292. inject: ['templateFillType'],
  293. components: {
  294. HandleFormItem,
  295. LineLabel
  296. },
  297. mixins: [formPackageMixins],
  298. props: {
  299. label: {//当前表单的标题
  300. type: String,
  301. default: "",
  302. },
  303. formConfig: {
  304. type: Array,
  305. value: () => [],
  306. },
  307. formData: {
  308. type: Object,
  309. value: () => ({})
  310. },
  311. //主要标识当前表单属于哪个模块,用于传给后端
  312. fieldItemLabel: {
  313. type: String,
  314. default: "",
  315. },
  316. //循环组件的情况下需要用这个来区分字段
  317. prefixKey: {
  318. type: String,
  319. default: "",
  320. }
  321. },
  322. data() {
  323. return {
  324. formFields: {},//表单绑定字段
  325. allFieldsConfig: {},//包含config的所有字段,主要用于校验表单是否填写
  326. errors: {},//存储表单错误信息,用于标红提示
  327. orangeBgFields: {},// 存储需要橙色背景的字段
  328. oldFormFields: {},// 存储旧的表单数据,用于比较变化
  329. isShowOther,
  330. isRegent
  331. };
  332. },
  333. methods: {
  334. onBeforeReagentSubmit(data, callback, key) {
  335. this.$emit('beforeReagentSubmit', { selectData: data, callback, key, formFields: this.formFields })
  336. },
  337. // 点击按钮
  338. handleClickButton(e, item,val,data) {
  339. this.formFields[item.subKey] = val;
  340. this.$emit("clickButton", item,data)
  341. },
  342. // 获取按钮项
  343. getButtonItem(sItem) {
  344. return {
  345. ...sItem,
  346. key: sItem.subKey,
  347. fillType: sItem.subFillType || sItem.fillType
  348. }
  349. },
  350. }
  351. }
  352. </script>
  353. <style lang="scss">
  354. .grid-container {
  355. display: grid;
  356. grid-template-columns: repeat(2, 1fr);
  357. /* 默认2列 */
  358. gap: 0 20px;
  359. /* 防止网格容器被分割到不同页面 */
  360. page-break-inside: avoid;
  361. break-inside: avoid;
  362. }
  363. .gap2 {
  364. gap: 0 48px;
  365. }
  366. .w-100 {
  367. width: 100%;
  368. }
  369. .form-item {
  370. background: #fff;
  371. padding: 20px;
  372. border-radius: 8px;
  373. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
  374. margin-top: 20px;
  375. padding: 20px;
  376. border-radius: 5px 5px;
  377. page-break-inside: avoid;
  378. }
  379. /* 或者使用 span 语法 */
  380. .full-row {
  381. grid-column: span 2;
  382. }
  383. .three-row {
  384. grid-column: span 3;
  385. }
  386. .c-Item {
  387. // &:not(:last-child) {
  388. // margin-bottom: 16px;
  389. // }
  390. page-break-inside: avoid;
  391. padding: 8px 0px;
  392. }
  393. .eo {
  394. &:nth-child(even) {
  395. padding-left: 20px;
  396. }
  397. &:nth-child(odd) {
  398. padding-right: 20px;
  399. }
  400. }
  401. .default-placeholder-text {
  402. color: #C0C4CC;
  403. }
  404. .form-title {
  405. margin-bottom: 12px;
  406. font-size: 14px;
  407. font-weight: normal;
  408. color: #606266;
  409. }
  410. .step-form-title {
  411. font-size: 14px;
  412. font-weight: normal;
  413. color: #606266;
  414. width: 150px;
  415. text-align: right;
  416. padding-right: 10px;
  417. }
  418. .p-r-20 {
  419. padding-right: 20px;
  420. }
  421. .p-l-20 {
  422. padding-left: 20px;
  423. }
  424. .fs-16 {
  425. font-size: 0.96rem;
  426. font-weight: bold;
  427. color: #464647
  428. }
  429. .flex1 {
  430. flex: 1;
  431. }
  432. .flex {
  433. display: flex;
  434. }
  435. .other-title {
  436. width: 50px;
  437. text-align: right;
  438. margin: 0 10px;
  439. font-size: 14px;
  440. font-weight: normal;
  441. color: #606266;
  442. }
  443. .mr-24 {
  444. margin-right: 24px;
  445. }
  446. .sub-select {
  447. width: 100px;
  448. margin-left: 10px;
  449. }
  450. .orange-border {
  451. border-color: #f9c588;
  452. }
  453. .green-border {
  454. border-color: green;
  455. }
  456. .blue-border {
  457. border-color: #4ea2ff;
  458. }
  459. .ml-10 {
  460. margin-left: 10px;
  461. }
  462. .item-span {
  463. color: #606266;
  464. font-size: 14px;
  465. }
  466. .item-center {
  467. display: flex;
  468. align-items: center;
  469. }
  470. .ml-5 {
  471. margin-left: 5px;
  472. }
  473. .sub-text {
  474. color: #606266;
  475. font-size: 14px;
  476. margin-left: 5px;
  477. }
  478. .mr-20 {
  479. margin-right: 20px;
  480. }
  481. </style>