fmInfo.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <u--form
  3. class="main-fm-info"
  4. labelWidth="auto"
  5. labelPosition="left"
  6. >
  7. <!--不可新增fmItem-->
  8. <view class="def-box">
  9. <u-form-item
  10. :key="item.id"
  11. v-for="item in defList"
  12. :label="item.name"
  13. borderBottom
  14. :labelPosition="labelPosition(item)"
  15. >
  16. <text v-if="showTxt(item)">
  17. {{
  18. fmData[item.valueKey] || fmData[item.valueKey] === 0
  19. ? fmData[item.valueKey]
  20. : '无'
  21. }}
  22. </text>
  23. <view
  24. v-else-if="item.type === typeKeys.textarea"
  25. class="w-100 mt-10"
  26. :class="{ 'text-field-bg': fmData[item.valueKey] }"
  27. >
  28. {{ fmData[item.valueKey] || '无' }}
  29. </view>
  30. <view
  31. v-else-if="item.type === typeKeys.checkbox"
  32. class="text-field-bg w-100"
  33. >
  34. {{ (fmData[item.valueKey] || []).join(',') }}
  35. </view>
  36. <view
  37. v-else-if="item.type === typeKeys.upload"
  38. class="w-100 mt-10"
  39. >
  40. <text
  41. v-if="
  42. !fmData[item.valueKey] ||
  43. fmData[item.valueKey].length === 0
  44. "
  45. >
  46. </text>
  47. <c-upload
  48. disabled
  49. :accept="item.accept"
  50. v-model="fmData[item.valueKey]"
  51. ></c-upload>
  52. </view>
  53. </u-form-item>
  54. </view>
  55. <!--可新增fmItem-->
  56. <view class="add-group"></view>
  57. </u--form>
  58. </template>
  59. <script>
  60. import { typeKeys } from '@/pages/approval/types';
  61. export default {
  62. name: 'fmInfo',
  63. props: {
  64. content: {
  65. type: Object,
  66. default: () => ({}),
  67. },
  68. },
  69. data() {
  70. return {
  71. typeKeys,
  72. };
  73. },
  74. computed: {
  75. defList() {
  76. // 不可新增的
  77. return this.content.defList || {};
  78. },
  79. addList() {
  80. // 可新增(如:出差的,行程1,行程2)
  81. return this.content.addList || {};
  82. },
  83. fmData() {
  84. // 回显表单数据
  85. return this.content.fmData || {};
  86. },
  87. },
  88. watch: {
  89. content() {
  90. console.log(this.content);
  91. },
  92. },
  93. methods: {
  94. showTxt(item) {
  95. const {
  96. select,
  97. text,
  98. date,
  99. datetimerange,
  100. datetime,
  101. radio,
  102. number,
  103. } = this.typeKeys;
  104. return [
  105. select,
  106. text,
  107. date,
  108. datetimerange,
  109. datetime,
  110. radio,
  111. number,
  112. ].includes(item.type);
  113. },
  114. labelPosition(item) {
  115. const { textarea, upload, checkbox } = this.typeKeys;
  116. return [textarea, upload, checkbox].includes(item.type)
  117. ? 'top'
  118. : 'left';
  119. },
  120. },
  121. };
  122. </script>
  123. <style scoped lang="scss">
  124. .main-fm-info {
  125. margin-top: 20rpx;
  126. .def-box {
  127. background-color: #fff;
  128. padding: 0 20rpx;
  129. border-radius: 6px;
  130. }
  131. .add-group {
  132. background-color: #fff;
  133. padding: 20 rpx;
  134. border-radius: 6px;
  135. margin-top: 20 rpx;
  136. }
  137. /deep/ .u-form-item__body {
  138. .u-form-item__body__left__content__label {
  139. font-size: 12px;
  140. }
  141. .u-form-item__body__right__content__slot {
  142. font-size: 12px;
  143. display: flex;
  144. justify-content: flex-end;
  145. color: #8c93a3;
  146. .text-field-bg {
  147. background-color: #f8f8f8;
  148. border-radius: 3px;
  149. padding: 20rpx;
  150. }
  151. }
  152. }
  153. }
  154. </style>