examine.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <!-- 审核任务弹窗 -->
  3. <div>
  4. <el-dialog title="添加审核任务" :visible.sync="showTask" width="500px" @close="handleCloseTask"
  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 label="审核人:" prop="handler">
  11. <el-select style="width:100%;" ref="select1" v-model="form.handler" clearable filterable remote
  12. :remote-method="remoteMethodPerson" v-SelectLazyLoading="lazyLoadingPerson">
  13. <el-option v-for="item in personnelList.data" :key="item.id" :label="item.name" :value="item.id"
  14. placeholder="请选择审核人"></el-option>
  15. </el-select>
  16. </el-form-item>
  17. <el-form-item label="截止日期:" prop="deadLineTime">
  18. <el-date-picker style="width:100%" v-model="form.deadLineTime" value-format="yyyy-MM-dd HH:mm:ss"
  19. type="datetime" placeholder="选择日期">
  20. </el-date-picker>
  21. </el-form-item>
  22. <el-form-item label="审核备注:" prop="description">
  23. <el-input v-model="form.description" type="textarea" placeholder="输入备注" />
  24. </el-form-item>
  25. </el-form>
  26. <span slot="footer" class="dialog-footer">
  27. <el-button @click="handleCloseTask">取 消</el-button>
  28. <el-button type="primary" @click="submitTask">确 定</el-button>
  29. </span>
  30. </el-dialog>
  31. </div>
  32. </template>
  33. <script>
  34. export default {
  35. data() {
  36. const isTime = (rule, value, callback) => {
  37. if (this.isEndTime) {
  38. this.isEndTimes = Date.parse(new Date)
  39. }
  40. let b = Date.parse(value)
  41. if (value) {
  42. if (b < this.isEndTimes) {
  43. callback(new Error('禁止选择现在及以前时间,请重新选择'))
  44. } else {
  45. callback()
  46. }
  47. } else {
  48. callback(new Error('请选择时间'))
  49. }
  50. }
  51. return {
  52. isEndTime: true,
  53. isEndTimes: null,
  54. // 审核任务表单数据
  55. form: {},
  56. showTask: false,
  57. // 任务表单校验
  58. TaskRules: {
  59. name: [{ required: true, message: '请输入任务名称', trigger: 'blur' },],
  60. handler: [{ required: true, message: '请选择审核人', trigger: 'change' },],
  61. deadLineTime: [{ required: true, validator: isTime, trigger: 'change' }],
  62. },
  63. //人员列表懒加载
  64. personnelList: {
  65. queryParams: {
  66. current: 1,
  67. size: 10
  68. },
  69. loading: false,
  70. data: [],
  71. },
  72. // 父组件form表单数据
  73. parentForm: {},
  74. }
  75. },
  76. computed: {},
  77. mounted() {
  78. },
  79. methods: {
  80. open(data, type) {
  81. this.showTask = true
  82. // 判断文件是否都上传完毕
  83. if (data.systemFileList && data.systemFileList.length > 0) {
  84. data.fileGuids = []
  85. for (let i = 0; i < data.systemFileList.length; i++) {
  86. if (data.systemFileList[i].guid) {
  87. data.fileGuids.push(data.systemFileList[i].guid)
  88. } else {
  89. this.$message.error('文件未全部上传,请耐心等待')
  90. return false
  91. }
  92. }
  93. }
  94. this.parentForm = data
  95. // 任务类型
  96. this.form.type = type
  97. this.getPermissionPersonnel()
  98. },
  99. // 确定
  100. submitTask() {
  101. this.isEndTime = false
  102. this.$refs.form.validate((valid) => {
  103. if (valid) {
  104. /**类型
  105. * 0标引任务
  106. * 1项目开卷审核任务
  107. * 2检索条件任务
  108. * 3对比任务
  109. * 4协同任务
  110. * 5任务审核任务
  111. * 6文件分配任务审核
  112. */
  113. if (['@'].includes(this.form.handler)) {//是邮箱为1
  114. this.form.handlerType = 1
  115. } else {//是id为0
  116. this.form.handlerType = 0
  117. }
  118. let params = {
  119. patentDigProjectDTO: this.parentForm,
  120. projectTaskDTO: this.form,
  121. }
  122. // 区分是哪种审核
  123. switch (this.form.type) {
  124. case 1://专利挖掘项目审核
  125. this.addProjectOpenExamineTask(params)
  126. break;
  127. case 6://专利挖掘项目-文件分配任务审核
  128. break;
  129. case 7://专利挖掘项目-文件列表审核任务
  130. break;
  131. default:
  132. break;
  133. }
  134. }
  135. })
  136. },
  137. // 专利挖掘项目-文件分配任务审核
  138. task(params) {
  139. this.$api.task(params).then(res => {
  140. if (res.code == 200) {
  141. this.$message.success('已发送审核任务')
  142. this.$emit('taskForm', '已发送审核任务')
  143. this.handleCloseTask()
  144. }
  145. })
  146. },
  147. // 专利挖掘项目审核
  148. addProjectOpenExamineTask(params) {
  149. this.$api.addProjectOpenExamineTask(params).then(res => {
  150. if (res.code == 200) {
  151. this.$message.success('已发送审核任务')
  152. this.$emit('taskForm', '已发送审核任务')
  153. this.handleCloseTask()
  154. }
  155. })
  156. },
  157. // 取消
  158. handleCloseTask() {
  159. this.$refs.form.resetFields()
  160. this.form = {}
  161. this.showTask = false
  162. this.isEndTime = true
  163. },
  164. /**
  165. * 人员
  166. */
  167. // 人员列表远程搜索
  168. remoteMethodPerson(query) {
  169. this.personnelList.data = []
  170. this.personnelList.queryParams.current = 1
  171. this.personnelList.queryParams.name = query
  172. this.getPermissionPersonnel()
  173. },
  174. // 获取所有人员列表懒加载
  175. lazyLoadingPerson() {
  176. if (this.personnelList.queryParams.current * this.personnelList.queryParams.size >= this.personnelList.queryParams.total) {
  177. return false
  178. }
  179. this.personnelList.queryParams.current += 1
  180. this.getPermissionPersonnel()
  181. },
  182. //获取所有人员列表(修改不要一次性获取,可以使用懒加载加远程搜索 )
  183. async getPermissionPersonnel(type) {
  184. this.personnelList.loading = true;
  185. await this.$api.getPermissionPersonnel(this.personnelList.queryParams).then((response) => {
  186. if (response.code == 200) {
  187. this.personnelList.loading = false;
  188. this.personnelList.data.push(...response.data)
  189. this.personnelList.queryParams.total = response.pageColumn.total
  190. }
  191. })
  192. },
  193. },
  194. }
  195. </script>
  196. <style lang="scss" scoped></style>