problemHandleItem.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <template>
  2. <view class="problemHandleItem">
  3. <!-- <view class="font-md text-dark font-weight">问题处理</view>-->
  4. <u--form labelPosition="left" :model="problemHandleData" labelWidth="80">
  5. <u-form-item label="问题处理:" required prop="dealResult">
  6. <u-radio-group v-model="problemHandleData.dealResult" placement="column" @change="radioChange">
  7. <!-- <u-radio label="退回修改" name="2" :disabled="onlyFlag" class="mb-2"></u-radio>-->
  8. <u-radio label="办结" name="3" :disabled="onlyFlag" class="mb-2"></u-radio>
  9. <u-radio label="反馈大走访活动办"
  10. v-if="typeName == 'question' && (userInfo.enterpriseAreaFlag || userInfo.enterpriseCadreFlag)" name="4"
  11. :disabled="onlyFlag"></u-radio>
  12. <u-radio label="正在办理"
  13. v-if="typeName == 'question' && (userInfo.enterpriseAreaFlag || userInfo.enterpriseCadreFlag || userInfo.assignedDeptFlag)" name="10"
  14. :disabled="onlyFlag" ></u-radio>
  15. <u-radio label="难以化解"
  16. v-if="typeName == 'question' && (userInfo.enterpriseAreaFlag || userInfo.enterpriseCadreFlag) || userInfo.assignedDeptFlag" name="11"
  17. :disabled="onlyFlag"></u-radio>
  18. <u-radio label="持续跟踪"
  19. v-if="typeName == 'question' && (userInfo.enterpriseAreaFlag || userInfo.enterpriseCadreFlag) || userInfo.assignedDeptFlag" name="12"
  20. :disabled="onlyFlag"></u-radio>
  21. <u-radio label="提请会办"
  22. v-if="typeName == 'question' && (userInfo.enterpriseAreaFlag || userInfo.enterpriseCadreFlag) || userInfo.assignedDeptFlag" name="13"
  23. :disabled="onlyFlag"></u-radio>
  24. <u-radio label="交办" v-if="typeName == 'question' && userInfo.ydGxjLeaderFlag" name="5" :disabled="onlyFlag"
  25. class="mt-2">
  26. </u-radio>
  27. </u-radio-group>
  28. </u-form-item>
  29. <view class="error-tip" v-if="!problemHandleData.dealResult && errorTip">
  30. 请选择处理结果
  31. </view>
  32. <u-form-item label="交办单位:" required prop="assignedDeptName" v-if="problemHandleData.dealResult == '5'"
  33. @click="unitDataTap">
  34. <u--input v-model="problemHandleData.assignedDeptName" readonly :border="onlyFlag ? 'none' : 'surround'"
  35. :placeholder="!onlyFlag ? '请选择交办单位' : ''">
  36. </u--input>
  37. </u-form-item>
  38. <view class="error-tip"
  39. v-if="problemHandleData.dealResult == '5' && !problemHandleData.assignedDeptName && errorTip">
  40. 请选择交办单位
  41. </view>
  42. <u-form-item label="处理建议:" required prop="dealSuggestion">
  43. <u--textarea v-model="problemHandleData.dealSuggestion" :disabled="onlyFlag"
  44. :border="onlyFlag ? 'none' : 'surround'" :placeholder="!onlyFlag ? '请填写处理建议' : ''">
  45. </u--textarea>
  46. </u-form-item>
  47. <view class="error-tip" v-if="!problemHandleData.dealSuggestion && errorTip">
  48. 请填写处理建议
  49. </view>
  50. </u--form>
  51. <!-- 交办单位 -->
  52. <u-picker :show="showUnit" :columns="unitColumn" keyName="fullName" title="请选择交办单位" @cancel="showMonth = false"
  53. @confirm="unitSelect">
  54. </u-picker>
  55. </view>
  56. </template>
  57. <script>
  58. export default {
  59. props: {
  60. problemType: {
  61. type: String,
  62. default: ''
  63. },
  64. problemHandleData: {
  65. type: Object,
  66. default: () => {}
  67. },
  68. userInfo: {
  69. type: Object,
  70. default: () => {}
  71. },
  72. readOnlyFlag: {
  73. type: Boolean,
  74. default: false
  75. },
  76. showErrorTip: {
  77. type: Boolean,
  78. default: false
  79. },
  80. column: {
  81. type: Array,
  82. default: () => []
  83. }
  84. },
  85. data() {
  86. return {
  87. showUnit: false
  88. }
  89. },
  90. computed: {
  91. onlyFlag() {
  92. return this.readOnlyFlag
  93. },
  94. errorTip() {
  95. return this.showErrorTip
  96. },
  97. typeName() {
  98. return this.problemType
  99. },
  100. unitColumn() {
  101. return this.column
  102. }
  103. },
  104. methods: {
  105. // 处理结果点击确认
  106. radioChange() {
  107. if (this.problemHandleData.dealResult != '5') {
  108. this.problemHandleData.assignedDeptName = ''
  109. this.problemHandleData.assignedDept = ''
  110. }
  111. },
  112. // 交办单位--->点击
  113. unitDataTap() {
  114. if (this.readOnlyFlag) return
  115. this.showUnit = true;
  116. uni.hideKeyboard()
  117. },
  118. // 交办单位选择确认操作
  119. unitSelect({
  120. value
  121. }) {
  122. this.problemHandleData.assignedDeptName = value[0].fullName
  123. this.problemHandleData.assignedDept = value[0].enCode
  124. this.showUnit = false
  125. },
  126. // 判断是否有必填项为填写
  127. isRequired() {
  128. const query = uni.createSelectorQuery().in(this);
  129. let dataLength = 0
  130. query.selectAll('.error-tip').boundingClientRect(data => {
  131. dataLength = data.length
  132. if (dataLength) {
  133. uni.$u.toast('请完善必填项内容')
  134. }
  135. }).exec();
  136. return dataLength
  137. }
  138. }
  139. }
  140. </script>
  141. <style lang="scss" scoped>
  142. .error-tip {
  143. font-size: 12px;
  144. color: #f56c6c;
  145. margin-left: 160rpx;
  146. }
  147. </style>