basicMessage.vue 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <template>
  2. <div>
  3. <el-button type="primary" @click="submit" style="float:right" v-if="!noEdit1">提交</el-button>
  4. <div style="width:500px;margin:0 auto">
  5. <el-form :model="form" ref="reportForm" label-width="120px">
  6. <el-form-item :label="form.type==3?'标的产品:':'标的专利号:'" prop="signPatentNo">
  7. <el-link type="primary" v-if="form.type!=3" @click="toPatentDetails(form.signPatentNo)">{{form.signPatentNo}}</el-link>
  8. <span v-else>{{form.signPatentNo}}</span>
  9. <!-- <el-input v-model="form.signPatentNo" autocomplete="off" placeholder="请输入标的专利号" @change="getPatentNo"></el-input>
  10. <p v-if="show==1" class="tips">查不到该专利请<span @click="imports">导入</span></p>
  11. <p v-if="show==2" class="tips" style="color:black"><span @click="toPatentDetails(form.signPatentNo)">查看详情</span></p> -->
  12. </el-form-item>
  13. <el-form-item label="报告名称:" prop="name">
  14. <span>{{form.name}}</span>
  15. </el-form-item>
  16. <el-form-item label="承担部门:" prop="departmentId">
  17. <span>{{form.departmentName}}</span>
  18. </el-form-item>
  19. <el-form-item label="负责人:" prop="personId">
  20. <span>{{form.personName}}</span>
  21. </el-form-item>
  22. <el-form-item label="委托方:" prop="clientId" >
  23. <span>{{form.clientName}}</span>
  24. </el-form-item>
  25. <el-form-item label="产品/技术:" v-if="form.proTec">
  26. <span>{{form.proTec}}</span>
  27. </el-form-item>
  28. <el-form-item label="应用场景:" prop="easFlag" v-if="form.scenarioNames">
  29. <div style="word-wrap:keep-all;">
  30. <span v-for="item in form.scenarioNames">{{item }}&nbsp;&nbsp;&nbsp;</span>
  31. </div>
  32. </el-form-item>
  33. <el-form-item label="关联报告:" v-if="form.associateReportName">
  34. <span>{{form.associateReportName}}</span>
  35. </el-form-item>
  36. <el-form-item label="卷号:" prop="volumeNumber" v-if="form.volumeNumber">
  37. <span>{{form.volumeNumber}}</span>
  38. </el-form-item>
  39. <el-form-item :label="noEdit1?'附件':'上传附件:'">
  40. <div v-if="form.reportFiles" class="upload-file">
  41. <div v-for="item in form.reportFiles" style="margin:0;display:flex;justify-content:space-around;align-items:center;">
  42. <p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis;cursor: pointer" @click="checkFile(item)">{{item.name?item.name+'.'+item.suffix:item.fileName}}</p>
  43. <!-- <div style="margin:0;" @click="delFile(item.id)" v-if="!noEdit1">
  44. <i class="el-icon-close"></i>
  45. </div> -->
  46. <Menu :data="item" @delFile="delFile"></Menu>
  47. </div>
  48. </div>
  49. <el-upload v-if="!noEdit1" ref="upload" class="upload-file" drag action="#" :auto-upload="false" :show-file-list="true" :on-change="onChange" multiple :on-preview="handlePreview" :on-remove="handleRemove">
  50. <i :class="!file ? 'el-icon-upload' : 'el-icon-refresh'"></i>
  51. <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
  52. <div class="el-upload__tip" slot="tip"></div>
  53. </el-upload>
  54. </el-form-item>
  55. <el-form-item label="备注:" prop="remark" v-if="form.remark">
  56. <span>{{form.remark}}</span>
  57. </el-form-item>
  58. </el-form>
  59. </div>
  60. <el-dialog title="查看文件" :visible.sync="FileVisible" width="1200px">
  61. <el-image v-if="srcList.length>0" :src="FileUrl" ref="image" :preview-src-list="srcList"></el-image>
  62. <iframe v-else :src="FileUrl" frameborder="0" width="1150px" :height="height"></iframe>
  63. </el-dialog>
  64. </div>
  65. </template>
  66. <script>
  67. import { PatentDetails } from "@/views/components/common/mixins";
  68. import Menu from '@/views/components/common/menu/index.vue'
  69. import { downLoad2 } from "@/utils";
  70. export default {
  71. mixins:[PatentDetails],
  72. components:{
  73. Menu
  74. },
  75. props:['reportId','noEdit'],
  76. data() {
  77. return {
  78. FileVisible:false,
  79. height:document.documentElement.clientHeight - 120,
  80. FileUrl:'',
  81. srcList:[],
  82. noEdit1:this.noEdit,
  83. file:[],
  84. form:{
  85. id:this.reportId
  86. },
  87. dictMessage:{},
  88. Already:[]
  89. }
  90. },
  91. watch:{
  92. reportId(val){
  93. this.form = {
  94. id:val
  95. }
  96. this.getList()
  97. }
  98. },
  99. mounted() {
  100. this.getList()
  101. },
  102. methods: {
  103. checkFile(item){
  104. return false;
  105. var arr = ['png','jpeg','bmp','jpg']
  106. if(arr.includes(item.suffix)){
  107. this.FileVisible = true
  108. this.FileUrl = this.$p + item.url
  109. this.srcList = [this.$p + item.url]
  110. }else if(item.suffix == 'pdf'){
  111. this.FileVisible = true
  112. this.FileUrl = this.$p + item.url
  113. this.srcList = []
  114. }else{
  115. this.FileUrl = 'http://192.168.1.24:8012/onlinePreview?url='+ btoa(encodeURIComponent(this.$p + item.url))
  116. console.log(this.FileUrl,this.$p + item.url)
  117. this.srcList = []
  118. this.FileVisible = true
  119. // downLoad2(item.url)
  120. }
  121. },
  122. delFile(id){
  123. var index = this.form.reportFiles.findIndex(item=>{
  124. return item.id == id
  125. })
  126. if(index!=-1){
  127. this.form.reportFiles.splice(index,1)
  128. }
  129. },
  130. onChange(file, fileList) {
  131. if(this.form.reportFiles){
  132. var index3 = this.form.reportFiles.findIndex(item=>{
  133. return item.name+'.'+item.suffix == file.raw.name
  134. })
  135. if(index3!=-1){
  136. this.Already.push(this.form.reportFiles[index3].name)
  137. var index2 = fileList.reverse().findIndex(item=>{
  138. return item.raw.name == file.raw.name
  139. })
  140. fileList.splice(index2,1)
  141. }else{
  142. this.inFile(file, fileList)
  143. }
  144. }else{
  145. this.inFile(file, fileList)
  146. }
  147. this.$nextTick(()=>{
  148. var b = ''
  149. if(this.Already.length>0){
  150. this.Already.forEach(item=>{
  151. b = b+item+','
  152. })
  153. this.$alert('文件'+b+'已存在', '提示', {
  154. confirmButtonText: '确定',
  155. type:'warning',
  156. callback: action => {
  157. this.Already = []
  158. }
  159. });
  160. }
  161. })
  162. },
  163. inFile(file, fileList){
  164. var index = this.file.findIndex(item=>{
  165. return item.name == file.raw.name
  166. })
  167. if(index!=-1){
  168. this.Already.push(this.file[index].name)
  169. var index2 = fileList.reverse().findIndex(item=>{
  170. return item.raw.name == file.raw.name
  171. })
  172. fileList.splice(index2,1)
  173. }else{
  174. this.file.push(file.raw)
  175. }
  176. },
  177. handleRemove(file, fileList) {
  178. var index = this.file.findIndex(item=>{
  179. return item.uid == file.raw.uid
  180. })
  181. if(index!=-1){
  182. this.file.splice(index,1)
  183. }
  184. },
  185. handlePreview(file) {
  186. // console.log(file);
  187. var index = file.raw.type.lastIndexOf('/')
  188. var type = file.raw.type.substring(index+1,file.raw.type.length)
  189. var arr = ['png','jpeg','bmp','jpg']
  190. if(arr.includes(type)){
  191. this.FileVisible = true
  192. this.FileUrl = URL.createObjectURL(file.raw)
  193. this.srcList = [URL.createObjectURL(file.raw)]
  194. }else if(type == 'pdf'){
  195. this.FileVisible = true
  196. this.FileUrl = URL.createObjectURL(file.raw)
  197. this.srcList = []
  198. }
  199. // this.imageUrl ='https://view.xdocin.com/view?src=' + URL.createObjectURL(file.raw)
  200. // this.showFile = true
  201. },
  202. submit(){
  203. let formData = new FormData()
  204. if(this.file){
  205. for (var i = 0; i < this.file.length; i++) {
  206. formData.append("files", this.file[i]);
  207. }
  208. }
  209. formData.append('report',JSON.stringify(this.form))
  210. this.$api.UpdateReport(formData).then(response=>{
  211. if(response.code == 200){
  212. this.file = []
  213. this.$message.success('附件修改成功')
  214. this.$refs.upload.clearFiles()
  215. this.getList()
  216. }
  217. })
  218. },
  219. getList() {
  220. this.loading = true
  221. let a = {
  222. reportId:this.form.id
  223. }
  224. this.$api.QueryReport(a).then(response=>{
  225. if(response.code == 200){
  226. this.$set(this,'form',response.data[0])
  227. // this.form = response.data[0]
  228. }
  229. })
  230. },
  231. },
  232. }
  233. </script>