ledger.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909
  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
  13. :clearable="true"
  14. @clear="searchBtn"
  15. v-model="searchInput.keyWord"
  16. class="w-50 m-2"
  17. placeholder="请输入订单、预定人、手机号"
  18. style="width: 250px"
  19. />
  20. </div>
  21. <div class="condition">
  22. <span>支付时间 : </span>
  23. <el-date-picker
  24. v-model="searchInput.createTime"
  25. type="daterange"
  26. range-separator="-"
  27. start-placeholder="起始时间"
  28. end-placeholder="结束时间"
  29. format="YYYY-MM-DD"
  30. value-format="YYYY-MM-DD"
  31. :prefix-icon="Calendar"
  32. placeholder="请选择日期"
  33. />
  34. </div>
  35. <el-button
  36. style="margin-left: 20px"
  37. color="rgba(9, 101, 98, 1)"
  38. type="primary"
  39. class="search"
  40. @click="searchBtn"
  41. ><el-icon><Search /></el-icon> <span>查询</span></el-button
  42. >
  43. <el-button
  44. style="margin-left: 20px"
  45. color="rgba(9, 101, 98, 1)"
  46. type="primary"
  47. class="search"
  48. @click="importExcel"
  49. ><span>导出订单</span></el-button
  50. >
  51. </div>
  52. </div>
  53. <div class="footer" v-loading="loading">
  54. <el-table
  55. :row-class-name="tableRowClassName"
  56. :data="tableData.list"
  57. @selection-change="handleSelectionChange"
  58. style="width: 100%"
  59. :header-cell-style="{
  60. background: 'rgba(240, 243, 247, 1)',
  61. height: '50px',
  62. border: 0,
  63. }"
  64. >
  65. <!-- <el-table-column align="center" type="selection" width="80" /> -->
  66. <!-- <el-table-column
  67. width="150"
  68. align="center "
  69. type="index"
  70. label="序号"
  71. /> -->
  72. <el-table-column
  73. align="center"
  74. prop="orderNum"
  75. label="已消费订单号"
  76. />
  77. <el-table-column align="center" prop="userName" label="预订人" />
  78. <el-table-column align="center" prop="userPhone" label="手机号码" />
  79. <el-table-column
  80. align="center"
  81. prop="houseOrderNumber"
  82. label="房间数(间)"
  83. />
  84. <el-table-column
  85. align="center"
  86. prop="houseTotalPrice"
  87. label="订单金额(元)"
  88. />
  89. <el-table-column align="center" prop="payTime" label="支付时间" />
  90. <!-- <el-table-column
  91. align="center"
  92. fixed="right"
  93. label="操作"
  94. width="150"
  95. >
  96. <template #default="scope">
  97. <div class="edit">
  98. <div class="look" @click="edit(scope.row)">编辑</div>
  99. <el-popconfirm
  100. width="220"
  101. confirm-button-text="确认"
  102. cancel-button-text="取消"
  103. :icon="InfoFilled"
  104. icon-color="#f89626"
  105. title="是否删除此员工?"
  106. @confirm="del(scope.row)"
  107. @cancel="cancelEvent"
  108. >
  109. <template #reference>
  110. <div class="look">删除</div>
  111. </template>
  112. </el-popconfirm>
  113. </div>
  114. </template>
  115. </el-table-column> -->
  116. </el-table>
  117. </div>
  118. <!-- 分页组件 -->
  119. <div class="pageSize">
  120. <span></span>
  121. <el-pagination
  122. background
  123. :current-page="currentPage"
  124. :page-size="pageSize"
  125. layout="total, prev, pager, next, jumper, slot"
  126. :total="total"
  127. @update:current-page="handleCurrentChange"
  128. />
  129. </div>
  130. </div>
  131. </div>
  132. </template>
  133. <script setup>
  134. import {
  135. ref,
  136. reactive,
  137. nextTick,
  138. watch,
  139. onBeforeMount,
  140. onUnmounted,
  141. } from "vue";
  142. import { useRouter } from "vue-router";
  143. import { ElMessage, ElMessageBox } from "element-plus";
  144. import { Calendar } from "@element-plus/icons-vue";
  145. import vidiconsApi from "@/api/vidicons.js";
  146. import { dayjs } from "element-plus";
  147. import lodash from "lodash";
  148. import axios from "axios";
  149. import { useStore } from "vuex";
  150. const store = useStore();
  151. const api = ref("");
  152. const router = useRouter();
  153. // 表格数据
  154. const loading = ref(false);
  155. const tableData = reactive({
  156. list: [
  157. // {
  158. // userName: "111233342",
  159. // userName2: "张三",
  160. // userPhone: "1121311",
  161. // teamName: 12,
  162. // schoolName: 1200,
  163. // workTypeName: "2023-08-01 12:09:08",
  164. // },
  165. // {
  166. // userName: "111233342",
  167. // userName2: "张三",
  168. // userPhone: "1121311",
  169. // teamName: 12,
  170. // schoolName: 1200,
  171. // workTypeName: "2023-08-01 12:09:08",
  172. // },
  173. // {
  174. // userName: "111233342",
  175. // userName2: "张三",
  176. // userPhone: "1121311",
  177. // teamName: 12,
  178. // schoolName: 1200,
  179. // workTypeName: "2023-08-01 12:09:08",
  180. // },
  181. // {
  182. // userName: "111233342",
  183. // userName2: "张三",
  184. // userPhone: "1121311",
  185. // teamName: 12,
  186. // schoolName: 1200,
  187. // workTypeName: "2023-08-01 12:09:08",
  188. // },
  189. // {
  190. // userName: "111233342",
  191. // userName2: "张三",
  192. // userPhone: "1121311",
  193. // teamName: 12,
  194. // schoolName: 1200,
  195. // workTypeName: "2023-08-01 12:09:08",
  196. // },
  197. ],
  198. });
  199. // 添加员工弹窗数据 (------------------------------------)
  200. const dialongTitle = ref("添加员工"); // 弹窗标题
  201. const checkAll = ref(false); // 判断物品种类是否全选
  202. const articleIdsList = ref(); // 关联报修类型数据
  203. const isIndeterminate = ref(false); // 不确定状态,表示只选择一部分
  204. const checkedCities = ref([]); // 选中的数据
  205. const userzzIdsList = ref(); // 身份下拉数据
  206. const workTypeList = ref(); // 工种下拉数据
  207. const props = reactive();
  208. const treeValue = reactive({}); // 关联楼栋树形结构数据
  209. const searchInput = reactive({
  210. keyWord: "",
  211. teamId: "",
  212. schoolId: "",
  213. createTime: "",
  214. }); // 搜索按钮数据
  215. const currentPage = ref(1); // 当前页
  216. const pageSize = ref(10);
  217. const total = ref(); // 当前总数
  218. const selectData = reactive({ list: [] }); // 多选框选择的数据
  219. const addDialogVisible = ref(false); // 控制添加员工弹窗
  220. // 添加员工表单数据
  221. const formSize = ref("default");
  222. const ruleFormRef = ref();
  223. const articleIdsRef = ref(); // 关联报修类型ref
  224. const buildIdsRef = ref(); // 关联楼栋ref
  225. const ruleForm = reactive({
  226. userName: "",
  227. cardNumber: "",
  228. userzzId: "",
  229. userPhone: "",
  230. schoolId: "",
  231. workType: "",
  232. articleIds: [],
  233. buildIds: [],
  234. teamId: "",
  235. acceptanceTime: "",
  236. maintenanceTime: "",
  237. id: "",
  238. });
  239. // 表单验证
  240. const rules = reactive({
  241. // serial: [{ required: true, message: "序列号不能为空", trigger: "blur" }],
  242. userName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
  243. cardNumber: [
  244. { required: true, message: "微校卡号不能为空", trigger: "blur" },
  245. ],
  246. userzzId: [{ required: true, message: "身份不能为空", trigger: "blur" }],
  247. userPhone: [{ required: true, message: "手机号码不能为空", trigger: "blur" }],
  248. schoolId: [{ required: true, message: "校区不能为空", trigger: "blur" }],
  249. workType: [{ required: true, message: "工种不能为空", trigger: "blur" }],
  250. teamId: [{ required: true, message: "维修班不能为空", trigger: "blur" }],
  251. articleIds: [
  252. { required: true, message: "关联报修类型不能为空", trigger: "blur" },
  253. ],
  254. buildIds: [{ required: true, message: "关联楼栋不能为空", trigger: "blur" }],
  255. acceptanceTime: [
  256. { required: true, message: "接单考核时间不能为空", trigger: "blur" },
  257. ],
  258. maintenanceTime: [
  259. { required: true, message: "维修考核时间不能为空", trigger: "blur" },
  260. ],
  261. });
  262. watch(
  263. () => searchInput.createTime,
  264. (newVal, oldVal) => {
  265. console.log("监听时间:", newVal);
  266. if (newVal == null) {
  267. getList();
  268. }
  269. }
  270. );
  271. // 查看员工列表
  272. const getList = async () => {
  273. loading.value = true;
  274. let data = {
  275. page: currentPage.value,
  276. rows: pageSize.value,
  277. ledgerParam: searchInput.keyWord, // 关键字查询
  278. managerId: sessionStorage.getItem("token"),
  279. };
  280. if (searchInput.createTime) {
  281. data.payStartTime = searchInput.createTime[0];
  282. data.payEndTime = searchInput.createTime[1];
  283. }
  284. let res = await axios({
  285. method: "post",
  286. url: api.value + "/mhotel/bookquearyLedgerPage.action",
  287. headers: {
  288. // token: sessionStorage.getItem("token"),
  289. // user_head: sessionStorage.getItem("userhead"),
  290. },
  291. params: data,
  292. });
  293. console.log(res, "台账数据");
  294. if (res.data.code == 200) {
  295. tableData.list = res.data.data.bookIPage.pageList;
  296. total.value = res.data.data.bookIPage.total;
  297. loading.value = false;
  298. // ElMessage({
  299. // type: "success",
  300. // showClose: true,
  301. // message: res.data.message,
  302. // center: true,
  303. // });
  304. } else {
  305. loading.value = false;
  306. ElMessage({
  307. type: "error",
  308. showClose: true,
  309. message: res.data.message,
  310. center: true,
  311. });
  312. }
  313. };
  314. // 搜索功能
  315. const searchBtn = lodash.debounce(async () => {
  316. getList();
  317. }, 300);
  318. // 改变校区 关联楼栋和关联报修类型也改变(---------------)
  319. const changeSchool = async (val) => {
  320. if (val == 1) {
  321. ruleForm.schoolId = 1;
  322. } else {
  323. ruleForm.schoolId = 2;
  324. }
  325. // 报修(故障类型)类型关联 (接口-------)
  326. let data = {
  327. schoolId: val,
  328. };
  329. let resss = await axios({
  330. method: "get",
  331. url: api.value + "/repairArticleType/queryRepairArticleType",
  332. headers: {
  333. token: sessionStorage.getItem("token"),
  334. user_head: sessionStorage.getItem("userhead"),
  335. },
  336. params: data,
  337. });
  338. console.log(resss, "报修(故障类型)类型关联数据");
  339. articleIdsList.value = resss.data.data;
  340. // 关联楼栋数据 (接口---------)
  341. let datas = { schoolId: val };
  342. let res = await axios({
  343. method: "get",
  344. url: api.value + "/repairArea/queryRepairAreaSecond",
  345. headers: {
  346. token: sessionStorage.getItem("token"),
  347. user_head: sessionStorage.getItem("userhead"),
  348. },
  349. params: datas,
  350. });
  351. console.log(res, "关联楼栋数据");
  352. treeValue.list = res.data.data;
  353. };
  354. //新增员工 (--------------------------------------)
  355. const addlist = async () => {
  356. dialongTitle.value = "添加员工";
  357. changeSchool(1);
  358. addDialogVisible.value = true;
  359. ruleForm.userName = "";
  360. ruleForm.cardNumber = "";
  361. ruleForm.userzzId = "";
  362. ruleForm.userPhone = "";
  363. ruleForm.workType = "";
  364. ruleForm.articleIds = [];
  365. ruleForm.buildIds = [];
  366. ruleForm.teamId = "";
  367. ruleForm.acceptanceTime = "";
  368. ruleForm.maintenanceTime = "";
  369. ruleForm.id = "";
  370. };
  371. // 种类是否全选按钮
  372. // const handleCheckAllChange = (val) => {
  373. // console.log(val);
  374. // console.log(articleIdsList.value);
  375. // let checkedCitie = [];
  376. // articleIdsList.value.forEach((item) => {
  377. // checkedCitie.push(item.name);
  378. // });
  379. // checkedCities.value = val ? checkedCitie : [];
  380. // isIndeterminate.value = false;
  381. // };
  382. // //单独勾选种类
  383. // const handleCheckedCitiesChange = (value) => {
  384. // console.log(value);
  385. // const checkedCount = value.length;
  386. // checkAll.value = checkedCount === articleIdsList.value.length;
  387. // isIndeterminate.value =
  388. // checkedCount > 0 && checkedCount < articleIdsList.value.length;
  389. // };
  390. // 关联报修类型 当复选框被点击的时候触发
  391. const handleArticleIds = (data, checked, indeterminate) => {
  392. console.log(data, checked, indeterminate);
  393. // let keys = articleIdsRef.value.getCheckedNodes();
  394. let keys = articleIdsRef.value.getCheckedKeys();
  395. // console.log(keys);
  396. // let arr = [];
  397. // keys.forEach((item) => {
  398. // if (item.parentId != 1) {
  399. // arr.push(item.id);
  400. // }
  401. // });
  402. ruleForm.articleIds = keys;
  403. };
  404. // 关联楼栋 当复选框被点击的时候触发
  405. const handleCheckChange = (data, checked, indeterminate) => {
  406. // console.log(data, checked);
  407. let keys = buildIdsRef.value.getCheckedNodes();
  408. let arr = [];
  409. keys.forEach((item) => {
  410. if (item.parentId != 1) {
  411. arr.push(item.id);
  412. }
  413. });
  414. ruleForm.buildIds = arr;
  415. };
  416. //编辑按钮 (-------------------------------------------)
  417. const edit = (row) => {
  418. changeSchool(row.schoolId);
  419. // console.log(row.articleIds, row.buildIds);
  420. dialongTitle.value = "编辑员工";
  421. addDialogVisible.value = true;
  422. ruleForm.userName = row.userName;
  423. ruleForm.cardNumber = row.cardNumber;
  424. ruleForm.userzzId = row.userZzid;
  425. ruleForm.userPhone = row.userPhone;
  426. ruleForm.schoolId = row.schoolId;
  427. ruleForm.workType = row.workType;
  428. ruleForm.teamId = row.teamId;
  429. ruleForm.acceptanceTime = row.acceptanceTime;
  430. ruleForm.maintenanceTime = row.maintenanceTime;
  431. ruleForm.id = row.id;
  432. nextTick(() => {
  433. articleIdsRef.value.setCheckedKeys(row.articleIds);
  434. buildIdsRef.value.setCheckedKeys(row.buildIds);
  435. });
  436. ruleForm.articleIds = row.articleIds;
  437. ruleForm.buildIds = row.buildIds;
  438. };
  439. // 取消添加员工
  440. const cancelAdd = () => {
  441. addDialogVisible.value = false;
  442. ruleFormRef.value.resetFields();
  443. };
  444. // 确认添加员工
  445. const submitAdd = async (formEl) => {
  446. if (!formEl) return;
  447. await formEl.validate(async (valid, fields) => {
  448. if (valid) {
  449. if (dialongTitle.value == "添加员工") {
  450. let data = {
  451. userName: ruleForm.userName,
  452. cardNumber: ruleForm.cardNumber,
  453. userzzId: ruleForm.userzzId,
  454. userPhone: ruleForm.userPhone,
  455. schoolId: ruleForm.schoolId,
  456. workType: ruleForm.workType,
  457. articleIds: ruleForm.articleIds,
  458. buildIds: ruleForm.buildIds,
  459. teamId: ruleForm.teamId,
  460. acceptanceAssessTime: ruleForm.acceptanceTime,
  461. maintenanceAssessTime: ruleForm.maintenanceTime,
  462. };
  463. let res = await axios({
  464. method: "post",
  465. url: api.value + "/repairUser/insertRepairUserSetting",
  466. headers: {
  467. token: sessionStorage.getItem("token"),
  468. user_head: sessionStorage.getItem("userhead"),
  469. },
  470. data: data,
  471. });
  472. console.log(res, "添加员工");
  473. if (res.data.code == 200) {
  474. getList();
  475. ElMessage({
  476. type: "success",
  477. showClose: true,
  478. message: res.data.message,
  479. center: true,
  480. });
  481. addDialogVisible.value = false;
  482. ruleFormRef.value.resetFields();
  483. } else {
  484. ElMessage({
  485. type: "error",
  486. showClose: true,
  487. message: res.data.message,
  488. center: true,
  489. });
  490. }
  491. } else {
  492. let data = {
  493. userName: ruleForm.userName,
  494. cardNumber: ruleForm.cardNumber,
  495. userzzId: ruleForm.userzzId,
  496. userPhone: ruleForm.userPhone,
  497. schoolId: ruleForm.schoolId,
  498. workType: ruleForm.workType,
  499. articleIds: ruleForm.articleIds,
  500. buildIds: ruleForm.buildIds,
  501. teamId: ruleForm.teamId,
  502. acceptanceAssessTime: ruleForm.acceptanceTime,
  503. maintenanceAssessTime: ruleForm.maintenanceTime,
  504. id: ruleForm.id,
  505. };
  506. let res = await axios({
  507. method: "post",
  508. url: api.value + "/repairUser/updateRepairUserSettingById",
  509. headers: {
  510. token: sessionStorage.getItem("token"),
  511. user_head: sessionStorage.getItem("userhead"),
  512. },
  513. data: data,
  514. });
  515. console.log(res, "编辑员工");
  516. if (res.data.code == 200) {
  517. getList();
  518. ElMessage({
  519. type: "success",
  520. showClose: true,
  521. message: res.data.message,
  522. center: true,
  523. });
  524. addDialogVisible.value = false;
  525. ruleFormRef.value.resetFields();
  526. } else {
  527. ElMessage({
  528. type: "error",
  529. showClose: true,
  530. message: res.data.message,
  531. center: true,
  532. });
  533. }
  534. }
  535. } else {
  536. console.log("error submit!", fields);
  537. }
  538. });
  539. };
  540. //删除按钮
  541. const del = async (row) => {
  542. let data = {
  543. id: row.id,
  544. };
  545. let res = await axios({
  546. method: "get",
  547. url: api.value + "/repairUser/deleteRepairUserSettingById",
  548. headers: {
  549. token: sessionStorage.getItem("token"),
  550. user_head: sessionStorage.getItem("userhead"),
  551. },
  552. params: data,
  553. });
  554. if (res.data.code == 200) {
  555. if (tableData.list.length == 1 && currentPage.value != 1) {
  556. currentPage.value = currentPage.value - 1;
  557. }
  558. getList();
  559. ElMessage({
  560. type: "success",
  561. showClose: true,
  562. message: res.data.message,
  563. center: true,
  564. });
  565. } else {
  566. ElMessage({
  567. type: "error",
  568. showClose: true,
  569. message: res.data.message,
  570. center: true,
  571. });
  572. }
  573. console.log(res);
  574. };
  575. // 多选框功能
  576. const handleSelectionChange = (val) => {
  577. console.log(val);
  578. selectData.list = val;
  579. };
  580. //导出功能
  581. const importExcel = lodash.debounce(async () => {
  582. let data = {
  583. ledgerParam: searchInput.keyWord, // 关键字查询
  584. managerId: sessionStorage.getItem("token"),
  585. };
  586. if (searchInput.createTime) {
  587. data.payStartTime = searchInput.createTime[0];
  588. data.payEndTime = searchInput.createTime[1];
  589. }
  590. let res = await axios({
  591. method: "post",
  592. url: api.value + "/mhotel/booktoLedgerExcel.action",
  593. headers: {
  594. // token: sessionStorage.getItem("token"),
  595. },
  596. params: data,
  597. });
  598. console.log(res, "导出台账管理");
  599. if (res.data.code == 200) {
  600. var downloadPath = res.data.downurl;
  601. // window.open(downloadPath);
  602. window.location.href = downloadPath;
  603. var downloadLink = document.createElement("a");
  604. downloadLink.style.display = "none"; // 使其隐藏
  605. downloadLink.href = downloadPath;
  606. downloadLink.download = "";
  607. downloadLink.click();
  608. document.body.appendChild(downloadLink);
  609. document.body.removeChild(downloadLink);
  610. ElMessage({
  611. type: "success",
  612. showClose: true,
  613. message: res.data.message,
  614. center: true,
  615. });
  616. } else {
  617. ElMessage({
  618. type: "error",
  619. showClose: true,
  620. message: res.data.message,
  621. center: true,
  622. });
  623. }
  624. }, 1000);
  625. // 表格斑马纹颜色修改
  626. const tableRowClassName = ({ row, rowIndex }) => {
  627. if (rowIndex % 2 === 0) {
  628. return "even";
  629. } else if (rowIndex % 2 !== 0) {
  630. return "odd";
  631. }
  632. return "";
  633. };
  634. // 分页
  635. const handleCurrentChange = (value) => {
  636. // console.log(value);
  637. currentPage.value = value;
  638. getList();
  639. };
  640. onBeforeMount(async () => {
  641. api.value = store.state.user.api;
  642. getList();
  643. });
  644. onUnmounted(() => {
  645. // document.removeEventListener("keyup", Enters);
  646. });
  647. </script>
  648. <style scoped lang="scss">
  649. .content-box {
  650. width: 97.5%;
  651. height: 89%;
  652. margin: 20px auto;
  653. background-color: #fff;
  654. color: #fff;
  655. display: flex;
  656. flex-direction: column;
  657. box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
  658. .left {
  659. // width: calc(100wh - 40px);
  660. display: flex;
  661. align-items: center;
  662. height: 60px;
  663. margin: 0 30px;
  664. border-bottom: 1px solid #ccc;
  665. color: rgb(0, 0, 0);
  666. font-size: 18px;
  667. font-weight: 600;
  668. span {
  669. margin-right: 20px;
  670. cursor: pointer;
  671. }
  672. .is_active {
  673. color: rgba(111, 182, 184, 1);
  674. }
  675. }
  676. .middle {
  677. width: 96%;
  678. margin: 0 auto;
  679. color: #000;
  680. // border-bottom: 1px solid rgb(231, 231, 231);
  681. .filter {
  682. display: flex;
  683. flex-wrap: wrap;
  684. align-items: center;
  685. margin: 15px 0 15px 0;
  686. .search {
  687. color: #fff;
  688. }
  689. .condition {
  690. display: flex;
  691. align-items: center;
  692. margin: 10px 30px 10px 0;
  693. :deep(.el-input .el-input__inner) {
  694. font-size: 14px;
  695. }
  696. span {
  697. margin: 0 10px 0 0;
  698. }
  699. }
  700. }
  701. .gongneng {
  702. margin: 10px 0 20px 0;
  703. span {
  704. color: #fff;
  705. }
  706. }
  707. :deep(.cont) {
  708. width: 60%;
  709. margin: 20px auto;
  710. }
  711. :deep(.download) {
  712. display: flex;
  713. align-items: center;
  714. margin: 10px;
  715. }
  716. :deep(.download span) {
  717. font-size: 16px;
  718. margin-left: 20px;
  719. }
  720. :deep(.cont .el-button) {
  721. margin-left: 60px;
  722. margin-bottom: 30px;
  723. }
  724. :deep(.cont .accomplish) {
  725. width: 100%;
  726. display: flex;
  727. justify-content: center;
  728. }
  729. :deep(.cont .accomplish .el-button) {
  730. width: 50%;
  731. margin: 0;
  732. }
  733. }
  734. .footer {
  735. width: 96%;
  736. height: 550px;
  737. margin: 10px auto 30px;
  738. .el-table--fit {
  739. height: 100%;
  740. :deep(.el-table__header-wrapper) {
  741. background-color: #000;
  742. font-size: 15px;
  743. tr {
  744. color: #000;
  745. }
  746. }
  747. :deep(.el-table__row) {
  748. height: 50px;
  749. font-size: 15px;
  750. color: #000;
  751. }
  752. :deep(.el-table__row):nth-child(2n) {
  753. .el-table-fixed-column--right {
  754. background-color: rgba(240, 243, 247, 1);
  755. }
  756. }
  757. :deep(.el-table__row td) {
  758. padding: 0;
  759. border: 0;
  760. }
  761. .el-button--primary {
  762. margin-left: 5px;
  763. }
  764. :deep(.el-table__body .even) {
  765. background-color: #fff;
  766. }
  767. :deep(.el-table__body .odd) {
  768. background-color: rgba(240, 243, 247, 1);
  769. }
  770. :deep(.edit) {
  771. display: flex;
  772. align-items: center;
  773. justify-content: center;
  774. color: rgba(111, 182, 184, 1);
  775. }
  776. :deep(.look) {
  777. padding: 0 10px;
  778. cursor: pointer;
  779. }
  780. :deep(.look):hover {
  781. color: red;
  782. }
  783. }
  784. // 添加员工弹窗样式
  785. :deep(.addStaff) {
  786. // height: 420px;
  787. border-radius: 11px;
  788. .el-dialog__header {
  789. border-radius: 11px 11px 0 0;
  790. background: rgba(237, 241, 245, 1);
  791. font-weight: 600;
  792. margin: 0;
  793. .el-dialog__headerbtn {
  794. outline: none;
  795. }
  796. }
  797. .el-dialog__body {
  798. padding: 30px 20px 10px 20px;
  799. .el-input {
  800. width: 200px;
  801. }
  802. // 关联报修类型样式(-----------------)
  803. // .checkbox {
  804. // .el-form-item__content {
  805. // display: flex;
  806. // flex-direction: column;
  807. // align-items: flex-start;
  808. // .el-checkbox-group {
  809. // display: flex;
  810. // flex-direction: column;
  811. // }
  812. // }
  813. // }
  814. .options {
  815. .el-form-item__content {
  816. .queding {
  817. margin-left: 20px;
  818. color: #fff;
  819. }
  820. display: flex;
  821. flex-direction: row-reverse;
  822. }
  823. }
  824. }
  825. }
  826. }
  827. .pageSize {
  828. display: flex;
  829. align-items: center;
  830. justify-content: space-between;
  831. margin: 0 30px;
  832. span {
  833. color: #000;
  834. }
  835. .el-pagination {
  836. // width: 1600px;
  837. :deep(.el-pagination__total) {
  838. color: #000;
  839. }
  840. :deep(.el-pagination__goto) {
  841. color: #000;
  842. }
  843. :deep(.el-pagination__classifier) {
  844. color: #000;
  845. }
  846. :deep(.el-input__wrapper) {
  847. border: 1px solid rgba(0, 0, 0, 1);
  848. border-radius: 5px;
  849. box-shadow: none;
  850. }
  851. :deep(.el-pager li) {
  852. margin: 0 5px;
  853. border: 1px solid rgba(0, 0, 0, 1);
  854. border-radius: 5px;
  855. background-color: transparent;
  856. }
  857. :deep(.el-pager li.is-active) {
  858. background-color: rgba(111, 182, 184, 1);
  859. }
  860. :deep(.btn-prev) {
  861. margin-right: 5px;
  862. border: 1px solid rgba(0, 0, 0, 1);
  863. border-radius: 5px;
  864. background-color: transparent;
  865. }
  866. :deep(.btn-next) {
  867. margin-left: 5px;
  868. border: 1px solid rgba(0, 0, 0, 1);
  869. border-radius: 5px;
  870. background-color: transparent;
  871. }
  872. }
  873. }
  874. }
  875. .el-input {
  876. width: 192px;
  877. }
  878. </style>