infoPage.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. <!--准入审核详情-->
  2. <template>
  3. <div class="info-page" v-if="pageType">
  4. <div class="top-title-box">
  5. <p>准入信息</p>
  6. <p class="button-p reset-button-one" @click="backPage">返回</p>
  7. </div>
  8. <!--<div class="item-max-box" style="margin-top:30px;">-->
  9. <!--<div class="item-title-box">{{subjectData.labSecurityApply.userType == '11'?'教师信息(关联教师信息材料):':(subjectData.labSecurityApply.userType == '22'?'学生信息(关联学生信息材料):':'')}}</div>-->
  10. <!--<div class="item-user-box">-->
  11. <!--<div>姓名:{{subjectData.labSecurityApply.userName}}</div>-->
  12. <!--<div>{{subjectData.labSecurityApply.userType == '11'?'工号:':(subjectData.labSecurityApply.userType == '22'?'学号:':'')}}{{subjectData.labSecurityApply.userNumber}}</div>-->
  13. <!--<div>学院:{{subjectData.labSecurityApply.deptName}}</div>-->
  14. <!--<div v-if="subjectData.labSecurityApply.userType == '22'">专业:{{subjectData.labSecurityApply.major}}</div>-->
  15. <!--</div>-->
  16. <!--</div>-->
  17. <div class="admittance_info">
  18. <li>申请实验室:<i>{{subjectData.labSecurityApply.laboratoryDeptName}}-{{subjectData.labSecurityApply.subjectName}}</i></li>
  19. <li>实验室负责人:<i>{{subjectData.fzrsysUser[0].nick_name}}</i></li>
  20. <li>申请时间:<i>{{subjectData.labSecurityApply.creatTime}} {{subjectData.labSecurityApply.hi}}</i></li>
  21. <li>有效期:<i>{{subjectData.labSecurityApply.validBeginTime}} 至 {{subjectData.labSecurityApply.validEndTime}}</i></li>
  22. <li>申请状态:<i>{{subjectData.labSecurityApply.auditStatus == 0?'待审核':(subjectData.labSecurityApply.auditStatus == 1?'已驳回':(subjectData.labSecurityApply.auditStatus == 2?'已通过':''))}}</i></li>
  23. <li v-if="isLook">审核时间:<i>{{subjectData.labSecurityApply.auditTime}}</i></li>
  24. <li v-if="isLook">审核人:<i>{{subjectData.labSecurityApply.auditName}}</i></li>
  25. <li v-if="isLook">审核备注:<i>{{subjectData.labSecurityApply.rejectCause}}</i></li>
  26. </div>
  27. <div class="admittance_materials">
  28. <p class="admittance_materials_title">准入材料</p>
  29. <div v-for="(item,index) in subjectData.listTemp" :key="index">
  30. <div class="item-title-box" v-if="item.materialType==2&&item.relationType==1"><i style="color: #F56C6C;">*</i>身份信息:(关联学生信息材料)</div>
  31. <div class="identity" v-if="item.materialType==2&&item.relationType==1">
  32. <li>姓名:<i>{{subjectData.sysUser.nickName}}</i></li>
  33. <li>学号:<i>{{subjectData.sysUser.userName}}</i></li>
  34. <li>卡号:<i>{{subjectData.sysUser.cardNum}}</i></li>
  35. <li>联系方式:<i>{{subjectData.sysUser.phonenumber}}</i></li>
  36. <li>导师:<i>{{subjectData.sysUser.tutorUserName}}</i></li>
  37. <li>班级:<i>{{subjectData.sysUser.grade}}</i></li>
  38. <li>学院:<i>{{subjectData.labSecurityApply.deptName}}</i></li>
  39. <li>专业:<i>{{subjectData.sysUser.major}}</i></li>
  40. <li>申请备注:<i>{{subjectData.labSecurityApply.applyCause}}</i></li>
  41. </div>
  42. <div class="item-title-box" v-if="item.materialType==1"><i style="color: #F56C6C;">*</i>{{item.materialName}}</div>
  43. <div class="file_list" v-for="(minItem,minIndex) in item.upList">
  44. <el-checkbox @change="checkedImg(minItem)" v-if="isLook" >{{minItem.name}}</el-checkbox>
  45. <i v-if="!isLook" >{{minItem.name}}</i>
  46. <i class="file_list_look" @click="lookFile(minItem)">查看</i>
  47. <!-- <a class="file_list_look" :href="item2.dataUrl.split(';')[1].replace(/,/g,'')" target="_blank">查看</a>-->
  48. <i v-if="isLook" class="file_list_look" @click="handleExport(1,minItem)">下载</i>
  49. </div>
  50. </div>
  51. <div class="item-title-box" v-if="subjectData.labSecurityApply.auditStatus!=2">审核备注:</div>
  52. <el-input type="textarea" style="margin-top: 20px" v-model="rejectCause" placeholder="请输入审核备注" maxlength="50" v-if="subjectData.labSecurityApply.auditStatus!=2"/>
  53. <div class="btn_list">
  54. <p v-if="isLook" class="button-p reset-button-one" style="width:100px;" @click="handleExport(2,'')">打包下载</p>
  55. <p v-if="isLook&&subjectData.labSecurityApply.auditStatus!=2" class="inquire-button-one" style="width:100px;" @click="backPage()">确定</p>
  56. <addPageSubPageSZDX v-if="!isLook && versionField() === 'suZhouDaXue'" :buttonData="{type:0}"></addPageSubPageSZDX>
  57. <addPageSubPagePublic v-if="!isLook && versionField() !== 'suZhouDaXue'" :buttonData="{type:0}"></addPageSubPagePublic>
  58. <addPageSubPageSZDX v-if="!isLook && versionField() === 'suZhouDaXue'" :buttonData="{type:1}"></addPageSubPageSZDX>
  59. <addPageSubPagePublic v-if="!isLook && versionField() !== 'suZhouDaXue'" :buttonData="{type:1}"></addPageSubPagePublic>
  60. <!--<p v-if="!isLook" class="button-p reset-button-one" style="width:100px;" @click="auditClick(1)">驳回</p>-->
  61. <!--<p v-if="!isLook" class="inquire-button-one" style="width:100px;" @click="auditClick(2)">通过</p>-->
  62. </div>
  63. </div>
  64. <div v-for="(item,index) in subjectData.listTemp" :key="index">
  65. <!-- <div class="item-max-box" style="margin-top:30px;" v-if="item.materialType==2&&item.relationType==1">
  66. <div class="item-title-box">{{subjectData.labSecurityApply.userType == '11'?'教师信息(关联教师信息材料):':(subjectData.labSecurityApply.userType == '22'?'学生信息(关联学生信息材料):':'')}}</div>
  67. <div class="item-user-box">
  68. <div>
  69. <p>姓名:</p>
  70. <p>{{subjectData.labSecurityApply.userName}}</p>
  71. </div>
  72. <div>
  73. <p>{{subjectData.labSecurityApply.userType == '11'?'工号:':(subjectData.labSecurityApply.userType == '22'?'学号:':'')}}</p>
  74. <p>{{subjectData.labSecurityApply.userNumber}}</p>
  75. </div>
  76. <div>
  77. <p>学院:</p>
  78. <p>{{subjectData.labSecurityApply.deptName}}</p>
  79. </div>
  80. <div v-if="subjectData.labSecurityApply.userType == '22'">
  81. <p>专业:</p>
  82. <p>{{subjectData.labSecurityApply.userMajor}}</p>
  83. </div>
  84. </div>
  85. </div>-->
  86. <!-- <div class="item-max-box" v-if="item.materialType==2&&item.relationType==2&&subjectData.labSecurityApply.userType == '22'">
  87. <div class="item-title-box">安全考试证书:</div>
  88. <img v-if="subjectData.listcert[0]" class="item-img-box" :src="subjectData.listcert[0].cert_url">
  89. <p v-if="!subjectData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</p>
  90. </div>
  91. <div class="item-max-box" v-if="item.materialType==1">
  92. <div class="item-title-box">{{item.materialName}}:</div>
  93. <div class="item-for-text-box">
  94. <p :class="iframeSrc[index].forIndex == minIndex ?'color-p':''" v-for="(minItem,minIndex) in item.upList" @click="forClick(minItem,minIndex,index)">{{minItem.name}}</p>
  95. </div>
  96. <iframe
  97. class="item-html-box"
  98. :src="iframeSrc[index].url" scrolling="auto" frameborder="0">
  99. </iframe>
  100. </div>-->
  101. </div>
  102. <!-- 添加或修改安全准入申请材料配置对话框 -->
  103. <el-dialog title="准入资格审核-未通过" :visible.sync="open" width="500px" append-to-body>
  104. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  105. <el-form-item label="未通过材料" prop="materialName">
  106. <el-checkbox-group v-model="checkList">
  107. <el-checkbox :label="item.id" style="display: block" v-for="(item,index) in subjectData.listTemp" :key="index">{{item.materialName}}</el-checkbox>
  108. </el-checkbox-group>
  109. </el-form-item>
  110. <el-form-item label="未通过原因" prop="rejectCause">
  111. <el-input type="textarea" v-model="form.rejectCause" placeholder="请输入未通过原因" maxlength="100"/>
  112. </el-form-item>
  113. </el-form>
  114. <div slot="footer" class="dialog-footer">
  115. <addPageSubPageSZDX v-if="versionField() === 'suZhouDaXue'" :buttonData="{type:2}"></addPageSubPageSZDX>
  116. <addPageSubPagePublic v-else :buttonData="{type:2}"></addPageSubPagePublic>
  117. <!--<el-button type="primary" @click="laboratoryApply(1)">确 定</el-button>-->
  118. <!--<el-button @click="cancel">取 消</el-button>-->
  119. </div>
  120. </el-dialog>
  121. </div>
  122. </template>
  123. <script>
  124. let Base64 = require('js-base64').Base64;
  125. import {downloadwBatch, getDetails, laboratoryApply} from "@/api/laboratory/approval";
  126. import {optionHazard} from "@/api/laboratory/hazard";
  127. import addPageSubPagePublic from './differenceComponent/addPageSubPagePublic.vue'
  128. import addPageSubPageSZDX from './differenceComponent/addPageSubPageSZDX.vue'
  129. export default {
  130. name: "info-page",
  131. components: {
  132. addPageSubPagePublic,
  133. addPageSubPageSZDX
  134. },
  135. props:{
  136. infoData: {},
  137. },
  138. data() {
  139. return {
  140. pageType:false,
  141. forIndex:0,
  142. subjectData:{},
  143. iframeSrc:[],
  144. open:false,
  145. form:{},
  146. checkList:[],
  147. rejectCause:'',//审核备注
  148. isLook:false,//判断是查看还是审核
  149. //打包下载查询参数
  150. packDown:{
  151. userName:'',
  152. userNumber:'',
  153. subjectName:'',
  154. fileList:'',
  155. },
  156. mrList:[],
  157. // 表单校验
  158. rules: {
  159. name: [
  160. { required: true, message: "请输入检查项名称", trigger: "blur" },
  161. { required: true, message: "请输入检查项名称", validator: this.spaceJudgment, trigger: "blur" }
  162. ],
  163. code: [
  164. { required: true, message: "请输入条款号", trigger: "blur" },
  165. { required: true, message: "请输入条款号", validator: this.spaceJudgment, trigger: "blur" }
  166. ],
  167. },
  168. };
  169. },
  170. created() {
  171. if(this.infoData.type==0){
  172. this.isLook=false;
  173. }else if(this.infoData.type==1){
  174. this.isLook=true;
  175. }
  176. this.getDetails();
  177. },
  178. methods: {
  179. lookFile(item){
  180. let visitUrl=window.location.href.split('://')[0]+'://'+ this.judgmentNetworkReturnAddress() +'/admin/'+item.url;
  181. console.log(visitUrl)
  182. window.open(localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(Base64.encode(visitUrl)));
  183. },
  184. /** 导出按钮操作 */
  185. handleExport(type,item) {
  186. console.log(item)
  187. if(type==1){//单个
  188. this.packDown.userName=this.subjectData.sysUser.nickName
  189. this.packDown.userNumber=this.subjectData.sysUser.userName
  190. this.packDown.subjectName=this.subjectData.labSecurityApply.subjectName
  191. let visitUrl=item.name+';'+item.url+',';
  192. this.packDown.fileList=visitUrl
  193. this.download('/laboratory/apply/downloadwBatch', {
  194. ...this.packDown
  195. }, this.packDown.userName+'_'+this.packDown.userNumber+'_'+this.packDown.subjectName+`.zip`)
  196. }else if(type==2){// 打包下载
  197. console.log(this.mrList)
  198. if(this.mrList.length<=0){
  199. this.msgInfo("请先勾选需要打包下载的文件!");
  200. }else{
  201. let list=[];
  202. this.mrList.forEach(function (item){
  203. list.push(item+',')
  204. })
  205. console.log(list)
  206. this.packDown.userName=this.subjectData.sysUser.nickName
  207. this.packDown.userNumber=this.subjectData.sysUser.userName
  208. this.packDown.subjectName=this.subjectData.labSecurityApply.subjectName
  209. this.packDown.fileList= list.join('@@')
  210. this.download('/laboratory/apply/downloadwBatch', {
  211. ...this.packDown
  212. }, this.packDown.userName+'_'+this.packDown.userNumber+'_'+this.packDown.subjectName+`.zip`)
  213. }
  214. }
  215. },
  216. checkedImg(item){
  217. console.log(item)
  218. if(event.target.checked==false){
  219. this.mrList.splice(this.mrList.indexOf(item.url),1);
  220. }else{
  221. this.mrList.push(item.name+';'+item.url)
  222. }
  223. console.log(this.mrList)
  224. },
  225. //审核按钮
  226. auditClick(type){
  227. let self = this;
  228. if(type == 1){
  229. this.open = true;
  230. }else if(type == 2){
  231. this.$confirm('是否确认审核?', "", {
  232. confirmButtonText: "确定",
  233. cancelButtonText: "取消",
  234. type: "warning"
  235. }).then(function() {
  236. self.laboratoryApply(type);
  237. }).then(() => {}).catch(() => {});
  238. }
  239. },
  240. laboratoryApply(type){
  241. let obj = {
  242. id:this.infoData.list.id,
  243. auditStatus:type,
  244. rejectCause:this.rejectCause
  245. };
  246. if(type == 1){
  247. obj.rejectCause = this.form.rejectCause;
  248. obj.rejectMaterial = this.checkList + '';
  249. }
  250. laboratoryApply(obj).then(response => {
  251. if(response.code==200){
  252. this.msgSuccess("操作成功");
  253. this.$parent.tableClick(1);
  254. }else if(response.code==205){
  255. this.$confirm(response.msg, "警告", {
  256. confirmButtonText: "确定",
  257. cancelButtonText: "取消",
  258. type: "warning"
  259. }).then(() => {
  260. // 确定
  261. this.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization' });
  262. }).catch(function() {
  263. // 取消
  264. this.$parent.tableClick(1);
  265. });
  266. }
  267. })
  268. },
  269. //点击切换文件
  270. forClick(item,index,bigIndex){
  271. this.iframeSrc[bigIndex].forIndex = index;
  272. this.iframeSrc[bigIndex].url = this.urlJudge(item.url)
  273. },
  274. //获取数据
  275. getDetails(){
  276. let self = this;
  277. getDetails({id:this.infoData.list.id}).then(response => {
  278. let dataList = [];
  279. for(let i=0;i<response.data.listTemp.length;i++){
  280. if(response.data.listTemp[i].materialType == 2 && response.data.listTemp[i].materialType == 2){
  281. dataList.unshift(response.data.listTemp[i]);
  282. }
  283. }
  284. for(let i=0;i<response.data.listTemp.length;i++){
  285. if(response.data.listTemp[i].materialType == 1){
  286. dataList.push(response.data.listTemp[i]);
  287. }
  288. }
  289. for(let i=0;i<response.data.listTemp.length;i++){
  290. if(response.data.listTemp[i].materialType == 2 && response.data.listTemp[i].materialType == 1){
  291. dataList.unshift(response.data.listTemp[i]);
  292. }
  293. }
  294. this.$set(response.data,'listTemp',dataList);
  295. let newList = [];
  296. for(let i=0;i<response.data.listTemp.length;i++){
  297. if(response.data.listTemp[i].materialType == 1){
  298. let maxList = [];
  299. for(let o=0;o<response.data.listTemp[i].listMr.length;o++){
  300. let bigList = response.data.listTemp[i].listMr[o].dataUrl.split(',');
  301. for(let x=0;x<bigList.length;x++){
  302. if(bigList[x]){
  303. let minList = bigList[x].split(';');
  304. let obj = {
  305. name:minList[0],
  306. url:minList[1],
  307. };
  308. maxList.push(obj);
  309. }
  310. }
  311. }
  312. response.data.listTemp[i].upList = maxList;
  313. let obj ={};
  314. if(maxList.length>0){
  315. obj = {
  316. forIndex:0,
  317. url:this.urlJudge(maxList[0].url)
  318. }
  319. }
  320. newList.push(obj);
  321. }else{
  322. let obj = {
  323. forIndex:"",
  324. url:""
  325. }
  326. newList.push(obj);
  327. }
  328. }
  329. this.$set(this,"iframeSrc",newList);
  330. this.$set(this,"subjectData",response.data);
  331. //审核备注
  332. if(this.isLook){
  333. this.rejectCause=response.data.labSecurityApply.rejectCause
  334. }
  335. this.$forceUpdate()
  336. this.pageType = true;
  337. })
  338. },
  339. //返回
  340. backPage(){
  341. if(this.isLook){
  342. this.$parent.tableClick(2);
  343. }else{
  344. this.$parent.tableClick(1);
  345. }
  346. },
  347. }
  348. };
  349. </script>
  350. <style scoped lang="scss">
  351. .info-page {
  352. flex:1;
  353. display: flex!important;
  354. flex-direction: column;
  355. /*box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);*/
  356. /*border-radius:10px;*/
  357. .top-title-box{
  358. display: flex;
  359. border-bottom: 1px solid #E0E0E0;
  360. /*padding-top:20px;*/
  361. p:nth-child(1){
  362. flex: 1;
  363. line-height:60px;
  364. color: #0045AF;
  365. font-size:18px;
  366. margin:0 0 0 40px;
  367. }
  368. p:nth-child(2){
  369. margin-right:20px;
  370. }
  371. p:nth-child(3){
  372. margin-right:20px;
  373. }
  374. p:nth-child(4){
  375. margin-right:20px;
  376. }
  377. }
  378. /*准入信息*/
  379. .admittance_info{
  380. display: flex;
  381. justify-content: flex-start;
  382. flex-wrap: wrap;
  383. padding-left: 80px;
  384. box-sizing: border-box;
  385. >li{
  386. list-style-type:none;
  387. font-size: 16px;
  388. font-family: Microsoft YaHei;
  389. font-weight: 500;
  390. color: #999999;
  391. line-height: 70px;
  392. margin-right: 20px;
  393. >i{
  394. margin-left: 10px;
  395. display: inline-block;
  396. font-style:normal;
  397. font-size: 16px;
  398. font-family: Microsoft YaHei;
  399. font-weight: 500;
  400. color: #333333;
  401. line-height: 70px;
  402. }
  403. }
  404. }
  405. /*准入材料*/
  406. .admittance_materials{
  407. padding-left: 40px;
  408. box-sizing: border-box;
  409. .item-title-box{
  410. margin-left:50px;
  411. font-size:16px;
  412. line-height:80px;
  413. }
  414. .admittance_materials_title{
  415. flex: 1;
  416. line-height:60px;
  417. color: #0045AF;
  418. font-size:18px;
  419. border-bottom: 1px solid #E0E0E0;
  420. margin-top: 0;
  421. }
  422. .identity{
  423. display: flex;
  424. justify-content: flex-start;
  425. flex-wrap: wrap;
  426. padding-left: 40px;
  427. box-sizing: border-box;
  428. >li{
  429. list-style-type:none;
  430. font-size: 16px;
  431. font-family: Microsoft YaHei;
  432. font-weight: 500;
  433. color: #999999;
  434. line-height: 70px;
  435. margin-right: 20px;
  436. >i{
  437. margin-left: 10px;
  438. display: inline-block;
  439. font-style:normal;
  440. font-size: 16px;
  441. font-family: Microsoft YaHei;
  442. font-weight: 500;
  443. color: #333333;
  444. line-height: 70px;
  445. }
  446. }
  447. }
  448. .file_list{
  449. padding-left: 80px;
  450. box-sizing: border-box;
  451. >i{
  452. font-style: normal;
  453. font-size: 14px;
  454. font-family: Microsoft YaHei;
  455. font-weight: bold;
  456. color: #0183FA;
  457. line-height: 70px;
  458. }
  459. .file_list_look{
  460. padding-left: 40px;
  461. cursor: pointer;
  462. font-style: normal;
  463. font-size: 14px;
  464. font-family: Microsoft YaHei;
  465. font-weight: bold;
  466. color: #0183FA;
  467. line-height: 70px;
  468. }
  469. }
  470. .btn_list{
  471. text-align: center;
  472. margin-top: 40px;
  473. >p{
  474. margin-right: 20px;
  475. }
  476. }
  477. }
  478. .item-max-box{
  479. .item-title-box{
  480. margin-left:50px;
  481. font-size:16px;
  482. line-height:80px;
  483. }
  484. .item-user-box{
  485. display: flex;
  486. margin-left:65px;
  487. div{
  488. display: flex;
  489. margin-right:60px;
  490. font-size:14px;
  491. }
  492. }
  493. .item-img-box{
  494. width:240px;
  495. margin-left:50px;
  496. }
  497. .item-for-text-box{
  498. margin-left:77px;
  499. p{
  500. display: inline-block;
  501. font-size:14px;
  502. line-height:40px;
  503. margin:0 57px 0 0;
  504. }
  505. .color-p{
  506. color:#0045AF;
  507. }
  508. }
  509. .item-html-box{
  510. margin:20px 0 40px 58px;
  511. width:900px;
  512. height:900px;
  513. background: #F5F5F5;
  514. }
  515. }
  516. }
  517. </style>