annotation.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <div>
  3. <el-dialog title="批注" v-draggable :visible.sync="visible" width="500px" custom-class="checkFile" :before-close="cancel"
  4. :modal="false" :close-on-click-modal="false" :modal-append-to-body="false">
  5. <div
  6. style="display:flex;justify-content: space-between;font-size:14px;border-bottom: 1px white solid;padding-bottom: 5px;">
  7. <p style="font-weight:800;margin:0">{{ userinfo.name }}</p>
  8. <p style="margin:0">{{ getDate() }}</p>
  9. </div>
  10. <div>
  11. <p style="display: flex;align-items: center;"><span style="width: 60px;">内容:</span><span
  12. style="width: 100%;"><el-input type="textarea" v-model="mark.text" readonly rows="2"></el-input></span></p>
  13. </div>
  14. <div>
  15. <p><span>颜色:</span>
  16. <span>
  17. <el-input type="color" size="small" class="changeColor" v-model="mark.markColor"
  18. style="user-select:none;width:100px"> </el-input>
  19. </span>
  20. </p>
  21. <p><span>类型:</span>
  22. <span>
  23. <el-radio-group v-model="mark.markType">
  24. <el-radio :label="2">波浪线</el-radio>
  25. <el-radio :label="0">下划线</el-radio>
  26. <el-radio :label="1">高亮</el-radio>
  27. </el-radio-group>
  28. </span>
  29. </p>
  30. </div>
  31. <div>
  32. <p>
  33. <span>使用权限:</span>
  34. <span>
  35. <el-radio-group v-model="mark.permissionType">
  36. <el-radio :label="1">所有人可见</el-radio>
  37. <el-radio :label="0">本人可见</el-radio>
  38. </el-radio-group>
  39. </span>
  40. </p>
  41. <p style="display:flex" v-if="mark.createFrom">
  42. <!-- createFrom 0默认(专利)1专题库2报告 -->
  43. <span>可见范围:</span>
  44. <span>
  45. <el-switch v-model="mark.rangeType" active-color="#13ce66" inactive-color="#ff4949"
  46. :active-text="createFromText[mark.createFrom]">
  47. </el-switch>
  48. </span>
  49. </p>
  50. </div>
  51. <div style="user-select: none;">
  52. <p style="margin-bottom:5px">标注:</p>
  53. <el-input v-model="mark.remark" type="textarea" class="my-input-preview"></el-input>
  54. </div>
  55. <div style="display:flex;justify-content: flex-end;align-items:center;">
  56. <el-button type="text" @click="cancel">取消</el-button>
  57. <el-button type="text" v-if="mark.id" @click="handleDelete">删除</el-button>
  58. <el-button type="text" @click="submit">确定</el-button>
  59. </div>
  60. </el-dialog>
  61. </div>
  62. </template>
  63. <script>
  64. import { mapGetters } from 'vuex'
  65. export default {
  66. data() {
  67. return {
  68. // 控制弹窗开关
  69. visible: false,
  70. // 批注的内容
  71. mark: {},
  72. // 可见范围
  73. createFromText: {
  74. 0: '本专利可见',
  75. 1: '本专利数据库可见',
  76. 2: '本报告可见',
  77. }
  78. }
  79. },
  80. computed: {
  81. ...mapGetters(['userinfo', 'projectId', 'contextMenu']),
  82. },
  83. mounted() {
  84. },
  85. methods: {
  86. // 确定
  87. submit() {
  88. console.log(this.mark);
  89. if (this.mark.id) {
  90. this.$api.edit(this.mark).then(response => {
  91. if (response.code == 200) {
  92. this.$message.success('修改批注成功')
  93. this.cancel()
  94. }
  95. }).catch(error => {
  96. this.$message.error('修改批注失败')
  97. })
  98. } else {
  99. this.$api.add(this.mark).then(response => {
  100. if (response.code == 200) {
  101. this.$message.success('添加批注成功')
  102. this.cancel()
  103. }
  104. }).catch(error => {
  105. this.$message.error('添加批注失败')
  106. })
  107. }
  108. },
  109. // 删除
  110. handleDelete() {
  111. console.log('批注删除');
  112. let ids = [this.mark.id]
  113. this.$api.dele(ids).then(response => {
  114. if (response.code == 200) {
  115. this.$message.success('删除批注成功')
  116. this.cancel()
  117. }
  118. }).catch(error => {
  119. this.$message.error('删除批注失败')
  120. })
  121. },
  122. // 取消
  123. cancel() {
  124. console.log(1);
  125. this.visible = false
  126. },
  127. // 显示时间
  128. getDate() {
  129. let date = new Date()
  130. var Y = date.getFullYear().toString()
  131. var m = (date.getMonth() + 1) > 9 ? (date.getMonth() + 1).toString() : "0" + (date.getMonth() + 1)
  132. var d = date.getDate() > 9 ? date.getDate().toString() : "0" + date.getDate()
  133. var H = date.getHours() > 9 ? date.getHours().toString() : "0" + date.getHours()
  134. var M = date.getMinutes() > 9 ? date.getMinutes().toString() : "0" + date.getMinutes()
  135. var S = date.getSeconds() > 9 ? date.getSeconds().toString() : "0" + date.getSeconds()
  136. return Y + '-' + m + '-' + d + ' ' + H + ':' + M + ':' + S
  137. },
  138. // 打开弹窗
  139. open() {
  140. console.log(this.projectId, this.contextMenu);
  141. this.mark = this.contextMenu.mark
  142. this.visible = true
  143. },
  144. },
  145. }
  146. </script>
  147. <style lang="scss" scoped></style>