调解系统PC端服务

departmentMediator.vue 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <template>
  2. <div>
  3. <el-dialog title="部门长确认调解员" :visible="departmentVisable" v-if="departmentVisable" @close="cancel" center
  4. :distroy-on-close="true">
  5. <div style="margin-bottom: 20px;">
  6. <el-radio-group v-model="confirmFlag">
  7. <el-radio :label="1">同意</el-radio>
  8. <el-radio :label="2">拒绝</el-radio>
  9. </el-radio-group>
  10. </div>
  11. <div>
  12. <div>
  13. <div style="margin-bottom: 20px;">调解员</div>
  14. </div>
  15. <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%"
  16. @selection-change="handleSelectionChange">
  17. <el-table-column type="selection" width="55" v-if="!confirmShow">
  18. </el-table-column>
  19. <el-table-column prop="mediatorName" label="调解员名称">
  20. </el-table-column>
  21. <el-table-column prop="specialty" label="专业">
  22. </el-table-column>
  23. <el-table-column prop="todoAmount" label="待办数量">
  24. </el-table-column>
  25. <el-table-column prop="completeAmount" label="已办数量">
  26. </el-table-column>
  27. </el-table>
  28. <!-- <div>
  29. <div style="margin-top: 20px;margin-bottom: 20px;">时间</div>
  30. <el-form label-position="right" label-width="80px" :model="formLabelAlign" :disabled="confirmShow">
  31. <el-form-item label="时间">
  32. <el-date-picker v-model="formLabelAlign.time[0]" type="datetime" placeholder="选择日期时间">
  33. </el-date-picker>
  34. </el-form-item> -->
  35. <!-- 后期需要三个时间 -->
  36. <!-- <el-form-item label="时间2">
  37. <el-date-picker v-model="formLabelAlign.time[1]" type="datetime" placeholder="选择日期时间">
  38. </el-date-picker>
  39. </el-form-item>
  40. <el-form-item label="时间3">
  41. <el-date-picker v-model="formLabelAlign.time[2]" type="datetime" placeholder="选择日期时间">
  42. </el-date-picker>
  43. </el-form-item> -->
  44. <!-- </el-form>
  45. </div> -->
  46. </div>
  47. <div slot="footer" class="dialog-footer">
  48. <el-button @click="cancel" class="endbutton1"><span>取 消</span></el-button>
  49. <el-button @click="submitMediator" class="endbutton1"><span>确 认</span></el-button>
  50. </div>
  51. </el-dialog>
  52. </div>
  53. </template>
  54. <script>
  55. import { Message } from 'element-ui'
  56. import { listMediator, selectReservation, verifyMediator } from '@/api/caseManagement/caseManagement.js'
  57. import moment from "moment";
  58. export default {
  59. props: ["departmentVisable", "departmentData", "queryParams"],
  60. data() {
  61. return {
  62. tableData: [],
  63. multipleSelection: [],
  64. formLabelAlign: {
  65. time: []
  66. },
  67. formTimeArr: [],
  68. mediatorArr: [],
  69. confirmFlag: 1,
  70. confirmShow: true,
  71. };
  72. },
  73. watch: {
  74. departmentVisable(val) {
  75. if (val) {
  76. this.confirmFlag = 1;
  77. this.mediatorArr = [];
  78. this.formTimeArr = [];
  79. this.selectReservationFn({ id: this.departmentData.id })
  80. }
  81. },
  82. confirmFlag(val) {
  83. if (val == 1) {
  84. this.confirmShow = true;
  85. console.log(this.departmentData.id);
  86. this.selectReservationFn({ id: this.departmentData.id })
  87. } else {
  88. this.confirmShow = false;
  89. listMediator().then(res => {
  90. this.tableData = res.data;
  91. })
  92. }
  93. }
  94. },
  95. methods: {
  96. cancel() {
  97. this.$emit("cancelDepartment");
  98. },
  99. selectReservationFn(data) {
  100. selectReservation(data).then(res => {
  101. this.tableData = res.data.mediatorList;
  102. this.formLabelAlign.time[0] = res.data.herDates[0];
  103. })
  104. },
  105. /**核实调解员 */
  106. verifyMediatorFn(data) {
  107. verifyMediator(data).then(res => {
  108. this.$modal.msgSuccess("成功");
  109. this.$emit("cancelDepartment");
  110. this.$emit('getList', this.queryParams);
  111. })
  112. },
  113. /**提交选择结果*/
  114. async submitMediator() {
  115. if (this.confirmFlag == 1) {
  116. let userArr = [];
  117. this.tableData.forEach(item => {
  118. userArr.push({
  119. userId: item.mediatorId,
  120. userName: item.mediatorName
  121. })
  122. })
  123. this.verifyMediatorFn({
  124. id: this.departmentData.id,
  125. caseFlowId: this.departmentData.caseFlowId,
  126. userList: userArr,
  127. // herDates: this.formLabelAlign.time
  128. })
  129. } else {
  130. if (this.multipleSelection.length > 1) {
  131. Message.error('最多选择一名调解员');
  132. return
  133. } else if (this.multipleSelection.length < 1) {
  134. Message.error('至少选择一名调解员');
  135. return
  136. }
  137. if (this.formLabelAlign.time.length < 1) {
  138. Message.error('至少选择一个时间');
  139. return
  140. }
  141. this.formLabelAlign.time.forEach(item => {
  142. item = moment(
  143. item
  144. ).format("YYYY-MM-DD HH:mm:ss");
  145. this.formTimeArr.push(item)
  146. })
  147. this.multipleSelection.forEach(item => {
  148. this.mediatorArr.push({
  149. userId: item.mediatorId,
  150. userName: item.mediatorName
  151. })
  152. })
  153. this.verifyMediatorFn({
  154. id: this.departmentData.id,
  155. caseFlowId: this.departmentData.caseFlowId,
  156. userList: this.mediatorArr,
  157. // herDates: this.formLabelAlign.time
  158. })
  159. }
  160. },
  161. handleSelectionChange(val) {
  162. this.multipleSelection = val;
  163. }
  164. },
  165. };
  166. </script>
  167. <style lang="scss" scoped>
  168. .steps {
  169. display: flex;
  170. flex-wrap: wrap;
  171. }
  172. ::v-deep .el-step {
  173. // width: 150px;
  174. flex-basis: 25% !important;
  175. margin-right: 20px;
  176. margin-bottom: 20px;
  177. }
  178. ::v-deep .el-dialog__body {
  179. height: 500px !important;
  180. overflow: auto !important;
  181. }
  182. ::v-deep .el-dialog {
  183. width: 800px;
  184. background: #ffffff;
  185. border-radius: 20px;
  186. }
  187. .timeTitle {
  188. width: 1000%;
  189. text-align: center;
  190. }
  191. </style>