see.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <basic-container
  3. class="see"
  4. style="margin-bottom:50px;"
  5. >
  6. <el-row :gutter="20">
  7. <el-col :span="6">
  8. <el-select
  9. style="width:100%;"
  10. v-model="value"
  11. placeholder="请选择"
  12. @change="changePosition"
  13. class="marbottom20"
  14. clearable
  15. >
  16. <el-option
  17. v-for="item in options"
  18. :key="item.id"
  19. :label="item.contractName"
  20. :value="item.id"
  21. >
  22. </el-option>
  23. </el-select>
  24. <el-menu
  25. default-active="2"
  26. class="el-menu-vertical-demo"
  27. >
  28. <div
  29. style="border-right:1px solid #EDEDED;"
  30. v-for="(item,keys) in menuData"
  31. :key='keys'
  32. >
  33. <el-submenu :index="item.roleId">
  34. <template slot="title">
  35. <i class="el-icon-location"></i>
  36. <span>{{item.roleName}}</span>
  37. </template>
  38. <el-menu-item-group
  39. v-for="(val,k) in item.childRoleList"
  40. :key='k'
  41. >
  42. <el-menu-item
  43. :index="val.roleId"
  44. @click="dakairight(val.signPfxFileList)"
  45. >{{val.roleName}}</el-menu-item>
  46. </el-menu-item-group>
  47. </el-submenu>
  48. </div>
  49. </el-menu>
  50. </el-col>
  51. <el-col
  52. :span="18"
  53. class="martop20"
  54. >
  55. <div
  56. class="martop20"
  57. v-for="(item,key) in rightData"
  58. :key='key'
  59. >
  60. <div class="flexBetween">
  61. <div class="flexStar">
  62. <div
  63. class="flexItemsC"
  64. style="width:240px;"
  65. >姓名:{{item.certificateUserName}}</div>
  66. <div
  67. class="flexStar flexItemsC"
  68. style="width:240px;"
  69. >签名图片:
  70. <img
  71. style="height:40px;"
  72. :src="item.signatureFileUrl"
  73. />
  74. </div>
  75. <div class="flexItemsC" style="width:600px;">证书: {{item.certificateUserName}}- {{item.certificateFileUrl|urlsplice}}</div>
  76. <div class="flexItemsC" v-show="item.pfxType != '-1'">签章类型: {{item.pfxType}}</div>
  77. </div>
  78. <el-button
  79. size="mini"
  80. @click="deleteAutograph(item.id)"
  81. >删除签名配置</el-button>
  82. </div>
  83. <el-divider></el-divider>
  84. </div>
  85. </el-col>
  86. </el-row>
  87. </basic-container>
  88. </template>
  89. <script>
  90. import { remove, } from "@/api/certificate/list";
  91. import { queryAllRoleList, queryContractList } from "@/api/certificate/management";
  92. export default {
  93. data () {
  94. return {
  95. options: [],
  96. value: '',
  97. menuData: [],
  98. rightData: [],
  99. }
  100. },
  101. methods: {
  102. //#region 左侧菜单
  103. dakairight (signPfxFileList) {
  104. this.rightData = signPfxFileList
  105. },
  106. changePosition () {//下拉框change事件
  107. // if (this.value && this.options.length > 0) {
  108. // this.options.forEach(val => {
  109. // if (val.roleId == this.value) {
  110. // this.menuData = [val]
  111. // this.rightData = []
  112. // }
  113. // })
  114. // }
  115. this.rightData = [];
  116. this.queryAllRoleList(this.value);
  117. },
  118. deleteAutograph (ids) {
  119. let _that = this
  120. this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
  121. confirmButtonText: '确定',
  122. cancelButtonText: '取消',
  123. type: 'warning'
  124. }).then(() => {
  125. _that.remove(ids)
  126. }).catch(() => {
  127. });
  128. },
  129. //#endregion
  130. //#region 接口
  131. async queryAllRoleList (contractId) {
  132. const { data: res } = await queryAllRoleList({ contractId })
  133. console.log(res);
  134. if (res.code == 200) {
  135. // this.options = res.data
  136. this.menuData = res.data
  137. }
  138. },
  139. async queryContractList (contractId) {
  140. const { data: res } = await queryContractList({ contractId });
  141. if (res.code == 200) {
  142. this.options = res.data
  143. }
  144. this.value = contractId;
  145. },
  146. async remove (ids) {
  147. const { data: res } = await remove({ ids })
  148. console.log(res);
  149. if (res.code == 200) {
  150. this.$message({
  151. type: 'success',
  152. message: '删除成功!'
  153. });
  154. }
  155. },
  156. //#endregion
  157. },
  158. filters: {
  159. urlsplice (url) {
  160. let da = ''
  161. if (url) {
  162. da = url.slice(url.indexOf('/', url.indexOf('/', url.indexOf('/', url.indexOf('/', url.indexOf('/', url.indexOf('/', 0) + 1) + 1) + 1) + 1) + 1) + 1)
  163. }
  164. return da
  165. },
  166. },
  167. watch: {
  168. 'value' (val) {
  169. if (!val) {
  170. this.menuData = this.options
  171. this.rightData = []
  172. }
  173. },
  174. },
  175. created () {
  176. this.queryAllRoleList(this.$route.query.contractId);
  177. this.queryContractList(this.$route.query.contractId);
  178. }
  179. }
  180. </script>
  181. <style lang="scss" scoped>
  182. .see {
  183. }
  184. </style>