addInvalidResponse.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <template>
  2. <div>
  3. <el-dialog :title="title" :visible.sync="showDialog" width="600px" :close-on-click-modal="false" :before-close="handleClose" append-to-body>
  4. <el-form :model="form" :rules="rules" ref="form" label-width="80px" label-position="left">
  5. <template v-if="type == 1">
  6. <div>
  7. <el-form-item label="无效理由" prop="name">
  8. <el-select v-model="form.statutesId" placeholder="请选择" style="width:100%">
  9. <el-option
  10. v-for="item in provisions"
  11. :key="item.value"
  12. :label="item.label"
  13. :value="item.value"
  14. >
  15. </el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item v-if="['5','4','8'].indexOf(form.statutesId) !=-1" label="涉及内容" prop="name">
  19. <div v-if="form.statutesId == 5">说明书</div>
  20. <div v-else>附图</div>
  21. </el-form-item>
  22. <el-form-item v-else label="权要" prop="name">
  23. <el-select v-model="form.claimIds" multiple placeholder="请选择" style="width:100%">
  24. <el-option
  25. v-for="item in claims"
  26. :key="item.sysOrder"
  27. :label="`权要${Number(item.sysOrder)+1}`"
  28. :value="item.id"
  29. >
  30. </el-option>
  31. </el-select>
  32. </el-form-item>
  33. </div>
  34. </template>
  35. <template v-if="type == 2">
  36. <div>
  37. <el-form-item label="无效理由" prop="name">
  38. <el-select v-model="form.statutesId" @change="changeStatutes" placeholder="请选择" style="width:100%">
  39. <el-option
  40. v-for="item in provisions"
  41. :key="item.value"
  42. :label="item.label"
  43. :value="item.value"
  44. >
  45. </el-option>
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item v-if="['5','4','8'].indexOf(form.statutesId) ==-1" label="权要" prop="name">
  49. <el-select v-model="form.claimId" placeholder="请选择" style="width:100%">
  50. <el-option
  51. v-for="item in hasClaims"
  52. :key="item.claimSort"
  53. :label="`权要${Number(item.claimSort)+1}`"
  54. :value="item.claimId"
  55. >
  56. </el-option>
  57. </el-select>
  58. </el-form-item>
  59. <div class="proofGroup">
  60. <div style="display:flex;justify-content:space-between;padding-bottom:10px">
  61. <div>{{ifSecondInvalid?'第二次':'第一次'}}证据组合</div>
  62. <div>
  63. <el-button type="primary" size="small" @click="add">添加</el-button>
  64. </div>
  65. </div>
  66. <div style="width:100%">
  67. <table class="table">
  68. <tr v-for="item in form.proofGroups" :key="item.sysOrder">
  69. <td>组合{{ item.sysOrder }}</td>
  70. <td>
  71. <el-input type="textarea" style="width:100%" v-model="item.descriptions"></el-input>
  72. </td>
  73. </tr>
  74. </table>
  75. </div>
  76. </div>
  77. </div>
  78. </template>
  79. </el-form>
  80. <span slot="footer" class="dialog-footer">
  81. <el-button @click="handleClose">取 消</el-button>
  82. <el-button type="primary" :loading="btnLoading" @click="submit" >确 定</el-button>
  83. </span>
  84. </el-dialog>
  85. </div>
  86. </template>
  87. <script>
  88. export default {
  89. components: {},
  90. props: {
  91. projectId:{
  92. default:0
  93. },
  94. tableData:{
  95. default:()=>{
  96. return []
  97. }
  98. },
  99. ifSecondInvalid:{
  100. default:false
  101. }
  102. },
  103. data() {
  104. return {
  105. type:null,
  106. form:{},
  107. title:'',
  108. showDialog:false,
  109. claims:[],
  110. rules:{},
  111. btnLoading:false,
  112. hasClaims:[]
  113. };
  114. },
  115. watch: {},
  116. computed: {
  117. provisions(){
  118. return this.$store.state.dictMessage.dictMessage.STATUTE || []
  119. }
  120. },
  121. created() {},
  122. mounted() {
  123. // this.getClaims()
  124. },
  125. methods: {
  126. //切换无效法条
  127. changeStatutes(val){
  128. var obj = {}
  129. for(var i =0;i<this.tableData.length;i++){
  130. if(this.tableData[i].statutesId == val){
  131. obj[this.tableData[i].claimSort] = this.tableData[i]
  132. }
  133. }
  134. this.hasClaims = Object.values(obj)
  135. },
  136. //添加证据组合
  137. add(){
  138. var order = 0
  139. if(this.form.proofGroups && this.form.proofGroups.length>0){
  140. order = this.form.proofGroups[this.form.proofGroups.length-1].sysOrder
  141. }
  142. this.form.proofGroups.push(
  143. {
  144. sysOrder:Number(order) + 1,
  145. content:''
  146. }
  147. )
  148. },
  149. //获取权要
  150. getClaims(){
  151. var params = {
  152. projectId:this.projectId
  153. }
  154. this.$api.queryClaim(params).then(response=>{
  155. if(response.code == 200){
  156. this.claims = response.data.data
  157. }
  158. }).catch(error=>{
  159. this.claims = []
  160. })
  161. },
  162. //打开弹窗
  163. open(type,title,data,claims){
  164. this.type = type
  165. this.title = title
  166. this.form = data
  167. this.claims = claims
  168. this.showDialog = true
  169. },
  170. //关闭弹窗
  171. handleClose(){
  172. this.showDialog = false
  173. },
  174. //提交
  175. submit(){
  176. this.$refs.form.validate((valid) => {
  177. if (valid) {
  178. this.btnLoading = true
  179. switch(this.type){
  180. case '1':
  181. this.addInvalidStatutes()
  182. break;
  183. case '2':
  184. this.addProofGroup()
  185. break;
  186. }
  187. }
  188. })
  189. },
  190. //添加无效理由
  191. addInvalidStatutes(){
  192. this.form.projectId = this.projectId
  193. if(this.form.statutesId == 5){
  194. this.form.relatedContent = 0
  195. }else if(this.form.statutesId == 4 || this.form.statutesId == 8){
  196. this.form.relatedContent = 2
  197. }else{
  198. this.form.relatedContent = 1
  199. }
  200. this.$api.addInvalidStatutes(this.form).then(response=>{
  201. if(response.code == 200){
  202. this.btnLoading = false
  203. this.handleClose()
  204. this.$emit('save',true)
  205. }
  206. }).catch(error=>{
  207. this.btnLoading = false
  208. })
  209. },
  210. //添加证据组合
  211. addProofGroup(){
  212. this.form.descriptions = this.form.proofGroups.map(item=>{
  213. if(this.ifSecondInvalid){
  214. return {
  215. description2: item.descriptions
  216. }
  217. }else{
  218. return {
  219. description1: item.descriptions
  220. }
  221. }
  222. })
  223. this.form.projectId = this.projectId
  224. this.$api.addProofGroup(this.form).then(response=>{
  225. if(response.code == 200){
  226. this.btnLoading = false
  227. this.handleClose()
  228. this.$emit('save',true)
  229. }
  230. }).catch(error=>{
  231. this.btnLoading = false
  232. })
  233. }
  234. },
  235. };
  236. </script>
  237. <style lang="scss" scoped>
  238. .proofGroup{
  239. font-family: var(--fm);
  240. color: var(--color2);
  241. font-weight: bold;
  242. }
  243. .table {
  244. width: 100%;
  245. border-top: 1px solid #ebeef5;
  246. border-left: 1px solid #ebeef5;
  247. border-spacing: 0;
  248. }
  249. .table td {
  250. padding: 10px 30px;
  251. border-bottom: 1px solid #ebeef5;
  252. border-right: 1px solid #ebeef5;
  253. }
  254. </style>