studentInfo.vue 101 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545
  1. <template>
  2. <div class="content-box">
  3. <div class="left">
  4. <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
  5. <span class="cameratxt">学生信息管理</span>
  6. </div>
  7. <div class="scroll">
  8. <div class="middle">
  9. <div class="filter">
  10. <div class="condition">
  11. <span>校区 :</span>
  12. <el-select
  13. clearable
  14. v-model="searchInput.schoolId"
  15. placeholder="请选择校区"
  16. >
  17. <el-option label="墨轩湖校区" value="墨轩湖校区" />
  18. <el-option label="黄家湖校区" value="黄家湖校区" />
  19. </el-select>
  20. </div>
  21. <div class="condition">
  22. <span>院系 :</span>
  23. <el-select
  24. @change="collegeChange"
  25. v-model="searchInput.college"
  26. placeholder="请选择院系"
  27. clearable
  28. >
  29. <el-option
  30. v-for="i in collegeData"
  31. :key="i.id"
  32. :label="i.name"
  33. :value="i.id"
  34. />
  35. </el-select>
  36. </div>
  37. <div class="condition">
  38. <span>专业 :</span>
  39. <el-select
  40. clearable
  41. @change="majorChange"
  42. v-model="searchInput.major"
  43. placeholder="请选择专业"
  44. >
  45. <el-option
  46. v-for="i in majorData"
  47. :key="i.id"
  48. :label="i.name"
  49. :value="i.id"
  50. />
  51. </el-select>
  52. </div>
  53. <div class="condition">
  54. <span>班级 :</span>
  55. <el-select
  56. clearable
  57. v-model="searchInput.classstr"
  58. placeholder="请选择专业"
  59. >
  60. <el-option
  61. v-for="i in classstrData"
  62. :key="i.id"
  63. :label="i.name"
  64. :value="i.id"
  65. />
  66. </el-select>
  67. </div>
  68. <div class="condition">
  69. <span>交通方式 :</span>
  70. <el-select
  71. clearable
  72. v-model="searchInput.trafficMethod"
  73. placeholder="请选择交通方式"
  74. >
  75. <el-option label="火车" value="火车" />
  76. <el-option label="飞机" value="飞机" />
  77. <el-option label="汽车" value="汽车" />
  78. <el-option label="自驾" value="自驾" />
  79. <el-option label="其他" value="其他" />
  80. </el-select>
  81. </div>
  82. <div class="condition">
  83. <span>填报状态 :</span>
  84. <el-select
  85. clearable
  86. v-model="searchInput.fillStatus"
  87. placeholder="请选择填报状态"
  88. >
  89. <el-option label="已填报" value="已填报" />
  90. <el-option label="未填报" value="未填报" />
  91. </el-select>
  92. </div>
  93. <div class="condition">
  94. <span>是否达到缴费标准 :</span>
  95. <el-select
  96. clearable
  97. v-model="searchInput.isPay"
  98. placeholder="请选择"
  99. >
  100. <el-option label="是" value="1" />
  101. <el-option label="否" value="0" />
  102. </el-select>
  103. </div>
  104. <div class="condition">
  105. <span>是否入住 :</span>
  106. <el-select
  107. clearable
  108. v-model="searchInput.isCheck"
  109. placeholder="请选择"
  110. >
  111. <el-option label="已入住" value="1" />
  112. <el-option label="未入住" value="0" />
  113. </el-select>
  114. </div>
  115. <div class="condition">
  116. <span>车牌信息 :</span>
  117. <el-select
  118. clearable
  119. v-model="searchInput.carNumber"
  120. placeholder="请选择"
  121. >
  122. <el-option label="有" value="1" />
  123. <el-option label="无" value="0" />
  124. </el-select>
  125. </div>
  126. <div class="condition">
  127. <span>现场报到 :</span>
  128. <el-select
  129. clearable
  130. v-model="searchInput.isRegistered"
  131. placeholder="请选择现场报到"
  132. >
  133. <el-option label="已报到" value="1" />
  134. <el-option label="未报到" value="2" />
  135. </el-select>
  136. </div>
  137. <div class="condition">
  138. <span>层次 :</span>
  139. <el-select
  140. clearable
  141. v-model="searchInput.batchValue"
  142. placeholder="请选择层次"
  143. >
  144. <el-option label="本科" value="本科" />
  145. <el-option label="专升本" value="专升本" />
  146. <el-option label="专科" value="专科" />
  147. </el-select>
  148. </div>
  149. <div class="condition">
  150. <span>姓名 :</span>
  151. <el-input
  152. clearable
  153. v-model.trim="searchInput.name"
  154. class="w-50 m-2"
  155. placeholder="请输入姓名"
  156. style="width: 180px"
  157. @clear="searchBtn"
  158. />
  159. </div>
  160. <div class="condition">
  161. <span>年份 :</span>
  162. <el-select
  163. clearable
  164. v-model="searchInput.yearId"
  165. placeholder="请选择年份"
  166. >
  167. <el-option
  168. v-for="i in yearData"
  169. :key="i.id"
  170. :label="i.name"
  171. :value="i.id"
  172. />
  173. </el-select>
  174. </div>
  175. <el-button
  176. style="margin-left: 20px"
  177. color="rgba(38, 151, 255, 1)"
  178. type="primary"
  179. class="search"
  180. @click="searchBtn"
  181. ><span>查询</span></el-button
  182. >
  183. <el-button plain color="rgba(43, 153, 255, 1)" @click="resetBtn"
  184. >重置</el-button
  185. >
  186. </div>
  187. <!-- 按钮列表 -->
  188. <div class="gongneng">
  189. <el-button
  190. v-if="store.BtnRole('studentManagementSetting1')"
  191. type="primary"
  192. color="rgba(38, 151, 255, 1)"
  193. @click="buildImportBtn"
  194. >导入</el-button
  195. >
  196. <el-button
  197. v-if="store.BtnRole('studentManagementSetting2')"
  198. type="primary"
  199. style="margin-left: 0"
  200. color="rgba(48, 201, 191, 1)"
  201. @click="buildExportbtn"
  202. >导出</el-button
  203. >
  204. <el-button
  205. v-if="store.BtnRole('studentManagementSetting3')"
  206. type="primary"
  207. style="margin-left: 0"
  208. color="rgba(38, 151, 255, 1)"
  209. @click="addlist"
  210. >新增学生</el-button
  211. >
  212. </div>
  213. </div>
  214. <div class="footer" v-loading="loading">
  215. <el-table
  216. :row-class-name="tableRowClassName"
  217. :data="tableData.list"
  218. style="width: 100%"
  219. :header-cell-style="{
  220. background: 'rgba(240, 243, 247, 1)',
  221. height: '50px',
  222. border: 0,
  223. }"
  224. >
  225. <el-table-column
  226. width="160"
  227. align="center"
  228. prop="admissNum"
  229. label="录取号"
  230. />
  231. <el-table-column
  232. width="120"
  233. align="center"
  234. prop="name"
  235. label="姓名"
  236. />
  237. <el-table-column
  238. width="190"
  239. align="center"
  240. prop="cardId"
  241. label="身份证号"
  242. />
  243. <el-table-column
  244. width="160"
  245. align="center"
  246. prop="college"
  247. label="院系"
  248. >
  249. <template #default="{ row }">
  250. <span>{{ row.college }}</span>
  251. </template>
  252. </el-table-column>
  253. <el-table-column
  254. width="190"
  255. align="center"
  256. prop="major"
  257. label="专业"
  258. />
  259. <el-table-column
  260. width="220"
  261. align="center"
  262. prop="classstr"
  263. label="班级"
  264. />
  265. <el-table-column
  266. width="100"
  267. align="center"
  268. prop="trafficMethod"
  269. label="交通方式"
  270. >
  271. <template #default="{ row }">
  272. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec">{{
  273. row.trafficMethod
  274. }}</span>
  275. <span v-else>{{ row.trafficMethod }}</span>
  276. </template>
  277. </el-table-column>
  278. <el-table-column
  279. width="160"
  280. align="center"
  281. prop="arrive"
  282. label="到站地点"
  283. >
  284. <template #default="{ row }">
  285. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec">{{
  286. row.arrive
  287. }}</span>
  288. <span v-else>{{ row.arrive }}</span>
  289. </template>
  290. </el-table-column>
  291. <el-table-column
  292. width="120"
  293. align="center"
  294. prop="accompanyNum"
  295. label="陪同人数"
  296. >
  297. <template #default="{ row }">
  298. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec">{{
  299. row.accompanyNum
  300. }}</span>
  301. <span v-else>{{ row.accompanyNum }}</span>
  302. </template>
  303. </el-table-column>
  304. <el-table-column
  305. width="120"
  306. align="center"
  307. prop="dormitory"
  308. label="填报状态"
  309. >
  310. <template #default="{ row }">
  311. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec"
  312. >已填报</span
  313. >
  314. <span v-else>未填报</span>
  315. </template>
  316. </el-table-column>
  317. <el-table-column
  318. width="120"
  319. align="center"
  320. prop="dormitory"
  321. label="应缴金额"
  322. >
  323. <template #default="{ row }">
  324. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec">{{
  325. row.amountPayable
  326. }}</span>
  327. <span v-else>{{ row.amountPayable }}</span>
  328. </template>
  329. </el-table-column>
  330. <el-table-column
  331. width="120"
  332. align="center"
  333. prop="dormitory"
  334. label="实付金额"
  335. >
  336. <template #default="{ row }">
  337. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec">{{
  338. row.payAmount
  339. }}</span>
  340. <span v-else>{{ row.payAmount }}</span>
  341. </template>
  342. </el-table-column>
  343. <el-table-column
  344. width="180"
  345. align="center"
  346. prop="dormitory"
  347. label="宿舍信息"
  348. >
  349. <template #default="{ row }">
  350. <span v-if="row.fillStatus == '已填报'" style="color: #2279ec">{{
  351. row.dormitory
  352. }}</span>
  353. <span v-else>{{ row.dormitory }}</span>
  354. </template>
  355. </el-table-column>
  356. <el-table-column
  357. width="160"
  358. align="center"
  359. prop="isRegistered"
  360. label="现场报到"
  361. >
  362. <template #default="{ row }">
  363. <span v-if="row.isRegistered == 1" style="color: #2279ec"
  364. >已报到</span
  365. >
  366. <span v-else>未报到</span>
  367. </template>
  368. </el-table-column>
  369. <el-table-column
  370. align="center"
  371. label="操作"
  372. fixed="right"
  373. min-width="230"
  374. >
  375. <template #default="{ row }">
  376. <div class="options">
  377. <span
  378. class="info"
  379. v-if="store.BtnRole('studentManagementSetting4')"
  380. @click="infoStudent(row)"
  381. >详情</span
  382. >
  383. <span
  384. class="edit"
  385. v-if="store.BtnRole('studentManagementSetting5')"
  386. @click="updateS(row)"
  387. >编辑</span
  388. >
  389. <span
  390. class="delete"
  391. v-if="store.BtnRole('studentManagementSetting6')"
  392. @click="deleteS(row)"
  393. >删除</span
  394. >
  395. <span
  396. class="delete"
  397. style="color: #c003a2; margin-left: 15px"
  398. v-if="
  399. store.BtnRole('studentManagementSetting8') &&
  400. row.isRegistered != 1
  401. "
  402. @click="registerS(row, 1)"
  403. >现场报到</span
  404. >
  405. <span
  406. class="delete"
  407. style="color: #c003a2; margin-left: 15px"
  408. v-if="
  409. store.BtnRole('studentManagementSetting8') &&
  410. row.isRegistered == 1
  411. "
  412. @click="registerS(row, 2)"
  413. >取消报到</span
  414. >
  415. </div>
  416. </template>
  417. </el-table-column>
  418. </el-table>
  419. <!-- 分页组件 -->
  420. <div class="pageSize">
  421. <span></span>
  422. <el-pagination
  423. background
  424. :current-page="currentPage"
  425. :page-size="pageSize"
  426. :page-sizes="[10, 20, 30, 40]"
  427. layout="total,sizes, prev, pager, next, jumper, slot"
  428. :total="total"
  429. @size-change="handleSizeChange"
  430. @update:current-page="handleCurrentChange"
  431. />
  432. </div>
  433. </div>
  434. </div>
  435. <!-- 添加账号弹窗 -->
  436. <el-dialog
  437. class="addStaff"
  438. v-model="addDialogVisible"
  439. :close-on-click-modal="false"
  440. :close-on-press-escape="false"
  441. :title="dialongTitle"
  442. align-center
  443. width="1000"
  444. :before-close="cancelAdd"
  445. destroy-on-close
  446. draggable
  447. >
  448. <el-form
  449. ref="ruleFormRef"
  450. :model="ruleForm"
  451. :rules="rules"
  452. label-width="100px"
  453. class="demo-ruleForm"
  454. :size="formSize"
  455. label-position="right"
  456. status-icon
  457. >
  458. <div class="photo">
  459. <!-- 照片 -->
  460. <div class="photo_left">
  461. <span>照片</span>
  462. <el-form-item label="" prop="">
  463. <el-upload
  464. class="avatar-uploader"
  465. action="#"
  466. :auto-upload="false"
  467. :on-remove="pictureRemove"
  468. :on-change="pictureImportChange"
  469. :before-upload="beforeAvatarPicture"
  470. ref="pictureRef"
  471. >
  472. <template #tip>
  473. <div class="el-upload__tip">上传的图片应小于500kb</div>
  474. </template>
  475. <img :src="ruleForm.picture" class="avatar" />
  476. <!-- <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon> -->
  477. </el-upload>
  478. </el-form-item>
  479. </div>
  480. <!-- 中间 -->
  481. <div class="photo_middle">
  482. <el-form-item label="校区 :" prop="school">
  483. <el-select
  484. clearable
  485. :disabled="ruleForm.fillStatus == '已填报'"
  486. @change="schoolChange"
  487. v-model="ruleForm.school"
  488. placeholder="请选择校区名称"
  489. >
  490. <el-option
  491. v-for="i in schoolData"
  492. :key="i.id"
  493. :label="i.school"
  494. :value="`${i.school},${i.id}`"
  495. />
  496. </el-select>
  497. </el-form-item>
  498. <el-form-item label="录取号 :" prop="admissNum">
  499. <el-input
  500. v-model.trim="ruleForm.admissNum"
  501. placeholder="请输入录取号"
  502. clearable
  503. />
  504. </el-form-item>
  505. <el-form-item label="身份证号 :" prop="cardId">
  506. <el-input
  507. :disabled="dialongTitle != '新增学生信息'"
  508. v-model.trim="ruleForm.cardId"
  509. placeholder="请输入身份证号"
  510. clearable
  511. />
  512. </el-form-item>
  513. <el-form-item label="出生年月 :" prop="birthday">
  514. <el-date-picker
  515. v-model="ruleForm.birthday"
  516. type="date"
  517. format="YYYY-MM-DD"
  518. value-format="YYYY-MM-DD"
  519. placeholder="请选择出生年月"
  520. :size="size"
  521. />
  522. </el-form-item>
  523. <el-form-item label="民族 :" prop="nationality">
  524. <el-input
  525. v-model.trim="ruleForm.nationality"
  526. placeholder="请输入民族"
  527. clearable
  528. />
  529. </el-form-item>
  530. <el-form-item label="考生号 :" prop="examNum">
  531. <el-input
  532. v-model.trim="ruleForm.examNum"
  533. placeholder="请输入考生号"
  534. clearable
  535. />
  536. </el-form-item>
  537. <!-- <el-form-item label="毕业中学 :" prop="graduationSchool">
  538. <el-input
  539. v-model.trim="ruleForm.graduationSchool"
  540. placeholder="请输入毕业中学"
  541. clearable
  542. />
  543. </el-form-item> -->
  544. <el-form-item label="政治面貌 :" prop="politicalStatu">
  545. <el-input
  546. v-model.trim="ruleForm.politicalStatu"
  547. placeholder="请输入政治面貌"
  548. clearable
  549. />
  550. </el-form-item>
  551. </div>
  552. <!-- 右边 -->
  553. <div class="photo_footer">
  554. <el-form-item label="姓名 :" prop="name">
  555. <el-input
  556. v-model.trim="ruleForm.name"
  557. placeholder="请输入姓名"
  558. clearable
  559. />
  560. </el-form-item>
  561. <el-form-item label="性别 :" prop="sex">
  562. <el-select v-model="ruleForm.sex" placeholder="请选择性别">
  563. <el-option label="男" value="男" />
  564. <el-option label="女" value="女" />
  565. </el-select>
  566. </el-form-item>
  567. <el-form-item label="院系 :" prop="college">
  568. <el-select
  569. @change="collegeFormChange"
  570. v-model="ruleForm.college"
  571. placeholder="请选择院系"
  572. clearable
  573. >
  574. <el-option
  575. v-for="i in collegeData"
  576. :key="i.id"
  577. :label="i.name"
  578. :value="`${i.name},${i.id}`"
  579. />
  580. </el-select>
  581. </el-form-item>
  582. <el-form-item label="专业 :" prop="major">
  583. <el-select
  584. @change="majorFormChange"
  585. clearable
  586. v-model="ruleForm.major"
  587. placeholder="请选择专业"
  588. >
  589. <el-option
  590. v-for="i in majorFormData"
  591. :key="i.id"
  592. :label="i.name"
  593. :value="`${i.name},${i.id}`"
  594. />
  595. </el-select>
  596. </el-form-item>
  597. <el-form-item label="所属班级 :" prop="classstr">
  598. <el-select
  599. clearable
  600. v-model="ruleForm.classstr"
  601. placeholder="请选择所属班级"
  602. >
  603. <el-option
  604. v-for="i in classstrFormData"
  605. :key="i.id"
  606. :label="i.name"
  607. :value="`${i.name},${i.id}`"
  608. />
  609. </el-select>
  610. </el-form-item>
  611. <el-form-item label="学制 :" prop="eduSystem">
  612. <el-input
  613. v-model.trim="ruleForm.eduSystem"
  614. placeholder="请输入学制"
  615. clearable
  616. />
  617. </el-form-item>
  618. <el-form-item label="层次 :" prop="batchValue">
  619. <el-select
  620. clearable
  621. v-model="ruleForm.batchValue"
  622. placeholder="请选择层次"
  623. >
  624. <el-option label="本科" value="本科" />
  625. <el-option label="专升本" value="专升本" />
  626. <el-option label="专科" value="专科" />
  627. </el-select>
  628. </el-form-item>
  629. </div>
  630. </div>
  631. <!-- 填报明细 -->
  632. <div class="info_title">
  633. <SvgIcon name="filling_details" color="#fff" size="22"></SvgIcon>
  634. <h4>&nbsp;&nbsp;填报明细</h4>
  635. </div>
  636. <div class="filling_details">
  637. <el-form-item label="手机号码 :" prop="">
  638. <el-input
  639. v-model.trim="ruleForm.phone"
  640. placeholder="请输入手机号码"
  641. clearable
  642. style="width: 200px"
  643. />
  644. </el-form-item>
  645. <div class="native">
  646. <el-form-item label="籍贯 :" prop="">
  647. <el-select
  648. clearable
  649. @change="oprovinceChange"
  650. v-model="ruleForm.oprovince"
  651. placeholder="请选择籍贯省"
  652. >
  653. <el-option
  654. v-for="i in provinceData"
  655. :key="i.id"
  656. :label="i.name"
  657. :value="`${i.name},${i.id}`"
  658. />
  659. </el-select>
  660. </el-form-item>
  661. <el-form-item label="" prop="">
  662. <el-select
  663. clearable
  664. @change="ocityChange"
  665. v-model="ruleForm.ocity"
  666. placeholder="请选择籍贯市"
  667. >
  668. <el-option
  669. v-for="i in ocityData"
  670. :key="i.id"
  671. :label="i.name"
  672. :value="`${i.name},${i.id}`"
  673. />
  674. </el-select>
  675. </el-form-item>
  676. <el-form-item label="" prop="">
  677. <el-select
  678. clearable
  679. v-model="ruleForm.odistrict"
  680. placeholder="请选择籍贯县"
  681. >
  682. <el-option
  683. v-for="i in odistrictData"
  684. :key="i.id"
  685. :label="i.name"
  686. :value="`${i.name},${i.id}`"
  687. />
  688. </el-select>
  689. </el-form-item>
  690. </div>
  691. <div class="native family">
  692. <el-form-item label="家庭住址 :" prop="">
  693. <el-select
  694. clearable
  695. @change="provinceChange"
  696. v-model="ruleForm.province"
  697. placeholder="请选择省"
  698. >
  699. <el-option
  700. v-for="i in provinceData"
  701. :key="i.id"
  702. :label="i.name"
  703. :value="`${i.name},${i.id}`"
  704. />
  705. </el-select>
  706. </el-form-item>
  707. <el-form-item label="" prop="">
  708. <el-select
  709. clearable
  710. @change="cityChange"
  711. v-model="ruleForm.city"
  712. placeholder="请选择市"
  713. >
  714. <el-option
  715. v-for="i in cityData"
  716. :key="i.id"
  717. :label="i.name"
  718. :value="`${i.name},${i.id}`"
  719. />
  720. </el-select>
  721. </el-form-item>
  722. <el-form-item label="" prop="">
  723. <el-select
  724. clearable
  725. v-model="ruleForm.district"
  726. placeholder="请选择县"
  727. >
  728. <el-option
  729. v-for="i in districtData"
  730. :key="i.id"
  731. :label="i.name"
  732. :value="`${i.name},${i.id}`"
  733. />
  734. </el-select>
  735. </el-form-item>
  736. <el-form-item label="" prop="">
  737. <el-input
  738. v-model.trim="ruleForm.address"
  739. placeholder="请输入详情地址"
  740. clearable
  741. style="width: 260px"
  742. />
  743. </el-form-item>
  744. </div>
  745. <div class="native"></div>
  746. <el-form-item label="按时报到 :" prop="">
  747. <el-switch
  748. :active-value="1"
  749. :inactive-value="0"
  750. v-model="ruleForm.registerOntime"
  751. />
  752. </el-form-item>
  753. <el-form-item class="email" label="邮编 :" prop="">
  754. <el-input
  755. v-model.trim="ruleForm.zipCode"
  756. placeholder="请输入邮编"
  757. clearable
  758. style="width: 270px"
  759. />
  760. </el-form-item>
  761. <div class="traffic">
  762. <el-form-item label="交通方式 :" prop="">
  763. <el-select
  764. v-model="ruleForm.trafficMethod"
  765. placeholder="请选择交通方式"
  766. >
  767. <el-option label="火车" value="火车" />
  768. <el-option label="飞机" value="飞机" />
  769. <el-option label="汽车" value="汽车" />
  770. <el-option label="自驾" value="自驾" />
  771. <el-option label="其他" value="其他" />
  772. </el-select>
  773. </el-form-item>
  774. <el-form-item label="到站地点 :" prop="">
  775. <el-select
  776. v-if="ruleForm.trafficMethod == '自驾'"
  777. v-model="ruleForm.arrive"
  778. placeholder="请选择到站地点"
  779. >
  780. <el-option label="黄家湖校区" value="黄家湖校区" />
  781. <el-option label="墨轩湖校区" value="墨轩湖校区" />
  782. </el-select>
  783. <el-select
  784. v-else-if="ruleForm.trafficMethod == '飞机'"
  785. v-model="ruleForm.arrive"
  786. placeholder="请选择到站地点"
  787. >
  788. <el-option label="昌北机场" value="昌北机场" />
  789. </el-select>
  790. <el-select
  791. v-else-if="ruleForm.trafficMethod == '火车'"
  792. v-model="ruleForm.arrive"
  793. placeholder="请选择到站地点"
  794. >
  795. <el-option label="南昌火车站" value="南昌火车站" />
  796. <el-option label="南昌西站" value="南昌西站" />
  797. <el-option label="南昌东站" value="南昌东站" />
  798. </el-select>
  799. <el-select
  800. v-else-if="ruleForm.trafficMethod == '汽车'"
  801. v-model="ruleForm.arrive"
  802. placeholder="请选择到站地点"
  803. >
  804. <el-option label="南昌长途汽车西站" value="南昌长途汽车西站" />
  805. <el-option label="靖安汽车站" value="靖安汽车站" />
  806. </el-select>
  807. <el-select
  808. v-else
  809. v-model="ruleForm.arrive"
  810. placeholder="请选择到站地点"
  811. >
  812. <el-option label="南昌火车站" value="南昌火车站" />
  813. <el-option label="南昌西站" value="南昌西站" />
  814. <el-option label="南昌东站" value="南昌东站" />
  815. <el-option label="昌北机场" value="昌北机场" />
  816. <el-option label="南昌长途汽车西站" value="南昌长途汽车西站" />
  817. <el-option label="靖安汽车站" value="靖安汽车站" />
  818. <el-option label="黄家湖校区" value="黄家湖校区" />
  819. <el-option label="墨轩湖校区" value="墨轩湖校区" />
  820. </el-select>
  821. </el-form-item>
  822. </div>
  823. <el-form-item label="到站日期 :" prop="">
  824. <el-date-picker
  825. v-model="ruleForm.arrvieDate"
  826. type="date"
  827. format="YYYY-MM-DD"
  828. value-format="YYYY-MM-DD"
  829. placeholder="请选择到站日期"
  830. :size="size"
  831. />
  832. </el-form-item>
  833. <el-form-item label="到站时间段 :" prop="">
  834. <el-radio-group
  835. @change="arriveTimeChange"
  836. v-model="ruleForm.arriveTime"
  837. >
  838. <el-radio
  839. v-for="i in arriveData"
  840. :key="i.id"
  841. :value="`${i.timeStr},${i.id}`"
  842. >{{ i.timeStr }}</el-radio
  843. >
  844. </el-radio-group>
  845. </el-form-item>
  846. </div>
  847. <div class="info_title">
  848. <SvgIcon name="family" color="#fff" size="22"></SvgIcon>
  849. <h4>&nbsp;&nbsp;家庭成员&nbsp;&nbsp;</h4>
  850. <img @click="familysAdd" src="@/assets/img/add_1.png" alt="" />
  851. </div>
  852. <el-form-item class="elFormTable" label="" prop="">
  853. <el-table
  854. :row-class-name="tableRowClassName"
  855. :data="ruleForm.familys"
  856. style="width: 100%"
  857. :header-cell-style="{
  858. background: 'rgba(240, 243, 247, 1)',
  859. height: '40px',
  860. border: 0,
  861. }"
  862. >
  863. <el-table-column align="center" prop="familyShip" label="称谓" />
  864. <el-table-column align="center" prop="name" label="姓名" />
  865. <el-table-column align="center" prop="workUnit" label="工作单位" />
  866. <el-table-column align="center" prop="phone" label="联系电话" />
  867. <el-table-column align="center" label="操作" width="120">
  868. <template #default="scope">
  869. <span
  870. class="delete"
  871. style="color: #d43030; cursor: pointer"
  872. @click="familysDel(scope)"
  873. >删除</span
  874. >
  875. </template>
  876. </el-table-column>
  877. </el-table>
  878. </el-form-item>
  879. <!-- <div class="info_title">
  880. <SvgIcon name="entourage" color="#fff" size="22"></SvgIcon>
  881. <h4>&nbsp;&nbsp;陪同人员信息&nbsp;&nbsp;</h4>
  882. <img @click="accompanysAdd" src="@/assets/img/add_1.png" alt="" />
  883. </div>
  884. <el-form-item class="elFormTable" label="" prop="accompanys">
  885. <el-table
  886. :row-class-name="tableRowClassName"
  887. :data="ruleForm.accompanys"
  888. style="width: 100%"
  889. :header-cell-style="{
  890. background: 'rgba(240, 243, 247, 1)',
  891. height: '40px',
  892. border: 0,
  893. }"
  894. >
  895. <el-table-column
  896. width="120"
  897. align="center"
  898. label="序号"
  899. type="index"
  900. index="1"
  901. />
  902. <el-table-column align="center" prop="name" label="姓名" />
  903. <el-table-column align="center" prop="phone" label="联系电话" />
  904. <el-table-column align="center" label="操作" width="120">
  905. <template #default="scope">
  906. <span
  907. class="delete"
  908. style="color: #d43030; cursor: pointer"
  909. @click="accompanysDel(scope)"
  910. >删除</span
  911. >
  912. </template>
  913. </el-table-column>
  914. </el-table>
  915. </el-form-item> -->
  916. <!-- <div class="info_title">
  917. <SvgIcon name="dorm" color="#fff" size="22"></SvgIcon>
  918. <h4>&nbsp;&nbsp;宿舍信息</h4>
  919. </div>
  920. <div class="dorm_info" style="display: flex; flex-wrap: wrap">
  921. <el-form-item label="校区 " prop="school">
  922. <el-select
  923. clearable
  924. @change="schoolChange"
  925. v-model="ruleForm.school"
  926. placeholder="请选择校区名称"
  927. >
  928. <el-option
  929. v-for="i in schoolData"
  930. :key="i.id"
  931. :label="i.school"
  932. :value="`${i.school},${i.id}`"
  933. />
  934. </el-select>
  935. </el-form-item>
  936. <el-form-item label="楼栋 " prop="build">
  937. <el-select
  938. clearable
  939. v-model="ruleForm.build"
  940. placeholder="请选择楼栋名称"
  941. @change="buildChange"
  942. >
  943. <el-option
  944. v-for="i in buildData"
  945. :key="i.id"
  946. :label="i.build"
  947. :value="`${i.build},${i.id}`"
  948. />
  949. </el-select>
  950. </el-form-item>
  951. <el-form-item label="寝室号" prop="dormitory">
  952. <el-select
  953. v-model="ruleForm.dormitory"
  954. placeholder="请选择寝室号"
  955. clearable
  956. @change="dormitoryChange"
  957. >
  958. <el-option
  959. v-for="i in dormitoryData"
  960. :key="i.id"
  961. :label="i.dormitory"
  962. :value="`${i.dormitory},${i.id}`"
  963. />
  964. </el-select>
  965. </el-form-item>
  966. <el-form-item label="床位号" prop="bed">
  967. <el-select
  968. v-model="ruleForm.bed"
  969. placeholder="请选择床位号"
  970. clearable
  971. >
  972. <el-option
  973. v-for="i in bedData"
  974. :key="i.id"
  975. :label="i.name"
  976. :value="`${i.name},${i.id}`"
  977. />
  978. </el-select>
  979. </el-form-item>
  980. </div> -->
  981. <!-- <div class="info_title">
  982. <SvgIcon name="pay" color="#000" size="22"></SvgIcon>
  983. <h4>&nbsp;&nbsp;缴费信息</h4>
  984. </div>
  985. <div class="photo_middle" style="display: flex;">
  986. <el-form-item label="应缴金额 :" prop="admissNum">
  987. <el-input
  988. v-model.trim="ruleForm.admissNum"
  989. placeholder="请输入应缴金额"
  990. clearable
  991. />
  992. </el-form-item>
  993. <el-form-item label="实付金额 :" prop="cardId">
  994. <el-input
  995. v-model.trim="ruleForm.cardId"
  996. placeholder="请输入实付金额"
  997. clearable
  998. />
  999. </el-form-item>
  1000. </div> -->
  1001. <!-- <div class="info_title">
  1002. <SvgIcon name="car" color="#000" size="22"></SvgIcon>
  1003. <h4>&nbsp;&nbsp;车辆信息</h4>
  1004. </div>
  1005. <div class="photo_middle" style="display: flex;">
  1006. <el-form-item label="是否自驾 :" prop="admissNum">
  1007. <el-switch
  1008. :active-value="1"
  1009. :inactive-value="0"
  1010. v-model="ruleForm.registerOntime"
  1011. />
  1012. </el-form-item>
  1013. <el-form-item label="车牌号码 :" prop="cardId">
  1014. <el-input
  1015. v-model.trim="ruleForm.cardId"
  1016. placeholder="请输入车牌号码"
  1017. clearable
  1018. />
  1019. </el-form-item>
  1020. </div> -->
  1021. <el-form-item class="options">
  1022. <el-button @click="cancelAdd">取消</el-button>
  1023. <el-button
  1024. color="rgba(0, 97, 255, 1)"
  1025. class="queding"
  1026. type="primary"
  1027. @click="submitAdd(ruleFormRef)"
  1028. >
  1029. 确定
  1030. </el-button>
  1031. </el-form-item>
  1032. </el-form>
  1033. </el-dialog>
  1034. <el-dialog
  1035. class="infoStudent"
  1036. v-model="infoDialogVisible"
  1037. :close-on-click-modal="false"
  1038. :close-on-press-escape="false"
  1039. title="学生信息详情"
  1040. align-center
  1041. width="1000"
  1042. :before-close="cancelInfo"
  1043. destroy-on-close
  1044. draggable
  1045. >
  1046. <div class="el-form">
  1047. <div class="photo">
  1048. <!-- 照片 -->
  1049. <div class="photo_left">
  1050. <div class="el-form-item">
  1051. <img :src="ruleForm.picture" class="avatar" />
  1052. </div>
  1053. </div>
  1054. <!-- 中间 -->
  1055. <div class="photo_middle">
  1056. <div class="el-form-item">
  1057. <span class="title">校区 :</span>
  1058. <span class="title_content">{{
  1059. ruleForm.school ? ruleForm.school : ""
  1060. }}</span>
  1061. </div>
  1062. <div class="el-form-item">
  1063. <span class="title">录取号 :</span>
  1064. <span class="title_content">{{ ruleForm.admissNum }}</span>
  1065. </div>
  1066. <div class="el-form-item">
  1067. <span class="title">身份证号 :</span>
  1068. <span class="title_content">{{ ruleForm.cardId }}</span>
  1069. </div>
  1070. <div class="el-form-item">
  1071. <span class="title">出生年月 :</span>
  1072. <span class="title_content">{{ ruleForm.birthday }}</span>
  1073. </div>
  1074. <div class="el-form-item">
  1075. <span class="title">民族 :</span>
  1076. <span class="title_content">{{ ruleForm.nationality }}</span>
  1077. </div>
  1078. <div class="el-form-item">
  1079. <span class="title">考生号 :</span>
  1080. <span class="title_content">{{ ruleForm.examNum }}</span>
  1081. </div>
  1082. <!-- <div class="el-form-item" prop="graduationSchool">
  1083. <span class="title">毕业中学 :</span>
  1084. <span class="title_content">{{ ruleForm.graduationSchool }}</span>
  1085. </div> -->
  1086. <div class="el-form-item">
  1087. <span class="title">政治面貌 :</span>
  1088. <span class="title_content">{{ ruleForm.politicalStatu }}</span>
  1089. </div>
  1090. </div>
  1091. <!-- 右边 -->
  1092. <div class="photo_footer">
  1093. <div class="el-form-item">
  1094. <span class="title">姓名 :</span>
  1095. <span class="title_content">{{ ruleForm.name }}</span>
  1096. </div>
  1097. <div class="el-form-item">
  1098. <span class="title">性别 :</span>
  1099. <span class="title_content">{{ ruleForm.sex }}</span>
  1100. </div>
  1101. <div class="el-form-item">
  1102. <span class="title">院系 :</span>
  1103. <span class="title_content">{{
  1104. ruleForm.college ? ruleForm.college : ""
  1105. }}</span>
  1106. </div>
  1107. <div class="el-form-item">
  1108. <span class="title">专业 :</span>
  1109. <span class="title_content">{{
  1110. ruleForm.major ? ruleForm.major : ""
  1111. }}</span>
  1112. </div>
  1113. <div class="el-form-item">
  1114. <span class="title">所属班级 :</span>
  1115. <span class="title_content">{{
  1116. ruleForm.classstr ? ruleForm.classstr : ""
  1117. }}</span>
  1118. </div>
  1119. <div class="el-form-item">
  1120. <span class="title">学制 :</span>
  1121. <span class="title_content">{{ ruleForm.eduSystem }}</span>
  1122. </div>
  1123. <div class="el-form-item">
  1124. <span class="title">层次 :</span>
  1125. <span class="title_content">{{ ruleForm.batchValue }}</span>
  1126. </div>
  1127. </div>
  1128. </div>
  1129. <!-- 填报明细 -->
  1130. <div class="info_title">
  1131. <SvgIcon name="filling_details" color="#fff" size="22"></SvgIcon>
  1132. <h4>&nbsp;&nbsp;填报明细</h4>
  1133. </div>
  1134. <div class="filling_details">
  1135. <div class="info_content">
  1136. <div class="el-form-item">
  1137. <span class="title">手机号码 :</span>
  1138. <span class="title_content">{{ ruleForm.phone }}</span>
  1139. </div>
  1140. <div class="el-form-item">
  1141. <span class="title">籍贯 :</span>
  1142. <span class="title_content">{{
  1143. ruleForm.oprovince ? ruleForm.oprovince : ""
  1144. }}</span>
  1145. <span class="title_content">{{
  1146. ruleForm.ocity ? ruleForm.ocity : ""
  1147. }}</span>
  1148. <span class="title_content">{{
  1149. ruleForm.odistrict ? ruleForm.odistrict : ""
  1150. }}</span>
  1151. </div>
  1152. <div class="el-form-item">
  1153. <span class="title">家庭住址 :</span>
  1154. <span class="title_content">{{
  1155. ruleForm.province ? ruleForm.province : ""
  1156. }}</span>
  1157. <span class="title_content">{{
  1158. ruleForm.city ? ruleForm.city : ""
  1159. }}</span>
  1160. <span class="title_content">{{
  1161. ruleForm.district ? ruleForm.district : ""
  1162. }}</span>
  1163. <span class="title_content">{{
  1164. ruleForm.address ? ruleForm.address : ""
  1165. }}</span>
  1166. </div>
  1167. </div>
  1168. <div class="native family">
  1169. <div class="info_content">
  1170. <div class="el-form-item">
  1171. <span class="title">按时报到 :</span>
  1172. <span class="title_content">{{
  1173. ruleForm.registerOntime == 1 ? "是" : "否"
  1174. }}</span>
  1175. </div>
  1176. <div class="el-form-item">
  1177. <span class="title">邮编 :</span>
  1178. <span class="title_content">{{ ruleForm.zipCode }}</span>
  1179. </div>
  1180. <div class="el-form-item">
  1181. <span class="title">交通方式 :</span>
  1182. <span class="title_content">{{ ruleForm.trafficMethod }}</span>
  1183. </div>
  1184. <div class="el-form-item">
  1185. <span class="title">到站地点 :</span>
  1186. <span class="title_content">{{ ruleForm.arrive }}</span>
  1187. </div>
  1188. </div>
  1189. </div>
  1190. <div class="el-form-item">
  1191. <div class="el-form-item">
  1192. <span class="title">到站日期 :</span>
  1193. <span class="title_content">{{ ruleForm.arrvieDate }}</span>
  1194. </div>
  1195. <div class="el-form-item">
  1196. <span class="title">到站时间段 :</span>
  1197. <span class="title_content">{{
  1198. ruleForm.arriveTime ? ruleForm.arriveTime.split(",")[0] : ""
  1199. }}</span>
  1200. </div>
  1201. </div>
  1202. </div>
  1203. <div class="info_title">
  1204. <SvgIcon name="family" color="#fff" size="22"></SvgIcon>
  1205. <h4>&nbsp;&nbsp;家庭成员&nbsp;&nbsp;</h4>
  1206. </div>
  1207. <div class="el-form-item elFormTable">
  1208. <el-table
  1209. :row-class-name="tableRowClassName"
  1210. :data="ruleForm.familys"
  1211. style="width: 100%"
  1212. :header-cell-style="{
  1213. background: 'rgba(240, 243, 247, 1)',
  1214. height: '40px',
  1215. border: 0,
  1216. }"
  1217. >
  1218. <el-table-column align="center" prop="familyShip" label="称谓" />
  1219. <el-table-column align="center" prop="name" label="姓名" />
  1220. <el-table-column align="center" prop="workUnit" label="工作单位" />
  1221. <el-table-column align="center" prop="phone" label="联系电话" />
  1222. </el-table>
  1223. </div>
  1224. <div class="info_title">
  1225. <SvgIcon name="entourage" color="#fff" size="22"></SvgIcon>
  1226. <h4>&nbsp;&nbsp;陪同人员信息&nbsp;&nbsp;</h4>
  1227. </div>
  1228. <div class="el-form-item elFormTable">
  1229. <el-table
  1230. :row-class-name="tableRowClassName"
  1231. :data="ruleForm.accompanys"
  1232. style="width: 100%"
  1233. :header-cell-style="{
  1234. background: 'rgba(240, 243, 247, 1)',
  1235. height: '40px',
  1236. border: 0,
  1237. }"
  1238. >
  1239. <el-table-column
  1240. width="120"
  1241. align="center"
  1242. label="序号"
  1243. type="index"
  1244. index="1"
  1245. />
  1246. <el-table-column align="center" prop="name" label="姓名" />
  1247. <el-table-column align="center" prop="phone" label="联系电话" />
  1248. </el-table>
  1249. </div>
  1250. <div class="info_title">
  1251. <SvgIcon name="dorm" color="#fff" size="22"></SvgIcon>
  1252. <h4>&nbsp;&nbsp;宿舍信息</h4>
  1253. </div>
  1254. <div class="dorm_info" style="display: flex; flex-wrap: wrap">
  1255. <div class="el-form-item">
  1256. <span class="title">楼栋 :</span>
  1257. <span class="title_content">{{
  1258. ruleForm.build ? ruleForm.build : ""
  1259. }}</span>
  1260. </div>
  1261. <div class="el-form-item">
  1262. <span class="title">寝室号 :</span>
  1263. <span class="title_content">{{
  1264. ruleForm.dormitory ? ruleForm.dormitory : ""
  1265. }}</span>
  1266. </div>
  1267. <div class="el-form-item">
  1268. <span class="title">床位号 :</span>
  1269. <span class="title_content">{{
  1270. ruleForm.bed ? ruleForm.bed : ""
  1271. }}</span>
  1272. </div>
  1273. </div>
  1274. <div class="info_title">
  1275. <SvgIcon name="pay" color="#000" size="22"></SvgIcon>
  1276. <h4>&nbsp;&nbsp;缴费信息</h4>
  1277. </div>
  1278. <div class="dorm_info" style="display: flex; flex-wrap: wrap">
  1279. <div class="el-form-item">
  1280. <span class="title">应缴金额 :</span>
  1281. <span class="title_content">{{
  1282. ruleForm.amountPayable ? ruleForm.amountPayable : ""
  1283. }}</span>
  1284. </div>
  1285. <div class="el-form-item">
  1286. <span class="title">实付金额 :</span>
  1287. <span class="title_content">{{
  1288. ruleForm.payAmount ? ruleForm.payAmount : ""
  1289. }}</span>
  1290. </div>
  1291. </div>
  1292. <div class="info_title" v-if="ruleForm.trafficMethod == '自驾'">
  1293. <SvgIcon name="car" color="#000" size="22"></SvgIcon>
  1294. <h4>&nbsp;&nbsp;车辆信息</h4>
  1295. </div>
  1296. <div
  1297. v-if="ruleForm.trafficMethod == '自驾'"
  1298. class="dorm_info"
  1299. style="display: flex; flex-wrap: wrap"
  1300. >
  1301. <div class="el-form-item">
  1302. <span class="title">是否自驾 :</span>
  1303. <span class="title_content">{{
  1304. ruleForm.trafficMethod ? ruleForm.trafficMethod : ""
  1305. }}</span>
  1306. </div>
  1307. <div class="el-form-item">
  1308. <span class="title">车牌号 :</span>
  1309. <span class="title_content">{{
  1310. ruleForm.carNumber ? ruleForm.carNumber : ""
  1311. }}</span>
  1312. </div>
  1313. </div>
  1314. </div>
  1315. </el-dialog>
  1316. <!-- 添加家庭成员 -->
  1317. <el-dialog
  1318. class="addfamilys"
  1319. v-model="addfamilysVisible"
  1320. :close-on-click-modal="false"
  1321. :close-on-press-escape="false"
  1322. :title="addfamilysTitle"
  1323. align-center
  1324. width="560"
  1325. :before-close="cancelAddfamilys"
  1326. destroy-on-close
  1327. draggable
  1328. >
  1329. <el-form
  1330. ref="addfamilysRef"
  1331. :model="addfamilysRuleForm"
  1332. :rules="addfamilysRules"
  1333. label-width="100px"
  1334. class="demo-ruleForm"
  1335. :size="formSize"
  1336. label-position="right"
  1337. status-icon
  1338. >
  1339. <el-form-item
  1340. v-if="addfamilysTitle == '添加家庭成员'"
  1341. label="称谓 :"
  1342. prop="familyShip"
  1343. >
  1344. <el-input
  1345. v-model.trim="addfamilysRuleForm.familyShip"
  1346. placeholder="请输入称谓"
  1347. clearable
  1348. />
  1349. </el-form-item>
  1350. <el-form-item label="姓名 :" prop="name">
  1351. <el-input
  1352. v-model.trim="addfamilysRuleForm.name"
  1353. placeholder="请输入姓名"
  1354. clearable
  1355. />
  1356. </el-form-item>
  1357. <el-form-item
  1358. v-if="addfamilysTitle == '添加家庭成员'"
  1359. label="工作单位 :"
  1360. prop="workUnit"
  1361. >
  1362. <el-input
  1363. v-model.trim="addfamilysRuleForm.workUnit"
  1364. placeholder="请输入工作单位"
  1365. clearable
  1366. />
  1367. </el-form-item>
  1368. <el-form-item label="联系电话 :" prop="phone">
  1369. <el-input
  1370. v-model.trim="addfamilysRuleForm.phone"
  1371. placeholder="请输入联系电话"
  1372. clearable
  1373. />
  1374. </el-form-item>
  1375. <el-form-item class="options">
  1376. <el-button @click="cancelAddfamilys">取消</el-button>
  1377. <el-button
  1378. color="rgba(0, 97, 255, 1)"
  1379. class="queding"
  1380. type="primary"
  1381. @click="submitAddfamilys(addfamilysRef)"
  1382. >
  1383. 确定
  1384. </el-button>
  1385. </el-form-item>
  1386. </el-form>
  1387. </el-dialog>
  1388. <!-- 项目导入 -->
  1389. <el-dialog
  1390. class="projectImport"
  1391. v-model="buildImportVisible"
  1392. :close-on-click-modal="false"
  1393. :close-on-press-escape="false"
  1394. title="学生信息导入"
  1395. align-center
  1396. width="600"
  1397. :before-close="cancelProjectImport"
  1398. >
  1399. <!-- <p class="title">当前只支持项目类型为“非装配式建筑项目”的项目导入</p> -->
  1400. <p class="down">
  1401. <span>学生信息导入模板下载</span
  1402. ><span @click="templateDown">模板下载</span>
  1403. </p>
  1404. <el-upload
  1405. class="avatar-uploader"
  1406. action="#"
  1407. :auto-upload="false"
  1408. :on-remove="projectImportRemove"
  1409. :on-change="projectImportChange"
  1410. :before-upload="beforeAvatarProImport"
  1411. ref="buildRef"
  1412. :limit="1"
  1413. :on-exceed="projectImportExceed"
  1414. >
  1415. <template #trigger>
  1416. <el-button class="queding" type="primary">
  1417. &nbsp;&nbsp;导入文件&nbsp;&nbsp;
  1418. </el-button>
  1419. </template>
  1420. </el-upload>
  1421. <div class="options">
  1422. <el-button
  1423. color="rgba(9, 101, 98, 1)"
  1424. class="queding"
  1425. type="primary"
  1426. @click="projectImportConfirm(buildRef)"
  1427. :loading="buildImportLoading"
  1428. >
  1429. &nbsp;&nbsp;确认导入&nbsp;&nbsp;
  1430. </el-button>
  1431. <el-button @click="cancelProjectImport"
  1432. >&nbsp;&nbsp;取消导入&nbsp;&nbsp;</el-button
  1433. >
  1434. </div>
  1435. </el-dialog>
  1436. </div>
  1437. </template>
  1438. <script setup>
  1439. import {
  1440. ref,
  1441. watch,
  1442. reactive,
  1443. nextTick,
  1444. onBeforeMount,
  1445. onUnmounted,
  1446. } from "vue";
  1447. import { useRouter } from "vue-router";
  1448. import { genFileId, ElMessage, ElMessageBox } from "element-plus";
  1449. import { dayjs } from "element-plus";
  1450. import lodash from "lodash";
  1451. import { https } from "@/utils/request"; // 绝对路径
  1452. import { storeToRefs } from "pinia";
  1453. import { useCounterStore } from "@/stores/index";
  1454. const router = useRouter();
  1455. const store = useCounterStore();
  1456. // 为避免解构时失去响应性
  1457. const { name, age, isCollapse, realAge, collegeRole } = storeToRefs(store);
  1458. // 表格数据
  1459. const loading = ref(false);
  1460. const tableData = reactive({
  1461. list: [],
  1462. });
  1463. const activeIndex = ref(); // 默认跳转路由
  1464. const dialongTitle = ref("新增账号"); // 弹窗标题
  1465. const searchInput = reactive({
  1466. schoolId:"",
  1467. college: "",
  1468. major: "",
  1469. classstr: "",
  1470. trafficMethod: "",
  1471. fillStatus: "",
  1472. isPay: "",
  1473. isCheck: "",
  1474. name: "",
  1475. batchValue:"",
  1476. carNumber:"",
  1477. isRegistered: "",
  1478. }); // 搜索按钮数据
  1479. const currentPage = ref(1); // 当前页
  1480. const pageSize = ref(10);
  1481. const total = ref(); // 当前总数
  1482. const selectIds = ref([]);
  1483. const addDialogVisible = ref(false); // 控制添加账号弹窗
  1484. // 表单数据
  1485. const formSize = ref("default");
  1486. const ruleFormRef = ref();
  1487. const ruleForm = reactive({
  1488. picture: "",
  1489. admissNum: "",
  1490. name: "",
  1491. cardId: "",
  1492. sex: "",
  1493. birthday: "",
  1494. school: "",
  1495. college: "",
  1496. major: "",
  1497. classstr: "",
  1498. examNum: "",
  1499. eduSystem: "",
  1500. graduationSchool: "",
  1501. batchValue: "",
  1502. politicalStatu: "",
  1503. nationality: "",
  1504. // 填报明细
  1505. phone: "",
  1506. oprovince: "",
  1507. ocity: "",
  1508. odistrict: "",
  1509. province: "",
  1510. city: "",
  1511. district: "",
  1512. address: "",
  1513. registerOntime: 0, // 按时报到
  1514. zipCode: "", // 邮编
  1515. trafficMethod: "",
  1516. carNumber: "",
  1517. arrive: "",
  1518. arrvieDate: "",
  1519. arriveTime: "",
  1520. // 家庭成员
  1521. familys: [],
  1522. // 陪同人员
  1523. accompanys: [],
  1524. // 宿舍信息
  1525. school: "",
  1526. build: "",
  1527. dormitory: "",
  1528. bed: "",
  1529. amountPayable: "", // 应缴金额
  1530. payAmount: "", // 实付金额
  1531. fillStatus: "", // 判断有无填报
  1532. id: "",
  1533. });
  1534. const pictureRef = ref();
  1535. // 表单验证
  1536. const rules = reactive({
  1537. admissNum: [{ required: true, message: "录取号不能为空", trigger: "blur" }],
  1538. cardId: [
  1539. { required: true, message: "身份证号不能为空", trigger: "blur" },
  1540. {
  1541. min: 8,
  1542. max: 20,
  1543. pattern: /^(?:\d{15}|\d{17}[\dX])$/,
  1544. message: "身份证号码格式有误,请重新输入",
  1545. trigger: "blur",
  1546. },
  1547. ],
  1548. birthday: [{ required: true, message: "出生年月不能为空", trigger: "blur" }],
  1549. examNum: [{ required: true, message: "考生号不能为空", trigger: "blur" }],
  1550. graduationSchool: [
  1551. { required: true, message: "毕业中学不能为空", trigger: "blur" },
  1552. ],
  1553. politicalStatu: [
  1554. { required: true, message: "政治面貌不能为空", trigger: "blur" },
  1555. ],
  1556. name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
  1557. sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
  1558. eduSystem: [{ required: true, message: "学制不能为空", trigger: "blur" }],
  1559. batchValue: [{ required: true, message: "层次不能为空", trigger: "blur" }],
  1560. nationality: [{ required: true, message: "民族不能为空", trigger: "blur" }],
  1561. phone: [
  1562. { required: true, message: "手机号码不能为空", trigger: "blur" },
  1563. {
  1564. min: 8,
  1565. max: 20,
  1566. pattern: /^1[3-9]\d{9}$/,
  1567. message: "手机号码格式有误,请重新输入",
  1568. trigger: "blur",
  1569. },
  1570. ],
  1571. address: [{ required: true, message: "详情地址不能为空", trigger: "blur" }],
  1572. registerOntime: [
  1573. { required: true, message: "按时报到不能为空", trigger: "blur" },
  1574. ],
  1575. zipCode: [{ required: true, message: "邮编不能为空", trigger: "blur" }],
  1576. email: [{ required: true, message: "邮编不能为空", trigger: "blur" }],
  1577. trafficMethod: [
  1578. { required: true, message: "交通方式不能为空", trigger: "blur" },
  1579. ],
  1580. arrive: [{ required: true, message: "到站地点不能为空", trigger: "blur" }],
  1581. arrvieDate: [
  1582. { required: true, message: "到站日期不能为空", trigger: "blur" },
  1583. ],
  1584. arriveTime: [
  1585. { required: true, message: "到站时间段不能为空", trigger: "blur" },
  1586. ],
  1587. familys: [{ required: true, message: "家庭成员至少填一位", trigger: "blur" }],
  1588. college: [{ required: true, message: "院系不能为空", trigger: "blur" }],
  1589. major: [{ required: true, message: "专业不能为空", trigger: "blur" }],
  1590. classstr: [{ required: true, message: "所属班级不能为空", trigger: "blur" }],
  1591. oprovince: [{ required: true, message: "籍贯省不能为空", trigger: "blur" }],
  1592. ocity: [{ required: true, message: "籍贯市不能为空", trigger: "blur" }],
  1593. odistrict: [{ required: true, message: "籍贯县不能为空", trigger: "blur" }],
  1594. province: [{ required: true, message: "省不能为空", trigger: "blur" }],
  1595. city: [{ required: true, message: "市不能为空", trigger: "blur" }],
  1596. district: [{ required: true, message: "县不能为空", trigger: "blur" }],
  1597. school: [{ required: true, message: "校区不能为空", trigger: "blur" }],
  1598. build: [{ required: true, message: "楼栋不能为空", trigger: "blur" }],
  1599. dormitory: [{ required: true, message: "寝室号不能为空", trigger: "blur" }],
  1600. bed: [{ required: true, message: "床位号不能为空", trigger: "blur" }],
  1601. });
  1602. // 家庭人员 Start
  1603. const addfamilysRef = ref();
  1604. const addfamilysVisible = ref(false);
  1605. const infoDialogVisible = ref(false); // 详情弹窗
  1606. const addfamilysTitle = ref();
  1607. const addfamilysRuleForm = reactive({
  1608. name: "",
  1609. familyShip: "",
  1610. workUnit: "",
  1611. phone: "",
  1612. });
  1613. const addfamilysRules = reactive({
  1614. name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
  1615. familyShip: [{ required: true, message: "称谓不能为空", trigger: "blur" }],
  1616. workUnit: [{ required: true, message: "工作单位不能为空", trigger: "blur" }],
  1617. phone: [
  1618. { required: true, message: "联系电话不能为空", trigger: "blur" },
  1619. {
  1620. min: 8,
  1621. max: 20,
  1622. pattern: /^1[3-9]\d{9}$/,
  1623. message: "手机号码格式有误,请重新输入",
  1624. trigger: "blur",
  1625. },
  1626. ],
  1627. });
  1628. // 家庭成员 End
  1629. // 学院
  1630. const collegeData = ref([]);
  1631. // 专业
  1632. const majorData = ref([]);
  1633. const majorFormData = ref([]);
  1634. // 班级
  1635. const classstrData = ref([]);
  1636. const classstrFormData = ref([]);
  1637. const collegeList = async () => {
  1638. collegeData.value = collegeRole.value;
  1639. // let res = await https.get("/welcome/api/welcomeOrg/getColleges", "params");
  1640. // console.log(res, "学院数据");
  1641. // if (res.code == 200) {
  1642. // collegeData.value = res.data;
  1643. // } else {
  1644. // ElMessage({
  1645. // type: "error",
  1646. // showClose: true,
  1647. // message: res.message,
  1648. // center: true,
  1649. // });
  1650. // }
  1651. };
  1652. const majorList = async (flag) => {
  1653. let params = {
  1654. collegeId: flag ? flag : searchInput.college,
  1655. };
  1656. let res = await https.get(
  1657. "/welcome/api/welcomeOrg/getMajors",
  1658. "params",
  1659. params
  1660. );
  1661. console.log(res, "专业数据");
  1662. if (res.code == 200) {
  1663. if (flag) {
  1664. majorFormData.value = res.data;
  1665. } else {
  1666. majorData.value = res.data;
  1667. }
  1668. } else {
  1669. ElMessage({
  1670. type: "error",
  1671. showClose: true,
  1672. message: res.message,
  1673. center: true,
  1674. });
  1675. }
  1676. };
  1677. const classstrList = async (flag) => {
  1678. let params = {
  1679. majorId: flag ? flag : searchInput.major,
  1680. };
  1681. let res = await https.get(
  1682. "/welcome/api/welcomeOrg/getClasss",
  1683. "params",
  1684. params
  1685. );
  1686. console.log(res, "班级数据");
  1687. if (res.code == 200) {
  1688. if (flag) {
  1689. classstrFormData.value = res.data;
  1690. } else {
  1691. classstrData.value = res.data;
  1692. }
  1693. } else {
  1694. ElMessage({
  1695. type: "error",
  1696. showClose: true,
  1697. message: res.message,
  1698. center: true,
  1699. });
  1700. }
  1701. };
  1702. const collegeChange = async (val) => {
  1703. console.log(val);
  1704. searchInput.major = null;
  1705. searchInput.classstr = null;
  1706. if (!val) {
  1707. majorData.value = null;
  1708. classstrData.value = null;
  1709. return;
  1710. } else {
  1711. majorData.value = null;
  1712. classstrData.value = null;
  1713. }
  1714. majorList();
  1715. };
  1716. const collegeFormChange = async (val) => {
  1717. console.log(val);
  1718. ruleForm.major = null;
  1719. ruleForm.classstr = null;
  1720. if (!val) {
  1721. majorFormData.value = null;
  1722. classstrFormData.value = null;
  1723. return;
  1724. } else {
  1725. majorFormData.value = null;
  1726. classstrFormData.value = null;
  1727. }
  1728. majorList(ruleForm.college.split(",")[1]);
  1729. };
  1730. const majorChange = async (val) => {
  1731. console.log(val);
  1732. searchInput.classstr = null;
  1733. if (!val) {
  1734. classstrData.value = null;
  1735. return;
  1736. } else {
  1737. classstrData.value = null;
  1738. }
  1739. classstrList();
  1740. };
  1741. const majorFormChange = async (val) => {
  1742. console.log(val);
  1743. ruleForm.classstr = null;
  1744. if (!val) {
  1745. classstrFormData.value = null;
  1746. return;
  1747. } else {
  1748. classstrFormData.value = null;
  1749. }
  1750. classstrList(ruleForm.major.split(",")[1]);
  1751. };
  1752. // 家庭住址
  1753. const provinceData = ref([]);
  1754. const ocityData = ref([]); //籍贯
  1755. const odistrictData = ref([]); //籍贯
  1756. const cityData = ref([]); // 家庭住址
  1757. const districtData = ref([]); // 家庭住址
  1758. const provinceList = async () => {
  1759. let res = await https.get(
  1760. "/welcome/api/welcomeCity/getProvinceLevel",
  1761. "params"
  1762. );
  1763. console.log(res, "省数据");
  1764. if (res.code == 200) {
  1765. provinceData.value = res.data;
  1766. } else {
  1767. ElMessage({
  1768. type: "error",
  1769. showClose: true,
  1770. message: res.message,
  1771. center: true,
  1772. });
  1773. }
  1774. };
  1775. const cityList = async (flag) => {
  1776. let params = null;
  1777. if (flag == "籍贯") {
  1778. params = {
  1779. provinceId: ruleForm.oprovince.split(",")[1],
  1780. };
  1781. } else {
  1782. params = {
  1783. provinceId: ruleForm.province.split(",")[1],
  1784. };
  1785. }
  1786. let res = await https.get(
  1787. "/welcome/api/welcomeCity/getCityLevel",
  1788. "params",
  1789. params
  1790. );
  1791. console.log(res, "市数据");
  1792. if (res.code == 200) {
  1793. if (flag == "籍贯") {
  1794. ocityData.value = res.data;
  1795. } else {
  1796. cityData.value = res.data;
  1797. }
  1798. } else {
  1799. ElMessage({
  1800. type: "error",
  1801. showClose: true,
  1802. message: res.message,
  1803. center: true,
  1804. });
  1805. }
  1806. };
  1807. const districtList = async (flag) => {
  1808. let params = null;
  1809. if (flag == "籍贯") {
  1810. params = {
  1811. cityId: ruleForm.ocity.split(",")[1],
  1812. };
  1813. } else {
  1814. params = {
  1815. cityId: ruleForm.city.split(",")[1],
  1816. };
  1817. }
  1818. let res = await https.get(
  1819. "/welcome/api/welcomeCity/getDistrictLevel",
  1820. "params",
  1821. params
  1822. );
  1823. console.log(res, "区数据");
  1824. if (res.code == 200) {
  1825. if (flag == "籍贯") {
  1826. odistrictData.value = res.data;
  1827. } else {
  1828. districtData.value = res.data;
  1829. }
  1830. } else {
  1831. ElMessage({
  1832. type: "error",
  1833. showClose: true,
  1834. message: res.message,
  1835. center: true,
  1836. });
  1837. }
  1838. };
  1839. const oprovinceChange = async (val) => {
  1840. console.log(val);
  1841. ruleForm.ocity = null;
  1842. ruleForm.odistrict = null;
  1843. if (!val) {
  1844. ocityData.value = null;
  1845. odistrictData.value = null;
  1846. return;
  1847. } else {
  1848. ocityData.value = null;
  1849. odistrictData.value = null;
  1850. }
  1851. cityList("籍贯");
  1852. };
  1853. const ocityChange = async (val) => {
  1854. console.log(val);
  1855. ruleForm.odistrict = null;
  1856. if (!val) {
  1857. odistrictData.value = null;
  1858. return;
  1859. } else {
  1860. odistrictData.value = null;
  1861. }
  1862. districtList("籍贯");
  1863. };
  1864. const provinceChange = async (val) => {
  1865. console.log(val);
  1866. ruleForm.city = null;
  1867. ruleForm.district = null;
  1868. if (!val) {
  1869. cityData.value = null;
  1870. districtData.value = null;
  1871. return;
  1872. } else {
  1873. cityData.value = null;
  1874. districtData.value = null;
  1875. }
  1876. cityList();
  1877. };
  1878. const cityChange = async (val) => {
  1879. console.log(val);
  1880. ruleForm.district = null;
  1881. if (!val) {
  1882. districtData.value = null;
  1883. return;
  1884. } else {
  1885. districtData.value = null;
  1886. }
  1887. districtList();
  1888. };
  1889. const arriveData = ref([]); // 到站时间段
  1890. const arriveList = async () => {
  1891. let res = await https.get(
  1892. "/welcome/api/welcomeArriveSetting/queryArriveTimes",
  1893. "params"
  1894. );
  1895. console.log(res, "时间段数据");
  1896. if (res.code == 200) {
  1897. arriveData.value = res.data;
  1898. } else {
  1899. ElMessage({
  1900. type: "error",
  1901. showClose: true,
  1902. message: res.message,
  1903. center: true,
  1904. });
  1905. }
  1906. };
  1907. // 宿舍信息
  1908. const schoolData = ref([]);
  1909. const buildData = ref([]);
  1910. const dormitoryData = ref([]);
  1911. const bedData = ref([]);
  1912. // 年份
  1913. const yearData = ref([]);
  1914. const schoolList = async () => {
  1915. let res = await https.get("/welcome/api/welcome-build/schoolGroup", "params");
  1916. console.log(res, "校区数据");
  1917. if (res.code == 200) {
  1918. schoolData.value = res.data;
  1919. } else {
  1920. ElMessage({
  1921. type: "error",
  1922. showClose: true,
  1923. message: res.message,
  1924. center: true,
  1925. });
  1926. }
  1927. };
  1928. const buildList = async () => {
  1929. let params = {
  1930. schoolId: ruleForm.school.split(",")[1],
  1931. };
  1932. let res = await https.get(
  1933. "/welcome/api/welcome-build/buildGroup",
  1934. "params",
  1935. params
  1936. );
  1937. console.log(res, "楼栋数据");
  1938. if (res.code == 200) {
  1939. buildData.value = res.data;
  1940. } else {
  1941. ElMessage({
  1942. type: "error",
  1943. showClose: true,
  1944. message: res.message,
  1945. center: true,
  1946. });
  1947. }
  1948. };
  1949. const dormitoryList = async () => {
  1950. let params = {
  1951. schoolId: ruleForm.school.split(",")[1],
  1952. buildId: ruleForm.build.split(",")[1],
  1953. };
  1954. let res = await https.get(
  1955. "/welcome/api/welcome-dormitory/dormitoryGroup",
  1956. "params",
  1957. params
  1958. );
  1959. console.log(res, "寝室号数据");
  1960. if (res.code == 200) {
  1961. dormitoryData.value = res.data;
  1962. } else {
  1963. ElMessage({
  1964. type: "error",
  1965. showClose: true,
  1966. message: res.message,
  1967. center: true,
  1968. });
  1969. }
  1970. };
  1971. const bedList = async () => {
  1972. let params = {
  1973. dormitoryId: ruleForm.dormitory.split(",")[1],
  1974. };
  1975. let res = await https.get(
  1976. "/welcome/api/welcomeBed/queryBedDatas",
  1977. "params",
  1978. params
  1979. );
  1980. console.log(res, "床位号数据");
  1981. if (res.code == 200) {
  1982. bedData.value = res.data;
  1983. } else {
  1984. ElMessage({
  1985. type: "error",
  1986. showClose: true,
  1987. message: res.message,
  1988. center: true,
  1989. });
  1990. }
  1991. };
  1992. const yearList = async () => {
  1993. let res = await https.get("/welcome/api/systemSetting/yearDatas", "params");
  1994. console.log(res, "年份数据");
  1995. if (res.code == 200) {
  1996. yearData.value = res.data;
  1997. } else {
  1998. ElMessage({
  1999. type: "error",
  2000. showClose: true,
  2001. message: res.message,
  2002. center: true,
  2003. });
  2004. }
  2005. };
  2006. const schoolChange = (val) => {
  2007. ruleForm.build = null;
  2008. ruleForm.dormitory = null;
  2009. ruleForm.bed = null;
  2010. if (!val) {
  2011. buildData.value = null;
  2012. dormitoryData.value = null;
  2013. bedData.value = null;
  2014. return;
  2015. } else {
  2016. buildData.value = null;
  2017. dormitoryData.value = null;
  2018. bedData.value = null;
  2019. }
  2020. buildList();
  2021. };
  2022. const buildChange = async (val) => {
  2023. ruleForm.dormitory = null;
  2024. ruleForm.bed = null;
  2025. if (!val) {
  2026. dormitoryData.value = null;
  2027. bedData.value = null;
  2028. return;
  2029. } else {
  2030. dormitoryData.value = null;
  2031. bedData.value = null;
  2032. }
  2033. dormitoryList();
  2034. };
  2035. const dormitoryChange = async (val) => {
  2036. ruleForm.bed = null;
  2037. if (!val) {
  2038. bedData.value = null;
  2039. return;
  2040. } else {
  2041. bedData.value = null;
  2042. }
  2043. bedList();
  2044. };
  2045. // 导入
  2046. const buildImportVisible = ref(false);
  2047. const buildRef = ref();
  2048. const buildFile = ref();
  2049. const buildImportLoading = ref(false);
  2050. // 获取账户列表
  2051. const getList = async () => {
  2052. loading.value = true;
  2053. let params = {
  2054. currentPage: currentPage.value, // 当前页
  2055. pageCount: pageSize.value, // 一页数据条数
  2056. collegeId: searchInput.college,
  2057. majorId: searchInput.major,
  2058. classstrId: searchInput.classstr,
  2059. trafficMethod: searchInput.trafficMethod,
  2060. name: searchInput.name,
  2061. fillStatus: searchInput.fillStatus,
  2062. isPay: searchInput.isPay,
  2063. isCheck: searchInput.isCheck,
  2064. isRegistered: searchInput.isRegistered,
  2065. school: searchInput.schoolId,
  2066. batchValue: searchInput.batchValue,
  2067. carNumber: searchInput.carNumber,
  2068. yearId: searchInput.yearId,
  2069. };
  2070. console.log(params);
  2071. let res = await https.get(
  2072. "/welcome/api/welcomeStudent/queryPageStudents",
  2073. "params",
  2074. params
  2075. );
  2076. console.log(res, "学生信息");
  2077. if (res.code == 200) {
  2078. tableData.list = res.data.list;
  2079. total.value = res.data.totalCount;
  2080. loading.value = false;
  2081. } else {
  2082. loading.value = false;
  2083. ElMessage({
  2084. type: "error",
  2085. showClose: true,
  2086. message: res.message,
  2087. center: true,
  2088. });
  2089. }
  2090. };
  2091. // 搜索功能
  2092. const searchBtn = lodash.debounce(async () => {
  2093. getList();
  2094. }, 300);
  2095. // 搜索功能
  2096. const resetBtn = lodash.debounce(async () => {
  2097. searchInput.college = null;
  2098. searchInput.major = null;
  2099. majorData.value = null;
  2100. searchInput.classstr = null;
  2101. classstrData.value = null;
  2102. searchInput.trafficMethod = null;
  2103. searchInput.name = null;
  2104. searchInput.fillStatus = null;
  2105. searchInput.isPay = null;
  2106. searchInput.isCheck = null;
  2107. searchInput.isRegistered = null;
  2108. searchInput.schoolId=null
  2109. searchInput.batchValue=null
  2110. searchInput.carNumber=null
  2111. searchInput.yearId=null
  2112. getList();
  2113. }, 300);
  2114. // 家庭成员添加
  2115. const familysAdd = () => {
  2116. addfamilysTitle.value = "添加家庭成员";
  2117. addfamilysVisible.value = true;
  2118. addfamilysRuleForm.name = null;
  2119. addfamilysRuleForm.familyShip = null;
  2120. addfamilysRuleForm.workUnit = null;
  2121. addfamilysRuleForm.phone = null;
  2122. };
  2123. const familysDel = (scope) => {
  2124. console.log(scope.$index);
  2125. ruleForm.familys = ruleForm.familys.filter((i, ind) => {
  2126. return scope.$index != ind;
  2127. });
  2128. };
  2129. const accompanysDel = (scope) => {
  2130. console.log(scope.$index);
  2131. ruleForm.accompanys = ruleForm.accompanys.filter((i, ind) => {
  2132. return scope.$index != ind;
  2133. });
  2134. };
  2135. const cancelAddfamilys = () => {
  2136. addfamilysVisible.value = false;
  2137. addfamilysRef.value;
  2138. };
  2139. // 陪同人员添加 (陪同人员 Start)
  2140. const accompanysAdd = () => {
  2141. addfamilysTitle.value = "添加陪同人员";
  2142. addfamilysVisible.value = true;
  2143. addfamilysRuleForm.name = null;
  2144. addfamilysRuleForm.familyShip = null;
  2145. addfamilysRuleForm.workUnit = null;
  2146. addfamilysRuleForm.phone = null;
  2147. };
  2148. const submitAddfamilys = lodash.debounce(async (formEl) => {
  2149. if (!formEl) return;
  2150. await formEl.validate(async (valid, fields) => {
  2151. if (valid) {
  2152. if (addfamilysTitle.value == "添加家庭成员") {
  2153. ruleForm.familys.push({
  2154. familyShip: addfamilysRuleForm.familyShip,
  2155. name: addfamilysRuleForm.name,
  2156. workUnit: addfamilysRuleForm.workUnit,
  2157. phone: addfamilysRuleForm.phone,
  2158. });
  2159. } else if (addfamilysTitle.value == "添加陪同人员") {
  2160. ruleForm.accompanys.push({
  2161. name: addfamilysRuleForm.name,
  2162. phone: addfamilysRuleForm.phone,
  2163. });
  2164. }
  2165. addfamilysVisible.value = false;
  2166. } else {
  2167. console.log("error submit!", fields);
  2168. loading.value = false;
  2169. }
  2170. });
  2171. }, 1000);
  2172. // 陪同人员添加 (陪同人员 End)
  2173. // 添加账号
  2174. const addlist = () => {
  2175. dialongTitle.value = "新增学生信息";
  2176. addDialogVisible.value = true;
  2177. ruleForm.school = null;
  2178. ruleForm.picture = null;
  2179. ruleForm.admissNum = null;
  2180. ruleForm.name = null;
  2181. ruleForm.cardId = null;
  2182. ruleForm.sex = null;
  2183. ruleForm.birthday = null;
  2184. ruleForm.college = null;
  2185. ruleForm.major = null;
  2186. majorFormData.value = [];
  2187. ruleForm.classstr = null;
  2188. classstrFormData.value = [];
  2189. ruleForm.examNum = null;
  2190. ruleForm.eduSystem = null;
  2191. ruleForm.graduationSchool = null;
  2192. ruleForm.batchValue = null;
  2193. ruleForm.politicalStatu = null;
  2194. ruleForm.nationality = null;
  2195. // 填报明细
  2196. ruleForm.phone = null;
  2197. ruleForm.oprovince = null;
  2198. ruleForm.ocity = null;
  2199. ocityData.value = [];
  2200. ruleForm.odistrict = null;
  2201. odistrictData.value = [];
  2202. ruleForm.province = null;
  2203. ruleForm.city = null;
  2204. cityData.value = [];
  2205. ruleForm.district = null;
  2206. districtData.value = [];
  2207. ruleForm.address = null;
  2208. ruleForm.registerOntime = 0; // 按时报到
  2209. ruleForm.zipCode = null; // 邮编
  2210. ruleForm.trafficMethod = null;
  2211. ruleForm.arrive = null;
  2212. ruleForm.arrvieDate = null;
  2213. ruleForm.arriveTime = null;
  2214. // 家庭成员
  2215. ruleForm.familys = [];
  2216. // 缴费信息
  2217. ruleForm.amountPayable = null;
  2218. ruleForm.payAmount = null;
  2219. // 车辆信息
  2220. ruleForm.carNumber = null;
  2221. ruleForm.fillStatus = null;
  2222. ruleForm.id = null;
  2223. };
  2224. // 添加账号
  2225. const updateS = async (row) => {
  2226. console.log(row);
  2227. dialongTitle.value = "编辑学生信息";
  2228. addDialogVisible.value = true;
  2229. ruleForm.id = row.id;
  2230. ruleForm.fillStatus = row.fillStatus;
  2231. ruleForm.oprovince = null;
  2232. ruleForm.ocity = null;
  2233. ruleForm.odistrict = null;
  2234. ruleForm.province = null;
  2235. ruleForm.city = null;
  2236. ruleForm.district = null;
  2237. let data = {
  2238. id: row.id, // 当前页
  2239. };
  2240. let res = await https.get(
  2241. "/welcome/api/welcomeStudent/queryStudentDetail",
  2242. "params",
  2243. data
  2244. );
  2245. if (res.code == 200) {
  2246. console.log(res.data, "学生信息");
  2247. let resData = res.data;
  2248. ruleForm.picture = resData.picture;
  2249. ruleForm.admissNum = resData.admissNum;
  2250. ruleForm.name = resData.name;
  2251. ruleForm.cardId = resData.cardId;
  2252. ruleForm.sex = resData.sex;
  2253. ruleForm.birthday = resData.birthday;
  2254. ruleForm.school = `${resData.school},${resData.schoolId}`;
  2255. ruleForm.college = `${resData.college},${resData.collegeId}`;
  2256. majorList(resData.collegeId).then(() => {
  2257. ruleForm.major = `${resData.major},${resData.majorId}`;
  2258. classstrList(resData.majorId).then(() => {
  2259. if (resData.classstr) {
  2260. ruleForm.classstr = `${resData.classstr},${resData.classstrId}`;
  2261. } else {
  2262. ruleForm.classstr = null;
  2263. }
  2264. });
  2265. });
  2266. ruleForm.examNum = resData.examNum;
  2267. ruleForm.eduSystem = resData.eduSystem;
  2268. ruleForm.graduationSchool = resData.graduationSchool;
  2269. ruleForm.batchValue = resData.batchValue;
  2270. ruleForm.politicalStatu = resData.politicalStatu;
  2271. ruleForm.nationality = resData.nationality;
  2272. // 填报明细
  2273. ruleForm.phone = resData.phone;
  2274. if (resData.oprovince) {
  2275. ruleForm.oprovince = `${resData.oprovince},${resData.oprovinceId}`;
  2276. cityList("籍贯").then(() => {
  2277. if (resData.ocity) {
  2278. ruleForm.ocity = `${resData.ocity},${resData.ocityId}`;
  2279. districtList("籍贯").then(() => {
  2280. if (resData.odistrict) {
  2281. ruleForm.odistrict = `${resData.odistrict},${resData.odistrictId}`;
  2282. }
  2283. });
  2284. }
  2285. });
  2286. }
  2287. if (resData.province) {
  2288. ruleForm.province = `${resData.province},${resData.provinceId}`;
  2289. cityList().then(() => {
  2290. if (resData.city) {
  2291. ruleForm.city = `${resData.city},${resData.cityId}`;
  2292. districtList().then(() => {
  2293. if (resData.district) {
  2294. ruleForm.district = `${resData.district},${resData.districtId}`;
  2295. }
  2296. });
  2297. }
  2298. });
  2299. }
  2300. ruleForm.address = resData.address;
  2301. ruleForm.registerOntime = resData.registerOntime ? 1 : 0; // 按时报到
  2302. ruleForm.zipCode = resData.zipCode; // 邮编
  2303. ruleForm.trafficMethod = resData.trafficMethod;
  2304. ruleForm.arrive = resData.arrive;
  2305. ruleForm.arrvieDate = resData.arrvieDate
  2306. ? resData.arrvieDate.split(" ")[0]
  2307. : "";
  2308. ruleForm.arriveTime = resData.arriveTime
  2309. ? `${resData.arriveTime},${resData.arriveTimeId}`
  2310. : "";
  2311. // 家庭成员
  2312. ruleForm.familys = resData.fvs;
  2313. } else {
  2314. ElMessage({
  2315. type: "error",
  2316. showClose: true,
  2317. message: res.message,
  2318. center: true,
  2319. });
  2320. }
  2321. };
  2322. const deleteS = async (row) => {
  2323. ElMessageBox.confirm("是否删除此数据?", "提示!!!", {
  2324. confirmButtonText: "确认",
  2325. cancelButtonText: "取消",
  2326. type: "warning",
  2327. })
  2328. .then(async () => {
  2329. let data = {
  2330. id: row.id, // 当前页
  2331. };
  2332. let res = await https.get(
  2333. "/welcome/api/welcomeStudent/deleteStudentInfo",
  2334. "params",
  2335. data
  2336. );
  2337. if (res.code == 200) {
  2338. ElMessage({
  2339. type: "success",
  2340. showClose: true,
  2341. message: res.message,
  2342. center: true,
  2343. });
  2344. getList();
  2345. } else {
  2346. ElMessage({
  2347. type: "error",
  2348. showClose: true,
  2349. message: res.message,
  2350. center: true,
  2351. });
  2352. }
  2353. })
  2354. .catch(() => {
  2355. loading.value = false;
  2356. });
  2357. };
  2358. const registerS = async (row, flag) => {
  2359. if (flag == 1) {
  2360. let data = {
  2361. id: row.id,
  2362. isRegistered: flag, //已报到:1,未报到:2,为空默认是未报到
  2363. };
  2364. let res = await https.post(
  2365. "/welcome/api/welcomeStudent/isRegistered",
  2366. "data",
  2367. data
  2368. );
  2369. if (res.code == 200) {
  2370. ElMessage({
  2371. type: "success",
  2372. showClose: true,
  2373. message: res.message,
  2374. center: true,
  2375. });
  2376. getList();
  2377. } else {
  2378. ElMessage({
  2379. type: "error",
  2380. showClose: true,
  2381. message: res.message,
  2382. center: true,
  2383. });
  2384. }
  2385. } else if (flag != 1) {
  2386. ElMessageBox.confirm("是否取消报到?", "提示!!!", {
  2387. confirmButtonText: "确认",
  2388. cancelButtonText: "取消",
  2389. type: "warning",
  2390. })
  2391. .then(async () => {
  2392. let data = {
  2393. id: row.id,
  2394. isRegistered: flag, //已报到:1,未报到:2,为空默认是未报到
  2395. };
  2396. let res = await https.post(
  2397. "/welcome/api/welcomeStudent/isRegistered",
  2398. "data",
  2399. data
  2400. );
  2401. if (res.code == 200) {
  2402. ElMessage({
  2403. type: "success",
  2404. showClose: true,
  2405. message: res.message,
  2406. center: true,
  2407. });
  2408. getList();
  2409. } else {
  2410. ElMessage({
  2411. type: "error",
  2412. showClose: true,
  2413. message: res.message,
  2414. center: true,
  2415. });
  2416. }
  2417. })
  2418. .catch(() => {
  2419. loading.value = false;
  2420. });
  2421. }
  2422. };
  2423. const arriveTimeChange = (val) => {
  2424. console.log(val);
  2425. };
  2426. // 详情弹窗
  2427. const infoStudent = async (row) => {
  2428. console.log(row);
  2429. infoDialogVisible.value = true;
  2430. ruleForm.picture = null;
  2431. ruleForm.admissNum = null;
  2432. ruleForm.name = null;
  2433. ruleForm.cardId = null;
  2434. ruleForm.sex = null;
  2435. ruleForm.birthday = null;
  2436. ruleForm.college = null;
  2437. ruleForm.major = null;
  2438. majorFormData.value = [];
  2439. ruleForm.classstr = null;
  2440. classstrFormData.value = [];
  2441. ruleForm.examNum = null;
  2442. ruleForm.eduSystem = null;
  2443. ruleForm.graduationSchool = null;
  2444. ruleForm.batchValue = null;
  2445. ruleForm.politicalStatu = null;
  2446. ruleForm.nationality = null;
  2447. // 填报明细
  2448. ruleForm.phone = null;
  2449. ruleForm.oprovince = null;
  2450. ruleForm.ocity = null;
  2451. ocityData.value = [];
  2452. ruleForm.odistrict = null;
  2453. odistrictData.value = [];
  2454. ruleForm.province = null;
  2455. ruleForm.city = null;
  2456. cityData.value = [];
  2457. ruleForm.district = null;
  2458. districtData.value = [];
  2459. ruleForm.address = null;
  2460. ruleForm.registerOntime = 0; // 按时报到
  2461. ruleForm.zipCode = null; // 邮编
  2462. ruleForm.trafficMethod = null;
  2463. ruleForm.arrive = null;
  2464. ruleForm.arrvieDate = null;
  2465. ruleForm.arriveTime = null;
  2466. // 家庭成员
  2467. ruleForm.familys = [];
  2468. // 陪同人员
  2469. ruleForm.accompanys = [];
  2470. // 宿舍信息
  2471. ruleForm.school = null;
  2472. ruleForm.build = null;
  2473. buildData.value = [];
  2474. ruleForm.dormitory = null;
  2475. dormitoryData.value = [];
  2476. ruleForm.bed = null;
  2477. bedData.value = [];
  2478. // 缴费信息
  2479. ruleForm.amountPayable = null;
  2480. ruleForm.payAmount = null;
  2481. // 车辆信息
  2482. ruleForm.carNumber = null;
  2483. ruleForm.id = null;
  2484. let data = {
  2485. id: row.id, // 当前页
  2486. };
  2487. let res = await https.get(
  2488. "/welcome/api/welcomeStudent/queryStudentDetail",
  2489. "params",
  2490. data
  2491. );
  2492. if (res.code == 200) {
  2493. console.log(res.data, "学生信息");
  2494. let resData = res.data;
  2495. ruleForm.picture = resData.picture;
  2496. ruleForm.admissNum = resData.admissNum;
  2497. ruleForm.name = resData.name;
  2498. ruleForm.cardId = resData.cardId;
  2499. ruleForm.sex = resData.sex;
  2500. ruleForm.birthday = resData.birthday;
  2501. ruleForm.college = resData.college;
  2502. ruleForm.major = resData.major;
  2503. ruleForm.classstr = resData.classstr;
  2504. ruleForm.examNum = resData.examNum;
  2505. ruleForm.eduSystem = resData.eduSystem;
  2506. ruleForm.graduationSchool = resData.graduationSchool;
  2507. ruleForm.batchValue = resData.batchValue;
  2508. ruleForm.politicalStatu = resData.politicalStatu;
  2509. ruleForm.nationality = resData.nationality;
  2510. // 填报明细
  2511. ruleForm.phone = resData.phone;
  2512. ruleForm.oprovince = resData.oprovince;
  2513. ruleForm.ocity = resData.ocity;
  2514. ruleForm.odistrict = resData.odistrict;
  2515. ruleForm.province = resData.province;
  2516. ruleForm.city = resData.city;
  2517. ruleForm.district = resData.district;
  2518. ruleForm.address = resData.address;
  2519. ruleForm.registerOntime = resData.registerOntime ? 1 : 0; // 按时报到
  2520. ruleForm.zipCode = resData.zipCode; // 邮编
  2521. ruleForm.trafficMethod = resData.trafficMethod;
  2522. ruleForm.arrive = resData.arrive;
  2523. ruleForm.arrvieDate =
  2524. resData.arrvieDate != null ? resData.arrvieDate.split(" ")[0] : "";
  2525. ruleForm.arriveTime = resData.arriveTime
  2526. ? `${resData.arriveTime},${resData.arriveTimeId}`
  2527. : "";
  2528. // 家庭成员
  2529. ruleForm.familys = resData.fvs;
  2530. // 陪同人员
  2531. ruleForm.accompanys = resData.avs;
  2532. // 宿舍信息
  2533. ruleForm.build = resData.build;
  2534. ruleForm.dormitory = resData.dormitory;
  2535. ruleForm.bed = resData.bed;
  2536. ruleForm.school = resData.school;
  2537. // 缴费信息
  2538. ruleForm.amountPayable = resData.amountPayable;
  2539. ruleForm.payAmount = resData.payAmount;
  2540. // 车辆信息
  2541. ruleForm.carNumber = resData.carNumber;
  2542. ruleForm.id = row.id;
  2543. } else {
  2544. ElMessage({
  2545. type: "error",
  2546. showClose: true,
  2547. message: res.message,
  2548. center: true,
  2549. });
  2550. }
  2551. };
  2552. const cancelInfo = () => {
  2553. infoDialogVisible.value = false;
  2554. };
  2555. // 照片上传
  2556. const pictureRemove = (uploadFile, uploadFiles) => {
  2557. console.log(uploadFile, uploadFiles);
  2558. ruleForm.picture = "";
  2559. };
  2560. // 限制上传图片的大小
  2561. const beforeAvatarPicture = (rawFile) => {
  2562. console.log(rawFile, 33333);
  2563. if (rawFile.type !== "image/jpeg" && rawFile.type !== "image/png") {
  2564. ElMessage.error("图片格式必须为JPG/PNG格式!");
  2565. return false;
  2566. } else if (rawFile.size / 1024 > 500) {
  2567. ElMessage.error("图片的大小不能超过500kb!");
  2568. return false;
  2569. }
  2570. return true;
  2571. };
  2572. const pictureImportChange = async (file, fileLists) => {
  2573. console.log(file, "1111");
  2574. if (!beforeAvatarPicture(file.raw)) {
  2575. // 如果 beforeAvatarPicture 返回了 false,直接退出
  2576. return;
  2577. }
  2578. let srcImg = file.raw;
  2579. let data = new FormData();
  2580. data.set("file", srcImg);
  2581. let res = await https.post(
  2582. "/welcome/api/welcomeFile/uploadFile",
  2583. "data",
  2584. data
  2585. );
  2586. console.log(res, "导入照片");
  2587. if (res.code == 200) {
  2588. ruleForm.picture = res.data.url;
  2589. ElMessage({
  2590. type: "success",
  2591. showClose: true,
  2592. message: res.message,
  2593. center: true,
  2594. });
  2595. } else {
  2596. ElMessage({
  2597. type: "error",
  2598. showClose: true,
  2599. message: res.message,
  2600. center: true,
  2601. });
  2602. }
  2603. };
  2604. // 确认添加员工
  2605. const submitAdd = lodash.debounce(async (formEl) => {
  2606. if (!formEl) return;
  2607. await formEl.validate(async (valid, fields) => {
  2608. if (valid) {
  2609. let data = {
  2610. admissNum: ruleForm.admissNum,
  2611. name: ruleForm.name,
  2612. picture: ruleForm.picture,
  2613. cardId: ruleForm.cardId,
  2614. sex: ruleForm.sex,
  2615. birthday: ruleForm.birthday,
  2616. college: ruleForm.college.split(",")[0],
  2617. collegeId: ruleForm.college.split(",")[1],
  2618. school: ruleForm.school.split(",")[0],
  2619. schoolId: ruleForm.school.split(",")[1],
  2620. major: ruleForm.major.split(",")[0],
  2621. majorId: ruleForm.major.split(",")[1],
  2622. classstr: ruleForm.classstr.split(",")[0],
  2623. classstrId: ruleForm.classstr.split(",")[1],
  2624. examNum: ruleForm.examNum,
  2625. eduSystem: ruleForm.eduSystem,
  2626. graduationSchool: ruleForm.graduationSchool,
  2627. batchValue: ruleForm.batchValue,
  2628. politicalStatu: ruleForm.politicalStatu,
  2629. nationality: ruleForm.nationality,
  2630. phone: ruleForm.phone,
  2631. oprovince: ruleForm.oprovince ? ruleForm.oprovince.split(",")[0] : "",
  2632. oprovinceId: ruleForm.oprovince ? ruleForm.oprovince.split(",")[1] : "",
  2633. ocity: ruleForm.ocity ? ruleForm.ocity.split(",")[0] : "",
  2634. ocityId: ruleForm.ocity ? ruleForm.ocity.split(",")[1] : "",
  2635. odistrict: ruleForm.odistrict ? ruleForm.odistrict.split(",")[0] : "",
  2636. odistrictId: ruleForm.odistrict ? ruleForm.odistrict.split(",")[1] : "",
  2637. province: ruleForm.province ? ruleForm.province.split(",")[0] : "",
  2638. provinceId: ruleForm.province ? ruleForm.province.split(",")[1] : "",
  2639. city: ruleForm.city ? ruleForm.city.split(",")[0] : "",
  2640. cityId: ruleForm.city ? ruleForm.city.split(",")[1] : "",
  2641. district: ruleForm.district ? ruleForm.district.split(",")[0] : "",
  2642. districtId: ruleForm.district ? ruleForm.district.split(",")[1] : "",
  2643. address: ruleForm.address,
  2644. registerOntime: ruleForm.registerOntime,
  2645. zipCode: ruleForm.zipCode,
  2646. trafficMethod: ruleForm.trafficMethod,
  2647. arrive: ruleForm.arrive,
  2648. arrvieDate: ruleForm.arrvieDate
  2649. ? `${ruleForm.arrvieDate} 00:00:00`
  2650. : "",
  2651. arriveTime: ruleForm.arriveTime
  2652. ? ruleForm.arriveTime.split(",")[0]
  2653. : "",
  2654. arriveTimeId: ruleForm.arriveTime
  2655. ? ruleForm.arriveTime.split(",")[1]
  2656. : "",
  2657. build: "",
  2658. buildId: "",
  2659. dormitory: "",
  2660. dormitoryId: "",
  2661. bed: "",
  2662. bedId: "",
  2663. fvs: ruleForm.familys,
  2664. avs: "",
  2665. };
  2666. console.log(data);
  2667. if (ruleForm.id) {
  2668. data.id = ruleForm.id;
  2669. let res = await https.post(
  2670. "/welcome/api/welcomeStudent/updateStudentInfo",
  2671. "data",
  2672. data
  2673. );
  2674. if (res.code == 200) {
  2675. addDialogVisible.value = false;
  2676. getList();
  2677. ElMessage({
  2678. type: "success",
  2679. showClose: true,
  2680. message: res.message,
  2681. center: true,
  2682. });
  2683. } else {
  2684. ElMessage({
  2685. type: "error",
  2686. showClose: true,
  2687. message: res.message,
  2688. center: true,
  2689. });
  2690. }
  2691. } else {
  2692. let res = await https.post(
  2693. "/welcome/api/welcomeStudent/insertStudentInfo",
  2694. "data",
  2695. data
  2696. );
  2697. if (res.code == 200) {
  2698. addDialogVisible.value = false;
  2699. getList();
  2700. ElMessage({
  2701. type: "success",
  2702. showClose: true,
  2703. message: res.message,
  2704. center: true,
  2705. });
  2706. } else {
  2707. ElMessage({
  2708. type: "error",
  2709. showClose: true,
  2710. message: res.message,
  2711. center: true,
  2712. });
  2713. }
  2714. }
  2715. } else {
  2716. console.log("error submit!", fields);
  2717. loading.value = false;
  2718. }
  2719. });
  2720. }, 1000);
  2721. const cancelAdd = () => {
  2722. addDialogVisible.value = false;
  2723. };
  2724. // 表格斑马纹颜色修改
  2725. const tableRowClassName = ({ row, rowIndex }) => {
  2726. if (rowIndex % 2 === 0) {
  2727. return "even";
  2728. } else if (rowIndex % 2 !== 0) {
  2729. return "odd";
  2730. }
  2731. return "";
  2732. };
  2733. // 每页显示条数
  2734. const handleSizeChange = (value) => {
  2735. console.log(value, "每页显示条数");
  2736. pageSize.value = value;
  2737. getList();
  2738. };
  2739. // 分页
  2740. const handleCurrentChange = (value) => {
  2741. // console.log(value);
  2742. currentPage.value = value;
  2743. getList();
  2744. };
  2745. // 楼栋导出
  2746. const buildExportbtn = async () => {
  2747. let params = {
  2748. collegeId: searchInput.college,
  2749. majorId: searchInput.major,
  2750. classstrId: searchInput.classstr,
  2751. trafficMethod: searchInput.trafficMethod,
  2752. name: searchInput.name,
  2753. fillStatus: searchInput.fillStatus,
  2754. isPay: searchInput.isPay,
  2755. isCheck: searchInput.isCheck,
  2756. isRegistered: searchInput.isRegistered,
  2757. school: searchInput.schoolId,
  2758. batchValue: searchInput.batchValue,
  2759. carNumber: searchInput.carNumber,
  2760. yearId: searchInput.yearId,
  2761. };
  2762. let res = await https.getBlob(
  2763. "/welcome/api/welcomeStudent/welcomeStudentExport",
  2764. "params",
  2765. params
  2766. );
  2767. console.log(res, "学生信息导出");
  2768. let name = `学生信息管理`;
  2769. var content = res;
  2770. var datas = new Blob([content]);
  2771. var downloadUrl = window.URL.createObjectURL(datas);
  2772. var anchor = document.createElement("a");
  2773. anchor.href = downloadUrl;
  2774. anchor.download = name + ".xlsx";
  2775. anchor.click();
  2776. window.URL.revokeObjectURL(datas);
  2777. ElMessage({
  2778. type: "success",
  2779. showClose: true,
  2780. message: "导出成功",
  2781. center: true,
  2782. });
  2783. };
  2784. // 楼栋导入 (--------------------------------------------------)
  2785. const buildImportBtn = () => {
  2786. buildImportVisible.value = true;
  2787. };
  2788. // 模板下载
  2789. const templateDown = async () => {
  2790. let res = await https.get(
  2791. "/welcome/api/welcomeStudent/downloadStudentExcel",
  2792. "params"
  2793. );
  2794. console.log(res, "模板下载");
  2795. if (res.code == 200) {
  2796. window.location.href = res.data;
  2797. } else {
  2798. ElMessage({
  2799. type: "error",
  2800. showClose: true,
  2801. message: res.message,
  2802. center: true,
  2803. });
  2804. }
  2805. };
  2806. // 移出照片
  2807. const projectImportRemove = (uploadFile, uploadFiles) => {
  2808. console.log(uploadFile, uploadFiles);
  2809. buildFile.value = "";
  2810. };
  2811. // 限制上传图片的大小
  2812. // const beforeAvatarProImport = (rawFile) => {
  2813. // console.log(rawFile, 33333);
  2814. // if (rawFile.type !== "image/jpeg" && rawFile.type !== "image/png") {
  2815. // ElMessage.error("图片格式必须为JPG/PNG格式!");
  2816. // return false;
  2817. // } else if (rawFile.size / 1024 > 150) {
  2818. // ElMessage.error("图片的大小不能超过150kb!");
  2819. // return false;
  2820. // }
  2821. // return true;
  2822. // };
  2823. // 添加照片时往fileList列表中添加图片信息
  2824. const projectImportChange = async (file, fileLists) => {
  2825. console.log(file, "1111");
  2826. buildFile.value = file.raw;
  2827. };
  2828. const projectImportExceed = (files) => {
  2829. buildRef.value.clearFiles();
  2830. const file = files[0];
  2831. file.uid = genFileId();
  2832. buildRef.value.handleStart(file);
  2833. };
  2834. // 导入项目
  2835. const projectImportConfirm = async () => {
  2836. buildImportLoading.value = true;
  2837. let data = new FormData();
  2838. data.set("file", buildFile.value);
  2839. let res = await https.post(
  2840. "/welcome/api/welcomeStudent/importStudentExcel",
  2841. "data",
  2842. data
  2843. );
  2844. console.log(res, "导入项目");
  2845. if (res.code == 200) {
  2846. buildImportVisible.value = false;
  2847. buildImportLoading.value = false;
  2848. getList();
  2849. ElMessage({
  2850. type: "success",
  2851. showClose: true,
  2852. message: res.message,
  2853. center: true,
  2854. });
  2855. } else {
  2856. ElMessage({
  2857. type: "error",
  2858. showClose: true,
  2859. message: res.message,
  2860. center: true,
  2861. });
  2862. }
  2863. };
  2864. const cancelProjectImport = () => {
  2865. buildImportVisible.value = false;
  2866. if (buildRef.value) {
  2867. buildRef.value.clearFiles();
  2868. buildFile.value = null;
  2869. }
  2870. };
  2871. onBeforeMount(() => {
  2872. getList();
  2873. collegeList(); // 院系
  2874. schoolList(); // 校区
  2875. provinceList(); // 省
  2876. arriveList(); // 时间段
  2877. yearList()
  2878. });
  2879. onUnmounted(() => {
  2880. // document.removeEventListener("keyup", Enters);
  2881. });
  2882. </script>
  2883. <style scoped lang="scss">
  2884. .content-box {
  2885. width: calc(100% - 40px);
  2886. height: calc(100% - 105px);
  2887. margin: 20px auto;
  2888. background-color: #fff;
  2889. color: #000;
  2890. display: flex;
  2891. flex-direction: column;
  2892. .svg {
  2893. width: 22px;
  2894. height: 22px;
  2895. }
  2896. .left {
  2897. width: calc(100% - 60px);
  2898. height: 60px;
  2899. margin: 0 auto;
  2900. display: flex;
  2901. align-items: center;
  2902. border-bottom: 1px solid #ccc;
  2903. color: #000;
  2904. font-size: 18px;
  2905. font-weight: 600;
  2906. .camera {
  2907. margin-right: 15px;
  2908. color: #4392f7;
  2909. }
  2910. }
  2911. .scroll {
  2912. width: calc(100% - 60px);
  2913. height: calc(100% - 61px);
  2914. margin: 0 auto;
  2915. display: flex;
  2916. flex-direction: column;
  2917. .middle {
  2918. width: calc(100%);
  2919. color: #000;
  2920. .filter {
  2921. display: flex;
  2922. flex-wrap: wrap;
  2923. align-items: center;
  2924. .search {
  2925. margin-left: 0 !important;
  2926. color: #fff;
  2927. }
  2928. .condition {
  2929. display: flex;
  2930. align-items: center;
  2931. margin: 10px 30px 10px 0;
  2932. :deep(.el-input .el-input__inner) {
  2933. font-size: 14px;
  2934. }
  2935. .el-select {
  2936. width: 200px;
  2937. }
  2938. span {
  2939. margin: 0 10px 0 0;
  2940. }
  2941. }
  2942. }
  2943. .gongneng {
  2944. margin: 10px 0;
  2945. .el-button {
  2946. color: #fff;
  2947. margin-right: 15px;
  2948. }
  2949. }
  2950. }
  2951. .footer {
  2952. width: calc(100%);
  2953. flex: 1;
  2954. margin: 0 auto;
  2955. overflow: auto;
  2956. .el-table--fit {
  2957. height: calc(100% - 60px);
  2958. :deep(.el-table__header-wrapper) {
  2959. background-color: #000;
  2960. font-size: 15px;
  2961. color: #000;
  2962. .cell {
  2963. color: #000;
  2964. }
  2965. }
  2966. :deep(.el-table__row) {
  2967. height: 50px;
  2968. font-size: 15px;
  2969. color: #000;
  2970. }
  2971. :deep(.el-table__row td) {
  2972. padding: 0;
  2973. border: 0;
  2974. }
  2975. .el-button--primary {
  2976. margin-left: 5px;
  2977. }
  2978. :deep(.el-table__body .even) {
  2979. background-color: #fff;
  2980. }
  2981. :deep(.el-table__body .odd) {
  2982. background-color: rgba(240, 243, 247, 1);
  2983. }
  2984. :deep(.options) {
  2985. display: flex;
  2986. justify-content: center;
  2987. align-items: center;
  2988. .info {
  2989. color: rgba(0, 97, 255, 1);
  2990. cursor: pointer;
  2991. margin: 0 15px 0 0;
  2992. }
  2993. .edit {
  2994. margin: 0 15px 0 0;
  2995. color: rgba(0, 186, 173, 1);
  2996. cursor: pointer;
  2997. }
  2998. .delete {
  2999. color: rgba(212, 48, 48, 1);
  3000. cursor: pointer;
  3001. }
  3002. }
  3003. }
  3004. .pageSize {
  3005. display: flex;
  3006. align-items: center;
  3007. justify-content: space-between;
  3008. margin: 0 30px;
  3009. height: 60px;
  3010. span {
  3011. color: #000;
  3012. }
  3013. .el-pagination {
  3014. // width: 1600px;
  3015. :deep(.el-pagination__total) {
  3016. color: #000;
  3017. }
  3018. :deep(.el-pagination__goto) {
  3019. color: #000;
  3020. }
  3021. :deep(.el-pagination__classifier) {
  3022. color: #000;
  3023. }
  3024. :deep(.el-input__wrapper) {
  3025. border: 1px solid rgba(0, 0, 0, 1);
  3026. border-radius: 5px;
  3027. box-shadow: none;
  3028. }
  3029. :deep(.el-pager li) {
  3030. margin: 0 5px;
  3031. border: 1px solid rgba(0, 0, 0, 1);
  3032. border-radius: 5px;
  3033. background-color: transparent;
  3034. }
  3035. :deep(.el-pager li.is-active) {
  3036. // background-color: rgba(0, 97, 255, 0.8);
  3037. border: 1px solid rgba(0, 97, 255, 1);
  3038. color: rgba(0, 97, 255, 1);
  3039. }
  3040. :deep(.btn-prev) {
  3041. margin-right: 5px;
  3042. border: 1px solid rgba(0, 0, 0, 1);
  3043. border-radius: 5px;
  3044. background-color: transparent;
  3045. }
  3046. :deep(.btn-next) {
  3047. margin-left: 5px;
  3048. border: 1px solid rgba(0, 0, 0, 1);
  3049. border-radius: 5px;
  3050. background-color: transparent;
  3051. }
  3052. }
  3053. }
  3054. }
  3055. }
  3056. // 添加员工弹窗样式
  3057. :deep(.addStaff) {
  3058. .el-dialog__body {
  3059. height: 680px;
  3060. overflow: auto;
  3061. padding: 20px 20px 10px 20px;
  3062. .el-form {
  3063. .el-form-item__content {
  3064. display: flex;
  3065. align-items: normal;
  3066. }
  3067. // 照片
  3068. .photo {
  3069. display: flex;
  3070. .photo_left {
  3071. cursor: pointer;
  3072. position: relative;
  3073. .el-form-item__content {
  3074. margin-left: 0 !important;
  3075. .el-upload-list {
  3076. display: none;
  3077. }
  3078. .el-upload__tip {
  3079. text-align: center;
  3080. }
  3081. }
  3082. img {
  3083. width: 200px;
  3084. height: 249px;
  3085. opacity: 1;
  3086. border-radius: 7px;
  3087. }
  3088. span {
  3089. position: absolute;
  3090. top: 50%;
  3091. left: 50%;
  3092. transform: translate(-50%, -200%); /* 移动元素自身的一半尺寸 */
  3093. font-size: 30px;
  3094. color: #d4d4d4;
  3095. }
  3096. }
  3097. .photo_middle {
  3098. margin: 0 50px 0 25px;
  3099. }
  3100. .photo_footer {
  3101. .el-form-item {
  3102. .el-form-item__label {
  3103. width: 90px !important;
  3104. }
  3105. }
  3106. }
  3107. }
  3108. .info_title {
  3109. display: flex;
  3110. align-items: center;
  3111. font-size: 16px;
  3112. color: #000;
  3113. img {
  3114. width: 20px;
  3115. cursor: pointer;
  3116. }
  3117. }
  3118. // 填报明细
  3119. .filling_details {
  3120. display: flex;
  3121. flex-wrap: wrap;
  3122. .el-input {
  3123. width: 170px;
  3124. }
  3125. .el-form-item {
  3126. margin-right: 15px;
  3127. }
  3128. // 籍贯
  3129. .native {
  3130. display: flex;
  3131. .el-select {
  3132. width: 170px;
  3133. }
  3134. .el-form-item {
  3135. .el-form-item__label {
  3136. // border: 1px solid red;
  3137. width: 60px !important;
  3138. }
  3139. .el-form-item__content {
  3140. margin-left: 0 !important;
  3141. }
  3142. }
  3143. }
  3144. // 家庭住址
  3145. .family {
  3146. display: flex;
  3147. .el-form-item {
  3148. .el-form-item__label {
  3149. // border: 1px solid red;
  3150. width: 100px !important;
  3151. }
  3152. }
  3153. }
  3154. .email {
  3155. .el-form-item__label {
  3156. // border: 1px solid red;
  3157. width: 60px !important;
  3158. }
  3159. .el-form-item__content {
  3160. margin-left: 0 !important;
  3161. }
  3162. }
  3163. // 交通方式
  3164. .traffic {
  3165. display: flex;
  3166. .el-form-item {
  3167. .el-form-item__label {
  3168. // border: 1px solid red;
  3169. width: 100px !important;
  3170. }
  3171. .el-form-item__content {
  3172. margin-left: 0 !important;
  3173. }
  3174. }
  3175. }
  3176. }
  3177. // 宿舍信息
  3178. .dorm_info {
  3179. display: flex;
  3180. .el-select {
  3181. width: 180px;
  3182. }
  3183. .el-form-item {
  3184. margin-right: 15px;
  3185. .el-form-item__label {
  3186. // border: 1px solid red;
  3187. width: 70px !important;
  3188. }
  3189. }
  3190. }
  3191. .elFormTable {
  3192. .el-form-item__content {
  3193. margin-left: 0 !important;
  3194. }
  3195. }
  3196. }
  3197. .el-input {
  3198. width: 240px;
  3199. .el-input__suffix-inner {
  3200. color: rgba(61, 81, 232, 1);
  3201. }
  3202. }
  3203. .el-select {
  3204. width: 240px;
  3205. }
  3206. }
  3207. }
  3208. :deep(.infoStudent) {
  3209. .el-dialog__body {
  3210. height: 680px;
  3211. overflow: auto;
  3212. padding: 20px 20px 10px 20px;
  3213. .el-form {
  3214. .el-form-item {
  3215. display: flex;
  3216. align-items: center;
  3217. flex-wrap: wrap;
  3218. .title {
  3219. margin-right: 5px;
  3220. font-size: 16px;
  3221. font-weight: 600;
  3222. color: #000;
  3223. }
  3224. .title_content {
  3225. font-size: 16px;
  3226. font-weight: 600;
  3227. }
  3228. }
  3229. // 照片
  3230. .photo {
  3231. display: flex;
  3232. .photo_left {
  3233. position: relative;
  3234. .el-form-item__content {
  3235. margin-left: 0 !important;
  3236. .el-upload-list {
  3237. display: none;
  3238. }
  3239. .el-upload__tip {
  3240. text-align: center;
  3241. }
  3242. }
  3243. img {
  3244. width: 200px;
  3245. height: 249px;
  3246. opacity: 1;
  3247. border-radius: 7px;
  3248. }
  3249. }
  3250. .photo_middle {
  3251. margin: 0 50px 0 25px;
  3252. }
  3253. .photo_footer {
  3254. .el-form-item {
  3255. .el-form-item__label {
  3256. width: 90px !important;
  3257. }
  3258. }
  3259. }
  3260. }
  3261. .info_title {
  3262. display: flex;
  3263. align-items: center;
  3264. font-size: 16px;
  3265. color: #000;
  3266. img {
  3267. width: 20px;
  3268. cursor: pointer;
  3269. }
  3270. }
  3271. // 填报明细
  3272. .filling_details {
  3273. display: flex;
  3274. flex-direction: column;
  3275. .info_content {
  3276. display: flex;
  3277. flex-wrap: wrap;
  3278. .el-form-item {
  3279. margin-bottom: 15px;
  3280. }
  3281. }
  3282. .email {
  3283. display: flex;
  3284. flex-wrap: nowrap;
  3285. }
  3286. // .el-input {
  3287. // width: 170px;
  3288. // }
  3289. .el-form-item {
  3290. margin-right: 50px;
  3291. }
  3292. // 籍贯
  3293. .native {
  3294. display: flex;
  3295. .el-select {
  3296. width: 170px;
  3297. }
  3298. .el-form-item {
  3299. .el-form-item__label {
  3300. // border: 1px solid red;
  3301. width: 60px !important;
  3302. }
  3303. .el-form-item__content {
  3304. margin-left: 0 !important;
  3305. }
  3306. }
  3307. }
  3308. // 家庭住址
  3309. .family {
  3310. display: flex;
  3311. .el-form-item {
  3312. .el-form-item__label {
  3313. // border: 1px solid red;
  3314. width: 100px !important;
  3315. }
  3316. }
  3317. }
  3318. .email {
  3319. .el-form-item__label {
  3320. // border: 1px solid red;
  3321. width: 60px !important;
  3322. }
  3323. .el-form-item__content {
  3324. margin-left: 0 !important;
  3325. }
  3326. }
  3327. // 交通方式
  3328. .traffic {
  3329. display: flex;
  3330. .el-form-item {
  3331. .el-form-item__label {
  3332. // border: 1px solid red;
  3333. width: 100px !important;
  3334. }
  3335. .el-form-item__content {
  3336. margin-left: 0 !important;
  3337. }
  3338. }
  3339. }
  3340. }
  3341. // 宿舍信息
  3342. .dorm_info {
  3343. display: flex;
  3344. .el-select {
  3345. width: 180px;
  3346. }
  3347. .el-form-item {
  3348. margin-right: 50px;
  3349. .el-form-item__label {
  3350. // border: 1px solid red;
  3351. width: 70px !important;
  3352. }
  3353. }
  3354. }
  3355. .elFormTable {
  3356. .el-form-item__content {
  3357. margin-left: 0 !important;
  3358. }
  3359. }
  3360. }
  3361. .el-input {
  3362. width: 240px;
  3363. .el-input__suffix-inner {
  3364. color: rgba(61, 81, 232, 1);
  3365. }
  3366. }
  3367. .el-select {
  3368. width: 240px;
  3369. }
  3370. }
  3371. }
  3372. :deep(.addfamilys) {
  3373. .el-dialog__body {
  3374. // height: 260px;
  3375. overflow: auto;
  3376. padding: 20px 20px 10px 20px;
  3377. .el-form {
  3378. .el-form-item__content {
  3379. display: flex;
  3380. align-items: normal;
  3381. }
  3382. .options {
  3383. margin-top: 30px;
  3384. }
  3385. }
  3386. }
  3387. }
  3388. // 导入
  3389. :deep(.projectImport) {
  3390. .el-dialog__body {
  3391. padding: 20px 30px 0 30px;
  3392. .title {
  3393. color: red;
  3394. }
  3395. .down {
  3396. span:nth-child(1) {
  3397. color: rgba(127, 127, 127, 1);
  3398. }
  3399. span:nth-child(2) {
  3400. margin-left: 25px;
  3401. color: rgba(2, 167, 240, 1);
  3402. cursor: pointer;
  3403. }
  3404. }
  3405. .options {
  3406. margin: 50px 0 30px 0;
  3407. display: flex;
  3408. flex-direction: row-reverse;
  3409. .queding {
  3410. margin-left: 20px;
  3411. background: linear-gradient(
  3412. 90deg,
  3413. rgba(38, 151, 255, 1) 0%,
  3414. rgba(102, 181, 255, 1) 100%
  3415. );
  3416. border: none;
  3417. }
  3418. .quxiao {
  3419. border: 1px solid rgba(43, 151, 252, 1);
  3420. color: rgba(43, 151, 252, 1);
  3421. }
  3422. }
  3423. }
  3424. }
  3425. }
  3426. </style>