staff.vue 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407
  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>
  8. <div class="middle">
  9. <div class="filter">
  10. <div class="condition">
  11. <span>关键字 : </span>
  12. <el-input :clearable="true" @clear="searchBtn" v-model="searchInput.keyWord" class="w-50 m-2"
  13. placeholder="请输入姓名" style="width: 150px" />
  14. </div>
  15. <div class="condition">
  16. <span>维修班 : </span>
  17. <el-select :clearable="true" @clear="searchBtn" v-model="searchInput.teamId" class="m-2" placeholder="请选择维修班">
  18. <el-option label="校方人员" :value="0" />
  19. <el-option label="第三方人员" :value="1" />
  20. </el-select>
  21. </div>
  22. <div class="condition">
  23. <span>校区 : </span>
  24. <el-select :clearable="true" @clear="searchBtn" v-model="searchInput.schoolId" class="m-2"
  25. placeholder="请选择校区">
  26. <el-option label="黄家湖校区" :value="1" />
  27. <el-option label="墨轩湖校区" :value="2" />
  28. </el-select>
  29. </div>
  30. <el-button style="margin-left: 20px" color="rgba(111, 182, 184, 1)" type="primary" class="search"
  31. @click="searchBtn"><el-icon>
  32. <Search />
  33. </el-icon> <span>查询</span></el-button>
  34. </div>
  35. <!-- 按钮列表 -->
  36. <div class="gongneng">
  37. <el-button type="primary" color="rgba(111, 182, 184, 1)" @click="addlist"><img src="@/assets/add.png"
  38. style="width: 14px; height: 14px; margin-right: 4px" alt="" /><span>添加员工</span></el-button>
  39. </div>
  40. </div>
  41. <div class="footer">
  42. <el-table :row-class-name="tableRowClassName" :data="tableData.list" @selection-change="handleSelectionChange"
  43. style="width: 100%" :header-cell-style="{
  44. background: 'rgba(240, 243, 247, 1)',
  45. height: '50px',
  46. border: 0,
  47. }">
  48. <!-- <el-table-column align="center" type="selection" width="80" /> -->
  49. <el-table-column width="80" align="center " type="index" label="序号" />
  50. <el-table-column align="center" prop="userName" label="姓名" />
  51. <el-table-column align="center" width="150" prop="userPhone" label="手机号码" />
  52. <el-table-column align="center" prop="teamName" label="维修班" />
  53. <el-table-column align="center" prop="schoolName" label="校区" />
  54. <el-table-column align="center" prop="userZzname" label="身份" />
  55. <el-table-column align="center" width="200" prop="buildName" label="关联楼栋" show-overflow-tooltip>
  56. <!-- <template #default="{ row }">
  57. <span>{{ }}</span>
  58. </template> -->
  59. </el-table-column>
  60. <el-table-column align="center" width="100" prop="workTypeName" label="工种" />
  61. <el-table-column align="center" prop="articleName" label="关联报修类型" width="200" show-overflow-tooltip />
  62. <!-- <el-table-column align="center" prop="acceptanceTime" label="接单考核时间" /> -->
  63. <!-- <el-table-column align="center" prop="maintenanceTime" label="维修考核时间" /> -->
  64. <el-table-column align="center" fixed="right" label="操作" width="150">
  65. <template #default="scope">
  66. <div class="edit">
  67. <div class="look" @click="edit(scope.row)">编辑</div>
  68. <el-popconfirm width="220" confirm-button-text="确认" cancel-button-text="取消" :icon="InfoFilled"
  69. icon-color="#f89626" title="是否删除此员工?" @confirm="del(scope.row)" @cancel="cancelEvent">
  70. <template #reference>
  71. <div class="look">删除</div>
  72. </template>
  73. </el-popconfirm>
  74. </div>
  75. </template>
  76. </el-table-column>
  77. </el-table>
  78. <!-- 添加耗材弹窗 -->
  79. <el-dialog class="addStaff" v-model="addDialogVisible" :close-on-click-modal="false"
  80. :close-on-press-escape="false" :title="dialongTitle" align-center width="700" :before-close="cancelAdd">
  81. <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm"
  82. size="default" label-position="left" status-icon>
  83. <el-form-item label="身份 :" prop="userzzId">
  84. <el-select v-model="ruleForm.userzzId" @change="changeUserZzid" class="m-2" placeholder="请选择身份">
  85. <el-option v-for="item in userzzIdsList" :label="item.name" :value="item.id" v-show="item.id !== 0" />
  86. </el-select>
  87. </el-form-item>
  88. <el-form-item label="姓名 :" prop="userName">
  89. <el-input v-model="ruleForm.userName" placeholder="请输入姓名" clearable />
  90. </el-form-item>
  91. <el-form-item label="维修班 :" prop="teamId">
  92. <el-select v-model="ruleForm.teamId" class="m-2" placeholder="请选择维修班">
  93. <el-option label="校方人员" :value="0" />
  94. <el-option label="第三方人员" :value="1" />
  95. </el-select>
  96. </el-form-item>
  97. <el-form-item label="微校卡号 :" prop="cardNumber" v-if="dialongTitle == '添加员工' && ruleForm.userzzId != 4">
  98. <el-input v-model="ruleForm.cardNumber" placeholder="请输入微校卡号" clearable />
  99. </el-form-item>
  100. <el-form-item label="微校卡号 :" prop="cardNumber" v-if="dialongTitle == '编辑员工' && ruleForm.userzzId != 4">
  101. <el-input v-model="ruleForm.cardNumber" disabled placeholder="请输入微校卡号" clearable />
  102. </el-form-item>
  103. <el-form-item label="手机号码 :" prop="userPhone" v-if="ruleForm.userzzId != 4">
  104. <el-input v-model="ruleForm.userPhone" placeholder="请输入手机号码" clearable />
  105. </el-form-item>
  106. <el-form-item label="校区 :" prop="schoolId">
  107. <el-select v-model="ruleForm.schoolId" class="m-2" placeholder="请选择校区" @change="changeSchool">
  108. <el-option label="黄家湖校区" :value="1" />
  109. <el-option label="墨轩湖校区" :value="2" />
  110. </el-select>
  111. </el-form-item>
  112. <el-form-item label="工种 :">
  113. <el-select v-model="ruleForm.workType" clearable class="m-2" placeholder="请选择工种">
  114. <el-option v-for="item in workTypeList" :label="item.name" :value="item.id" />
  115. </el-select>
  116. </el-form-item>
  117. <el-form-item label="关联报修类型 :" prop="articleBuilds" class="checkbox" v-if="ruleForm.userzzId != 4">
  118. <div class="type">
  119. <div class="articleType">
  120. <div class="articleTitle">关联种类</div>
  121. <!-- <el-checkbox v-model="articleAll" :indeterminate="articleIndeterminate"
  122. @change="articleAllChange">全选</el-checkbox> -->
  123. <el-tree :data="articleIdsList" @node-click="articleNodeClick"
  124. :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id" show-checkbox
  125. ref="articleIdsRef" @check-change="handleArticleIds">
  126. <template #default="{ node, data }">
  127. <div class="custom-tree-node">
  128. <span>{{ data.name }}</span>
  129. <img v-if="data.id == clickArticleSel.id" src="../../assets/fixed.png" alt="">
  130. <img v-else src="" alt="">
  131. </div>
  132. </template>
  133. </el-tree>
  134. </div>
  135. <div class="buildType">
  136. <div class="allAriticle">
  137. <div class="articleTitle">关联楼栋</div>
  138. <!-- <el-checkbox v-model="buildAll" :indeterminate="buildIndeterminate"
  139. @change="buildAllChange">全选</el-checkbox> -->
  140. </div>
  141. <el-tree :data="treeValue.list" :props="{ label: 'name', children: 'children', value: 'id' }"
  142. node-key="id" show-checkbox ref="buildIdsRef" @check-change="handleCheckChange" />
  143. </div>
  144. </div>
  145. <!-- <div class="type" v-if="ruleForm.schoolId == 2">
  146. <div class="articleType">
  147. <div class="articleTitle">关联种类</div>
  148. <el-tree :data="articleIdsList" @node-click="articleNodeClick"
  149. :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id" show-checkbox
  150. ref="articleIdsRef" @check-change="handleArticleIds">
  151. <template #default="{ node, data }">
  152. <span class="custom-tree-node">
  153. <span>{{ data.name }}</span>
  154. <img v-if="data.id == clickArticleSel.id" src="../../assets/fixed.png" alt="">
  155. <img v-else src="" alt="">
  156. </span>
  157. </template>
  158. </el-tree>
  159. </div>
  160. <div class="buildType">
  161. <div class="allAriticle">
  162. <div class="articleTitle">关联楼栋</div>
  163. </div>
  164. <el-tree :data="treeValue.list" :props="{ label: 'name', children: 'children', value: 'id' }"
  165. node-key="id" show-checkbox ref="buildIdsRef" @check-change="handleCheckChange" />
  166. </div>
  167. </div> -->
  168. </el-form-item>
  169. <!-- <el-form-item label="关联楼栋 :" prop="buildIds" v-if="ruleForm.userzzId != 4">
  170. <el-tree :data="treeValue.list" :props="{ label: 'name', children: 'children', value: 'id' }" node-key="id"
  171. show-checkbox ref="buildIdsRef" @check-change="handleCheckChange" />
  172. </el-form-item> -->
  173. <el-form-item label="接单考核时间 :" v-if="ruleForm.userzzId != 4">
  174. <div class="kaohe">
  175. <el-input v-model="ruleForm.acceptanceTime" :clearable="false" placeholder="考核时间" style="width: 150px">
  176. <template #suffix>
  177. <img src="@/assets/timer.png" alt="" style="width: 15px; height: 15px" />
  178. </template>
  179. </el-input>
  180. <span style="margin-left: 5px">分钟</span>
  181. </div>
  182. </el-form-item>
  183. <el-form-item style="
  184. padding-bottom: 40px;
  185. border-bottom: 1px solid rgba(230, 230, 230, 1);
  186. " label="维修考核时间 :" v-if="ruleForm.userzzId != 4">
  187. <div class="kaohe">
  188. <el-input v-model="ruleForm.maintenanceTime" :clearable="false" placeholder="考核时间" style="width: 150px">
  189. <template #suffix>
  190. <img src="@/assets/timer.png" alt="" style="width: 15px; height: 15px" />
  191. </template>
  192. </el-input>
  193. <span style="margin-left: 5px">分钟</span>
  194. </div>
  195. </el-form-item>
  196. <el-form-item class="options">
  197. <el-button color="rgba(111, 182, 184, 1)" class="queding" type="primary" @click="submitAdd(ruleFormRef)">
  198. 确定
  199. </el-button>
  200. <el-button @click="cancelAdd(ruleFormRef)">取消</el-button>
  201. </el-form-item>
  202. </el-form>
  203. </el-dialog>
  204. </div>
  205. <!-- 分页组件 -->
  206. <div class="pageSize">
  207. <span></span>
  208. <el-pagination background :current-page="currentPage" :page-size="pageSize"
  209. layout="total, prev, pager, next, jumper, slot" :total="total" @update:current-page="handleCurrentChange" />
  210. </div>
  211. </div>
  212. </div>
  213. </template>
  214. <script setup>
  215. import { ref, reactive, nextTick, onBeforeMount, onUnmounted } from "vue";
  216. import { useRouter } from "vue-router";
  217. import { ElMessage, ElMessageBox } from "element-plus";
  218. import { Calendar } from "@element-plus/icons-vue";
  219. import vidiconsApi from "@/api/vidicons.js";
  220. import { dayjs } from "element-plus";
  221. import lodash from "lodash";
  222. import axios from "axios";
  223. import { useStore } from "vuex";
  224. const store = useStore();
  225. const api = ref("");
  226. const router = useRouter();
  227. // 表格数据
  228. const tableData = reactive({
  229. list: [],
  230. });
  231. // 添加员工弹窗数据 (------------------------------------)
  232. const dialongTitle = ref("添加员工"); // 弹窗标题
  233. // 种类选择框数据
  234. const articleAll = ref(false); // 判断物品种类是否全选
  235. const articleIndeterminate = ref(false); // 不确定状态,表示只选择一部分
  236. const articleIdsList = ref(); // 关联种类 类型数据
  237. const articleIdsListM = ref(); // 关联种类 类型数据
  238. const articleIdsListH = ref(); // 关联种类 类型数据
  239. // 楼栋选择框数据
  240. const buildAll = ref(false); // 判断楼栋 是否全选
  241. const buildIndeterminate = ref(false); // 不确定状态,表示只选择一部分
  242. const treeValue = reactive({
  243. list: [],
  244. listM: [],
  245. listH: [],
  246. }); // 关联楼栋 树形结构数据
  247. const userzzIdsList = ref(); // 身份下拉数据
  248. const workTypeList = ref(); // 工种下拉数据
  249. const props = reactive();
  250. const searchInput = reactive({
  251. keyWord: "",
  252. teamId: "",
  253. schoolId: "",
  254. }); // 搜索按钮数据
  255. const currentPage = ref(1); // 当前页
  256. const pageSize = ref(10);
  257. const total = ref(); // 当前总数
  258. const selectData = reactive({ list: [] }); // 多选框选择的数据
  259. const addDialogVisible = ref(false); // 控制添加员工弹窗
  260. // 添加员工表单数据
  261. const formSize = ref("default");
  262. const ruleFormRef = ref();
  263. const articleIdsRef = ref(); // 关联报修类型ref
  264. const buildIdsRef = ref(); // 关联楼栋ref
  265. const ruleForm = reactive({
  266. userName: "",
  267. cardNumber: "",
  268. userzzId: "",
  269. userPhone: "",
  270. schoolId: "",
  271. workType: "",
  272. articleBuilds: [],
  273. // articleIds: [],
  274. // buildIds: [],
  275. teamId: "",
  276. acceptanceTime: "",
  277. maintenanceTime: "",
  278. id: "",
  279. });
  280. const articleBuilds = reactive({ list: [] }) // 选中的种类和楼栋组合数据
  281. const clickArticleSel = reactive({
  282. id: "", name: ""
  283. }); // 点击的那个种类
  284. // 关联报修类型验证
  285. const articleBuildRule = (rule, value, callback) => {
  286. console.log(rule, value);
  287. let sum = 0
  288. articleBuilds.list.forEach(item => {
  289. if (item.article.flag) {
  290. sum = item.build.length + sum
  291. console.log(sum);
  292. }
  293. }, 0)
  294. // console.log(sum);
  295. if (sum) {
  296. callback();
  297. } else {
  298. callback(new Error("关联报修类型不能为空"));
  299. }
  300. };
  301. // 表单验证
  302. const rules = reactive({
  303. // serial: [{ required: true, message: "序列号不能为空", trigger: "blur" }],
  304. userName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
  305. cardNumber: [
  306. { required: true, message: "微校卡号不能为空", trigger: "blur" },
  307. ],
  308. userzzId: [{ required: true, message: "身份不能为空", trigger: "change" }],
  309. userPhone: [{ required: true, message: "手机号码不能为空", trigger: "blur" }],
  310. schoolId: [{ required: true, message: "校区不能为空", trigger: "blur" }],
  311. workType: [{ required: true, message: "工种不能为空", trigger: "change" }],
  312. teamId: [{ required: true, message: "维修班不能为空", trigger: "change" }],
  313. articleBuilds: [
  314. // { required: true, message: "关联报修类型不能为空", trigger: "blur" },
  315. { required: true, validator: articleBuildRule, trigger: "blur" },
  316. ],
  317. articleIds: [
  318. { required: true, message: "关联报修类型不能为空", trigger: "blur" },
  319. ],
  320. buildIds: [{ required: true, message: "关联楼栋不能为空", trigger: "blur" }],
  321. acceptanceTime: [
  322. { required: true, message: "接单考核时间不能为空", trigger: "blur" },
  323. ],
  324. maintenanceTime: [
  325. { required: true, message: "维修考核时间不能为空", trigger: "blur" },
  326. ],
  327. });
  328. // 查看员工列表
  329. const getList = async () => {
  330. let data = {
  331. currentPage: currentPage.value,
  332. pageCount: pageSize.value,
  333. keyWord: searchInput.keyWord,
  334. teamId: searchInput.teamId, // 维修班ID
  335. schoolId: searchInput.schoolId, // 校区ID
  336. };
  337. let res = await axios({
  338. method: "get",
  339. url: api.value + "/repairUser/queryPageRepairUser",
  340. headers: {
  341. token: sessionStorage.getItem("token"),
  342. user_head: sessionStorage.getItem("userhead"),
  343. },
  344. params: data,
  345. });
  346. console.log(res, "用户列表");
  347. if (res.data.code == 200) {
  348. res.data.data.list.forEach((item) => {
  349. // 楼栋关联字段
  350. if (item.buildNames) {
  351. item.buildName = item.buildNames.join(",");
  352. } else {
  353. item.buildName = "暂无关联";
  354. }
  355. // 报修关联字段
  356. if (item.articleNames) {
  357. item.articleName = item.articleNames.join(",");
  358. } else {
  359. item.articleName = "暂无关联";
  360. }
  361. });
  362. tableData.list = res.data.data.list;
  363. // currentPage.value = res.data.currentPage;
  364. total.value = res.data.data.totalCount;
  365. } else {
  366. ElMessage({
  367. type: "error",
  368. showClose: true,
  369. message: res.data.message,
  370. center: true,
  371. });
  372. if (res.data.code == 570) {
  373. sessionStorage.removeItem("token")
  374. router.push({
  375. path: `/login`,
  376. });
  377. }
  378. }
  379. };
  380. // 搜索功能
  381. const searchBtn = lodash.debounce(async () => {
  382. getList();
  383. }, 300);
  384. // 关联种类和关联楼栋数据
  385. // const treeValueList = async (val) => {
  386. // // 报修(故障类型)类型关联 (接口-------)
  387. // let data = {
  388. // schoolId: val,
  389. // };
  390. // let resss = await axios({
  391. // method: "get",
  392. // url: api.value + "/repairArticleType/queryRepairArticleType",
  393. // headers: {
  394. // token: sessionStorage.getItem("token"),
  395. // user_head: sessionStorage.getItem("userhead"),
  396. // },
  397. // params: data,
  398. // });
  399. // console.log(resss, "报修(故障类型)类型关联数据");
  400. // articleIdsList.value = resss.data.data;
  401. // // 关联楼栋数据 (接口---------)
  402. // let datas = { schoolId: val };
  403. // let res = await axios({
  404. // method: "get",
  405. // url: api.value + "/repairArea/queryRepairAreaSecond",
  406. // headers: {
  407. // token: sessionStorage.getItem("token"),
  408. // user_head: sessionStorage.getItem("userhead"),
  409. // },
  410. // params: datas,
  411. // });
  412. // console.log(res, "关联楼栋数据");
  413. // treeValue.list = res.data.data;
  414. // // 黄家湖校区
  415. // // if (val == 1) {
  416. // // articleIdsListH.value = resss.data.data;
  417. // // treeValue.listH = res.data.data;
  418. // // } // 墨轩湖
  419. // // else {
  420. // // articleIdsListM.value = resss.data.data;
  421. // // treeValue.listM = res.data.data;
  422. // // }
  423. // }
  424. // 切换身份时将种类和楼栋全部置空
  425. const changeUserZzid = (val) => {
  426. clickArticleSel.id = ""
  427. clickArticleSel.name = ""
  428. if (articleBuilds.list) {
  429. articleBuilds.list.forEach(item => {
  430. item.article.flag = false;
  431. item.build = []
  432. })
  433. }
  434. nextTick(() => {
  435. articleIdsRef.value.setCheckedKeys([]);
  436. buildIdsRef.value.setCheckedKeys([]);
  437. });
  438. }
  439. // 改变校区 关联楼栋和关联报修类型也改变(---------------)
  440. const changeSchool = async (val) => {
  441. // ruleForm.articleIds = [];
  442. // ruleForm.buildIds = [];
  443. clickArticleSel.id = "";
  444. clickArticleSel.name = "";
  445. console.log(clickArticleSel);
  446. nextTick(() => {
  447. // if (articleIdsRef.value && buildIdsRef.value) {
  448. articleIdsRef.value.setCheckedKeys([]);
  449. buildIdsRef.value.setCheckedKeys([]);
  450. // }
  451. });
  452. return new Promise(async (resolve, reject) => {
  453. /* 你的逻辑代码 */
  454. // 报修(故障类型)类型关联 (接口-------)
  455. let data = {
  456. schoolId: val,
  457. };
  458. let resss = await axios({
  459. method: "get",
  460. url: api.value + "/repairArticleType/queryRepairArticleType",
  461. headers: {
  462. token: sessionStorage.getItem("token"),
  463. user_head: sessionStorage.getItem("userhead"),
  464. },
  465. params: data,
  466. });
  467. console.log(resss, "报修(故障类型)类型关联数据");
  468. articleIdsList.value = resss.data.data;
  469. // 关联楼栋数据 (接口---------)
  470. let datas = { schoolId: val };
  471. let res = await axios({
  472. method: "get",
  473. url: api.value + "/repairArea/queryRepairAreaSecond",
  474. headers: {
  475. token: sessionStorage.getItem("token"),
  476. user_head: sessionStorage.getItem("userhead"),
  477. },
  478. params: datas,
  479. });
  480. console.log(res, "关联楼栋数据");
  481. treeValue.list = res.data.data;
  482. articleBuilds.list = []
  483. articleIdsList.value.forEach(item => {
  484. articleBuilds.list.push({
  485. article: { id: item.id, name: item.name, flag: false },
  486. build: [],
  487. id: ""
  488. })
  489. })
  490. console.log(articleBuilds.list, "整理的树形数据");
  491. resolve('success')
  492. console.log("1111111111111111111111111111111");
  493. });
  494. };
  495. //新增员工 (--------------------------------------)
  496. const addlist = async () => {
  497. dialongTitle.value = "添加员工";
  498. addDialogVisible.value = true;
  499. ruleForm.userName = "";
  500. ruleForm.cardNumber = "";
  501. ruleForm.userzzId = "";
  502. ruleForm.userPhone = "";
  503. ruleForm.workType = "";
  504. // ruleForm.articleIds = [];
  505. // ruleForm.buildIds = [];
  506. ruleForm.teamId = "";
  507. ruleForm.acceptanceTime = "";
  508. ruleForm.maintenanceTime = "";
  509. ruleForm.schoolId = 1;
  510. ruleForm.id = "";
  511. clickArticleSel.id = ""
  512. clickArticleSel.name = ""
  513. changeSchool(1)
  514. nextTick(() => {
  515. articleIdsRef.value.setCheckedKeys([]);
  516. buildIdsRef.value.setCheckedKeys([]);
  517. });
  518. };
  519. // 种类是否全选操作
  520. // const articleAllChange = (val) => {
  521. // console.log(val);
  522. // console.log(articleIdsList.value);
  523. // let articleIds = []
  524. // // 黄家湖
  525. // if (val) {
  526. // articleIdsList.value.forEach((item) => {
  527. // articleIds.push(item.id);
  528. // });
  529. // articleIdsRef.value.setCheckedKeys(articleIds)
  530. // } else {
  531. // console.log("取消全选");
  532. // articleIdsRef.value.setCheckedKeys([])
  533. // // articleIndeterminate.value = false;
  534. // }
  535. // };
  536. // //单独勾选种类
  537. // const handleCheckedCitiesChange = (value) => {
  538. // console.log(value);
  539. // const checkedCount = value.length;
  540. // checkAll.value = checkedCount === articleIdsList.value.length;
  541. // isIndeterminate.value =
  542. // checkedCount > 0 && checkedCount < articleIdsList.value.length;
  543. // };
  544. // 单独勾选种类 当复选框被点击的时候触发
  545. const handleArticleIds = (data, checked, indeterminate) => {
  546. console.log(data, checked, indeterminate, "单独勾选种类");
  547. // let keys = articleIdsRef.value.getCheckedNodes();
  548. // 判断当前勾选的是哪个种类
  549. // if (checked) {
  550. // clickArticleSel.name = data.name
  551. // clickArticleSel.id = data.id
  552. // }
  553. clickArticleSel.name = data.name
  554. clickArticleSel.id = data.id
  555. let keys = articleIdsRef.value.getCheckedKeys();
  556. console.log(keys);
  557. // 黄家湖
  558. // if (keys.length == articleIdsList.value.length) {
  559. // articleIndeterminate.value = false;
  560. // articleAll.value = true
  561. // } else if (keys.length) {
  562. // articleAll.value = false
  563. // articleIndeterminate.value = true;
  564. // } else {
  565. // articleAll.value = false
  566. // articleIndeterminate.value = false;
  567. // }
  568. // 判断是否勾选时赋值
  569. articleBuilds.list.forEach(item => {
  570. // console.log(item);
  571. if (item.article.id == data.id) {
  572. item.article.flag = checked
  573. // if (item.article.flag) {
  574. // buildIdsRef.value.setCheckedKeys(item.build);
  575. // }
  576. buildIdsRef.value.setCheckedKeys(item.build);
  577. }
  578. })
  579. console.log(articleBuilds.list);
  580. // ruleForm.articleIds = keys;
  581. };
  582. // 关联种类 被点击时触发
  583. const articleNodeClick = (data, node, component) => {
  584. // * @description: node - click 节点被点击时的回调
  585. // * @param {*} data 该节点所对应的对象
  586. // * @param {*} node 节点对应的 Node
  587. // * @param {*} component 节点组件本身
  588. console.log('子组件触发 node-click 事件', data, node, component);
  589. // 判断是否击
  590. clickArticleSel.name = data.name
  591. clickArticleSel.id = data.id
  592. articleBuilds.list.forEach(item => {
  593. // console.log(item);
  594. if (item.article.id == data.id) {
  595. // item.article.flag = checked
  596. // if (item.article.flag) {
  597. // buildIdsRef.value.setCheckedKeys(item.build);
  598. // }
  599. buildIdsRef.value.setCheckedKeys(item.build);
  600. }
  601. })
  602. }
  603. // 关联楼栋 当复选框被勾选的时候触发
  604. const handleCheckChange = (data, checked, indeterminate) => {
  605. // console.log(data, checked);
  606. let keys = buildIdsRef.value.getCheckedNodes();
  607. console.log(keys);
  608. // let buildAllLength = 0;
  609. // buildAllLength = treeValue.list.reduce((pre, cur) => {
  610. // return cur.children.length + pre
  611. // }, treeValue.list.length)
  612. // if (keys.length == buildAllLength) {
  613. // buildIndeterminate.value = false;
  614. // buildAll.value = true
  615. // } else if (keys.length) {
  616. // buildAll.value = false
  617. // buildIndeterminate.value = true;
  618. // } else {
  619. // buildAll.value = false
  620. // buildIndeterminate.value = false;
  621. // }
  622. let arr = [];
  623. keys.forEach((item) => {
  624. if (item.parentId != 1) {
  625. arr.push(item.id);
  626. }
  627. });
  628. articleBuilds.list.forEach(item => {
  629. if (item.article.id == clickArticleSel.id) {
  630. item.build = arr
  631. }
  632. })
  633. console.log(articleBuilds.list);
  634. };
  635. // 楼栋被全选时
  636. const buildAllChange = (val) => {
  637. console.log(val);
  638. console.log(treeValue.list);
  639. nextTick(() => {
  640. if (val) {
  641. let buildIds = []
  642. treeValue.list.forEach(item => {
  643. item.children.forEach(i => {
  644. buildIds.push(i.id)
  645. })
  646. })
  647. buildIdsRef.value.setCheckedKeys(buildIds);
  648. } else {
  649. buildIdsRef.value.setCheckedKeys([]);
  650. }
  651. })
  652. }
  653. //编辑按钮 (-------------------------------------------)
  654. const edit = (row) => {
  655. dialongTitle.value = "编辑员工";
  656. addDialogVisible.value = true;
  657. clickArticleSel.id = "";
  658. clickArticleSel.name = "";
  659. changeSchool(row.schoolId).then(res => {
  660. if (row.userZzid == 4) {
  661. ruleForm.userName = row.userName;
  662. ruleForm.userzzId = row.userZzid;
  663. ruleForm.workType = row.workType;
  664. ruleForm.teamId = row.teamId;
  665. ruleForm.schoolId = row.schoolId;
  666. ruleForm.id = row.id;
  667. } else {
  668. ruleForm.userName = row.userName;
  669. ruleForm.cardNumber = row.cardNumber;
  670. ruleForm.userzzId = row.userZzid;
  671. ruleForm.userPhone = row.userPhone;
  672. ruleForm.schoolId = row.schoolId;
  673. ruleForm.workType = row.workType;
  674. ruleForm.teamId = row.teamId;
  675. ruleForm.acceptanceTime = row.acceptanceTime;
  676. ruleForm.maintenanceTime = row.maintenanceTime;
  677. ruleForm.id = row.id;
  678. let articleArr = []
  679. articleBuilds.list.forEach(item => {
  680. row.articleBuilds.forEach(i => {
  681. if (item.article.id == i.articleId) {
  682. console.log(item);
  683. articleArr.push(i.articleId)
  684. item.article.flag = true;
  685. item.id = i.id;
  686. item.build = i.buildIds;
  687. }
  688. })
  689. })
  690. console.log(articleArr);
  691. nextTick(() => {
  692. articleIdsRef.value.setCheckedKeys(articleArr);
  693. // buildIdsRef.value.setCheckedKeys(row.buildIds);
  694. });
  695. // ruleForm.articleIds = row.articleIds;
  696. // ruleForm.buildIds = row.buildIds;
  697. }
  698. })
  699. console.log(row);
  700. // console.log(row.articleIds, row.buildIds);
  701. // let keys = row.articleIds;
  702. // if (keys.length == articleIdsList.value.length) {
  703. // articleIndeterminate.value = false;
  704. // articleAll.value = true
  705. // } else if (keys.length) {
  706. // articleAll.value = false
  707. // articleIndeterminate.value = true;
  708. // } else {
  709. // articleAll.value = false
  710. // articleIndeterminate.value = false;
  711. // }
  712. };
  713. // 取消添加员工
  714. const cancelAdd = () => {
  715. // ruleForm.articleIds = [];
  716. // ruleForm.buildIds = [];
  717. nextTick(() => {
  718. articleIdsRef.value.setCheckedKeys([]);
  719. buildIdsRef.value.setCheckedKeys([]);
  720. });
  721. ruleFormRef.value.resetFields();
  722. addDialogVisible.value = false;
  723. };
  724. // 确认添加员工
  725. const submitAdd = async (formEl) => {
  726. if (!formEl) return;
  727. await formEl.validate(async (valid, fields) => {
  728. if (valid) {
  729. if (dialongTitle.value == "添加员工") {
  730. // 如果身份为 线下人员(4),做出以下判断
  731. let data = {}
  732. if (ruleForm.userzzId == 4) {
  733. data = {
  734. userName: ruleForm.userName, // 名字
  735. userZzid: ruleForm.userzzId, // 身份Id
  736. schoolId: ruleForm.schoolId, // 校区Id
  737. workType: ruleForm.workType, // 工作Id
  738. teamId: ruleForm.teamId // 维修班Id
  739. }
  740. } else {
  741. let arr = []
  742. articleBuilds.list.forEach(item => {
  743. if (item.article.flag && item.build.length != 0) {
  744. arr.push({
  745. articleId: item.article.id,
  746. buildIds: item.build
  747. })
  748. }
  749. })
  750. data = {
  751. userName: ruleForm.userName,
  752. cardNumber: ruleForm.cardNumber,
  753. userZzid: ruleForm.userzzId,
  754. userPhone: ruleForm.userPhone,
  755. schoolId: ruleForm.schoolId,
  756. teamId: ruleForm.teamId,
  757. workType: ruleForm.workType,
  758. // articleIds: ruleForm.articleIds,
  759. // buildIds: ruleForm.buildIds,
  760. acceptanceAssessTime: ruleForm.acceptanceTime,
  761. maintenanceAssessTime: ruleForm.maintenanceTime,
  762. articleBuilds: arr
  763. };
  764. }
  765. console.log(data, "添加员工数据");
  766. let res = await axios({
  767. method: "post",
  768. url: api.value + "/repairUser/insertRepairUserSetting",
  769. headers: {
  770. token: sessionStorage.getItem("token"),
  771. user_head: sessionStorage.getItem("userhead"),
  772. },
  773. data: data,
  774. });
  775. console.log(res, "添加员工");
  776. if (res.data.code == 200) {
  777. getList();
  778. ElMessage({
  779. type: "success",
  780. showClose: true,
  781. message: res.data.message,
  782. center: true,
  783. });
  784. // ruleForm.articleIds = [];
  785. // ruleForm.buildIds = [];
  786. nextTick(() => {
  787. articleIdsRef.value.setCheckedKeys([]);
  788. buildIdsRef.value.setCheckedKeys([]);
  789. });
  790. addDialogVisible.value = false;
  791. ruleFormRef.value.resetFields();
  792. } else {
  793. ElMessage({
  794. type: "error",
  795. showClose: true,
  796. message: res.data.message,
  797. center: true,
  798. });
  799. }
  800. } else {
  801. // 如果身份为 线下人员(4),做出以下判断
  802. let data = {}
  803. if (ruleForm.userzzId == 4) {
  804. data = {
  805. userName: ruleForm.userName, // 名字
  806. userZzid: ruleForm.userzzId, // 身份Id
  807. schoolId: ruleForm.schoolId, // 校区Id
  808. workType: ruleForm.workType, // 工作Id
  809. teamId: ruleForm.teamId, // 维修班Id
  810. id: ruleForm.id // 数据ID
  811. }
  812. } else {
  813. let arr = []
  814. articleBuilds.list.forEach(item => {
  815. if (item.article.flag && item.build.length != 0) {
  816. arr.push({
  817. articleId: item.article.id,
  818. buildIds: item.build,
  819. id: item.id
  820. })
  821. }
  822. })
  823. data = {
  824. userName: ruleForm.userName,
  825. cardNumber: ruleForm.cardNumber,
  826. userZzid: ruleForm.userzzId,
  827. userPhone: ruleForm.userPhone,
  828. schoolId: ruleForm.schoolId,
  829. workType: ruleForm.workType,
  830. articleIds: ruleForm.articleIds,
  831. buildIds: ruleForm.buildIds,
  832. teamId: ruleForm.teamId,
  833. acceptanceAssessTime: ruleForm.acceptanceTime,
  834. maintenanceAssessTime: ruleForm.maintenanceTime,
  835. id: ruleForm.id,
  836. articleBuilds: arr
  837. };
  838. }
  839. console.log(data, "修改员工数据");
  840. let res = await axios({
  841. method: "post",
  842. url: api.value + "/repairUser/updateRepairUserSettingById",
  843. headers: {
  844. token: sessionStorage.getItem("token"),
  845. user_head: sessionStorage.getItem("userhead"),
  846. },
  847. data: data,
  848. });
  849. console.log(res, "编辑员工");
  850. if (res.data.code == 200) {
  851. getList();
  852. ElMessage({
  853. type: "success",
  854. showClose: true,
  855. message: res.data.message,
  856. center: true,
  857. });
  858. // ruleForm.articleIds = [];
  859. // ruleForm.buildIds = [];
  860. nextTick(() => {
  861. articleIdsRef.value.setCheckedKeys([]);
  862. buildIdsRef.value.setCheckedKeys([]);
  863. });
  864. addDialogVisible.value = false;
  865. ruleFormRef.value.resetFields();
  866. } else {
  867. ElMessage({
  868. type: "error",
  869. showClose: true,
  870. message: res.data.message,
  871. center: true,
  872. });
  873. }
  874. }
  875. } else {
  876. console.log("error submit!", fields);
  877. }
  878. });
  879. };
  880. //删除按钮
  881. const del = async (row) => {
  882. let data = {
  883. id: row.id,
  884. };
  885. let res = await axios({
  886. method: "get",
  887. url: api.value + "/repairUser/deleteRepairUserSettingById",
  888. headers: {
  889. token: sessionStorage.getItem("token"),
  890. user_head: sessionStorage.getItem("userhead"),
  891. },
  892. params: data,
  893. });
  894. if (res.data.code == 200) {
  895. if (tableData.list.length == 1 && currentPage.value != 1) {
  896. currentPage.value = currentPage.value - 1;
  897. }
  898. getList();
  899. ElMessage({
  900. type: "success",
  901. showClose: true,
  902. message: res.data.message,
  903. center: true,
  904. });
  905. } else {
  906. ElMessage({
  907. type: "error",
  908. showClose: true,
  909. message: res.data.message,
  910. center: true,
  911. });
  912. }
  913. console.log(res);
  914. };
  915. // 多选框功能
  916. const handleSelectionChange = (val) => {
  917. console.log(val);
  918. selectData.list = val;
  919. };
  920. //导出功能
  921. const importExcel = async () => {
  922. if (searchInput.createTime == null) {
  923. searchInput.createTime = "";
  924. }
  925. let data = new FormData();
  926. data.set("car_number", searchInput.carnumber);
  927. data.set("create_time", searchInput.createTime);
  928. let res = await axios({
  929. method: "post",
  930. url: api.value + "/carBook/cinfotoExcel.action",
  931. headers: {
  932. token: sessionStorage.getItem("token"),
  933. },
  934. data: data,
  935. });
  936. // console.log(res, "导出账号");
  937. if (res.data.code == 200) {
  938. // const elt = document.createElement("a");
  939. // elt.setAttribute(
  940. // "href",
  941. // "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
  942. // );
  943. // elt.setAttribute("download", "file.png");
  944. // elt.style.display = "none";
  945. // document.body.appendChild(elt);
  946. // elt.click();
  947. var downloadPath = "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl;
  948. console.log("获得地址数据:", downloadPath);
  949. var downloadLink = document.createElement("a");
  950. downloadLink.style.display = "none"; // 使其隐藏
  951. downloadLink.href = downloadPath;
  952. downloadLink.download = "";
  953. downloadLink.click();
  954. document.body.appendChild(downloadLink);
  955. document.body.removeChild(downloadLink);
  956. ElMessage({
  957. type: "success",
  958. showClose: true,
  959. message: res.data.message,
  960. center: true,
  961. });
  962. } else {
  963. ElMessage({
  964. type: "error",
  965. showClose: true,
  966. message: res.data.message,
  967. center: true,
  968. });
  969. }
  970. };
  971. // 表格斑马纹颜色修改
  972. const tableRowClassName = ({ row, rowIndex }) => {
  973. if (rowIndex % 2 === 0) {
  974. return "even";
  975. } else if (rowIndex % 2 !== 0) {
  976. return "odd";
  977. }
  978. return "";
  979. };
  980. // 分页
  981. const handleCurrentChange = (value) => {
  982. // console.log(value);
  983. currentPage.value = value;
  984. getList();
  985. };
  986. onBeforeMount(async () => {
  987. api.value = store.state.user.api;
  988. // 查询身份下拉数据(--------)
  989. let res = await axios({
  990. method: "get",
  991. url: api.value + "/repairWorkType/getRepaairIdentitys",
  992. headers: {
  993. token: sessionStorage.getItem("token"),
  994. user_head: sessionStorage.getItem("userhead"),
  995. },
  996. });
  997. console.log(res, "查询身份下拉数据");
  998. userzzIdsList.value = res.data.data;
  999. // 查询工种下拉数据(-----------)
  1000. let ress = await axios({
  1001. method: "get",
  1002. url: api.value + "/repairWorkType/getRepairWorkTypes",
  1003. headers: {
  1004. token: sessionStorage.getItem("token"),
  1005. user_head: sessionStorage.getItem("userhead"),
  1006. },
  1007. });
  1008. console.log(ress, "查询工种下拉数据");
  1009. workTypeList.value = ress.data.data;
  1010. // treeValueList(1) // 调用黄家湖 种类和楼栋 数据
  1011. // treeValueList(2) // 调用墨轩湖 种类和楼栋 数据
  1012. getList();
  1013. });
  1014. onUnmounted(() => {
  1015. // document.removeEventListener("keyup", Enters);
  1016. });
  1017. </script>
  1018. <style scoped lang="scss">
  1019. .content-box {
  1020. width: 97.5%;
  1021. height: 89%;
  1022. margin: 20px auto;
  1023. background-color: #fff;
  1024. color: #fff;
  1025. display: flex;
  1026. flex-direction: column;
  1027. box-shadow: 0px 3px 10px rgba(213, 228, 252, 1);
  1028. .left {
  1029. // width: calc(100wh - 40px);
  1030. display: flex;
  1031. align-items: center;
  1032. height: 60px;
  1033. margin: 0 30px;
  1034. border-bottom: 1px solid #ccc;
  1035. color: rgb(0, 0, 0);
  1036. font-size: 18px;
  1037. font-weight: 600;
  1038. span {
  1039. margin-right: 20px;
  1040. cursor: pointer;
  1041. }
  1042. .is_active {
  1043. color: rgba(111, 182, 184, 1);
  1044. }
  1045. }
  1046. .middle {
  1047. width: 96%;
  1048. margin: 0 auto;
  1049. color: #000;
  1050. // border-bottom: 1px solid rgb(231, 231, 231);
  1051. .filter {
  1052. display: flex;
  1053. flex-wrap: wrap;
  1054. align-items: center;
  1055. margin: 10px 0 0 0;
  1056. .search {
  1057. color: #fff;
  1058. }
  1059. .condition {
  1060. display: flex;
  1061. align-items: center;
  1062. margin: 10px 30px 10px 0;
  1063. :deep(.el-input .el-input__inner) {
  1064. font-size: 16px;
  1065. }
  1066. span {
  1067. margin: 0 10px 0 0;
  1068. }
  1069. }
  1070. }
  1071. .gongneng {
  1072. margin: 10px 0 20px 0;
  1073. span {
  1074. color: #fff;
  1075. }
  1076. }
  1077. :deep(.cont) {
  1078. width: 60%;
  1079. margin: 20px auto;
  1080. }
  1081. :deep(.download) {
  1082. display: flex;
  1083. align-items: center;
  1084. margin: 10px;
  1085. }
  1086. :deep(.download span) {
  1087. font-size: 16px;
  1088. margin-left: 20px;
  1089. }
  1090. :deep(.cont .el-button) {
  1091. margin-left: 60px;
  1092. margin-bottom: 30px;
  1093. }
  1094. :deep(.cont .accomplish) {
  1095. width: 100%;
  1096. display: flex;
  1097. justify-content: center;
  1098. }
  1099. :deep(.cont .accomplish .el-button) {
  1100. width: 50%;
  1101. margin: 0;
  1102. }
  1103. }
  1104. .footer {
  1105. width: 96%;
  1106. height: 551px;
  1107. margin: 10px auto 30px;
  1108. .el-table--fit {
  1109. height: 100%;
  1110. :deep(.el-table__header-wrapper) {
  1111. background-color: #000;
  1112. font-size: 16px;
  1113. tr {
  1114. color: #000;
  1115. }
  1116. }
  1117. :deep(.el-table__row) {
  1118. height: 50px;
  1119. font-size: 16px;
  1120. color: #000;
  1121. }
  1122. :deep(.el-table__row):nth-child(2n) {
  1123. .el-table-fixed-column--right {
  1124. background-color: rgba(240, 243, 247, 1);
  1125. }
  1126. }
  1127. :deep(.el-table__row td) {
  1128. padding: 0;
  1129. border: 0;
  1130. }
  1131. .el-button--primary {
  1132. margin-left: 5px;
  1133. }
  1134. :deep(.el-table__body .even) {
  1135. background-color: #fff;
  1136. }
  1137. :deep(.el-table__body .odd) {
  1138. background-color: rgba(240, 243, 247, 1);
  1139. }
  1140. :deep(.edit) {
  1141. display: flex;
  1142. align-items: center;
  1143. justify-content: center;
  1144. color: rgba(111, 182, 184, 1);
  1145. }
  1146. :deep(.look) {
  1147. padding: 0 10px;
  1148. cursor: pointer;
  1149. }
  1150. :deep(.look):hover {
  1151. color: red;
  1152. }
  1153. }
  1154. // 添加员工弹窗样式
  1155. :deep(.addStaff) {
  1156. // height: 420px;
  1157. border-radius: 11px;
  1158. .el-dialog__header {
  1159. border-radius: 11px 11px 0 0;
  1160. background: rgba(237, 241, 245, 1);
  1161. font-weight: 600;
  1162. margin: 0;
  1163. .el-dialog__headerbtn {
  1164. outline: none;
  1165. }
  1166. }
  1167. .el-dialog__body {
  1168. padding: 30px 20px 10px 20px;
  1169. max-height: 700px;
  1170. overflow: auto;
  1171. .el-input {
  1172. width: 200px;
  1173. }
  1174. // 关联报修类型样式(-----------------)
  1175. .checkbox {
  1176. .el-form-item__content {
  1177. // width: 200px;
  1178. // display: flex;
  1179. // flex-direction: column;
  1180. // align-items: flex-start;
  1181. // border: 1px solid red;
  1182. .type {
  1183. display: flex;
  1184. .articleType {
  1185. padding-right: 30px;
  1186. .el-tree {
  1187. .el-tree-node__content {
  1188. .el-icon {
  1189. display: none;
  1190. }
  1191. }
  1192. .custom-tree-node {
  1193. display: flex;
  1194. align-items: center;
  1195. img {
  1196. width: 18px;
  1197. margin-left: 5px;
  1198. }
  1199. }
  1200. }
  1201. }
  1202. .buildType {
  1203. .allAriticle {
  1204. margin-left: 24px;
  1205. }
  1206. }
  1207. }
  1208. .articleTitle {
  1209. font-weight: 600;
  1210. }
  1211. }
  1212. }
  1213. .options {
  1214. .el-form-item__content {
  1215. .queding {
  1216. margin-left: 20px;
  1217. color: #fff;
  1218. }
  1219. display: flex;
  1220. flex-direction: row-reverse;
  1221. }
  1222. }
  1223. }
  1224. }
  1225. }
  1226. .pageSize {
  1227. display: flex;
  1228. align-items: center;
  1229. justify-content: space-between;
  1230. margin: 0 30px;
  1231. span {
  1232. color: #000;
  1233. }
  1234. .el-pagination {
  1235. // width: 1600px;
  1236. :deep(.el-pagination__total) {
  1237. color: #000;
  1238. }
  1239. :deep(.el-pagination__goto) {
  1240. color: #000;
  1241. }
  1242. :deep(.el-pagination__classifier) {
  1243. color: #000;
  1244. }
  1245. :deep(.el-input__wrapper) {
  1246. border: 1px solid rgba(0, 0, 0, 1);
  1247. border-radius: 5px;
  1248. box-shadow: none;
  1249. }
  1250. :deep(.el-pager li) {
  1251. margin: 0 5px;
  1252. border: 1px solid rgba(0, 0, 0, 1);
  1253. border-radius: 5px;
  1254. background-color: transparent;
  1255. }
  1256. :deep(.el-pager li.is-active) {
  1257. background-color: rgba(111, 182, 184, 1);
  1258. }
  1259. :deep(.btn-prev) {
  1260. margin-right: 5px;
  1261. border: 1px solid rgba(0, 0, 0, 1);
  1262. border-radius: 5px;
  1263. background-color: transparent;
  1264. }
  1265. :deep(.btn-next) {
  1266. margin-left: 5px;
  1267. border: 1px solid rgba(0, 0, 0, 1);
  1268. border-radius: 5px;
  1269. background-color: transparent;
  1270. }
  1271. }
  1272. }
  1273. }
  1274. .el-input {
  1275. width: 192px;
  1276. }
  1277. </style>