examine.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. <template>
  2. <!-- 审核任务弹窗 -->
  3. <div>
  4. <el-dialog :title="title" :visible.sync="showTask" width="500px" @close="handleCloseTask" :append-to-body="true"
  5. :close-on-click-modal="false">
  6. <el-form :model="form" :rules="TaskRules" ref="form" label-width="120px">
  7. <el-form-item label="任务名称:" prop="name">
  8. <el-input v-model="form.name" type="text" placeholder="请输入任务名称" />
  9. </el-form-item>
  10. <el-form-item v-if="isShow" :label="handlerLabel + ':'" prop="handlerName">
  11. <el-autocomplete v-model="form.handlerName" value-key="name" v-SelectLazyLoading="personnelLoad"
  12. :fetch-suggestions="querySearchPersonnel" :placeholder="handPlaceholder" :trigger-on-focus="false"
  13. @select="handleSelectPersonnel" @blur="handleBlur(form.handlerName)" style="width: 100%;"></el-autocomplete>
  14. </el-form-item>
  15. <el-form-item label="截止日期:" prop="deadLineTime">
  16. <el-date-picker style="width:100%" v-model="form.deadLineTime" value-format="yyyy-MM-dd HH:mm:ss"
  17. type="datetime" placeholder="选择日期">
  18. </el-date-picker>
  19. </el-form-item>
  20. <el-form-item label="备注:" prop="description">
  21. <el-input v-model="form.description" type="textarea" placeholder="输入备注" />
  22. </el-form-item>
  23. </el-form>
  24. <span slot="footer" class="dialog-footer">
  25. <el-button @click="handleCloseTask">取 消</el-button>
  26. <el-button type="primary" @click="submitTask">确 定</el-button>
  27. </span>
  28. </el-dialog>
  29. </div>
  30. </template>
  31. <script>
  32. export default {
  33. props: {
  34. title: {
  35. type: String,
  36. default:'添加审核任务'
  37. },
  38. isShow:{
  39. type: Boolean,
  40. default:true,
  41. },
  42. handlerLabel: {
  43. type: String,
  44. default:'审核人'
  45. },
  46. handPlaceholder: {
  47. type: String,
  48. default:'请输入审核人(外部审核人请直接输入邮箱)'
  49. },
  50. },
  51. data() {
  52. const isTime = (rule, value, callback) => {
  53. if (this.isEndTime) {
  54. this.isEndTimes = Date.parse(new Date)
  55. }
  56. let b = Date.parse(value)
  57. if (value) {
  58. if (b < this.isEndTimes) {
  59. callback(new Error('禁止选择现在及以前时间,请重新选择'))
  60. } else {
  61. callback()
  62. }
  63. } else {
  64. callback(new Error('请选择时间'))
  65. }
  66. }
  67. return {
  68. isEndTime: true,
  69. isEndTimes: null,
  70. // 审核任务表单数据
  71. form: {},
  72. showTask: false,
  73. // 任务表单校验
  74. TaskRules: {
  75. name: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
  76. handlerName: [{ required: true, message: '请选择审核人', trigger: 'change' },],
  77. deadLineTime: [{ required: true, validator: isTime, trigger: 'change' }],
  78. },
  79. //人员列表懒加载
  80. personnelList: {
  81. queryParams: {
  82. current: 1,
  83. size: 10
  84. },
  85. loading: false,
  86. name: '',
  87. data: [],
  88. },
  89. }
  90. },
  91. computed: {},
  92. mounted() {
  93. },
  94. methods: {
  95. open(name) {
  96. if (name) {
  97. this.form.name = `${name}-审核任务`
  98. }
  99. // 任务类型
  100. this.showTask = true
  101. },
  102. // 确定
  103. submitTask() {
  104. this.isEndTime = false
  105. this.$refs.form.validate((valid) => {
  106. if (valid) {
  107. /**类型
  108. * 0标引任务
  109. * 1项目开卷审核任务
  110. * 2检索条件任务
  111. * 3对比任务
  112. * 4协同任务
  113. * 5任务审核任务
  114. * 6文件分配任务审核
  115. * 7文件列表审核
  116. */
  117. if (this.isShow) {
  118. if (this.form.handlerName.includes('@')) {//是邮箱为1
  119. this.form.handlerType = 1
  120. } else {//是id为0
  121. this.form.handlerType = 0
  122. }
  123. }
  124. this.$emit('save',this.form)
  125. }
  126. })
  127. },
  128. // 取消
  129. handleCloseTask() {
  130. this.$refs.form.resetFields()
  131. this.form = {}
  132. this.showTask = false
  133. this.isEndTime = true
  134. },
  135. /**
  136. * 人员
  137. */
  138. // 懒加载人员方法
  139. personnelLoad() {
  140. if (this.personnelList.queryParams.current * this.personnelList.queryParams.size >= this.personnelList.queryParams.total) {
  141. return false
  142. }
  143. this.personnelList.queryParams.current++
  144. this.questionPersonnel()
  145. },
  146. // 查询人员
  147. async questionPersonnel() {
  148. let params = {
  149. ...this.personnelList.queryParams,
  150. name:this.personnelList.name
  151. }
  152. await this.$api.getPermissionPersonnel(params).then(res => {
  153. if (res.code == 200) {
  154. this.personnelList.data.push(...res.data)
  155. this.personnelList.queryParams.total = res.pageColumn.total
  156. this.personnelList.cb(this.personnelList.data);
  157. }
  158. })
  159. },
  160. //获取下拉建议人员数据
  161. async querySearchPersonnel(queryString, cb) {
  162. this.personnelList.queryParams.current = 1
  163. this.personnelList.name = queryString
  164. this.personnelList.data = []
  165. this.personnelList.cb = cb
  166. await this.questionPersonnel()
  167. },
  168. // 人员输入框失焦
  169. handleBlur(val) {
  170. if (this.form.handlerName.includes('@')) {
  171. this.form.handler = val
  172. }
  173. },
  174. // 人员输入框选择
  175. handleSelectPersonnel(val) {
  176. this.form.handler=val.id
  177. },
  178. },
  179. }
  180. </script>
  181. <style lang="scss" scoped></style>