调解系统PC端服务

trialincourtDialog.vue 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. <template>
  2. <div>
  3. <el-dialog title="开庭审理" :visible="showtrialincourt" @close="cancel" :destroy-on-close="true">
  4. <el-form ref="form" :model="formData" label-width="180px">
  5. <div class="caseInfo">案件信息:</div>
  6. <el-divider></el-divider>
  7. <el-row>
  8. <el-col :span="12">
  9. <el-form-item label="案件编号:" prop="caseNum">
  10. <el-input v-model="formData.caseNum" placeholder="请输入案件编号" :disabled="true" />
  11. </el-form-item>
  12. </el-col>
  13. <el-col :span="12">
  14. <el-form-item label="申请人:" prop="applicantName">
  15. <el-input v-model="adjudicatename.applicantName" :disabled="true" />
  16. </el-form-item>
  17. </el-col>
  18. <el-col :span="12">
  19. <el-form-item label="被申请人:" prop="respondentName">
  20. <el-input v-model="adjudicatename.respondentName" :disabled="true" />
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="12">
  24. <el-form-item label="借款开始日期:" prop="loanStartDate">
  25. <el-date-picker v-model="formData.loanStartDate" type="datetime" placeholder="借款开始日期" :disabled="true">
  26. </el-date-picker>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="12">
  30. <el-form-item label="借款结束日期:" prop="loanEndDate">
  31. <el-date-picker v-model="formData.loanEndDate" type="datetime" placeholder="借款结束日期" :disabled="true">
  32. </el-date-picker>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="12">
  36. <el-form-item label="案件标的:" prop="caseSubjectAmount">
  37. <el-input v-model="formData.caseSubjectAmount" placeholder="请输入案件标的" :disabled="true" />
  38. </el-form-item>
  39. </el-col>
  40. <!-- <el-col :span="12">
  41. <el-form-item label="逾期天数:" prop="caseSubjectAmount">
  42. <el-input
  43. v-model="formData.caseSubjectAmount"
  44. placeholder="请输入逾期天数"
  45. />
  46. </el-form-item>
  47. </el-col> -->
  48. <el-col :span="12">
  49. <el-form-item label="仲裁费用:" prop="feePayable">
  50. <el-input v-model="adjudicatename.feePayable" placeholder="请输入仲裁费用" :disabled="true" />
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="12">
  54. <el-form-item label="申请人主张欠本金:" prop="claimPrinciOwed">
  55. <el-input v-model="formData.claimPrinciOwed" placeholder="请输入" :disabled="true" />
  56. </el-form-item>
  57. </el-col>
  58. <!-- <el-col :span="12">
  59. <el-form-item label="案件顾问:" prop="claimPrinciOwed">
  60. <el-input v-model="formData.claimPrinciOwed" placeholder="请输入" />
  61. </el-form-item>
  62. </el-col> -->
  63. <el-col :span="12">
  64. <el-form-item label="案件状态:" prop="caseStatus">
  65. <el-input v-model="formData.caseStatusName" placeholder="请输入" :disabled="true" />
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="12">
  69. <el-form-item label="仲裁员:" prop="arbitratorName">
  70. <el-input v-model="adjudicatename.arbitratorName" placeholder="请输入" :disabled="true" />
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="12">
  74. <el-form-item label="开庭日期:" prop="hearDate">
  75. <el-date-picker v-model="adjudicatename.hearDate" type="datetime" placeholder="开庭日期" :disabled="true">
  76. </el-date-picker>
  77. </el-form-item>
  78. </el-col>
  79. </el-row>
  80. <!-- <el-col :span="24">
  81. <el-form-item label="案件资料:" prop="claimPrinciOwed">
  82. <el-input v-model="formData.claimPrinciOwed" placeholder="请输入" />
  83. </el-form-item>
  84. </el-col> -->
  85. <el-col :span="24">
  86. <el-form-item label="申请人案件证据:">
  87. <div v-if="applicateArr.length == 0">申请人暂未提供证据!</div>
  88. <div v-else v-for="(item, index) in applicateArr" :key="index">
  89. <a href="#" @click="toFile(item, index)" style="color: blue">
  90. {{ item.annexName }}
  91. </a>
  92. </div>
  93. </el-form-item>
  94. </el-col>
  95. <el-col :span="24">
  96. <el-form-item label="被申请人案件证据:">
  97. <div v-if="quiltArr.length == 0">被申请人暂未提供证据!</div>
  98. <div v-for="(item, index) in quiltArr" :key="index">
  99. <a href="#" @click="toFile1(item, index)" style="color: blue">
  100. {{ item.annexName }}
  101. </a>
  102. </div>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="24" v-if="recordArr.length > 0">
  106. <el-form-item label="庭审笔录:">
  107. <div v-for="(item, index) in recordArr" :key="index" style="color: blue">
  108. <a href="#" @click="toFile2(item, index)">{{ item.annexName }}</a>
  109. </div>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="24">
  113. <el-form-item label="预约会议房间号:">
  114. <div>{{ roomId }}</div>
  115. </el-form-item>
  116. </el-col>
  117. <el-col :span="24">
  118. <el-form-item label="开庭时间:">
  119. <div>{{ startTime }}</div>
  120. </el-form-item>
  121. </el-col>
  122. <!-- </el-form> -->
  123. </el-form>
  124. <el-button @click="openmeeting" type="primary">发起会议</el-button>
  125. <el-button @click="openArbitrationresults" type="primary" v-if="this.recordArr.length <= 0">确认会议结果</el-button>
  126. <div style="margin-top:20px;width:250px">
  127. <el-upload
  128. class="upload-demo"
  129. ref="fileupload"
  130. accept=".doc,.docx"
  131. :action="UploadUrl()"
  132. :on-success="handlSuccess"
  133. :on-remove="handleRemove"
  134. :on-preview="handlePreview"
  135. :before-remove="beforeRemove"
  136. :headers="headers"
  137. :data="filedata"
  138. multiple
  139. :limit="3"
  140. :on-exceed="handleExceed"
  141. :before-upload="beforeAvatarUpload"
  142. :file-list="fileList"
  143. >
  144. <el-button type="primary">上传案件笔录</el-button>
  145. <div slot="tip" class="el-upload__tip">
  146. 文件支持上传.doc,docx文件
  147. </div>
  148. </el-upload>
  149. </div>
  150. <div slot="footer" class="dialog-footer">
  151. <el-button class="endbutton" :disabled="(showsubmit && recordArr.length == 0) || form2.isAbsence==1" @click="submitResults">提交</el-button>
  152. <el-button @click="cancel" class="endbutton1"><span>关 闭</span></el-button>
  153. </div>
  154. </el-dialog>
  155. <el-dialog title="庭审笔录" :visible="showArbitrationresults" @close="closeArbitrationresults" center>
  156. <el-form ref="form2" :model="form2" label-width="150px">
  157. <!-- <el-col :span="12">
  158. <el-form-item label="申请人是否缺席:" prop="isAbsence" :rules="[
  159. {
  160. required: true,
  161. message: '请输入',
  162. },
  163. ]">
  164. <el-radio-group v-model="form2.isAbsence">
  165. <el-radio :label="1">是</el-radio>
  166. <el-radio :label="0">否</el-radio>
  167. </el-radio-group>
  168. </el-form-item>
  169. </el-col> -->
  170. <el-col :span="24">
  171. <el-form-item label="被申请人是否缺席:" prop="appliIsAbsen" :rules="[
  172. {
  173. required: true,
  174. message: '请输入',
  175. },
  176. ]">
  177. <el-radio-group v-model="form2.appliIsAbsen">
  178. <el-radio :label="1">是</el-radio>
  179. <el-radio :label="0">否</el-radio>
  180. </el-radio-group>
  181. </el-form-item>
  182. </el-col>
  183. <el-col :span="24">
  184. <el-form-item label="申请人是否缺席:" prop="isAbsence" :rules="[
  185. {
  186. required: true,
  187. message: '请输入',
  188. },
  189. ]">
  190. <el-radio-group v-model="form2.isAbsence">
  191. <el-radio :label="1">是</el-radio>
  192. <el-radio :label="0">否</el-radio>
  193. </el-radio-group>
  194. </el-form-item>
  195. </el-col>
  196. <el-col :span="24">
  197. <el-form-item label="被申请人对上述材料的质证意见" prop="respondentOpinion">
  198. <el-input type="textarea" :autosize="{ minRows: 6 }" v-model="form2.respondentOpinion" placeholder="请输入" />
  199. </el-form-item>
  200. </el-col>
  201. <el-col :span="24">
  202. <el-form-item label="申请人对上述材料的质证意见" prop="applicantOpinion">
  203. <el-input type="textarea" :autosize="{ minRows: 6 }" v-model="form2.applicantOpinion" placeholder="请输入" />
  204. </el-form-item>
  205. </el-col>
  206. <!-- <el-col :span="24">
  207. <el-form-item label="查明本案事实" prop="caseFacts">
  208. <el-input type="textarea" :autosize="{ minRows: 6 }" v-model="form2.caseFacts" placeholder="请输入" />
  209. </el-form-item>
  210. </el-col> -->
  211. <!-- <el-col :span="24">
  212. <el-form-item label="本案争议焦点" prop="caseFocus">
  213. <el-input type="textarea" :autosize="{ minRows: 6 }" v-model="form2.caseFocus" placeholder="请输入" />
  214. </el-form-item>
  215. </el-col> -->
  216. <!-- <el-col :span="12">
  217. <el-form-item label="被申请人质证意见:" prop="responCrossOpin" :rules="[
  218. {
  219. required: true,
  220. message: '请输入',
  221. trigger: 'blur',
  222. },
  223. ]">
  224. <el-input type="textarea" v-model="form2.responCrossOpin" placeholder="请输入" />
  225. </el-form-item>
  226. </el-col>
  227. <el-col :span="12">
  228. <el-form-item label="申请人质证意见:" prop="applicaCrossOpin" :rules="[
  229. {
  230. required: true,
  231. message: '请输入',
  232. trigger: 'blur',
  233. },
  234. ]">
  235. <el-input type="textarea" v-model="form2.applicaCrossOpin" placeholder="请输入" />
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="24">
  239. <el-form-item label="被申请人的答辩意见:" prop="responDefenOpini" :rules="[
  240. {
  241. required: true,
  242. message: '请输入',
  243. trigger: 'blur',
  244. },
  245. ]">
  246. <el-input type="textarea" v-model="form2.responDefenOpini" placeholder="请输入" />
  247. </el-form-item>
  248. </el-col>
  249. <el-col :span="24">
  250. <el-form-item label="经庭审质证,对各方提供的证据认定如下:" prop="evidenDetermi" :rules="[
  251. {
  252. required: true,
  253. message: '请输入',
  254. trigger: 'blur',
  255. },
  256. ]">
  257. <el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="请输入" v-model="form2.evidenDetermi">
  258. </el-input>
  259. </el-form-item>
  260. </el-col>
  261. <el-col :span="24">
  262. <el-form-item label="仲裁庭经审理查明(写明仲裁庭认定的事实):" prop="factDetermi" :rules="[
  263. {
  264. required: true,
  265. message: '请输入',
  266. trigger: 'blur',
  267. },
  268. ]">
  269. <el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="请输入" v-model="form2.factDetermi">
  270. </el-input>
  271. </el-form-item>
  272. </el-col>
  273. <el-col :span="24">
  274. <el-form-item label="综上所述:" prop="caseSketch" :rules="[
  275. {
  276. required: true,
  277. message: '请输入',
  278. trigger: 'blur',
  279. },
  280. ]">
  281. <el-input type="textarea" autosize placeholder="请输入" v-model="form2.caseSketch">
  282. </el-input>
  283. </el-form-item>
  284. </el-col>
  285. <el-col :span="24">
  286. <el-form-item label="本庭认为:" prop="arbitrateThink" :rules="[
  287. {
  288. required: true,
  289. message: '请输入',
  290. trigger: 'blur',
  291. },
  292. ]">
  293. <el-input type="textarea" autosize placeholder="请输入" v-model="form2.arbitrateThink">
  294. </el-input>
  295. </el-form-item>
  296. </el-col>
  297. <el-col :span="24">
  298. <el-form-item label="裁决如下:" prop="rulingFollows" :rules="[
  299. {
  300. required: true,
  301. message: '请输入',
  302. trigger: 'blur',
  303. },
  304. ]">
  305. <el-input type="textarea" autosize placeholder="请输入" v-model="form2.rulingFollows">
  306. </el-input>
  307. </el-form-item>
  308. </el-col> -->
  309. </el-form>
  310. <div slot="footer" class="dialog-footer">
  311. <el-button @click="submitForm" class="endbutton">
  312. <span>确定</span></el-button>
  313. <el-button @click="closeArbitrationresults" class="endbutton1"><span>取 消</span></el-button>
  314. </div>
  315. </el-dialog>
  316. </div>
  317. </template>
  318. <script>
  319. import { getToken } from "@/utils/auth";
  320. import { getUserProfile } from "@/api/system/user";
  321. import {
  322. writtenHear,
  323. creatTrialRecord,
  324. creatTrialRecordnew,
  325. document,
  326. } from "@/api/caseManagement/caseManagement.js";
  327. import { reserveConferenceList } from '@/api/meeting/index.js'
  328. export default {
  329. props: ["showtrialincourt", "adjudicatename", "form", "queryParams"],
  330. data() {
  331. return {
  332. formData: {},
  333. headers: {
  334. Authorization: "Bearer " + getToken(),
  335. },
  336. filedata: {
  337. annexType: 7,
  338. id:0
  339. },
  340. upLife:'',
  341. user: "",
  342. userId: 1,
  343. showArbitrationresults: false,
  344. form2: {
  345. isAbsence:0,
  346. appliIsAbsen:0
  347. },
  348. applicateArr: [], //申请人案件资料
  349. quiltArr: [], //被申请人案件资料
  350. recordArr: [], //笔录附件
  351. showsubmit: true, //生成庭审笔录,方可提交
  352. annexName: "", //笔录文件名
  353. annexPath: "", //笔录文件地址
  354. roomId:null,
  355. startTime:"",
  356. fileList:[]
  357. };
  358. },
  359. watch: {
  360. showtrialincourt: {
  361. handler(val) {
  362. if (val) {
  363. this.reserveConferenceListFn({caseId:this.form.id});
  364. this.getUser();
  365. this.formData = this.form;
  366. console.log(this.formData)
  367. this.applicateArr = [];
  368. this.quiltArr = [];
  369. this.recordArr = [];
  370. setTimeout(() => {
  371. if (this.adjudicatename.caseAttachList.length > 0) {
  372. this.adjudicatename.caseAttachList.forEach((item) => {
  373. // 申请人案件附件
  374. if (item.annexType == 2) {
  375. this.applicateArr.push({
  376. annexName: item.annexName,
  377. annexPath: item.annexPath,
  378. });
  379. }
  380. // 被申请人案件附件
  381. if (item.annexType == 6) {
  382. this.quiltArr.push({
  383. annexName: item.annexName,
  384. annexPath: item.annexPath,
  385. });
  386. }
  387. // 笔录生成附件
  388. if (item.annexType == 7) {
  389. this.recordArr.push({
  390. annexName: item.annexName,
  391. annexPath: item.annexPath,
  392. });
  393. }
  394. });
  395. }
  396. }, 1000);
  397. }
  398. },
  399. },
  400. },
  401. created() {
  402. },
  403. methods: {
  404. // 根据案件id查询会议号
  405. reserveConferenceListFn(data){
  406. reserveConferenceList(data).then(res=>{
  407. this.roomId = res.data[0].roomId;
  408. this.startTime = res.data[0].scheduleStartTime;
  409. })
  410. },
  411. // 详情显示,展示申请人案件文件
  412. toFile(item, index) {
  413. window.open(
  414. window.location.origin + "/API" + this.applicateArr[index].annexPath,
  415. "_black"
  416. );
  417. },
  418. // 被申请人文件
  419. toFile1(item, index) {
  420. window.open(
  421. window.location.origin + "/API" + this.quiltArr[index].annexPath,
  422. "_black"
  423. );
  424. },
  425. // 庭审笔录附件
  426. toFile2(item, index) {
  427. window.open(
  428. window.location.origin + "/API" + this.recordArr[index].annexPath,
  429. "_black"
  430. );
  431. },
  432. getUser() {
  433. getUserProfile().then((response) => {
  434. this.user = response.data.userName;
  435. this.userId = response.data.userId;
  436. });
  437. },
  438. // 打开会议
  439. openmeeting() {
  440. window.open(
  441. // `http://localhost:8081/#/home?name=${this.user}&id=${this.formData.id}&userId=${this.userId}`
  442. `https://txroom.xayunmei.com/#/home?name=${this.user}&id=${this.formData.id}&userId=${this.userId}&roomId=${this.roomId}`
  443. );
  444. },
  445. // 提交仲裁结果
  446. openArbitrationresults() {
  447. this.showArbitrationresults = true;
  448. },
  449. closeArbitrationresults() {
  450. this.showArbitrationresults = false;
  451. },
  452. // 提交庭审笔录弹框结果
  453. submitForm() {
  454. this.$refs["form2"].validate((valid) => {
  455. if (valid) {
  456. creatTrialRecordnew({
  457. caseAppliId: this.formData.id,
  458. // evidenDetermi: this.form2.evidenDetermi,
  459. // factDetermi: this.form2.factDetermi,
  460. // caseSketch: this.form2.caseSketch,
  461. // arbitrateThink: this.form2.arbitrateThink,
  462. // rulingFollows: this.form2.rulingFollows,
  463. // isAbsence: this.form2.isAbsence,
  464. // appliIsAbsen: this.form2.appliIsAbsen,
  465. // responCrossOpin: this.form2.responCrossOpin,
  466. // applicaCrossOpin: this.form2.applicaCrossOpin,
  467. // responDefenOpini: this.form2.responDefenOpini,
  468. isAbsence: this.form2.isAbsence,
  469. appliIsAbsen: this.form2.appliIsAbsen,
  470. respondentOpinion: this.form2.respondentOpinion,
  471. applicantOpinion: this.form2.applicantOpinion,
  472. // caseFacts: this.form2.caseFacts,
  473. // caseFocus: this.form2.caseFocus
  474. })
  475. .then((res) => {
  476. // console.log(res);
  477. // res.data.caseAttachList.forEach((item) => {
  478. // if (item.annexType == 7) {
  479. // this.recordArr.push({
  480. // annexName: item.annexName,
  481. // annexPath: item.annexPath,
  482. // });
  483. // }
  484. // });
  485. this.$modal.msgSuccess("提交成功");
  486. this.showsubmit = false;
  487. this.closeArbitrationresults();
  488. console.log(this.form2)
  489. this.form2.respondentOpinion ="";
  490. this.form2.applicantOpinion = "";
  491. })
  492. .catch((err) => { });
  493. }
  494. });
  495. },
  496. cancel() {
  497. this.$emit("canceltrialincourt");
  498. },
  499. // 提交开庭审理结果
  500. submitResults() {
  501. if(this.fileList.length==0){
  502. this.$message({
  503. showClose: true,
  504. message: '请先上传案件笔录',
  505. type:'warning'
  506. });
  507. }else{
  508. let id = this.formData.id;
  509. document({
  510. id: id,
  511. }).then((res) => {
  512. if (res.code == 200) {
  513. this.$emit("getcaseApply", this.queryParams);
  514. this.cancel();
  515. this.fileList =[]
  516. }
  517. });
  518. }
  519. },
  520. // 上传庭审笔录
  521. UploadUrl() {
  522. return window.location.origin + "/API/evidence/uploadRecord";
  523. },
  524. // 文件上传成功
  525. handlSuccess(res, file) {
  526. this.fileList.push(file)
  527. },
  528. // 文件列表移除文件时的钩子
  529. handleRemove(file, fileList) {
  530. },
  531. handlePreview(file) {
  532. },
  533. // 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。
  534. beforeRemove(file, fileList) {
  535. return this.$confirm(`确定移除 ${file.name}?`);
  536. },
  537. // 文件超出个数限制时的钩子
  538. handleExceed(files, fileList) {
  539. this.$message.warning(
  540. `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length
  541. } 个文件`
  542. );
  543. },
  544. beforeAvatarUpload(file){
  545. this.filedata.id =this.formData.id
  546. }
  547. },
  548. };
  549. </script>
  550. <style lang="scss" scoped>
  551. ::v-deep .el-dialog {
  552. width: 900px;
  553. background: #ffffff;
  554. border-radius: 20px;
  555. }
  556. .endbutton {
  557. width: 154px;
  558. height: 37px;
  559. background: #488de2;
  560. border-radius: 19px;
  561. color: #ffffff;
  562. span {
  563. width: 96px;
  564. height: 15px;
  565. font-size: 16px;
  566. font-family: Microsoft YaHei;
  567. font-weight: 400;
  568. color: #ffffff;
  569. }
  570. }
  571. .endbutton1 {
  572. width: 154px;
  573. height: 37px;
  574. background: #ffffff;
  575. border: 1px solid #d0d0d0;
  576. border-radius: 19px;
  577. // span {
  578. // width: 31px;
  579. // height: 13px;
  580. // font-size: 16px;
  581. // font-family: Microsoft YaHei;
  582. // font-weight: 400;
  583. color: #959595;
  584. // }
  585. }
  586. .caseInfo {
  587. font-size: 17px;
  588. font-weight: 600;
  589. }
  590. </style>