Przeglądaj źródła

链接签收跳转开发与接口联调

hanchaobo 2 lat temu
rodzic
commit
433af74d6f
6 zmienionych plików z 212 dodań i 135 usunięć
  1. BIN
      dist.zip
  2. 15
    3
      src/api/home.js
  3. 6
    0
      src/router/index.js
  4. 1
    1
      src/utils/request.js
  5. 49
    131
      src/views/room.vue
  6. 141
    0
      src/views/signFor.vue

BIN
dist.zip Wyświetl plik


+ 15
- 3
src/api/home.js Wyświetl plik

1
 import axios from "@/utils/request";
1
 import axios from "@/utils/request";
2
 let baseUrlZc = 'https://api.xayunmei.com/zhongcaiapi';
2
 let baseUrlZc = 'https://api.xayunmei.com/zhongcaiapi';
3
-let baseUrl = 'https://api.xayunmei.com/tiaojieapi';
4
-// let baseUrl = 'http://172.16.1.4:6001';
3
+// let baseUrl = 'https://api.xayunmei.com/tiaojieapi';
4
+let baseUrl = 'http://172.16.1.26:6001';
5
 // 获取usersig
5
 // 获取usersig
6
 export function getUsersig(userId) {
6
 export function getUsersig(userId) {
7
     let appType = sessionStorage.getItem('type');
7
     let appType = sessionStorage.getItem('type');
33
 //根据id查询密文信息
33
 //根据id查询密文信息
34
 export function getEncryptInfoByid(caseId) {
34
 export function getEncryptInfoByid(caseId) {
35
         return axios.get(`${baseUrl}/shortMessage/getMeetingInfo?authId=${caseId}`);
35
         return axios.get(`${baseUrl}/shortMessage/getMeetingInfo?authId=${caseId}`);
36
-}
36
+}
37
+// 案件列表
38
+export function caseApplicationList(param) {
39
+    return axios.get(`${baseUrl}/caseApplication/list?caseId=${param}`);
40
+  }
41
+// 签收案件
42
+export function msCaseSign(data) {
43
+        return axios.post(`${baseUrl}/mssignSeal/msCaseSign`, data);
44
+}
45
+//根据案件id获取附件
46
+export function fileList(caseAppliId,annexTypeList) {
47
+    return axios.get(`${baseUrl}/common/fileList?caseAppliId=${caseAppliId}&annexTypeList=${annexTypeList}`);
48
+  }

+ 6
- 0
src/router/index.js Wyświetl plik

26
         name:"onlyOffice",
26
         name:"onlyOffice",
27
         component:()=>import("../views/onlyOffice.vue"),
27
         component:()=>import("../views/onlyOffice.vue"),
28
         meta:{title:"在线文档"}
28
         meta:{title:"在线文档"}
29
+      },
30
+      {
31
+        path:"/signFor",
32
+        name:"signFor",
33
+        component:()=>import("../views/signFor.vue"),
34
+        meta:{title:"在线签收"}
29
       }
35
       }
30
 ]
36
 ]
31
 
37
 

+ 1
- 1
src/utils/request.js Wyświetl plik

