addPage.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. <!--安全准入办理-->
  2. <template>
  3. <div class="addPage approval_handle_addPage">
  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="addPage-max-box">
  9. <el-form :model="form" ref="form" :rules="rules" label-position="left" label-width="100px">
  10. <div class="addPage-type-one" style="text-align: center" v-if="minType == 1">
  11. <p class="addPage-type-one-title">实验室安全准入是进入实验室所需的必要手续,为保障您能够顺利申请准入资格,请在申请前请认真阅读以下内容。</p>
  12. <div style="text-align: left;margin-left:36%">
  13. <p class="addPage-type-one-title-min">1、您在申请前请提前了解所申请实验室的准入材料并提前准备相应材料;</p>
  14. <p class="addPage-type-one-title-min">2、为保障您的安全,请在申请准入前认真学习相关实验室知识;</p>
  15. <p class="addPage-type-one-title-min">3、如您提供的材料涉嫌造假,将会剥夺您的准入申请资格;</p>
  16. <el-form-item label="申请实验室" prop="subjectId" >
  17. <el-select
  18. style="width:300px;"
  19. v-model="form.subjectId"
  20. filterable
  21. remote
  22. reserve-keyword
  23. @change="selectChange"
  24. placeholder="请输入实验室关键词"
  25. :remote-method="userSelectList"
  26. :loading="loading">
  27. <el-option
  28. v-for="item in laboratoryOptions"
  29. :key="item.id"
  30. :label="item.name"
  31. :value="item.id">
  32. </el-option>
  33. </el-select>
  34. </el-form-item>
  35. <el-form-item label="申请期限" prop="dateRange" >
  36. <el-date-picker
  37. :clearable="false"
  38. v-model="dateRange"
  39. size="small"
  40. style="width: 300px"
  41. value-format="yyyy-MM-dd"
  42. type="daterange"
  43. range-separator="-"
  44. :picker-options="pickerOptions0"
  45. start-placeholder="开始日期"
  46. end-placeholder="结束日期"
  47. ></el-date-picker>
  48. </el-form-item>
  49. <el-form-item label="申请备注" prop="applyCause" >
  50. <el-input type="textarea" style="width: 300px" v-model="form.applyCause" placeholder="请输入申请备注" maxlength="50" />
  51. </el-form-item>
  52. </div>
  53. <p class="inquire-button-one" style="width:750px;margin:200px 0 0 85px;" @click="typeClick">我已选择实验室,上传准入材料</p>
  54. </div>
  55. <!--学生-->
  56. <div class="addPage-type-two" v-if="minType == 2&&subjectData.sysUser.userType == '22'">
  57. <el-form class="item-max-box" :model="queryParams" ref="queryParams" :rules="rules" label-width="80px">
  58. <div class="item-title-box">
  59. <p>*</p>
  60. <p>身份卡</p>
  61. <p>(关联学生信息材料)</p>
  62. </div>
  63. <el-row>
  64. <el-col :span="6">
  65. <el-form-item label="申请人" prop="nickName">
  66. <el-input v-model="queryParams.nickName" :disabled="nickNameIs" placeholder="学生姓名" clearable size="small" />
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="6">
  70. <el-form-item label="联系方式" prop="phonenumber">
  71. <el-input v-model="queryParams.phonenumber" :disabled="phonenumberIs" placeholder="联系方式" clearable size="small" />
  72. </el-form-item>
  73. </el-col>
  74. </el-row>
  75. <el-row>
  76. <el-col :span="6">
  77. <el-form-item label="学号" prop="userName">
  78. <el-input v-model="queryParams.userName" :disabled="userNameIs" placeholder="学号" clearable size="small" />
  79. </el-form-item>
  80. </el-col>
  81. <el-col :span="6">
  82. <el-form-item label="物理卡号" prop="cardNum">
  83. <el-input v-model="queryParams.cardNum" :disabled="cardNumIs" placeholder="物理卡号" clearable size="small" />
  84. </el-form-item>
  85. </el-col>
  86. </el-row>
  87. <el-row>
  88. <el-col :span="6">
  89. <el-form-item label="班级" prop="grade">
  90. <el-input v-model="queryParams.grade" :disabled="gradeIs" maxlength="10" placeholder="班级" clearable size="small" />
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="6">
  94. <el-form-item label="导师" prop="tutorUserId" class="form-item">
  95. <el-select
  96. :disabled="tutorUserIdIs"
  97. style="width:175px;"
  98. v-model="queryParams.tutorUserId"
  99. filterable
  100. remote
  101. clearable
  102. reserve-keyword
  103. placeholder="请输入至少2个字符搜索相关人员"
  104. :remote-method="selectUserListByName"
  105. :loading="loading">
  106. <el-option
  107. v-for="item in optionsUser"
  108. :key="item.userId"
  109. :label="item.nickName"
  110. :value="item.userId">
  111. </el-option>
  112. </el-select>
  113. </el-form-item>
  114. </el-col>
  115. </el-row>
  116. </el-form>
  117. <div v-for="(item,index) in subjectData.listStudent" :key="index">
  118. <div class="item-max-box" v-if="item.materialType==2&&item.relationType==2">
  119. <div class="item-title-box">
  120. <p>*</p>
  121. <p>安全考试证书</p>
  122. <p>(已同步证书信息):</p>
  123. </div>
  124. <img v-if="subjectData.listcert[0]" class="item-img-box" :src="subjectData.listcert[0].cert_url">
  125. <p v-if="!subjectData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</p>
  126. </div>
  127. <div class="item-max-box" v-if="item.materialType==1">
  128. <div class="item-title-box">
  129. <p>*</p>
  130. <p>{{item.materialName}}:</p>
  131. <p></p>
  132. </div>
  133. <p class="item-title-text">{{item.materialDescribe}}</p>
  134. <el-form-item label="" prop="userIds" label-width="0">
  135. <div class="item-input-box">
  136. <input type="text" v-model="form.proveImg" disabled :placeholder="item.materialName">
  137. <el-upload
  138. class="avatar-uploader"
  139. :action="uploadImgUrl"
  140. :show-file-list="false"
  141. accept=".jpeg,.gif,.png,.pdf,.doc,.docx"
  142. :on-success="(res)=>handleAvatarSuccess(res,item)"
  143. :headers="headers"
  144. :before-upload="beforeAvatarUpload">
  145. <p class="inquire-button-one">上传</p>
  146. </el-upload>
  147. </div>
  148. <!-- <div style="color: #999;padding-left: 12px;">此处为准入条件中的材料备注</div>-->
  149. <div class="item-input-for-box">
  150. <!--循环-->
  151. <div class="item-input-for-big" v-for="(minItem,minIndex) in item.upList" :key="minIndex">
  152. <div class="item-input-for-min">
  153. <p>{{minItem.name}}</p>
  154. <!-- <a class="file_list_look" :href="minItem.url" target="_blank">查看</a>-->
  155. <i style="font-style:normal;" @click="lookFile(minItem.url)">查看</i>
  156. <i style="font-style:normal;" @click="delUpData(item,minIndex)">删除</i>
  157. </div>
  158. </div>
  159. </div>
  160. </el-form-item>
  161. </div>
  162. </div>
  163. </div>
  164. <!--老师-->
  165. <div class="addPage-type-two" v-if="minType == 2&&subjectData.sysUser.userType == '11'" v-for="(item,index) in subjectData.listTeacher" :key="index">
  166. <div class="item-max-box" v-if="item.materialType==2&&item.relationType==1">
  167. <div class="item-title-box">
  168. <p>*</p>
  169. <p>身份卡</p>
  170. <p>(关联教职工信息材料):</p>
  171. </div>
  172. <div class="item-user-box">
  173. <div>
  174. <p>姓名:</p>
  175. <p>{{subjectData.sysUser.nickName}}</p>
  176. </div>
  177. <div>
  178. <p>工号:</p>
  179. <p>{{subjectData.sysUser.userName}}</p>
  180. </div>
  181. <div>
  182. <p>学院:</p>
  183. <p>{{subjectData.sysUser.dept.deptName}}</p>
  184. </div>
  185. </div>
  186. </div>
  187. <div class="item-max-box" v-if="item.materialType==1">
  188. <div class="item-title-box">
  189. <p>*</p>
  190. <p>{{item.materialName}}:</p>
  191. <p></p>
  192. </div>
  193. <p class="item-title-text">{{item.materialDescribe}}</p>
  194. <el-form-item label="" prop="userIds" label-width="0">
  195. <div class="item-input-box">
  196. <input type="text" v-model="form.proveImg" disabled :placeholder="item.materialName">
  197. <el-upload
  198. class="avatar-uploader"
  199. :action="uploadImgUrl"
  200. :show-file-list="false"
  201. :on-success="(res)=>handleAvatarSuccess(res,item)"
  202. :headers="headers"
  203. :before-upload="beforeAvatarUpload">
  204. <p class="inquire-button-one">上传</p>
  205. </el-upload>
  206. </div>
  207. <div class="item-input-for-box">
  208. <!--循环-->
  209. <div class="item-input-for-big" v-for="(minItem,minIndex) in item.upList" :key="minIndex">
  210. <div class="item-input-for-min">
  211. <p>{{minItem.name}}</p>
  212. <img src="@/assets/newImages/off.png" @click="delUpData(item,minIndex)">
  213. </div>
  214. </div>
  215. </div>
  216. </el-form-item>
  217. </div>
  218. </div>
  219. <p v-if="minType == 2" class="inquire-button-one" style="width:750px;margin:50px 0 50px 85px;" @click="upDataButton">准入材料上传完毕,提交申请</p>
  220. </el-form>
  221. </div>
  222. <el-image style=" width: 10px;height: 10px;visibility: hidden;" ref="preview" :src="url" :preview-src-list="srcList"> </el-image>
  223. </div>
  224. </template>
  225. <script>
  226. let Base64 = require('js-base64').Base64;
  227. import { mapGetters } from 'vuex'
  228. import { getToken } from "@/utils/auth";
  229. import { materialApply,subjectList,materialAdd,materialUpdate,selectUserListByName} from "@/api/laboratory/approval";
  230. export default {
  231. name: "addPage",
  232. props:{
  233. infoData: {},
  234. infoType:{},
  235. },
  236. data() {
  237. return {
  238. url:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
  239. srcList:[ 'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
  240. 'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'],
  241. uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
  242. headers: {
  243. Authorization: "Bearer " + getToken(),
  244. },
  245. // 设置只能选择当前日期及之后的日期
  246. pickerOptions0: {
  247. disabledDate(time) {
  248. return time.getTime() < Date.now() - 8.64e7;//如果没有后面的-8.64e7就是不可以选择今天的
  249. }
  250. },
  251. loading:false,
  252. minType:1,
  253. laboratoryOptions:[],
  254. form:{
  255. validTime:12,
  256. subjectId:"",
  257. subjectName:"",
  258. validBegin_time:"",//开始时间
  259. validEnd_time:"",//结束时间
  260. applyCause:"",//备注
  261. },
  262. dateRange:[],
  263. // 表单校验
  264. rules: {
  265. validTime: [
  266. { required: true, message: "请选择资格有效期", trigger: "blur" }
  267. ],
  268. subjectId: [
  269. { required: true, message: "请选择实验室", trigger: "blur" }
  270. ],
  271. chName: [
  272. { required: true, message: "请输入标题", trigger: "blur" },
  273. { required: true, message: "请输入标题", validator: this.spaceJudgment, trigger: "blur" }
  274. ],
  275. code: [
  276. { required: true, message: "请输入编号", trigger: "blur" },
  277. { required: true, message: "请输入编号", validator: this.spaceJudgment, trigger: "blur" }
  278. ],
  279. content: [
  280. { required: true, message: "请编辑详情", trigger: "change" },
  281. { required: true, message: "请编辑详情", validator: this.spaceJudgment, trigger: "blur" }
  282. ],
  283. /* applyCause: [
  284. { required: true, message: "请输入备注", trigger: "blur" }
  285. ],*/
  286. dateRange: [
  287. {type: '', required: true, message: "请选择申请期限", trigger: ' ' }
  288. ],
  289. /*身份卡信息校验*/
  290. nickName: [
  291. { required: true, message: "请输入学生姓名", trigger: "change" },
  292. { required: true, message: "请输入学生姓名", validator: this.spaceJudgment, trigger: "blur" }
  293. ],
  294. phonenumber: [
  295. { required: true, message: "请输入联系方式", trigger: "change" },
  296. { required: true, message: "请输入联系方式", validator: this.spaceJudgment, trigger: "blur" }
  297. ],
  298. userName: [
  299. { required: true, message: "请输入学号", trigger: "change" },
  300. { required: true, message: "请输入学号", validator: this.spaceJudgment, trigger: "blur" }
  301. ],
  302. cardNum: [
  303. { required: true, message: "请输入物理卡号", trigger: "change" },
  304. { required: true, message: "请输入物理卡号", validator: this.spaceJudgment, trigger: "blur" }
  305. ],
  306. tutorUserId: [
  307. { required: true, message: "请输入导师", trigger: "change" },
  308. { required: true, message: "请输入导师", validator: this.spaceJudgment, trigger: "blur" }
  309. ],
  310. grade: [
  311. { required: true, message: "请输入班级", trigger: "change" },
  312. { required: true, message: "请输入班级", validator: this.spaceJudgment, trigger: "blur" }
  313. ],
  314. },
  315. subject:{},
  316. //实验室准入条件
  317. subjectData:{},
  318. upDataName:"",
  319. queryParams:{
  320. },
  321. nickNameIs:false,
  322. phonenumberIs:false,
  323. userNameIs:false,
  324. cardNumIs:false,
  325. tutorUserIdIs:false,
  326. gradeIs:false,
  327. optionsUser:[],
  328. remark:'1',
  329. };
  330. },
  331. computed: {
  332. ...mapGetters([
  333. "name"
  334. ]),
  335. },
  336. created() {
  337. if(this.infoType){
  338. console.log("重新审核");
  339. this.remark='';
  340. this.form.subjectId = this.infoData.labSecurityApply.subjectId;
  341. console.log(this.infoData)
  342. this.getApproval();
  343. }
  344. },
  345. methods: {
  346. //查看
  347. lookFile(item){
  348. console.log(item)
  349. var originUrl = window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress()+'/admin/'+item; //要预览文件的访问地址
  350. window.open(localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(Base64.encode(originUrl)));
  351. },
  352. /** 导师-懒加载 */
  353. selectUserListByName(query) {
  354. if (query !== '' && query.length>1) {
  355. let obj={
  356. nickName:query,
  357. userType:'11',
  358. }
  359. selectUserListByName(obj).then(response => {
  360. this.optionsUser = response.data;
  361. });
  362. } else {
  363. this.optionsUser = [];
  364. }
  365. },
  366. materialUpdate(obj){
  367. materialUpdate(obj).then(response => {
  368. this.msgSuccess("提交成功");
  369. this.$parent.pageClick(1);
  370. })
  371. },
  372. materialAdd(obj){
  373. materialAdd(obj).then(response => {
  374. this.msgSuccess("提交成功");
  375. this.$parent.pageClick(1);
  376. })
  377. },
  378. //提交按钮
  379. upDataButton(){
  380. let self = this;
  381. this.$refs["queryParams"].validate(valid => {
  382. if (valid) {
  383. if(this.dateRange&&this.dateRange.length>0){
  384. this.form.validBegin_time=this.dateRange[0]
  385. this.form.validEnd_time=this.dateRange[1]
  386. }else{
  387. this.form.validBegin_time=null;
  388. this.form.validEnd_time=null
  389. }
  390. let sysUser={
  391. nickName:this.queryParams.nickName,
  392. phonenumber:this.queryParams.phonenumber,
  393. userName:this.queryParams.userName,
  394. cardNum:this.queryParams.cardNum,
  395. tutorUserId:this.queryParams.tutorUserId,
  396. grade:this.queryParams.grade,
  397. tutorUserName:this.queryParams.tutorUserName,
  398. userId:this.queryParams.userId,
  399. };
  400. let obj = {
  401. subjectAdminid:this.subjectData.fzrsysUser[0].user_id,
  402. userNumber:this.subjectData.sysUser.userName,//学号/工号
  403. userMajor:this.subjectData.sysUser.major,//专业
  404. deptId:this.subject.deptId, //NULL部门id
  405. deptName:this.subject.deptName, //NULL部门名称
  406. subjectId:this.subject.id, //NULL实验室id
  407. subjectName:this.subject.name, //NULL实验室名称
  408. auditStatus:"0", //NULL审核状态 0待审核 1驳回 2通过
  409. //validLength:this.form.validTime, //NULL有效期 月份时长
  410. mrList:[],//上传资料
  411. sysUser:sysUser,//身份卡用户信息
  412. validBeginTime:this.form.validBegin_time,//申请期限开始时间
  413. validEndTime:this.form.validEnd_time,//申请期限结束时间
  414. applyCause:this.form.applyCause,//申请备注
  415. };
  416. if(this.subjectData.sysUser.userType == '22'){
  417. for(let i=0;i<self.subjectData.listStudent.length;i++){
  418. if(self.subjectData.listStudent[i].materialType==1){
  419. if(!self.subjectData.listStudent[i].upList[0]){
  420. this.msgError(self.subjectData.listStudent[i].materialName+"未上传");
  421. return
  422. }else{
  423. let upData = {
  424. materialId:self.subjectData.listStudent[i].id,
  425. dataName:self.subjectData.listStudent[i].materialName,
  426. dataDescribe:self.subjectData.listStudent[i].materialDescribe,
  427. dataUrl:"",
  428. };
  429. for(let o=0;o<self.subjectData.listStudent[i].upList.length;o++){
  430. upData.dataUrl = upData.dataUrl + self.subjectData.listStudent[i].upList[o].name + ';' + self.subjectData.listStudent[i].upList[o].url + ',';
  431. }
  432. obj.mrList.push(upData);
  433. }
  434. }
  435. }
  436. }else if(this.subjectData.sysUser.userType == '11'){
  437. for(let i=0;i<self.subjectData.listTeacher.length;i++){
  438. if(self.subjectData.listTeacher[i].materialType==1){
  439. if(!self.subjectData.listTeacher[i].upList[0]){
  440. this.msgError(self.subjectData.listTeacher[i].materialName+"未上传");
  441. return
  442. }else{
  443. let upData = {
  444. materialId:self.subjectData.listTeacher[i].id,
  445. dataName:self.subjectData.listTeacher[i].materialName,
  446. dataDescribe:self.subjectData.listTeacher[i].materialDescribe,
  447. dataUrl:"",
  448. };
  449. for(let o=0;o<self.subjectData.listTeacher[i].upList.length;o++){
  450. upData.dataUrl = upData.dataUrl + self.subjectData.listTeacher[i].upList[o].name + ';' + self.subjectData.listTeacher[i].upList[o].url + ',';
  451. }
  452. obj.mrList.push(upData);
  453. }
  454. }
  455. }
  456. }
  457. if(this.infoType){
  458. obj.id = this.infoData.labSecurityApply.id;
  459. this.materialUpdate(obj);
  460. }else{
  461. this.materialAdd(obj);
  462. }
  463. }
  464. })
  465. },
  466. //删除对应资料
  467. delUpData(item,index){
  468. console.log("item",item);
  469. console.log("index",index);
  470. item.upList.splice(index,1);
  471. this.$forceUpdate()
  472. },
  473. //查看对应资料
  474. lookUpData(item,index){
  475. this.$refs.preview.showViewer = true
  476. console.log('查看')
  477. console.log("item",item);
  478. console.log("index",index);
  479. // this.$forceUpdate()
  480. },
  481. //上传相关
  482. handleAvatarSuccess(res, item) {
  483. console.log('resresresresresresresres',res);
  484. console.log('itemitemitemitemitemitemitemitemitem',item);
  485. if(item.upList.length>4){
  486. this.msgError('已到达上传数量上限')
  487. return
  488. }
  489. let suffix= this.upDataName.split('.')[this.upDataName.split('.').length - 1]
  490. let suffixName= this.upDataName.split('.')[this.upDataName.split('.').length - 2]
  491. //判断文件名中是否有逗号和分号
  492. if(suffixName.indexOf(',')==-1 && suffixName.indexOf(';')==-1){
  493. }else{
  494. this.$message.info('文件名里包含逗号或分号,请修改后重新上传!')
  495. return
  496. }
  497. let fileTypeArr= item.fileType.split(',')
  498. let strArr = [];
  499. fileTypeArr.forEach(function (item){
  500. if(item=='1'){
  501. strArr.push('pdf')
  502. }else if(item=='2'){
  503. strArr.push('doc','docx')
  504. }else if(item=='3'){
  505. strArr.push('png','jpg','gif')
  506. }
  507. })
  508. if(strArr.indexOf(suffix)==-1){
  509. console.log('请上传'+strArr.join(',')+'格式文件')
  510. this.$message.error('请上传'+strArr.join(',')+'格式文件');
  511. }else{
  512. console.log('上传')
  513. let obj ={
  514. name:this.queryParams.nickName+item.materialName+'.'+this.upDataName.split('.')[this.upDataName.split('.').length - 1],
  515. url:res.data.url,
  516. };
  517. item.upList.push(obj);
  518. // this.form.cover = res.data.url;
  519. this.$forceUpdate()
  520. }
  521. },
  522. beforeAvatarUpload(file) {
  523. //学生名称+文件名称
  524. // console.log('file',file);
  525. // console.log('name',this.name);
  526. let type = false;
  527. if (file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'image/gif'|| file.type == 'application/pdf' || file.type == 'application/msword' || file.type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {
  528. this.upDataName = file.name;
  529. type = true;
  530. }else{
  531. this.$message.error('只能上传png/jpeg/gif/doc/docx格式');
  532. type = false;
  533. }
  534. return type;
  535. },
  536. //实验室选择
  537. selectChange(e){
  538. let self = this;
  539. for(let i=0;i<self.laboratoryOptions.length;i++){
  540. if(self.laboratoryOptions[i].id == e){
  541. this.$set(this,"subject",self.laboratoryOptions[i]);
  542. }
  543. }
  544. this.$set(this.form,"subjectId",e);
  545. },
  546. //获取当前实验室准入配置
  547. getApproval(){
  548. let self = this;
  549. materialApply({subjectId:this.form.subjectId,remark:this.remark,beginTime:this.dateRange[0],endTime:this.dateRange[1]}).then(response => {
  550. /* if(response.data.sysUser.userType!='11'&&response.data.sysUser.userType!='22'){
  551. this.msgError("您不是学生也不是教职工,无法申请准入");
  552. return
  553. }*/
  554. if(response.data.sysUser.userType!='22'){
  555. this.msgError("您不是学生,无法申请准入");
  556. return
  557. }
  558. if(response.data.sysUser.userType == '11'){
  559. if(!response.data.listTeacher[0]){
  560. this.msgError("该实验室未设置准入条件")
  561. return
  562. }
  563. }
  564. if(response.data.sysUser.userType == '22'){
  565. if(!response.data.listStudent[0]){
  566. this.msgError("该实验室未设置准入条件")
  567. return
  568. }
  569. }
  570. if(response.data.listStudent){
  571. for(let i=0;i<response.data.listStudent.length;i++){
  572. if(response.data.listStudent[i].materialType == 1){
  573. response.data.listStudent[i].upList = [];
  574. }
  575. }
  576. }
  577. if(response.data.listTeacher){
  578. for(let i=0;i<response.data.listTeacher.length;i++){
  579. if(response.data.listTeacher[i].materialType == 1){
  580. response.data.listTeacher[i].upList = [];
  581. }
  582. }
  583. }
  584. this.subjectData = response.data;
  585. this.queryParams=response.data.sysUser;//个人信息
  586. //循环判断是否有值禁用
  587. console.log(this.queryParams)
  588. if(this.queryParams.nickName){
  589. this.nickNameIs=true;
  590. }
  591. if(this.queryParams.phonenumber){
  592. this.phonenumberIs=true;
  593. }
  594. if(this.queryParams.userName){
  595. this.userNameIs=true;
  596. }
  597. if(this.queryParams.cardNum){
  598. this.cardNumIs=true;
  599. }
  600. if(this.queryParams.tutorUserId){
  601. this.tutorUserIdIs=true;
  602. }
  603. if(this.queryParams.grade){
  604. this.gradeIs=true;
  605. }
  606. /* if(this.queryParams.adminId){
  607. this.$set(this.form,'adminId',this.queryParams.adminId)
  608. this.userSelectList(this.queryParams.adminName);
  609. }*/
  610. if(this.queryParams.tutorUserId){
  611. this.$set(this.queryParams,'tutorUserId',this.queryParams.tutorUserId)
  612. this.selectUserListByName(this.queryParams.tutorUserName);
  613. }
  614. this.minType = 2;
  615. if(this.infoType){
  616. this.form.validTime = this.infoData.labSecurityApply.validLength;
  617. for(let i=0;i<self.infoData.listTemp.length;i++){
  618. if(self.infoData.listTemp[i].materialType == 1){
  619. if(self.subjectData.sysUser.userType == '11'){
  620. for(let o=0;o<self.subjectData.listTeacher.length;o++){
  621. if(self.subjectData.listTeacher[o].materialType == 1 && self.subjectData.listTeacher[o].id == self.infoData.listTemp[i].id){
  622. self.subjectData.listTeacher[o].upList = JSON.parse(JSON.stringify(self.infoData.listTemp[i].upList));
  623. }
  624. }
  625. }else if(self.subjectData.sysUser.userType == '22'){
  626. for(let o=0;o<self.subjectData.listStudent.length;o++){
  627. if(self.subjectData.listStudent[o].materialType == 1 && self.subjectData.listStudent[o].id == self.infoData.listTemp[i].id){
  628. // self.subjectData.listStudent[o].upList = JSON.parse(JSON.stringify(self.infoData.listTemp[i].listMr));
  629. self.subjectData.listStudent[o].upList = JSON.parse(JSON.stringify(self.infoData.listTemp[i].upList));
  630. }
  631. }
  632. }
  633. }
  634. }
  635. }
  636. });
  637. },
  638. //状态切换
  639. typeClick(){
  640. if(!this.form.subjectId){
  641. this.msgError("请选择实验室");
  642. return
  643. }
  644. if(this.dateRange.length<=0){
  645. this.msgError("请选择申请期限");
  646. return
  647. }
  648. /*if(!this.form.applyCause){
  649. this.msgError("请输入申请备注");
  650. return
  651. }*/
  652. this.getApproval();
  653. },
  654. //返回
  655. backPage(){
  656. this.$parent.pageClick(1);
  657. },
  658. //懒加载
  659. userSelectList(e){
  660. subjectList({name:e}).then(response => {
  661. this.laboratoryOptions = response.data;
  662. });
  663. },
  664. }
  665. };
  666. </script>
  667. <style scoped lang="scss">
  668. .addPage {
  669. flex:1;
  670. display: flex!important;
  671. flex-direction: column;
  672. box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
  673. border-radius:10px;
  674. .top-title-box{
  675. display: flex;
  676. border-bottom: 1px solid #E0E0E0;
  677. padding-top:20px;
  678. p:nth-child(1){
  679. flex: 1;
  680. line-height:60px;
  681. color: #0045AF;
  682. font-size:18px;
  683. margin:0 0 0 40px;
  684. }
  685. p:nth-child(2){
  686. margin-right:20px;
  687. }
  688. }
  689. .addPage-max-box{
  690. flex:1;
  691. padding:20px 20px 20px!important;
  692. .addPage-type-one{
  693. .addPage-type-one-title{
  694. font-size:16px;
  695. font-weight:700;
  696. line-height:18px;
  697. margin:26px 38px;
  698. }
  699. .addPage-type-one-title-min{
  700. font-size:14px;
  701. line-height:16px;
  702. margin:20px 62px 20px 0;
  703. color:#666666;
  704. }
  705. }
  706. .addPage-type-two{
  707. p{
  708. margin:0;
  709. }
  710. .item-max-box{
  711. margin-left:58px;
  712. .item-title-box{
  713. display: flex;
  714. p{
  715. font-size:16px;
  716. line-height:80px;
  717. }
  718. p:nth-child(1){
  719. color:red;
  720. margin-right:10px;
  721. }
  722. p:nth-child(2){
  723. color:#333;
  724. }
  725. p:nth-child(3){
  726. color:#999;
  727. }
  728. }
  729. .item-user-box{
  730. display: flex;
  731. margin-left:15px;
  732. div{
  733. display: flex;
  734. margin-right:60px;
  735. p{
  736. font-size:14px;
  737. }
  738. p:nth-child(1){
  739. color:#999;
  740. }
  741. p:nth-child(2){
  742. color:#666;
  743. }
  744. }
  745. }
  746. .item-title-text{
  747. margin-left:15px;
  748. font-size:14px;
  749. line-height:20px;
  750. color:#999;
  751. }
  752. .item-input-box{
  753. display: flex;
  754. margin:20px 0 0 15px;
  755. input{
  756. width:390px;
  757. height:40px;
  758. padding:0 20px;
  759. margin-right:20px;
  760. }
  761. }
  762. .item-input-for-box{
  763. margin:20px 0 0 5px;
  764. .item-input-for-big{
  765. display: inline-block;
  766. border-radius:6px;
  767. background: rgba(1,131,250,0.2);
  768. margin:0 10px 10px;
  769. .item-input-for-min{
  770. display: flex;
  771. p{
  772. flex:1;
  773. padding:0 20px;
  774. margin:0;
  775. line-height:30px;
  776. color:#0183FA;
  777. }
  778. i{
  779. line-height:30px;
  780. color:#0183FA;
  781. margin-right: 8px;
  782. cursor: pointer;
  783. }
  784. a{
  785. line-height:30px;
  786. color:#0183FA;
  787. margin-right: 8px;
  788. cursor: pointer;
  789. }
  790. img{
  791. width:16px;
  792. height:16px;
  793. margin:7px 7px;
  794. cursor: pointer;
  795. }
  796. }
  797. }
  798. }
  799. .item-img-box{
  800. width:240px;
  801. margin-left:15px;
  802. }
  803. }
  804. }
  805. }
  806. }
  807. /*点击查看图片预览*/
  808. /* .my-img {
  809. width: 10px;
  810. height: 10px;
  811. visibility: hidden;
  812. }*/
  813. </style>