powerManage.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <div class="height_100">
  3. <el-container>
  4. <el-header>
  5. <div class="head">
  6. <el-button type="primary" size="small" v-if="isEdit" @click="cancel" class="margin-right_10">取消编辑</el-button>
  7. <el-button type="primary" size="small" v-if="isEdit" @click="save" class="margin-right_10">保存</el-button>
  8. <el-button type="primary" size="small" v-else @click="edit" class="margin-right_10">编辑</el-button>
  9. </div>
  10. </el-header>
  11. <el-main v-DivHeight="getDivHeight">
  12. <el-table v-loading="loading" :data="tableData" :maxHeight="tableHeight - 45" border :header-cell-style="{'text-align':'center'}" style="width: 100%">
  13. <el-table-column prop="sysOrder" label="序号" width="100" align="center">
  14. <template slot-scope="scope">
  15. <div>
  16. 权要{{ scope.row.sysOrder+1 }}
  17. </div>
  18. </template>
  19. </el-table-column>
  20. <el-table-column prop="content" label="原权要内容" >
  21. <template slot-scope="scope">
  22. <div>
  23. <el-input type="textarea" v-model="scope.row.content" v-if="isEdit" @blur="changeClaimOptionType($event,scope.row)"></el-input>
  24. <span v-else>{{ scope.row.content }}</span>
  25. </div>
  26. </template>
  27. </el-table-column>
  28. <el-table-column prop="parentOrder" label="父权要" align="center">
  29. <template slot-scope="scope">
  30. <div>
  31. <el-select v-if="isEdit" v-model="scope.row.parentOrderIds" multiple placeholder="请选择" @change="changeParentOrder($event,scope.row)" style="width:100%">
  32. <el-option
  33. v-for="item in tableData"
  34. :key="item.sysOrder"
  35. :label="`权要${Number(item.sysOrder)+1}`"
  36. :value="item.sysOrder+''">
  37. </el-option>
  38. <el-option
  39. label="主权要"
  40. value="-1">
  41. </el-option>
  42. </el-select>
  43. <span v-else>{{ getParentOrder(scope.row) }}</span>
  44. </div>
  45. </template>
  46. </el-table-column>
  47. <el-table-column prop="claimType" label="权要类型" align="center">
  48. <template slot-scope="scope">
  49. <div>
  50. <el-select v-if="isEdit" v-model.number="scope.row.claimType" placeholder="请选择" @change="changeClaimOptionType($event,scope.row)" style="width:100%">
  51. <el-option
  52. v-for="item in claimType"
  53. :key="item.value"
  54. :label="item.label"
  55. :value="item.value">
  56. </el-option>
  57. </el-select>
  58. <span v-else>{{ getClaimData(scope.row) }}</span>
  59. </div>
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="操作" width="200" align="center">
  63. <template slot-scope="scope">
  64. <div>
  65. <el-button type="text" v-if="isEdit" @click="del(scope)">删除</el-button>
  66. <el-button type="text" v-if="isEdit" @click="add(scope)">在下方增加一行</el-button>
  67. </div>
  68. </template>
  69. </el-table-column>
  70. </el-table>
  71. </el-main>
  72. </el-container>
  73. </div>
  74. </template>
  75. <script>
  76. import { getTableHeight } from '@/views/components/mixins'
  77. export default {
  78. components: {},
  79. mixins:[getTableHeight],
  80. props: {
  81. projectId:{
  82. default:0
  83. }
  84. },
  85. data() {
  86. return {
  87. tableData:[],
  88. loading:false,
  89. isEdit:false,
  90. claimType:[
  91. {
  92. value:1,
  93. label:'主权利要求'
  94. },
  95. {
  96. value:0,
  97. label:'附属权利要求'
  98. }
  99. ]
  100. };
  101. },
  102. watch: {},
  103. computed: {},
  104. created() {},
  105. mounted() {
  106. this.getList()
  107. },
  108. methods: {
  109. //获取权要
  110. getList(){
  111. var params = {
  112. projectId:this.projectId
  113. }
  114. this.loading = true
  115. this.$api.queryClaim(params).then(response=>{
  116. if(response.code == 200){
  117. this.tableData = response.data.data
  118. this.loading = false
  119. }
  120. }).catch(error=>{
  121. this.tableData = []
  122. this.loading = false
  123. })
  124. },
  125. //编辑
  126. edit(){
  127. this.isEdit = true
  128. },
  129. //保存
  130. save(){
  131. var params = {
  132. addClaimDTOs:this.tableData,
  133. projectId:this.projectId
  134. }
  135. this.$api.addClaim(params).then(response=>{
  136. if(response.code == 200){
  137. this.isEdit = false
  138. this.$message.success('保存成功')
  139. this.getList()
  140. }
  141. }).catch(error=>{
  142. this.$message.error('保存失败')
  143. })
  144. },
  145. //取消编辑
  146. cancel(){
  147. this.isEdit = false
  148. this.getList()
  149. },
  150. //删除当前一行
  151. del(scope){
  152. var index = scope.$index
  153. this.tableData.splice(index,1)
  154. this.updateClaimOrder(index-1,1)
  155. },
  156. //在下方新增一行
  157. add(scope){
  158. var index = scope.$index
  159. var data = JSON.parse(JSON.stringify(scope.row))
  160. data.sysOrder = Number(data.sysOrder) + 1
  161. data.optionType = 2
  162. data.content = ''
  163. this.tableData.splice(index+1,0,data)
  164. this.updateClaimOrder(index+1,2)
  165. },
  166. //更新权要序号
  167. updateClaimOrder(index,type){
  168. for(var i = index+1;i<this.tableData.length;i++){
  169. if(type == 1){
  170. this.tableData[i].sysOrder = Number(this.tableData[i].sysOrder) - 1
  171. }else if(type == 2){
  172. this.tableData[i].sysOrder = Number(this.tableData[i].sysOrder) + 1
  173. }
  174. if(this.tableData[i].optionType != 2){
  175. this.tableData[i].optionType = 1
  176. }
  177. }
  178. },
  179. //切换父权要
  180. changeParentOrder(value,row){
  181. this.changeClaimOptionType()
  182. row.parentOrder = row.parentOrderIds.join(',')
  183. },
  184. changeClaimOptionType(value,row){
  185. if(row.optionType != 2){
  186. row.optionType = 1
  187. }
  188. },
  189. //获取父权要
  190. getParentOrder(row){
  191. if(row.claimType == 1){
  192. this.$set(row,'parentOrderIds',['-1'])
  193. return '主权要'
  194. }
  195. var arr = row.parentOrder.split(/,|,/)
  196. this.$set(row,'parentOrderIds',arr)
  197. // row.parentOrderIds = arr
  198. var parentOrder = ''
  199. arr.forEach((item,index) => {
  200. var num = Number(item)+1
  201. parentOrder = parentOrder + `权要${num}`
  202. if(index != arr.length - 1){
  203. parentOrder = parentOrder + '、'
  204. }
  205. });
  206. return parentOrder
  207. },
  208. //获取权利要求类型
  209. getClaimData(row){
  210. var obj = this.claimType.find(item=>{
  211. return item.value == row.claimType
  212. })
  213. if(obj){
  214. return obj.label
  215. }
  216. return ''
  217. }
  218. },
  219. };
  220. </script>
  221. <style lang="scss" scoped>
  222. .head{
  223. width:100%;
  224. display: flex;
  225. flex-direction: row-reverse;
  226. }
  227. </style>