13
 server.interceptors.request.use(config => {
13
 server.interceptors.request.use(config => {
14
     // config包含了请求相关的所有信息
14
     // config包含了请求相关的所有信息
15
     // 可以同过config对象给请求配置或者修改信息
15
     // 可以同过config对象给请求配置或者修改信息
16
-    config.headers.Authorization = sessionStorage.getItem('token');
16
+    config.headers.Authorization = 'Bearer ' + sessionStorage.getItem('token');
17
     return config // 将配置完成的token返回 如果不返回 请求不会继续进行
17
     return config // 将配置完成的token返回 如果不返回 请求不会继续进行
18
 }, err => {
18
 }, err => {
19
     // 请求发生错误时的回调函数
19
     // 请求发生错误时的回调函数

+ 49
- 131
src/views/room.vue Wyświetl plik

1
 <template>
1
 <template>
2
-    <div class="page">
3
-        <div class="roompage" @mouseover="mouseHover" v-if="modileFlag">
4
-            <div class="txtContent">
5
-                <el-tag type="danger" @click="txtContent">会议内容</el-tag>
6
-            </div>
7
-            <div :class="userClass" :style="{ height: userHeight }" id="localStream">
8
-                <div class="userName">{{ userId }}</div>
9
-            </div>
10
-            <div :class="userClass" :style="{ height: userHeight }" v-for="(item, index) in userList" :key="index"
11
-                :id="item">
12
-                <div class="userName">{{ item }}</div>
13
-            </div>
14
-            <div class="footer">
15
-                <roomFooter @exitRoom="exitRoom" :roomId="roomId"></roomFooter>
16
-            </div>
17
-        </div>
18
-        <div class="roomPhone" v-if="!modileFlag">
19
-            <div class="header">
20
-                <roomFooterPhone @exitRoom="exitRoom"></roomFooterPhone>
21
-            </div>
22
-            <div class="bodyVideo">
23
-                <div :class="userClassPhone" id="localStream">
24
-                    <div class="userNamePhone">{{ userId }}</div>
25
-                </div>
26
-                <div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item">
27
-                    <div class="userNamePhone">{{ item }}</div>
28
-                </div>
29
-            </div>
30
-        </div>
31
-        <!-- 语音转文字弹窗 -->
32
-        <el-drawer title="会议内容" :visible.sync="textVisible" :modal="false">
33
-            <quill-editor ref="myQuillEditor" v-model="contentValue" :options="editorOption" @blur="onEditorBlur($event)"
34
-                @focus="onEditorFocus($event)" @ready="onEditorReady($event)"></quill-editor>
35
-            <el-button class="updataBtn" @click="updataClick" type="primary" :disabled="!updataFlag">确认修改内容</el-button>
36
-        </el-drawer>
2
+  <div class="page">
3
+    <div class="roompage" @mouseover="mouseHover" v-if="modileFlag">
4
+      <div class="txtContent">
5
+        <el-tag type="danger" @click="txtContent">会议内容</el-tag>
6
+      </div>
7
+      <div :class="userClass" :style="{ height: userHeight }" id="localStream">
8
+        <div class="userName">{{ userId }}</div>
9
+      </div>
10
+      <div :class="userClass" :style="{ height: userHeight }" v-for="(item, index) in userList" :key="index" :id="item">
11
+        <div class="userName">{{ item }}</div>
12
+      </div>
13
+      <div class="footer">
14
+        <roomFooter @exitRoom="exitRoom" :roomId="roomId"></roomFooter>
15
+      </div>
37
     </div>
16
     </div>
38
     <div class="roomPhone" v-if="!modileFlag">
17
     <div class="roomPhone" v-if="!modileFlag">
39
       <div class="header">
18
       <div class="header">
43
         <div :class="userClassPhone" id="localStream">
22
         <div :class="userClassPhone" id="localStream">
44
           <div class="userNamePhone">{{ userId }}</div>
23
           <div class="userNamePhone">{{ userId }}</div>
45
         </div>
24
         </div>
46
-        <div
47
-          :class="userClassPhone"
48
-          v-for="(item, index) in userList"
49
-          :key="index"
50
-          :id="item"
51
-        >
25
+        <div :class="userClassPhone" v-for="(item, index) in userList" :key="index" :id="item">
52
           <div class="userNamePhone">{{ item }}</div>
26
           <div class="userNamePhone">{{ item }}</div>
53
         </div>
27
         </div>
54
       </div>
28
       </div>
56
     <!-- 语音转文字弹窗 -->
30
     <!-- 语音转文字弹窗 -->
57
     <el-drawer title="会议内容" :visible.sync="textVisible" :modal="false">
31
     <el-drawer title="会议内容" :visible.sync="textVisible" :modal="false">
58
       <div style="margin-left: 20px; margin-bottom: 10px">
32
       <div style="margin-left: 20px; margin-bottom: 10px">
59
-        <div
60
-          style="
33
+        <div style="
61
             width: 100%;
34
             width: 100%;
62
             display: flex;
35
             display: flex;
63
             justify-content: space-around;
36
             justify-content: space-around;
64
             margin-bottom: 10px;
37
             margin-bottom: 10px;
65
-          "
66
-        >
67
-          <el-upload
68
-            ref="upload"
69
-            :limit="1"
70
-            action="https://api.xayunmei.com/tiaojieapi/video/upload"
71
-            :headers="headers"
72
-            :data="filedata"
73
-            :on-change="beforeUpload"
74
-            :on-success="handlSuccess"
75
-            :file-list="fileList"
76
-            v-if="appFlag"
77
-          >
78
-            <el-button slot="trigger" size="small" type="primary"
79
-              >申请人上传证据</el-button
80
-            >
38
+          ">
39
+          <el-upload ref="upload" :limit="1" action="https://api.xayunmei.com/tiaojieapi/video/upload"
40
+            :headers="headers" :data="filedata" :on-change="beforeUpload" :on-success="handlSuccess"
41
+            :file-list="fileList" v-if="appFlag">
42
+            <el-button slot="trigger" size="small" type="primary">申请人上传证据</el-button>
81
           </el-upload>
43
           </el-upload>
82
-          <el-upload
83
-            v-if="resFlag"
84
-            ref="upload1"
85
-            :limit="1"
86
-            action="https://api.xayunmei.com/tiaojieapi/video/upload"
87
-            :headers="headers1"
88
-            :data="filedata1"
89
-            :on-change="beforeUpload1"
90
-            :on-success="handlSuccess1"
91
-            :file-list="fileList1"
92
-          >
93
-            <el-button slot="trigger" size="small" type="primary"
94
-              >被申请人上传证据</el-button
95
-            >
44
+          <el-upload v-if="resFlag" ref="upload1" :limit="1" action="https://api.xayunmei.com/tiaojieapi/video/upload"
45
+            :headers="headers1" :data="filedata1" :on-change="beforeUpload1" :on-success="handlSuccess1"
46
+            :file-list="fileList1">
47
+            <el-button slot="trigger" size="small" type="primary">被申请人上传证据</el-button>
96
           </el-upload>
48
           </el-upload>
97
-          <el-upload
98
-            v-if="editFlag"
99
-            ref="upload3"
100
-            :limit="1"
101
-            action="https://api.xayunmei.com/tiaojieapi/video/upload"
102
-            :headers="headers3"
103
-            :data="filedata3"
104
-            :on-change="beforeUpload3"
105
-            :on-success="handlSuccess3"
106
-            :file-list="fileList3"
107
-            accept=".doc,.docx"
108
-          >
109
-            <el-button slot="trigger" size="small" type="primary"
110
-              >上传调解书</el-button
111
-            >
49
+          <el-upload v-if="editFlag" ref="upload3" :limit="1" action="https://api.xayunmei.com/tiaojieapi/video/upload"
50
+            :headers="headers3" :data="filedata3" :on-change="beforeUpload3" :on-success="handlSuccess3"
51
+            :file-list="fileList3" accept=".doc,.docx">
52
+            <el-button slot="trigger" size="small" type="primary">上传调解书</el-button>
112
           </el-upload>
53
           </el-upload>
113
         </div>
54
         </div>
114
         <div class="list">
55
         <div class="list">
115
           <div class="applicant" v-if="applicantFile.length > 0">
56
           <div class="applicant" v-if="applicantFile.length > 0">
116
             <div>申请人证据</div>
57
             <div>申请人证据</div>
117
-            <div
118
-              style="color: #104fad; cursor: pointer"
119
-              v-for="(item, index) in applicantFile"
120
-              :key="index"
121
-              @click="preview(item,0)"
122
-            >
58
+            <div style="color: #104fad; cursor: pointer" v-for="(item, index) in applicantFile" :key="index"
59
+              @click="preview(item, 0)">
123
               {{ item.annexName }}
60
               {{ item.annexName }}
124
             </div>
61
             </div>
125
           </div>
62
           </div>
126
           <div class="res" v-if="resFile.length > 0">
63
           <div class="res" v-if="resFile.length > 0">
127
             <div>被申请人证据</div>
64
             <div>被申请人证据</div>
128
-            <div
129
-              style="color: #104fad; cursor: pointer"
130
-              v-for="(item, index) in resFile"
131
-              :key="index"
132
-              @click="preview(item,0)"
133
-            >
65
+            <div style="color: #104fad; cursor: pointer" v-for="(item, index) in resFile" :key="index"
66
+              @click="preview(item, 0)">
134
               {{ item.annexName }}
67
               {{ item.annexName }}
135
             </div>
68
             </div>
136
           </div>
69
           </div>
137
           <div class="mediate" v-if="mediateFile.length > 0">
70
           <div class="mediate" v-if="mediateFile.length > 0">
138
             <div>调解书</div>
71
             <div>调解书</div>
139
-            <div
140
-              style="color: #104fad; cursor: pointer"
141
-              v-for="(item, index) in mediateFile"
142
-              :key="index"
143
-              @click="preview(item,1)"
144
-            >
72
+            <div style="color: #104fad; cursor: pointer" v-for="(item, index) in mediateFile" :key="index"
73
+              @click="preview(item, 1)">
145
               {{ item.annexName }}
74
               {{ item.annexName }}
146
             </div>
75
             </div>
147
           </div>
76
           </div>
148
         </div>
77
         </div>
149
       </div>
78
       </div>
150
-      <quill-editor
151
-        ref="myQuillEditor"
152
-        v-model="contentValue"
153
-        :options="editorOption"
154
-        @blur="onEditorBlur($event)"
155
-        @focus="onEditorFocus($event)"
156
-        @ready="onEditorReady($event)"
157
-      ></quill-editor>
158
-      <el-button
159
-        class="updataBtn"
160
-        @click="updataClick"
161
-        type="primary"
162
-        :disabled="!updataFlag"
163
-        >确认修改内容</el-button
164
-      >
79
+      <quill-editor ref="myQuillEditor" v-model="contentValue" :options="editorOption" @blur="onEditorBlur($event)"
80
+        @focus="onEditorFocus($event)" @ready="onEditorReady($event)"></quill-editor>
81
+      <el-button class="updataBtn" @click="updataClick" type="primary" :disabled="!updataFlag">确认修改内容</el-button>
165
     </el-drawer>
82
     </el-drawer>
83
+  </div>
166
 </template>
84
 </template>
167
-  
85
+
168
 <script>
86
 <script>
169
 import { getUsersig, reserveConferenceList } from "@/api/home";
87
 import { getUsersig, reserveConferenceList } from "@/api/home";
170
 import {
88
 import {
217
       token: "",
135
       token: "",
218
       applicantFile: [],
136
       applicantFile: [],
219
       resFile: [],
137
       resFile: [],
220
-      mediateFile:[],
138
+      mediateFile: [],
221
       headers: {
139
       headers: {
222
         // Authorization: "Bearer " + token,
140
         // Authorization: "Bearer " + token,
223
         Authorization: "",
141
         Authorization: "",
306
       this.$refs.upload3.clearFiles();
224
       this.$refs.upload3.clearFiles();
307
       this.selectByIdFn(this.caseId);
225
       this.selectByIdFn(this.caseId);
308
     },
226
     },
309
-    preview(item,flag) {
227
+    preview(item, flag) {
310
       if (item.onlyOfficeFileId) {
228
       if (item.onlyOfficeFileId) {
311
         this.$router.push({
229
         this.$router.push({
312
           path: "/onlyoffice",
230
           path: "/onlyoffice",
313
-          query: { id: item.onlyOfficeFileId,flag:flag },
231
+          query: { id: item.onlyOfficeFileId, flag: flag },
314
         });
232
         });
315
       } else {
233
       } else {
316
         window.open(
234
         window.open(
378
             this.applicantFile.push(item);
296
             this.applicantFile.push(item);
379
           } else if (item.annexType == 12) {
297
           } else if (item.annexType == 12) {
380
             this.resFile.push(item);
298
             this.resFile.push(item);
381
-          }else if (item.annexType == 7){
299
+          } else if (item.annexType == 7) {
382
             this.mediateFile.push(item)
300
             this.mediateFile.push(item)
383
           }
301
           }
384
         });
302
         });
603
   },
521
   },
604
 };
522
 };
605
 </script>
523
 </script>
606
-  
524
+
607
 <style scoped>
525
 <style scoped>
608
 .roompage {
526
 .roompage {
609
   width: 100%;
527
   width: 100%;
745
   position: absolute;
663
   position: absolute;
746
   bottom: 8px;
664
   bottom: 8px;
747
 }
665
 }
666
+
748
 .fileList {
667
 .fileList {
749
   /* max-height: 300px; */
668
   /* max-height: 300px; */
750
   /* overflow-y: scroll; */
669
   /* overflow-y: scroll; */
751
 }
670
 }
671
+
752
 .list {
672
 .list {
753
   display: flex;
673
   display: flex;
754
   flex-wrap: wrap;
674
   flex-wrap: wrap;
755
 }
675
 }
676
+
756
 .applicant,
677
 .applicant,
757
 .res,
678
 .res,
758
 .mediate {
679
 .mediate {
761
   margin-bottom: 10px;
682
   margin-bottom: 10px;
762
   color: #38393b;
683
   color: #38393b;
763
 }
684
 }
764
-</style>
765
-  
766
-  
767
-  
685
+</style>

+ 141
- 0
src/views/signFor.vue Wyświetl plik

1
+<template>
2
+    <div class="signFor">
3
+        <div>
4
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
5
+                <el-col :span="8"><div>案件编号</div></el-col>
6
+                <el-col :span="16"><div>{{ dataList.caseNum }}</div></el-col>
7
+            </el-row>
8
+            <hr>
9
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
10
+                <el-col :span="8"><div>申请人</div></el-col>
11
+                <el-col :span="16"><div>{{ dataList.applicationName }}</div></el-col>
12
+            </el-row>
13
+            <hr>
14
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
15
+                <el-col :span="8"><div>被申请人</div></el-col>
16
+                <el-col :span="16"><div>{{ dataList.respondentName }}</div></el-col>
17
+            </el-row>
18
+            <hr>
19
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
20
+                <el-col :span="8"><div>调解员</div></el-col>
21
+                <el-col :span="16"><div>{{ dataList.mediatorName }}</div></el-col>
22
+            </el-row>
23
+            <hr>
24
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
25
+                <el-col :span="8"><div>调解方式</div></el-col>
26
+                <el-col :span="16"><div>{{ dataList.mediationMethodName }}</div></el-col>
27
+            </el-row>
28
+            <hr>
29
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
30
+                <el-col :span="8"><div>调解时间</div></el-col>
31
+                <el-col :span="16"><div>{{ dataList.hearDate }}</div></el-col>
32
+            </el-row>
33
+            <hr>
34
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
35
+                <el-col :span="8"><div>案件状态</div></el-col>
36
+                <el-col :span="16"><div>{{ dataList.caseStatusName }}</div></el-col>
37
+            </el-row>
38
+            <hr>
39
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
40
+                <el-col :span="8"><div>创建时间</div></el-col>
41
+                <el-col :span="16"><div>{{ dataList.createTime }}</div></el-col>
42
+            </el-row>
43
+            <hr>
44
+            <el-row style="height: 40px;line-height: 40px;text-align: center;">
45
+                <el-col :span="7"><div>调解书</div></el-col>
46
+                <el-col :span="15"><div v-for="(item,index) in fileList" :key="index" style="color: blue; cursor: pointer"  @click="toPreview(item.annexPath)">{{ item.annexName }}</div></el-col>
47
+            </el-row>
48
+            <hr>
49
+            <el-row>
50
+                <el-col :span="24">
51
+                    <div style="width: 90px; margin: 30px auto;">
52
+                        <el-button type="primary" @click="getMsCaseSign(caseId)" v-if="showSign" icon="el-icon-edit">签收</el-button>
53
+                    </div>
54
+                </el-col>
55
+            </el-row>
56
+        </div>
57
+    </div>
58
+    
59
+</template>
60
+
61
+<script>
62
+import { getEncryptInfoByid,caseApplicationList,msCaseSign,fileList } from "@/api/home";
63
+export default {
64
+    name: "signFor",
65
+    components: {},
66
+    data() {
67
+        return {
68
+            dataList: [],
69
+            loading: false,
70
+            token:'',
71
+            caseId:'',
72
+            showSign:true,
73
+            fileURL: 'http://121.40.189.20:8002' + "/API",
74
+            fileList:[]
75
+
76
+        };
77
+    },
78
+    created() {
79
+        console.log(this.fileURL)
80
+    },
81
+    methods: {
82
+        /**获取链接参数 */
83
+        async getEncryptInfoByidFn(data) {
84
+            await getEncryptInfoByid(data).then((res) => {
85
+                this.caseId = res.caseId
86
+                sessionStorage.setItem('token',res.token)
87
+            });
88
+        },
89
+        // 获取案件列表
90
+        async getList(params){
91
+            await caseApplicationList(params).then(res =>{
92
+                res.rows.forEach(item => {
93
+                    this.dataList = item;
94
+                });
95
+            })
96
+        },
97
+        // 案件签收
98
+        async getMsCaseSign(params){
99
+            console.log(params)
100
+            let caseIds = {
101
+                caseId:params
102
+            }
103
+            await msCaseSign(caseIds).then(res =>{
104
+                console.log(res)
105
+                this.$message({
106
+                    message: '签收成功',
107
+                    type: 'success'
108
+                });
109
+                this.showSign = false
110
+            })
111
+        },
112
+        // 查看附件
113
+        async getFileList(caseAppliIds,annexTypeList){
114
+            fileList(caseAppliIds,annexTypeList).then(res=>{
115
+                this.fileList = res.data;
116
+                console.log(this.fileList)
117
+            })
118
+        },
119
+        toPreview(val){
120
+            console.log(val)
121
+            window.open(this.fileURL + val)
122
+        }
123
+    },
124
+    async mounted() {
125
+        let routeParams = this.$route.query;
126
+        await this.getEncryptInfoByidFn(routeParams.authId)
127
+        await this.getList(this.caseId)
128
+        // await this.getList("5461248676208928")
129
+        let caseAppliIds = this.caseId
130
+        let annexTypeList = 7
131
+        await this.getFileList(caseAppliIds,annexTypeList)
132
+    }
133
+};
134
+</script>
135
+
136
+<style scoped>
137
+    .signFor{
138
+        margin-top: 30px;
139
+        width: 100%;
140
+    }
141
+</style>