schoolList.vue 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025
  1. <template>
  2. <div class="list_container">
  3. <div class="title_examine">
  4. <div class="pub_title">学校列表</div>
  5. <div style="margin-left: auto">
  6. <el-input v-model="checkOid" placeholder="请输入学校" size="normal" clearable @change="changeOid"
  7. style="margin-right: 10px; width: 200px"></el-input>
  8. <el-input v-model="checkOrg" placeholder="请输入组织" size="normal" clearable @change="changeOrg"
  9. style="margin-right: 10px; width: 200px"></el-input>
  10. <el-select v-model="checkArea" placeholder="选择区域" clearable filterable @change="changeArea"
  11. style="margin-right: 10px">
  12. <el-option v-for="item in regionCList" :key="item.id" :label="item.name" :value="item.name">
  13. </el-option>
  14. </el-select>
  15. <el-button type="primary" size="small" @click="add_school_dialog = true">新增学校</el-button>
  16. </div>
  17. </div>
  18. <div class="tableBox">
  19. <el-table :data="schoolData" stripe border style="width: 100%" :header-cell-style="headerCellStyle">
  20. <el-table-column show-overflow-tooltip prop="name" label="学校名称" min-width="45"></el-table-column>
  21. <el-table-column show-overflow-tooltip prop="org_name" label="组织" min-width="45">
  22. <template slot-scope="scope">
  23. {{ scope.row.org_name || "-" }}
  24. <!-- 如果 org 为空,显示 '-' -->
  25. </template>
  26. </el-table-column>
  27. <el-table-column show-overflow-tooltip prop="org_code" label="组织编码" min-width="45">
  28. <template slot-scope="scope">
  29. {{ scope.row.org_code || "-" }}
  30. <!-- 如果 org 为空,显示 '-' -->
  31. </template>
  32. </el-table-column>
  33. <el-table-column show-overflow-tooltip prop="code" label="编码" min-width="45">
  34. <template slot-scope="scope">
  35. {{ scope.row.code || "-" }}
  36. <!-- 如果 org 为空,显示 '-' -->
  37. </template>
  38. </el-table-column>
  39. <el-table-column show-overflow-tooltip prop="code" label="随机码" min-width="45">
  40. <template slot-scope="scope">
  41. {{ scope.row.code2 || "-" }}
  42. <!-- 如果 org 为空,显示 '-' -->
  43. </template>
  44. </el-table-column>
  45. <el-table-column show-overflow-tooltip prop="detail" label="描述" min-width="45">
  46. <template slot-scope="scope">
  47. {{ scope.row.detail || '-' }} <!-- 如果 org 为空,显示 '-' -->
  48. </template>
  49. </el-table-column>
  50. <el-table-column show-overflow-tooltip prop="area" label="区域" min-width="45"></el-table-column>
  51. <el-table-column show-overflow-tooltip prop="ctime" label="创建时间" min-width="45"></el-table-column>
  52. <el-table-column label="是否禁用/使用期限" min-width="45">
  53. <template #default="scope">
  54. <span v-if="scope.row.isLogin === '1' || scope.row.isLogin === 'null' || scope.row.isLogin === ''">启用</span>
  55. <span v-else-if="scope.row.isLogin === '2'">禁用</span>
  56. <span v-else>{{ scope.row.isLogin }}</span>
  57. </template>
  58. </el-table-column>
  59. <el-table-column label="操作" width="420px">
  60. <template slot-scope="scope">
  61. <div class="operate">
  62. <button @click="update(scope.row)">编辑</button>
  63. <button @click="enable(scope.row,'enable')">
  64. {{ scope.row.isLogin === '2' ? '启用' : '禁用' }}
  65. </button>
  66. <button v-if="scope.row.isLogin !== '2'"
  67. @click="open_enable_school(scope.row, 'useDate')">/&nbsp;使用期限</button>
  68. <button @click="toPage(scope.row)">批量创建</button>
  69. <button @click="permissionSetting(scope.row)"
  70. v-show="!unShowJurUser.includes(userid)">权限设置</button>
  71. <button @click="addcommunityL(scope.row)">添加社区</button>
  72. <!-- <button @click="opengradia(scope.row.id)">年级管理</button> -->
  73. <button @click="delete_school(scope.row)" style="color: red">
  74. 删除
  75. </button>
  76. </div>
  77. </template>
  78. </el-table-column>
  79. </el-table>
  80. </div>
  81. <!-- 分页组件 -->
  82. <el-pagination :current-page="currentPage" :page-size="pageSize" :total="total"
  83. @current-change="handlePageChange" layout="total,prev, pager, next, jumper">
  84. </el-pagination>
  85. <!-- 新增学校弹窗 -->
  86. <el-dialog title="新增学校" class="table" :visible.sync="add_school_dialog" :before-close="close_add_school"
  87. width="700px">
  88. <div class="el_dialog_school_content">
  89. <form class="el-form">
  90. <!-- 学校名称 -->
  91. <div class="el-form-item" style="margin-top: 15px">
  92. <label class="el-form-item__label" style="width: 100px">学校名称</label>
  93. <div class="el-form-item__content" style="margin-left: 5px">
  94. <span>
  95. <div class="add_input el-input el-input--suffix">
  96. <input v-model="sch_name" type="text" autocomplete="off" placeholder="学校名称"
  97. class="el-input__inner" />
  98. </div>
  99. </span>
  100. </div>
  101. </div>
  102. <!-- 地区 -->
  103. <div class="el-form-item">
  104. <label class="el-form-item__label" style="width: 100px">地区</label>
  105. <div class="el-form-item__content" style="margin-left: 5px">
  106. <span>
  107. <div class="add_input el-input el-input--suffix">
  108. <input v-model="region" type="text" autocomplete="off" placeholder="请输入地区"
  109. class="el-input__inner" />
  110. </div>
  111. </span>
  112. </div>
  113. </div>
  114. <!-- 学校编码 -->
  115. <div class="el-form-item">
  116. <label class="el-form-item__label" style="width: 100px">学校编码</label>
  117. <div class="el-form-item__content" style="margin-left: 5px">
  118. <span>
  119. <div class="add_input el-input el-input--suffix">
  120. <input v-model="schoolCode" type="text" autocomplete="off" placeholder="请输入编码"
  121. class="el-input__inner" />
  122. </div>
  123. </span>
  124. </div>
  125. </div>
  126. <!-- 学校随机码 -->
  127. <div class="el-form-item">
  128. <label class="el-form-item__label" style="width: 100px">随机码</label>
  129. <div class="el-form-item__content" style="margin-left: 5px">
  130. <span>
  131. <div class="add_input el-input el-input--suffix">
  132. <input v-model="schoolCode2" type="text" autocomplete="off" placeholder="请输入随机码"
  133. class="el-input__inner" />
  134. </div>
  135. </span>
  136. </div>
  137. </div>
  138. <div class="el-form-item">
  139. <label class="el-form-item__label" style="width: 100px">上级组织</label>
  140. <div class="el-form-item__content" style="margin-left: 5px">
  141. <span>
  142. <div class="add_input el-input el-input--suffix">
  143. <el-form :model="school" ref="form">
  144. <el-select v-model="school.parentOrgId" placeholder="请选择组织"
  145. class="custom-select" filterable>
  146. <el-option v-for="(org, index) in organizations" :key="index"
  147. :label="org.name" :value="org.id">
  148. {{ org.name }}
  149. </el-option>
  150. </el-select>
  151. </el-form>
  152. </div>
  153. </span>
  154. </div>
  155. </div>
  156. <!-- 描述 -->
  157. <div class="el-form-item">
  158. <label class="el-form-item__label" style="width: 100px">描述</label>
  159. <div class="el-form-item__content" style="margin-left: 5px">
  160. <span>
  161. <div class="add_input el-input el-input--suffix">
  162. <input v-model="schoolDetail" type="text" autocomplete="off" placeholder="请输入描述"
  163. class="el-input__inner" />
  164. </div>
  165. </span>
  166. </div>
  167. </div>
  168. <!-- 区域 -->
  169. <div class="el-form-item">
  170. <label class="el-form-item__label" style="width: 100px">区域</label>
  171. <div class="el-form-item__content" style="margin-left: 5px">
  172. <span>
  173. <div class="add_input el-input el-input--suffix">
  174. <el-select v-model="regionC" placeholder="请选择区域" class="custom-select" filterable>
  175. <el-option v-for="(org, index) in regionCList" :key="index" :label="org.name"
  176. :value="org.name">
  177. {{ org.name }}
  178. </el-option>
  179. </el-select>
  180. </div>
  181. </span>
  182. </div>
  183. </div>
  184. <!-- 年级 -->
  185. <!-- <div class="flexcol">
  186. <div style="display: flex;gap: 15px;">
  187. <span>年级</span>
  188. <el-checkbox :indeterminate="graisInde" v-model="gracheckAll" @change="handleCheckAllChange">全选</el-checkbox>
  189. </div>
  190. <div>
  191. <el-checkbox-group v-model="checkedGra" @change="hangraChange">
  192. <el-checkbox v-for="city in gralist" :label="city" :key="city">{{city}}</el-checkbox>
  193. </el-checkbox-group>
  194. </div>
  195. </div> -->
  196. </form>
  197. </div>
  198. <!-- 按钮区域 -->
  199. <div slot="footer" class="el-dialog__footer">
  200. <el-button @click="close_add_school">取 消</el-button>
  201. <el-button type="primary" @click="ajax_add_school">确认</el-button>
  202. </div>
  203. </el-dialog>
  204. <!-- 修改学校弹窗 -->
  205. <el-dialog title="修改学校" class="table" :visible.sync="add_school_dialog2" :before-close="close_add_school2"
  206. width="700px">
  207. <div class="el_dialog_school_content">
  208. <form class="el-form">
  209. <!-- 学校名称 -->
  210. <div class="el-form-item" style="margin-top: 15px">
  211. <label class="el-form-item__label" style="width: 100px">学校名称</label>
  212. <div class="el-form-item__content" style="margin-left: 5px">
  213. <span>
  214. <div class="add_input el-input el-input--suffix">
  215. <input v-model="sch_name" type="text" autocomplete="off" placeholder="学校名称"
  216. class="el-input__inner" />
  217. </div>
  218. </span>
  219. </div>
  220. </div>
  221. <!-- 地区 -->
  222. <div class="el-form-item">
  223. <label class="el-form-item__label" style="width: 100px">地区</label>
  224. <div class="el-form-item__content" style="margin-left: 5px">
  225. <span>
  226. <div class="add_input el-input el-input--suffix">
  227. <input v-model="region" type="text" autocomplete="off" placeholder="请输入地区"
  228. class="el-input__inner" />
  229. </div>
  230. </span>
  231. </div>
  232. </div>
  233. <!-- 学校编码 -->
  234. <div class="el-form-item">
  235. <label class="el-form-item__label" style="width: 100px">学校编码</label>
  236. <div class="el-form-item__content" style="margin-left: 5px">
  237. <span>
  238. <div class="add_input el-input el-input--suffix">
  239. <input v-model="schoolCode" type="text" autocomplete="off" placeholder="请输入编码"
  240. class="el-input__inner" />
  241. </div>
  242. </span>
  243. </div>
  244. </div>
  245. <!-- 学校随机码 -->
  246. <div class="el-form-item">
  247. <label class="el-form-item__label" style="width: 100px">学校随机码</label>
  248. <div class="el-form-item__content" style="margin-left: 5px">
  249. <span>
  250. <div class="add_input el-input el-input--suffix">
  251. <input v-model.trim="schoolCode2" type="text" autocomplete="off" placeholder="请输入随机码"
  252. class="el-input__inner" />
  253. </div>
  254. </span>
  255. </div>
  256. </div>
  257. <div class="el-form-item">
  258. <label class="el-form-item__label" style="width: 100px">上级组织</label>
  259. <div class="el-form-item__content" style="margin-left: 5px">
  260. <span>
  261. <div class="add_input el-input el-input--suffix">
  262. <el-form :model="school" ref="form">
  263. <el-select v-model="school.parentOrgId" clearable placeholder="请选择组织"
  264. class="custom-select" filterable>
  265. <el-option v-for="(org, index) in organizations" :key="index"
  266. :label="org.name" :value="org.id">
  267. {{ org.name }}
  268. </el-option>
  269. </el-select>
  270. </el-form>
  271. </div>
  272. </span>
  273. </div>
  274. </div>
  275. <!-- 描述 -->
  276. <div class="el-form-item">
  277. <label class="el-form-item__label" style="width: 100px">描述</label>
  278. <div class="el-form-item__content" style="margin-left: 5px">
  279. <span>
  280. <div class="add_input el-input el-input--suffix">
  281. <input v-model="schoolDetail" type="text" autocomplete="off" placeholder="请输入描述"
  282. class="el-input__inner" />
  283. </div>
  284. </span>
  285. </div>
  286. </div>
  287. <!-- 区域 -->
  288. <div class="el-form-item">
  289. <label class="el-form-item__label" style="width: 100px">区域</label>
  290. <div class="el-form-item__content" style="margin-left: 5px">
  291. <span>
  292. <div class="add_input el-input el-input--suffix">
  293. <el-select v-model="regionC" placeholder="请选择区域" class="custom-select" filterable>
  294. <el-option v-for="(org, index) in regionCList" :key="index" :label="org.name"
  295. :value="org.name">
  296. {{ org.name }}
  297. </el-option>
  298. </el-select>
  299. </div>
  300. </span>
  301. </div>
  302. </div>
  303. </form>
  304. </div>
  305. <!-- 按钮区域 -->
  306. <div slot="footer" class="el-dialog__footer">
  307. <el-button @click="close_add_school2">取 消</el-button>
  308. <el-button type="primary" @click="updateSchool()">确认</el-button>
  309. </div>
  310. </el-dialog>
  311. <!-- 启用弹窗 -->
  312. <el-dialog :title="enableDiaTitle" class="table" :visible.sync="enable_school_dialog" :before-close="close_enable_school"
  313. width="700px">
  314. <div class="el_dialog_org_content">
  315. <form class="el-form">
  316. <!-- 使用期限 -->
  317. <div class="el-form-item">
  318. <label class="el-form-item__label">使用期限</label>
  319. <div class="el-form-item__content">
  320. <el-date-picker v-model="useDate" format="yyyy-MM-dd" type="date" value-format="yyyy-MM-dd"
  321. placeholder="请选择使用期限" />
  322. </div>
  323. </div>
  324. </form>
  325. </div>
  326. <!-- 按钮区域 -->
  327. <div slot="footer" class="dialog-footer">
  328. <el-button @click="close_enable_school">取 消</el-button>
  329. <el-button type="primary" @click="enable_school">确认</el-button>
  330. </div>
  331. </el-dialog>
  332. <el-dialog
  333. :title="`${cyInfo.name}社区列表`"
  334. :visible.sync="dialogcommunity"
  335. width="1000px"
  336. class="table"
  337. :before-close="handleClose">
  338. <div class="cyConTit">
  339. <div>社区列表</div>
  340. <el-button type="primary" size="mini" @click="editCy(0)">添加社区</el-button>
  341. </div>
  342. <el-table
  343. :data="cytableData"
  344. style="width: 100%" v-loading="cyloading">
  345. <el-table-column
  346. prop="name"
  347. label="名称"
  348. >
  349. </el-table-column>
  350. <el-table-column
  351. prop="username"
  352. label="创建人"
  353. >
  354. </el-table-column>
  355. <el-table-column
  356. prop="createtime"
  357. label="创建时间"
  358. >
  359. </el-table-column>
  360. <el-table-column
  361. show-overflow-tooltip
  362. prop="evatime2"
  363. label="截止日期"
  364. >
  365. </el-table-column>
  366. <el-table-column label="操作" width="200px">
  367. <template slot-scope="scope">
  368. <div class="operate">
  369. <button @click="lookCy(scope.row)">添加人员</button>
  370. <button @click="editCy(1,scope.row)">修改</button>
  371. <button @click="editOpen(scope.row)">{{ scope.row.isopen ? '启用' : '禁用' }}</button>
  372. <button @click="delete_Cy(scope.row)" style="color:red;">删除</button>
  373. </div>
  374. </template>
  375. </el-table-column>
  376. </el-table>
  377. </el-dialog>
  378. <el-dialog
  379. title="社区人员"
  380. :visible.sync="dialogcyperson"
  381. width="1000px"
  382. class="table"
  383. :before-close="handleClose2">
  384. <div class="cyConTit">
  385. <div>人员列表</div>
  386. <el-button type="primary" size="mini" @click="getTeacher(addCyperType)">添加人员</el-button>
  387. </div>
  388. <el-table
  389. :data="cypersontableData"
  390. style="width: 100%"
  391. height="600"
  392. v-loading="cypersonloading">
  393. <el-table-column
  394. prop="name"
  395. label="名称"
  396. >
  397. </el-table-column>
  398. <el-table-column
  399. prop="accountNumber"
  400. label="账号"
  401. >
  402. </el-table-column>
  403. <el-table-column
  404. prop="organizationname"
  405. label="学校"
  406. >
  407. </el-table-column>
  408. <el-table-column label="操作" width="200px">
  409. <template slot-scope="scope">
  410. <div class="operate">
  411. <button @click="removeCyperson(scope.row)" style="color:red;">移出</button>
  412. </div>
  413. </template>
  414. </el-table-column>
  415. </el-table>
  416. </el-dialog>
  417. <el-dialog
  418. :title="isedit ?'修改社区':'添加社区'"
  419. :visible.sync="dialogcyADD"
  420. width="1000px"
  421. class="table"
  422. :before-close="handleClose2">
  423. <form class="el-form">
  424. <!-- 名称 -->
  425. <div class="el-form-item" style="margin-top: 15px">
  426. <label class="el-form-item__label" style="width: 100px">名称</label>
  427. <div class="el-form-item__content" style="margin-left: 5px">
  428. <span>
  429. <div class="add_input el-input el-input--suffix">
  430. <input v-model="editCyInfo.name" type="text" autocomplete="off" placeholder="社区名称"
  431. class="el-input__inner" />
  432. </div>
  433. </span>
  434. </div>
  435. </div>
  436. <!-- banner -->
  437. <div class="el-form-item">
  438. <label class="el-form-item__label" style="width: 100px">截止日期</label>
  439. <el-date-picker
  440. v-model="editCyInfo.evatime"
  441. type="datetimerange"
  442. align="right"
  443. start-placeholder="开始日期"
  444. end-placeholder="结束日期"
  445. :default-time="['12:00:00', '08:00:00']">
  446. </el-date-picker>
  447. </div>
  448. <div class="el-form-item" style="align-items:flex-start;">
  449. <label class="el-form-item__label" style="width: 100px;flex-shrink: 0;">自定义分类</label>
  450. <div style="">
  451. <el-button size="mini" type="primary" @click="addType()">添加分类</el-button>
  452. <div v-if="editCyInfo.typeL && editCyInfo.typeL.length" style="margin-top: 10px;">
  453. <div class="typeArea" v-for="(item,index) in editCyInfo.typeL" :key="item.id">
  454. <div style="font-size: 12px;">分类名称</div>
  455. <div style="display: flex;gap: 20px;margin-top: 2px;">
  456. <div class="bigtype">
  457. <el-input
  458. v-if="item.eit == 0"
  459. v-model="editCyInfo.typeL[index].name" placeholder="请输入内容">
  460. </el-input>
  461. <span style="font-size: 16px;font-weight: 600;" v-else>{{ item.name }}</span>
  462. </div>
  463. <span class="btn" @click="Deltype(index)">删除</span>
  464. <span class="btn" v-if="item.eit == 0" @click="editCyInfo.typeL[index].eit = 1">确定</span>
  465. <span class="btn" v-else @click="editCyInfo.typeL[index].eit = 0">编辑</span>
  466. </div>
  467. <div style="font-size: 12px;margin-top: 10px;">分类标签</div>
  468. <div class="tagL">
  469. <template v-if="item.children && item.children.length">
  470. <span style="display: flex;gap: 10px;align-items: center;" v-for="(i,ind) in item.children" :key="i.id">
  471. <el-input
  472. v-if="i.eit == 0"
  473. v-model="editCyInfo.typeL[index].children[ind].name" placeholder="请输入内容">
  474. </el-input>
  475. <span v-else>{{ i.name }}</span>
  476. <span class="btn" @click="Deltag(index,ind)">删除</span>
  477. <span class="btn" v-if="i.eit == 0" @click="editCyInfo.typeL[index].children[ind].eit = 1">确定</span>
  478. <span class="btn" v-else @click="editCyInfo.typeL[index].children[ind].eit = 0">编辑</span>
  479. </span>
  480. </template>
  481. <span style="cursor: pointer;background-color: #409EFF;color: #fff;" @click="Addtag(index)">添加</span>
  482. </div>
  483. </div>
  484. </div>
  485. </div>
  486. </div>
  487. <div class="el-form-item">
  488. <label class="el-form-item__label" style="width: 100px">banner</label>
  489. <div class="el-form-item__content" style="margin-left: 5px">
  490. <el-button type="primary" @click="cyImgAdd">添加</el-button>
  491. </div>
  492. </div>
  493. <div class="el-form-item" v-if="editCyInfo.banner">
  494. <div style="position: relative;">
  495. <div class="cha" @click="delImg">❌</div>
  496. <img style="width: 60px;height: 60px;object-fit: cover;" :src="editCyInfo.banner" alt="">
  497. </div>
  498. </div>
  499. </form>
  500. <span slot="footer" class="dialog-footer">
  501. <el-button @click="handleClose2">取 消</el-button>
  502. <el-button v-if="isedit == 0" type="primary" @click="AddCy">确定添加</el-button>
  503. <el-button v-else type="primary" @click="updateCy">确定修改</el-button>
  504. </span>
  505. </el-dialog>
  506. <!-- 添加社区成员 -->
  507. <el-dialog
  508. title="添加社区成员"
  509. :visible.sync="dialogaddCyperson"
  510. :append-to-body="true"
  511. width="25%"
  512. height="80%"
  513. :close-on-click-modal="false"
  514. :before-close="handleClose"
  515. class="addNewPP customWidth"
  516. >
  517. <div class="cypersonBox" v-loading="addcyPerloading">
  518. <div class="cypersonBoxLeft">
  519. <span @click="getTeacher(1)" :class="addCyperType == 1 ? 'cybck' : '' ">教师</span>
  520. <span @click="getTeacher(2)" :class="addCyperType == 2 ? 'cybck' : '' ">学生</span>
  521. </div>
  522. <div class="people">
  523. <div class="people_top">
  524. <div class="people_top_right">
  525. <div class="people_search">
  526. <el-input
  527. placeholder="搜索成员名称"
  528. v-model="searchTN"
  529. @keyup.enter.native="getTeacher(addCyperType)"
  530. ></el-input>
  531. <div class="search_img" @click="getTeacher(addCyperType)">
  532. <img src="../assets/search.png" alt />
  533. </div>
  534. </div>
  535. </div>
  536. <div class="people_nav" style="display: flex; align-items: center">
  537. <div class="check_class_left_title">选择成员</div>
  538. <div style="display: flex; align-items: center; margin-left: auto">
  539. <el-checkbox
  540. v-model="checkAll"
  541. @change="handleCheckAllChange2"
  542. class="all_check"
  543. >全选</el-checkbox
  544. >
  545. </div>
  546. </div>
  547. </div>
  548. <div class="t_j_box" style="padding: 15px 10px 0;box-sizing: border-box;">
  549. <div>姓名</div>
  550. <div>账号</div>
  551. <div>学校</div>
  552. </div>
  553. <el-checkbox-group
  554. v-model="checkboxList3"
  555. class="people_name"
  556. @change="handleCheckedCitiesChange"
  557. v-if="teacherJuri.length"
  558. >
  559. <el-checkbox
  560. v-for="item in teacherJuri"
  561. :key="item.userid"
  562. :label="item.userid"
  563. >
  564. <div class="t_j_box">
  565. <el-tooltip
  566. placement="top"
  567. :content="item.name ? item.name : '暂无姓名'"
  568. >
  569. <div>{{ item.name ? item.name : "暂无姓名" }}</div>
  570. </el-tooltip>
  571. <el-tooltip placement="top" :content="item.accountNumber.split('@')[0]">
  572. <div>{{ item.accountNumber.split('@')[0] }}</div>
  573. </el-tooltip>
  574. <el-tooltip placement="top" :content="item.organizationname">
  575. <div>{{ item.organizationname }}</div>
  576. </el-tooltip>
  577. </div>
  578. </el-checkbox>
  579. </el-checkbox-group>
  580. <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
  581. </div>
  582. </div>
  583. <span slot="footer" class="dialog-footer">
  584. <el-button @click="dialogaddCyperson = false">取 消</el-button>
  585. <el-button type="primary" @click="addcyperson">确定</el-button>
  586. </span>
  587. </el-dialog>
  588. <!-- 管理年级 -->
  589. <el-dialog
  590. title="管理年级"
  591. :visible.sync="gradia"
  592. :append-to-body="true"
  593. width="600"
  594. :close-on-click-modal="false"
  595. :before-close="handleClose"
  596. class="table"
  597. >
  598. <div>
  599. <el-button size="mini" type="primary" @click="graopt(0)">添加年级</el-button>
  600. </div>
  601. <el-table
  602. :data="gratab"
  603. v-loading="graloading"
  604. >
  605. <el-table-column
  606. prop="name"
  607. label="年级"
  608. >
  609. </el-table-column>
  610. <el-table-column label="操作" align="center" width="250">
  611. <template slot-scope="scope">
  612. <el-button size="mini" type="primary" @click="graopt(1,scope.row)">编辑</el-button>
  613. <el-button size="mini" type="primary" @click="delGra(scope.row.id)">删除</el-button>
  614. </template>
  615. </el-table-column>
  616. </el-table>
  617. </el-dialog>
  618. <el-dialog
  619. :title="`${isaddGra ? '修改' : '添加'}年级`"
  620. :visible.sync="addgradia"
  621. :append-to-body="true"
  622. width="600"
  623. :close-on-click-modal="false"
  624. :before-close="handleClose"
  625. class="table"
  626. >
  627. <div>{{`${isaddGra ? '修改' : '添加'}年级`}}</div>
  628. <el-input v-model="graName" placeholder="请输入内容"></el-input>
  629. <span slot="footer" class="dialog-footer">
  630. <el-button @click="addgradia = false">取 消</el-button>
  631. <el-button v-if="isaddGra == 0" type="primary" @click="insertGradeL(graName,graoid)">确定添加</el-button>
  632. <el-button v-else type="primary" @click="updateGrade()">确定修改</el-button>
  633. </span>
  634. </el-dialog>
  635. <permissionSettingDialog ref="permissionSettingDialogRef" @getData="getSchool" />
  636. </div>
  637. </template>
  638. <script>
  639. import { addOp,addCommunity,
  640. getcylist,updateCommunity,
  641. getAddcyPersonlist,updateCommunityperson,
  642. getcypersonlist,delCommunity,updateCyOP } from "@/api/user";
  643. import { insert_school3New,insertGrade,selectGrade,updateGrade } from "@/api/user.js";
  644. import { API_CONFIG } from "@/common/apiConfig";
  645. import { mapGetters } from "vuex";
  646. import permissionSettingDialog from "./dialog/permissionSettingDialog";
  647. export default {
  648. name: "schoolList",
  649. components: {
  650. permissionSettingDialog,
  651. },
  652. data() {
  653. return {
  654. addcyPerloading:false,
  655. gracheckAll: false,
  656. checkedGra: [],
  657. gralist: ['一年级','二年级','三年级','四年级','五年级','六年级','七年级','八年级','九年级','高一','高二','高三'],
  658. graisInde: false, //年级全选按钮
  659. gradia:false,
  660. addgradia:false,
  661. graloading:false,
  662. gratotal:0,
  663. grapage:1,
  664. gratab:[],
  665. graName:'',
  666. graoid:'',
  667. graclaid:'',
  668. addCyperType: 1, //1教师 2学生
  669. isaddGra:0, //0是添加 1是修改
  670. // 点击组织操作添加社区弹框
  671. dialogcommunity:false,
  672. // 打开添加信息组织弹框,存储的组织信息
  673. cyInfo:[], //组织信息
  674. // 社区列表的loading
  675. cyloading:false,
  676. // 社区添加与修改所存储的信息
  677. editCyInfo:{name:'',banner:'',evatime:'',typeL:[]},
  678. // 添加与修改社区共用一个弹框 0是添加信息 1 修改信息
  679. isedit:0,
  680. // 添加与修改社区弹框
  681. dialogcyADD:false,
  682. //组织社区列表
  683. cytableData:[],
  684. // 添加社区人员的组织人员列表
  685. teacherJuri:[],
  686. //已添加社区人员列表
  687. cypersontableData:[],
  688. // 添加社区人员列表弹框已选中人员
  689. checkboxList3:[], //选中的人员
  690. // 添加社区人员列表全选
  691. checkAll:false,
  692. // 社区人员列表弹框
  693. dialogcyperson:false,
  694. // 社区人员列表弹框loading
  695. cypersonloading:false,
  696. // 添加社区成员弹框
  697. dialogaddCyperson:false,
  698. // 添加社区成员弹框人员搜索框
  699. searchTN:'',
  700. schoolData: [],
  701. schoolList: [],
  702. cn_school: [],
  703. checkOid: "",
  704. checkOrg: "",
  705. checkArea: "",
  706. currentPage: 1,
  707. pageSize: 10,
  708. total: 0,
  709. add_school_dialog: false,
  710. add_school_dialog2: false,
  711. enable_school_dialog: false,
  712. dialogAction: '',
  713. useDate: "",
  714. sch_name: "", //学校名称
  715. form: {
  716. name: "",
  717. account: "",
  718. organization: "",
  719. school: "",
  720. },
  721. school: {
  722. OrgId: null, // 初始化 OrgId 为 null 或适当的默认值
  723. parentOrgId: "",
  724. },
  725. region: "", //地区
  726. schoolCode: "", //学校编码
  727. schoolCode2: "", //学校编码
  728. regionC: "cn", //区域
  729. regionCList: [
  730. { id: 1, name: "hk" },
  731. { id: 2, name: "cn" },
  732. { id: 3, name: "com" },
  733. ], //区域列表
  734. organizations: [],
  735. schoolDetail: "", //学校描述
  736. schoolType: "1", //学校单选框类型
  737. loginPermission: "1", //是否允许登录
  738. nid: "", //修改学校的id
  739. unShowJurUser: ['0abcb118-9110-11eb-80ad-005056b86db5']
  740. };
  741. },
  742. methods: {
  743. graopt(val,data){
  744. this.isaddGra = val;
  745. if (data && data.id) {
  746. this.graclaid = data.id;
  747. this.graName = data.name;
  748. }else{
  749. this.graName = '';
  750. }
  751. this.addgradia = true;
  752. },
  753. //修改年级
  754. updateGrade() {
  755. let params = {
  756. id: this.graclaid,
  757. n: this.graName,
  758. oid: this.graoid,
  759. };
  760. // this.ajax
  761. // .get(this.$store.state.api + "updateGrade", params)
  762. // .then((res) => {
  763. updateGrade(params)
  764. .then((res) => {
  765. if (res.data[0] && res.data[0][0].classname == 1) {
  766. this.$message({
  767. message: "不能与其他年级名称相同!",
  768. type: "error",
  769. });
  770. } else {
  771. this.$message({
  772. message: "年级修改成功!",
  773. type: "success",
  774. });
  775. this.addgradia = false;
  776. this.opengradia(this.graoid);
  777. this.graName = '';
  778. this.graclaid = '';
  779. }
  780. })
  781. .catch((err) => {
  782. this.$message({
  783. message: this.lang.Modificationfailed,
  784. type: "error",
  785. });
  786. console.error(err);
  787. });
  788. },
  789. //获取年级列表
  790. opengradia(oid) {
  791. this.gradia = true;
  792. this.graoid = oid;
  793. this.graloading = true;
  794. let params = {
  795. cu: "",
  796. oid: oid,
  797. cn: '',
  798. page: this.grapage,
  799. };
  800. console.log('params',params);
  801. selectGrade(params)
  802. .then(async (res) => {
  803. this.gratotal = res.data[0].length > 0 ? res.data[0][0].num : 0;
  804. this.gratab = res.data[0];
  805. this.graloading = false;
  806. })
  807. .catch((error) => {
  808. this.graloading = false;
  809. console.error("请求失败,错误信息:", error);
  810. });
  811. },
  812. // 添加年级
  813. handleCheckAllChange(val) {
  814. this.checkedGra = val ? this.gralist : [];
  815. this.graisInde = false;
  816. },
  817. hangraChange(value) {
  818. let checkedCount = value.length;
  819. this.gracheckAll = checkedCount === this.gralist.length;
  820. this.graisInde = checkedCount > 0 && checkedCount < this.gralist.length;
  821. },
  822. addType(){
  823. this.editCyInfo.typeL.push({
  824. id: Date.now(),
  825. name: '',
  826. eit: 0,
  827. children: []
  828. })
  829. },
  830. async batchInstgra(oid){
  831. let kk = []
  832. for (let index = 0; index < this.checkedGra.length; index++) {
  833. setTimeout(async () => {
  834. kk.push(await this.insertGradeL(this.checkedGra[index],oid))
  835. }, 500);
  836. }
  837. Promise.all(kk)
  838. .then(() => {
  839. this.checkedGra = [];
  840. if (kk.indexOf(0) != -1) {
  841. this.$message.error('年级未全部添加成功')
  842. }else{
  843. this.$message.success('年级添加成功')
  844. }
  845. })
  846. .catch((e) => {
  847. console.log("👉", e);
  848. });
  849. },
  850. //新增年级
  851. insertGradeL(val,oid) {
  852. return new Promise((resolve, reject) => {
  853. let params = {
  854. name: val,
  855. oid: oid,
  856. uid: this.userid,
  857. };
  858. // console.log('params',params);
  859. insertGrade(params)
  860. .then((res) => {
  861. if (res.data[0] && res.data[0][0].classname == 1) {
  862. this.$message({
  863. message: "不能与其他年级名称相同!",
  864. type: "error",
  865. });
  866. reject(0)
  867. } else {
  868. if (this.graoid) {
  869. this.$message({
  870. message: "年级添加成功!",
  871. type: "success",
  872. });
  873. this.addgradia = false;
  874. this.opengradia(this.graoid);
  875. }
  876. resolve(1)
  877. }
  878. })
  879. .catch((err) => {
  880. reject(0)
  881. console.error(err);
  882. });
  883. })
  884. },
  885. Deltype(ind){
  886. this.editCyInfo.typeL.splice(ind,1)
  887. },
  888. Deltag(index,ind){
  889. this.editCyInfo.typeL[index].children.splice(ind,1)
  890. },
  891. Addtag(index){
  892. this.editCyInfo.typeL[index].children.push({
  893. id: Date.now(),
  894. name: '',
  895. eit:0,
  896. })
  897. },
  898. // 表头的背景色
  899. headerCellStyle() {
  900. return { backgroundColor: "#f1f1f1" };
  901. },
  902. changeOrg() {
  903. this.currentPage = 1;
  904. this.getSchool();
  905. },
  906. changeOid() {
  907. this.currentPage = 1; // 重置当前页
  908. this.getSchool(); // 调用获取数据的方法
  909. },
  910. changeArea() {
  911. this.currentPage = 1;
  912. this.getSchool();
  913. },
  914. getSchool() {
  915. let params = [
  916. {
  917. functionName: "getSchoolList",
  918. sName: this.checkOid,
  919. oName: this.checkOrg,
  920. area: this.checkArea,
  921. page: this.currentPage,
  922. num: this.pageSize,
  923. },
  924. ];
  925. this.$ajax
  926. .post(API_CONFIG.baseUrl, params)
  927. .then((res) => {
  928. // console.log("返回的数据为:", res.data); // 检查返回的数据
  929. if (res.data && Array.isArray(res.data[0])) {
  930. // 使用 map() 提取所有组织名称
  931. this.schoolData = res.data[0];
  932. if (
  933. this.schoolData.length > 0 &&
  934. res.data[0][0] &&
  935. res.data[0][0].num !== undefined
  936. ) {
  937. this.total = res.data[0][0].num; // 使用 num 的值
  938. } else {
  939. this.total = 0; // 设置总数为0
  940. }
  941. } else {
  942. this.total = 0; // 如果没有数据,设置总数为0
  943. }
  944. })
  945. .catch((err) => {
  946. this.$message.error("查询失败");
  947. console.error("请求失败,错误信息:", err);
  948. });
  949. },
  950. ajax_school() {
  951. // 构建请求参数
  952. let params = [
  953. {
  954. functionName: "getAllSchool", // 调用存储过程的名称
  955. },
  956. ];
  957. this.$ajax
  958. .post(API_CONFIG.baseUrl, params)
  959. .then((res) => {
  960. // console.log("返回的数据为:", res.data); // 检查返回的数据
  961. if (res.data && Array.isArray(res.data[0])) {
  962. this.cn_school = res.data[0].map((item) => ({
  963. name: item.name,
  964. id: item.id,
  965. org: item.org,
  966. area: item.area,
  967. }));
  968. // 将 name 和 org 都存入 cn_school 数组中
  969. this.schoolList = res.data[0].map((item) => ({
  970. name: item.name,
  971. id: item.id,
  972. org: item.org,
  973. area: item.area,
  974. }));
  975. // console.log(this.schoolList);
  976. }
  977. })
  978. .catch((err) => {
  979. this.$message.error("查询失败");
  980. console.error("请求失败,错误信息:", err);
  981. });
  982. },
  983. // 页码扩展按钮
  984. handlePageChange(page) {
  985. this.currentPage = page;
  986. this.getSchool();
  987. },
  988. close_add_school() {
  989. this.add_school_dialog = false;
  990. },
  991. close_add_school2() {
  992. this.add_school_dialog2 = false;
  993. this.sch_name = ""; // 清空学校名称
  994. this.school.parentOrgId = ""; // 清空组织选择
  995. this.region = ""; // 清空地区选择
  996. this.regionC = "cn";
  997. this.schoolType = "1"; // 清空学校类型选择
  998. this.schoolCode = ""; // 清空学校编码
  999. this.schoolCode2 = ""; // 清空学校编码
  1000. this.schoolDetail = ""; // 清空学校描述
  1001. this.loginPermission = "1"; // 清空登录权限的选择
  1002. },
  1003. close_enable_school() {
  1004. this.enable_school_dialog = false;
  1005. this.useDate = "";
  1006. },
  1007. //组织查询
  1008. ajax_org() {
  1009. const params = [API_CONFIG.ajax_org]; // 使用配置中的接口参数
  1010. this.$ajax
  1011. .post(API_CONFIG.baseUrl, params)
  1012. .then((res) => {
  1013. // console.log("返回的数据为:", res.data); // 检查返回的数据
  1014. if (res.data && Array.isArray(res.data[0])) {
  1015. // 使用 map() 提取所有组织名称
  1016. this.organizations = res.data[0].map((item) => ({
  1017. name: item.name,
  1018. id: item.id,
  1019. }));
  1020. }
  1021. // console.log("返回的结果为:", this.organizations);
  1022. })
  1023. .catch((err) => {
  1024. this.$message.error("查询失败");
  1025. console.error("请求失败,错误信息:", err);
  1026. });
  1027. },
  1028. ajax_add_school() {
  1029. // 校验学校名称是否为空
  1030. if (!this.sch_name || this.sch_name.trim() === "") {
  1031. this.$message.error("学校名称不能为空!");
  1032. return;
  1033. }
  1034. if (this.schoolCode2 && this.schoolCode2.length && this.schoolCode2.length != 4) return this.$message.error("随机码须4位数");
  1035. // 构建请求参数
  1036. let params =
  1037. {
  1038. u_name: this.sch_name, // 学校名称,绑定到 orgName
  1039. u_org: this.school.parentOrgId || "", // 选择的组织的 ID,绑定到 school.parentOrgId,如果没有选择则为空
  1040. u_dest: this.region || "", // 地区,绑定到 region,如果为空则传空字符串
  1041. u_type: this.schoolType || "", // 学校类型,绑定到 schoolType,如果没有选择则为空
  1042. u_code: this.schoolCode || "", // 学校编码,绑定到 schoolCode,如果为空则传空字符串
  1043. u_code2: this.schoolCode2 || "", // 学校随机码,绑定到 schoolCode,如果为空则传空字符串
  1044. u_detail: this.schoolDetail || "", // 学校描述,绑定到 schoolDetail,如果为空则传空字符串
  1045. u_regionC: this.regionC || "",
  1046. u_isLogin: this.loginPermission === "1" ? 1 : 2, // 是否允许登录,默认传 2(不允许登录)如果没有选择
  1047. uid: this.userid,
  1048. };
  1049. // 发起请求
  1050. insert_school3New(params)
  1051. .then(async (res) => {
  1052. // console.log("👉", res.data);
  1053. if (res.data && res.data[0] && res.data[0][0]) {
  1054. if (res.data[0][0].insertId === 1) {
  1055. this.$message({
  1056. type: "error",
  1057. message: "该学校已存在,请重新选择!",
  1058. });
  1059. return;
  1060. } else {
  1061. this.$message({
  1062. type: "success",
  1063. message: "学校添加成功!",
  1064. });
  1065. // if (this.checkedGra.length) {
  1066. // this.batchInstgra(res.data[0][0].insertId)
  1067. // }
  1068. await addOp({
  1069. uid: this.userid,
  1070. cid: "",
  1071. type: "user_op",
  1072. content: `添加了学校 ${this.sch_name}`,
  1073. });
  1074. }
  1075. } else {
  1076. this.$message.error("插入失败,未返回有效结果");
  1077. }
  1078. // 刷新学校列表
  1079. this.getSchool();
  1080. // 关闭弹窗
  1081. this.add_school_dialog = false;
  1082. // 清空输入框、下拉菜单选择和单选框
  1083. this.sch_name = ""; // 清空学校名称
  1084. this.school.parentOrgId = ""; // 清空组织选择
  1085. this.region = ""; // 清空地区选择
  1086. this.schoolDetail = ""; // 清空学校描述
  1087. this.regionC = "cn";
  1088. this.schoolType = "1"; // 清空学校类型选择
  1089. this.schoolCode = ""; // 清空学校编码
  1090. this.schoolCode2 = ""; // 清空学校随机码
  1091. this.loginPermission = "1"; // 清空登录权限的选择
  1092. })
  1093. .catch((err) => {
  1094. this.$message.error("插入失败");
  1095. console.error("请求失败,错误信息:", err);
  1096. });
  1097. },
  1098. update(row) {
  1099. this.nid = row.id;
  1100. this.add_school_dialog2 = true;
  1101. this.sch_name = row.name;
  1102. this.school.parentOrgId = row.org;
  1103. this.region = row.dest;
  1104. this.schoolCode = row.code;
  1105. this.schoolCode2 = row.code2;
  1106. this.schoolDetail = row.detail;
  1107. this.regionC = row.area;
  1108. },
  1109. updateSchool() {
  1110. if (this.schoolCode2 && this.schoolCode2.length && this.schoolCode2.length != 4) return this.$message.error("随机码须4位数");
  1111. let params = [
  1112. {
  1113. functionName: "updateSchool2N",
  1114. id: this.nid,
  1115. name: this.sch_name,
  1116. dest: this.region || '',
  1117. code: this.schoolCode || '',
  1118. code2: this.schoolCode2 || '',
  1119. organ: this.school.parentOrgId || '',
  1120. detail: this.schoolDetail || '',
  1121. area: this.regionC,
  1122. },
  1123. ];
  1124. this.$ajax
  1125. .post(API_CONFIG.baseUrl, params)
  1126. .then(async (res) => {
  1127. console.log("👉", res.data);
  1128. this.add_school_dialog2 = false;
  1129. this.$message({
  1130. message: "修改成功",
  1131. type: "success",
  1132. });
  1133. this.getSchool();
  1134. // 清空输入框、下拉菜单选择和单选框
  1135. this.sch_name = ""; // 清空学校名称
  1136. this.school.parentOrgId = ""; // 清空组织选择
  1137. this.region = ""; // 清空地区选择
  1138. this.schoolDetail = ""; // 清空学校描述
  1139. this.regionC = "cn";
  1140. this.schoolType = "1"; // 清空学校类型选择
  1141. this.schoolCode = ""; // 清空学校编码
  1142. this.schoolCode2 = ""; // 清空学校随机码
  1143. this.loginPermission = "1"; // 清空登录权限的选择
  1144. await addOp({
  1145. uid: this.userid,
  1146. cid: "",
  1147. type: "user_op",
  1148. content: `修改了学校 ${this.sch_name}${this.nid}`,
  1149. });
  1150. })
  1151. .catch((err) => {
  1152. this.$message.error("修改失败");
  1153. console.log(err);
  1154. });
  1155. },
  1156. formatDate() {
  1157. // 使用示例
  1158. const today = new Date(); // 获取当前日期
  1159. const year = today.getFullYear(); // 获取年份
  1160. const month = String(today.getMonth() + 1).padStart(2, '0'); // 获取月份,注意月份从0开始,所以要加1,并确保是两位数
  1161. const day = String(today.getDate()).padStart(2, '0'); // 获取日期,并确保是两位数
  1162. this.useDate = `${year}-${month}-${day}`; // 返回格式化后的日期字符串
  1163. },
  1164. enable(row,action) {
  1165. if (row.isLogin === '2') {
  1166. this.enable_school_dialog = true;
  1167. this.nid = row.id;
  1168. this.dialogAction = action;
  1169. this.formatDate();
  1170. }
  1171. else {
  1172. this.disableSchool(row);
  1173. }
  1174. },
  1175. open_enable_school(row) {
  1176. this.enable_school_dialog = true;
  1177. this.nid = row.id;
  1178. this.dialogAction = 'useDate';
  1179. if (row.isLogin === '1' || row.isLogin === 'null' || row.isLogin === '') {
  1180. this.formatDate();
  1181. } else {
  1182. this.useDate = row.isLogin;
  1183. }
  1184. },
  1185. enable_school() {
  1186. let params = [
  1187. {
  1188. functionName: "enableSchool",
  1189. id: this.nid,
  1190. date: this.useDate
  1191. }
  1192. ];
  1193. this.$ajax
  1194. .post(API_CONFIG.baseUrl, params)
  1195. .then(async (res) => {
  1196. console.log("👉", res.data);
  1197. this.enable_school_dialog = false;
  1198. this.useDate = "";
  1199. if (this.dialogAction === 'enable') {
  1200. this.$message({
  1201. message: '启用成功',
  1202. type: 'success'
  1203. });
  1204. } else if (this.dialogAction === 'useDate') {
  1205. this.$message({
  1206. message: '设置成功',
  1207. type: 'success'
  1208. });
  1209. }
  1210. // this.formatDate();
  1211. this.getSchool();
  1212. await addOp({
  1213. uid: this.userid,
  1214. cid: "",
  1215. type: "user_op",
  1216. content: `启用了学校 ${this.sch_name} ${this.nid}`,
  1217. });
  1218. })
  1219. .catch((err) => {
  1220. this.$message.error("启用失败");
  1221. console.log(err);
  1222. });
  1223. },
  1224. disableSchool(row) {
  1225. let params = [
  1226. {
  1227. functionName: "disableSchool",
  1228. id: row.id,
  1229. },
  1230. ];
  1231. this.$confirm("确定禁用此学校记录吗?", "提示", {
  1232. confirmButtonText: "确定",
  1233. cancelButtonText: "取消",
  1234. type: "warning",
  1235. })
  1236. .then(() => {
  1237. this.$ajax
  1238. .post(API_CONFIG.baseUrl, params)
  1239. .then(async (res) => {
  1240. console.log("👉", res.data);
  1241. this.$message({
  1242. message: '禁用成功',
  1243. type: 'success'
  1244. });
  1245. this.getSchool();
  1246. await addOp({
  1247. uid: this.userid,
  1248. cid: "",
  1249. type: "user_op",
  1250. content: `禁用了学校 ${row.name} ${row.id}`,
  1251. });
  1252. })
  1253. })
  1254. .catch((err) => {
  1255. console.log(err);
  1256. });
  1257. },
  1258. delete_school(row) {
  1259. this.nid = row.id;
  1260. let params = [
  1261. {
  1262. functionName: "deleteSchool",
  1263. id: this.nid,
  1264. },
  1265. ];
  1266. this.$confirm("确定删除此学校记录吗?", "提示", {
  1267. confirmButtonText: "确定",
  1268. cancelButtonText: "取消",
  1269. type: "warning",
  1270. })
  1271. .then(() => {
  1272. this.$ajax.post(API_CONFIG.baseUrl, params).then(async (res) => {
  1273. console.log("👉", res.data);
  1274. this.$message({
  1275. message: "删除成功",
  1276. type: "success",
  1277. });
  1278. this.getSchool();
  1279. await addOp({
  1280. uid: this.userid,
  1281. cid: "",
  1282. type: "user_op",
  1283. content: `删除了学校 ${row.name}${row.id}`,
  1284. });
  1285. });
  1286. })
  1287. .catch((err) => {
  1288. this.$message.error("删除失败");
  1289. console.log(err);
  1290. });
  1291. },
  1292. async getUserId(oid, org) {
  1293. let params = [
  1294. {
  1295. functionName: "select_Suffix", // 调用存储过程的名称
  1296. org: org, //组织id
  1297. oid: oid, //学校id
  1298. },
  1299. ];
  1300. try {
  1301. const res = await this.$ajax.post(API_CONFIG.baseUrl, params);
  1302. console.log("getSuffix", res);
  1303. let data = res.data[0];
  1304. let orgData = res.data[1];
  1305. let ap =
  1306. data.length > 0
  1307. ? data[0].userid
  1308. : orgData.length > 0
  1309. ? orgData[0].userid
  1310. : "";
  1311. return ap;
  1312. } catch (err) {
  1313. console.error("请求失败,错误信息:", err);
  1314. }
  1315. },
  1316. async toPage(row) {
  1317. const oid = row.id;
  1318. const org = row.org;
  1319. let userid = await this.getUserId(oid, org);
  1320. await addOp({
  1321. uid: this.userid,
  1322. cid: "",
  1323. type: "user_op",
  1324. content: `点击了批量添加 ${row.name}${row.id}`,
  1325. });
  1326. const url = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/?#/teacher?userid=${userid ? userid : this.userid
  1327. }&oid=${oid}&org=${org}`;
  1328. window.open(url, "_blank");
  1329. },
  1330. permissionSetting(data) {
  1331. this.$refs.permissionSettingDialogRef.open(data, "school");
  1332. },
  1333. // 打开添加社区弹框,
  1334. addcommunityL(val){
  1335. console.log('val',val);
  1336. this.cyInfo = val
  1337. this.getCy()
  1338. this.dialogcommunity = true
  1339. },
  1340. // 打开添加社区获取已添加的社区列表
  1341. getCy(){
  1342. this.cyloading = true;
  1343. let params = {
  1344. oid: this.cyInfo.id,
  1345. n: '', //预留搜索框
  1346. page: 1,
  1347. num: 10000,
  1348. };
  1349. getcylist(params)
  1350. .then(async (res) => {
  1351. console.log(res);
  1352. let data = res.data[0]
  1353. data.forEach(e => {
  1354. if (e.evatime) {
  1355. e.evatime = JSON.parse(e.evatime)
  1356. e.evatime2 = e.evatime.map(dateStr => this.formatDateCy(dateStr)).join('——')
  1357. }
  1358. e.typeL = e.typeL ? JSON.parse(e.typeL) : '';
  1359. });
  1360. this.cytableData = data
  1361. console.log('this.cytableData',this.cytableData);
  1362. this.cyloading = false;
  1363. })
  1364. .catch((error) => {
  1365. this.cyloading = false;
  1366. console.error("请求失败,错误信息:", error);
  1367. });
  1368. },
  1369. formatDateCy(dateStr, format = 'YYYY-MM-DD HH:mm:ss') {
  1370. const date = new Date(dateStr);
  1371. const pad = (num) => num.toString().padStart(2, '0');
  1372. const year = date.getFullYear();
  1373. const month = pad(date.getMonth() + 1);
  1374. const day = pad(date.getDate());
  1375. const hours = pad(date.getHours());
  1376. const minutes = pad(date.getMinutes());
  1377. const seconds = pad(date.getSeconds());
  1378. return format
  1379. .replace('YYYY', year)
  1380. .replace('MM', month)
  1381. .replace('DD', day)
  1382. .replace('HH', hours)
  1383. .replace('mm', minutes)
  1384. .replace('ss', seconds);
  1385. },
  1386. // 禁用启用社区
  1387. editOpen(val){
  1388. this.cyloading = true
  1389. let open = val.isopen ? '0' : '1'
  1390. let params = {
  1391. idL: val.id,
  1392. op: open
  1393. };
  1394. console.log('params',params);
  1395. updateCyOP(params)
  1396. .then(async (response) => {
  1397. if (response) {
  1398. await addOp({
  1399. uid: this.userid,
  1400. cid: "",
  1401. type: "user_op",
  1402. content: `${open ? '禁用' : '启用'}了${val.name}社区`,
  1403. });
  1404. this.$message({
  1405. type: "success",
  1406. message: "修改成功",
  1407. });
  1408. this.cyloading = false
  1409. this.getCy()
  1410. }
  1411. })
  1412. .catch((error) => {
  1413. this.cyloading = false
  1414. console.error("请求失败,错误信息:", error);
  1415. });
  1416. },
  1417. // 点击添加社区 0 是添加社区 1是修改社区信息
  1418. editCy(val,row){
  1419. console.log('row',row);
  1420. this.isedit = val
  1421. if (val == 1) {
  1422. let kol = JSON.parse(JSON.stringify(row))
  1423. if (kol && !kol.typeL) {
  1424. kol.typeL = []
  1425. }
  1426. this.editCyInfo = kol
  1427. }
  1428. this.dialogcyADD = true
  1429. },
  1430. // 添加组织社区
  1431. AddCy(){
  1432. if (!this.editCyInfo.name) return this.$message.error('请添加名称')
  1433. let params = {
  1434. uid:this.userid,
  1435. nam: this.editCyInfo.name,
  1436. oid:this.cyInfo.id,
  1437. ban: this.editCyInfo.banner,
  1438. eva: this.editCyInfo.evatime ? JSON.stringify(this.editCyInfo.evatime) : '',
  1439. typ: (this.editCyInfo.typeL && this.editCyInfo.typeL.length) ? JSON.stringify(this.editCyInfo.typeL) : '',
  1440. };
  1441. addCommunity(params)
  1442. .then(async (response) => {
  1443. if (response) {
  1444. console.log('response',response);
  1445. await addOp({
  1446. uid: this.userid,
  1447. cid: "",
  1448. type: "user_op",
  1449. content: `添加了${this.editCyInfo.name}社区`,
  1450. });
  1451. this.$message({
  1452. type: "success",
  1453. message: "添加成功",
  1454. });
  1455. this.dialogcyADD = false;
  1456. this.getCy()
  1457. this.editCyInfo = {name:'',banner:'',evatime:'',typeL:[]};
  1458. }
  1459. })
  1460. .catch((error) => {
  1461. console.error("请求失败,错误信息:", error);
  1462. });
  1463. },
  1464. // 修改社区信息
  1465. updateCy(){
  1466. if (!this.editCyInfo.name) return this.$message.error('请添加名称')
  1467. let params = {
  1468. idL:this.editCyInfo.id,
  1469. nam: this.editCyInfo.name,
  1470. ban: this.editCyInfo.banner,
  1471. eva: this.editCyInfo.evatime ? JSON.stringify(this.editCyInfo.evatime) : '',
  1472. typ: (this.editCyInfo.typeL && this.editCyInfo.typeL.length) ? JSON.stringify(this.editCyInfo.typeL) : '',
  1473. };
  1474. console.log('params',params);
  1475. updateCommunity(params)
  1476. .then(async (response) => {
  1477. if (response) {
  1478. console.log('response',response);
  1479. await addOp({
  1480. uid: this.userid,
  1481. cid: "",
  1482. type: "user_op",
  1483. content: `修改了${this.editCyInfo.name}社区`,
  1484. });
  1485. this.$message({
  1486. type: "success",
  1487. message: "修改成功",
  1488. });
  1489. this.dialogcyADD = false;
  1490. this.getCy()
  1491. this.editCyInfo = {name:'',banner:'',evatime:'',typeL:[]};
  1492. }
  1493. })
  1494. .catch((error) => {
  1495. console.error("请求失败,错误信息:", error);
  1496. });
  1497. },
  1498. // 删除社区
  1499. delete_Cy(val){
  1500. this.$confirm("确定删除吗?", {
  1501. confirmButtonText: "确定",
  1502. cancelButtonText: "取消",
  1503. type: "warning",
  1504. })
  1505. .then(() => {
  1506. let params = {
  1507. idL:val.id
  1508. };
  1509. console.log('params',params);
  1510. delCommunity(params)
  1511. .then(async (response) => {
  1512. if (response) {
  1513. console.log('response',response);
  1514. await addOp({
  1515. uid: this.userid,
  1516. cid: "",
  1517. type: "user_op",
  1518. content: `删除了${val.name}社区`,
  1519. });
  1520. this.$message({
  1521. type: "success",
  1522. message: "删除成功",
  1523. });
  1524. this.getCy()
  1525. }
  1526. })
  1527. })
  1528. .catch(() => {});
  1529. },
  1530. async cyImgAdd(){
  1531. let _url = await this.uploadFile("image/*");
  1532. this.editCyInfo.banner = _url
  1533. },
  1534. // 清除照片
  1535. delImg(){
  1536. this.editCyInfo.banner = ''
  1537. },
  1538. // 全选
  1539. handleCheckAllChange2(val){
  1540. this.checkboxList3 = val ? this.teacherJuri.map(e=>e.userid) : [];
  1541. this.checkAll = val
  1542. // console.log('this.checkboxList3',this.checkboxList3);
  1543. },
  1544. // 单选
  1545. handleCheckedCitiesChange(value){
  1546. let checkedCount = value.length;
  1547. this.checkAll = checkedCount === this.teacherJuri.length;
  1548. // console.log('this.checkboxList3',this.checkboxList3);
  1549. },
  1550. // 添加社区人员
  1551. addcyperson(){
  1552. console.log('ok');
  1553. let params = {
  1554. id:this.editCyInfo.id,
  1555. tea:this.checkboxList3.join(','),
  1556. };
  1557. console.log('params',params);
  1558. updateCommunityperson(params)
  1559. .then(async (response) => {
  1560. if (response) {
  1561. console.log('response',response);
  1562. await addOp({
  1563. uid: this.userid,
  1564. cid: "",
  1565. type: "user_op",
  1566. content: `修改了${this.editCyInfo.name}社区人员`,
  1567. });
  1568. this.$message({
  1569. type: "success",
  1570. message: "修改成功",
  1571. });
  1572. this.lookCy(this.editCyInfo)
  1573. this.dialogaddCyperson = false;
  1574. }
  1575. })
  1576. .catch((error) => {
  1577. console.error("请求失败,错误信息:", error);
  1578. });
  1579. },
  1580. // 移出社区人员
  1581. removeCyperson(val){
  1582. console.log(val);
  1583. this.$confirm("确定移出吗?", {
  1584. confirmButtonText: "确定",
  1585. cancelButtonText: "取消",
  1586. type: "warning",
  1587. })
  1588. .then(() => {
  1589. let person = this.cypersontableData.filter(e=> e.userid != val.userid).map(e=>e.userid)
  1590. console.log('person',person);
  1591. let params = {
  1592. id:this.editCyInfo.id,
  1593. tea: person.join(','),
  1594. };
  1595. console.log('params',params);
  1596. updateCommunityperson(params)
  1597. .then(async (response) => {
  1598. if (response) {
  1599. console.log('response',response);
  1600. await addOp({
  1601. uid: this.userid,
  1602. cid: "",
  1603. type: "user_op",
  1604. content: `移出了${this.editCyInfo.name}社区${val.userid}人员`,
  1605. });
  1606. this.$message({
  1607. type: "success",
  1608. message: "移出成功",
  1609. });
  1610. this.dialogaddCyperson = false;
  1611. this.lookCy(this.editCyInfo)
  1612. }
  1613. })
  1614. })
  1615. .catch(() => {});
  1616. },
  1617. // 查看社区人员
  1618. lookCy(val){
  1619. this.editCyInfo = val;
  1620. this.dialogcyperson = true;
  1621. this.cypersonloading = true;
  1622. let params = {
  1623. id: val.id,
  1624. };
  1625. getcypersonlist(params)
  1626. .then(async (res) => {
  1627. console.log(res);
  1628. this.cypersonloading = false;
  1629. this.cypersontableData = res.data[0]
  1630. })
  1631. .catch((error) => {
  1632. this.cypersonloading = false;
  1633. console.error("请求失败,错误信息:", error);
  1634. });
  1635. },
  1636. // 添加社区人员获取人员列表
  1637. getTeacher(val = 1) {
  1638. this.addCyperType = val
  1639. this.addcyPerloading= true
  1640. let params = {
  1641. oid: this.cyInfo.org ? this.cyInfo.org : this.cyInfo.id,
  1642. inp: this.searchTN,
  1643. typ: this.addCyperType,
  1644. page: 1,
  1645. num: 10
  1646. };
  1647. getAddcyPersonlist(params)
  1648. .then(async (res) => {
  1649. console.log(res);
  1650. this.teacherJuri = res.data[0];
  1651. this.checkboxList3 = this.cypersontableData.map(e=> e.userid)
  1652. this.dialogaddCyperson = true
  1653. this.addcyPerloading= false
  1654. })
  1655. .catch((error) => {
  1656. this.addcyPerloading= false
  1657. console.error("请求失败,错误信息:", error);
  1658. });
  1659. },
  1660. uploadFile(accept = "*") {
  1661. return new Promise((resolve) => {
  1662. const input = document.createElement("input");
  1663. input.type = "file";
  1664. input.accept = accept;
  1665. input.onchange = (event) => {
  1666. const file = event.target.files[0];
  1667. if (file) {
  1668. let credentials = {
  1669. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  1670. secretAccessKey: "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",
  1671. }; //秘钥形式的登录上传
  1672. window.AWS.config.update(credentials);
  1673. window.AWS.config.region = "cn-northwest-1"; //设置区域
  1674. let bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
  1675. // let _name = file.name;
  1676. // let size = file.size;
  1677. let params = {
  1678. Key:
  1679. file.name.split(".")[0] +
  1680. new Date().getTime() +
  1681. "." +
  1682. file.name.split(".")[file.name.split(".").length - 1],
  1683. ContentType: file.type,
  1684. Body: file,
  1685. "Access-Control-Allow-Credentials": "*",
  1686. ACL: "public-read",
  1687. }; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
  1688. let options = {
  1689. partSize: 2048 * 1024 * 1024,
  1690. queueSize: 2,
  1691. leavePartsOnError: true,
  1692. };
  1693. bucket
  1694. .upload(params, options)
  1695. .on("httpUploadProgress", (evt) => {
  1696. console.log(evt);
  1697. })
  1698. .send((err, data) => {
  1699. if (err) {
  1700. this.$message.error("上传失败");
  1701. return resolve("");
  1702. } else {
  1703. return resolve(data.Location);
  1704. }
  1705. });
  1706. } else {
  1707. resolve("");
  1708. }
  1709. };
  1710. input.click();
  1711. });
  1712. },
  1713. handleClose(done){
  1714. done();
  1715. },
  1716. handleClose2(){
  1717. this.editCyInfo = ''
  1718. this.editCyInfo = {name:'',banner:'',evatime:'',typeL:[]};
  1719. this.dialogcyADD=false;
  1720. this.dialogcyperson = false
  1721. }
  1722. },
  1723. mounted() {
  1724. this.getSchool();
  1725. this.ajax_org();
  1726. this.ajax_school();
  1727. },
  1728. computed: {
  1729. ...mapGetters(["userid"]),
  1730. enableDiaTitle() {
  1731. return this.dialogAction === 'enable' ? '启用学校' : '设置使用期限'
  1732. }
  1733. },
  1734. };
  1735. </script>
  1736. <style scoped>
  1737. .list_container {
  1738. width: 100%;
  1739. height: 100%;
  1740. padding: 10px;
  1741. box-sizing: border-box;
  1742. overflow: auto;
  1743. }
  1744. /* 新增学校的内容容器 */
  1745. .el_dialog_school_content {
  1746. color: #606266;
  1747. font-size: 14px;
  1748. /* height: 300px; */
  1749. }
  1750. .el-form-item {
  1751. margin-bottom: 22px;
  1752. display: flex;
  1753. align-items: center;
  1754. /* border: 1px solid black; */
  1755. }
  1756. .el-form-item__label {
  1757. font-size: 14px;
  1758. color: #606266;
  1759. line-height: 40px;
  1760. margin-left: 20px;
  1761. width: 70px;
  1762. }
  1763. .el-form-item__content {
  1764. line-height: 40px;
  1765. position: relative;
  1766. font-size: 14px;
  1767. }
  1768. .table>>>.el-dialog__header {
  1769. padding: 15px 20px;
  1770. background: #454545;
  1771. }
  1772. .table>>>.el-dialog__title {
  1773. color: #fff;
  1774. }
  1775. .tableBox {
  1776. margin: 10px 0;
  1777. }
  1778. .operate {
  1779. display: flex;
  1780. gap: 5px;
  1781. }
  1782. .operate button {
  1783. background: none;
  1784. border: none;
  1785. cursor: pointer;
  1786. color: #308fff;
  1787. }
  1788. .cyConTit{
  1789. display: flex;
  1790. justify-content: space-between;
  1791. }
  1792. .addNewPP >>> .el-dialog__body {
  1793. padding: 5px 20px;
  1794. }
  1795. .addNewPP >>> .el-dialog {
  1796. margin-top: 5vh !important;
  1797. }
  1798. .customWidth >>> .el-dialog {
  1799. min-width: 500px !important;
  1800. }
  1801. .people {
  1802. border: 1px solid rgb(229 229 229);
  1803. /* height: 495px; */
  1804. height: 350px;
  1805. border-radius: 5px;
  1806. width: 100%;
  1807. overflow: auto;
  1808. }
  1809. .people_top {
  1810. display: flex;
  1811. width: 100%;
  1812. /* justify-content: space-between; */
  1813. /* align-items: center; */
  1814. flex-direction: column;
  1815. padding: 10px 10px 0;
  1816. box-sizing: border-box;
  1817. }
  1818. .people_top_right {
  1819. height: 40px;
  1820. margin-bottom: 10px;
  1821. }
  1822. .people_search {
  1823. display: flex;
  1824. position: relative;
  1825. }
  1826. .people_search >>> .el-input__inner {
  1827. /* height: 25px; */
  1828. width: 100%;
  1829. }
  1830. .search_img {
  1831. width: 20px;
  1832. height: 20px;
  1833. position: absolute;
  1834. right: 10px;
  1835. top: 50%;
  1836. transform: translateY(-50%);
  1837. }
  1838. .search_img > img {
  1839. width: 100%;
  1840. height: 100%;
  1841. }
  1842. .people_name {
  1843. display: flex;
  1844. justify-content: flex-start;
  1845. padding: 20px 10px;
  1846. flex-direction: column;
  1847. flex-wrap: wrap;
  1848. }
  1849. .people_name >>> .el-checkbox {
  1850. width: 100%;
  1851. display: flex;
  1852. align-items: center;
  1853. margin-bottom: 10px;
  1854. }
  1855. .people_name >>> .el-checkbox__label {
  1856. text-overflow: ellipsis;
  1857. overflow: hidden;
  1858. width: calc(100%);
  1859. }
  1860. .t_j_box{
  1861. display: flex;
  1862. justify-content: space-between;
  1863. }
  1864. .t_j_box div{
  1865. width: 100px;
  1866. overflow: hidden;
  1867. text-overflow: ellipsis;
  1868. white-space: nowrap;
  1869. }
  1870. .cha{
  1871. position: absolute;top: 0;right: 5px;
  1872. cursor: pointer;
  1873. }
  1874. .custom-tree-node {
  1875. flex: 1;
  1876. display: flex;
  1877. align-items: center;
  1878. justify-content: space-between;
  1879. font-size: 14px;
  1880. padding-right: 8px;
  1881. }
  1882. .tagL{
  1883. display: flex;
  1884. align-items: center;
  1885. flex-wrap: wrap;
  1886. gap: 2px;
  1887. }
  1888. .tagL >>> .el-input__inner{
  1889. height: 30px;
  1890. line-height: 30px;
  1891. width: 120px;
  1892. }
  1893. .tagL span{
  1894. background: aqua;
  1895. padding: 5px 3px;
  1896. border-radius: 5px;
  1897. flex-shrink: 0;
  1898. }
  1899. .btn{
  1900. cursor: pointer;
  1901. display: flex;
  1902. align-items: center;
  1903. }
  1904. .bigtype{
  1905. display: flex;
  1906. align-items: center;
  1907. gap: 10px;
  1908. }
  1909. .bigtype >>> .el-input__inner{
  1910. height: 30px;
  1911. line-height: 30px;
  1912. width: 120px;
  1913. }
  1914. .typeArea{
  1915. border: 1px #ccc solid;padding: 5px;border-radius: 10px;
  1916. }
  1917. .alltype{
  1918. margin-top: 10px;
  1919. display: flex;
  1920. flex-direction: column;
  1921. gap: 15px;
  1922. }
  1923. .flexcol{
  1924. display: flex;
  1925. flex-direction: column;
  1926. gap: 10px;
  1927. }
  1928. .cypersonBox{
  1929. display: flex;
  1930. gap: 5px;
  1931. }
  1932. .cypersonBoxLeft{
  1933. display: flex;
  1934. flex-direction: column;
  1935. gap: 5px;
  1936. width: 100px;
  1937. }
  1938. .cypersonBox span{
  1939. width: 100%;
  1940. padding: 10px 0;
  1941. text-align: center;
  1942. border-radius: 5px;
  1943. cursor: pointer;
  1944. }
  1945. .cybck{
  1946. background: #308fff;
  1947. color: #fff;
  1948. }
  1949. </style>