No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

services.js 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. import React from "react";
  2. import Layout from "../components/layout/Layout";
  3. import Button from "react-bootstrap/Button";
  4. import Modal from "react-bootstrap/Modal";
  5. import { useState } from "react";
  6. import { Form } from "reactstrap";
  7. function services() {
  8. const [show, setShow] = useState(false);
  9. const handleClose = () => setShow(false);
  10. const handleShow = () => setShow(true);
  11. return (
  12. <Layout
  13. headTitle="Services"
  14. pageTitle="Services"
  15. pageTitleSub={""}
  16. pageclassName={"Services"}
  17. parent={"Home"}
  18. child={"Services"}
  19. >
  20. <div className="row">
  21. <div className="col-xl-3 col-sm-6">
  22. <div className="stat-widget d-flex align-items-center bg-white">
  23. <div className="widget-icon me-3 bg-primary">
  24. <span>
  25. <i className="ri-file-copy-2-line"></i>
  26. </span>
  27. </div>
  28. <div className="widget-content">
  29. <h3>483</h3>
  30. <p>Total Requests</p>
  31. </div>
  32. </div>
  33. </div>
  34. <div className="col-xl-3 col-sm-6">
  35. <div className="stat-widget d-flex align-items-center bg-white">
  36. <div className="widget-icon me-3 bg-success">
  37. <span>
  38. <i className="ri-file-list-3-line"></i>
  39. </span>
  40. </div>
  41. <div className="widget-content">
  42. <h3>273</h3>
  43. <p>Completed Requests</p>
  44. </div>
  45. </div>
  46. </div>
  47. <div className="col-xl-3 col-sm-6">
  48. <div className="stat-widget d-flex align-items-center bg-white">
  49. <div className="widget-icon me-3 bg-warning">
  50. <span>
  51. <i className="ri-file-paper-line"></i>
  52. </span>
  53. </div>
  54. <div className="widget-content">
  55. <h3>121</h3>
  56. <p>Pending Requests</p>
  57. </div>
  58. </div>
  59. </div>
  60. <div className="col-xl-3 col-sm-6 mb-3">
  61. <div className="stat-widget d-flex align-items-center bg-white">
  62. <div className="widget-icon me-3 bg-danger">
  63. <span>
  64. <i className="ri-file-paper-2-line"></i>
  65. </span>
  66. </div>
  67. <div className="widget-content">
  68. <h3>89</h3>
  69. <p>Canceled Requests</p>
  70. </div>
  71. </div>
  72. </div>
  73. <div className="col-sm-12 d-block d-md-none bg-white mt-1">
  74. <div className="d-flex align-items-center justify-content-between py-2 bg-white">
  75. <div> <p className="fw-bold text-dark mb-0">Service Request</p></div>
  76. <div> <button className="btn-sm btn-primary" onClick={handleShow}>+</button></div>
  77. </div>
  78. </div>
  79. <div className="col-sm-12 d-block d-md-none bg-white p-3 mb-2 mt-1">
  80. <div className="d-flex align-items-center justify-content-between">
  81. <div>
  82. <span>ABCD4556464QWE</span>
  83. </div>
  84. <div>
  85. <span className="badge px-3 py-2 bg-success"> Completed</span>
  86. </div>
  87. </div>
  88. <div className="d-flex align-items-center justify-content-between py-2">
  89. <div>
  90. <span>Water Leakage</span>
  91. </div>
  92. <div>
  93. <span>DT:23/5/23</span>
  94. </div>
  95. </div>
  96. </div>{" "}
  97. <div className="col-sm-12 d-block d-md-none bg-white p-3">
  98. <div className="d-flex align-items-center justify-content-between">
  99. <div>
  100. <span>ABCD4556464QWE</span>
  101. </div>
  102. <div>
  103. <span className="badge px-3 py-2 bg-warning"> Pending</span>
  104. </div>
  105. </div>
  106. <div className="d-flex align-items-center justify-content-between py-2">
  107. <div>
  108. <span>Water Leakage</span>
  109. </div>
  110. <div>
  111. <span>DT:25/5/23</span>
  112. </div>
  113. </div>
  114. </div>{" "}
  115. <div className="col-xl-12 d-none d-md-block">
  116. <div className="card">
  117. <div className="card-header flex-row">
  118. <h4 className="card-title">Services Request</h4>
  119. <Button
  120. variant="primary"
  121. onClick={handleShow}
  122. size="sm"
  123. className="p-1"
  124. >
  125. + New Request
  126. </Button>
  127. </div>
  128. <Modal show={show} onHide={handleClose}>
  129. <Modal.Header closeButton>
  130. <Modal.Title>New Service Request</Modal.Title>
  131. </Modal.Header>
  132. <Modal.Body>
  133. <form className="row g-3 needs-validation" novalidate>
  134. <div className="col-md-6">
  135. <label for="validationCustom01" className="form-label">
  136. Full Name
  137. </label>
  138. <input
  139. type="text"
  140. className="form-control"
  141. id="validationCustom01"
  142. value="Mathew"
  143. required
  144. />
  145. <div className="valid-feedback">Looks good!</div>
  146. </div>
  147. <div className="col-md-6">
  148. <label for="validationCustom01" className="form-label">
  149. Mobile
  150. </label>
  151. <input
  152. type="tel"
  153. className="form-control"
  154. id="validationCustom02"
  155. value="123456"
  156. required
  157. />
  158. <div className="valid-feedback">Looks good!</div>
  159. </div>
  160. <div className="col-md-6">
  161. <label for="validationCustom04" className="form-label">
  162. Service
  163. </label>
  164. <select
  165. className="form-select"
  166. id="validationCustom04"
  167. required
  168. >
  169. <option>New Water Connection</option>
  170. <option>Water Leakage</option>
  171. <option>Water Shortage</option>
  172. </select>
  173. <div className="invalid-feedback">
  174. Please select a valid state.
  175. </div>
  176. </div>
  177. <div className="col-md-6">
  178. <label for="validationCustom03" className="form-label">
  179. Building NO / Street
  180. </label>
  181. <input
  182. type="text"
  183. className="form-control"
  184. id="validationCustom03"
  185. value="5/35-1 ,River Rd, Fort Kochi"
  186. required
  187. />
  188. <div className="invalid-feedback">
  189. Please provide Building no / Street.
  190. </div>
  191. </div>
  192. <div className="col-md-6">
  193. <label for="validationCustom03" className="form-label">
  194. City
  195. </label>
  196. <input
  197. type="text"
  198. className="form-control"
  199. id="validationCustom03"
  200. value="Kochi"
  201. required
  202. />
  203. <div className="invalid-feedback">
  204. Please provide a valid city.
  205. </div>
  206. </div>
  207. <div className="col-md-6">
  208. <label for="validationCustom05" className="form-label">
  209. Zip
  210. </label>
  211. <input
  212. type="text"
  213. className="form-control"
  214. id="validationCustom05"
  215. value="682001"
  216. required
  217. />
  218. <div className="invalid-feedback">
  219. Please provide a valid zip.
  220. </div>
  221. </div>
  222. <div className="col-md-6">
  223. <div className="mb-3">
  224. <label for="formFileSm" className="form-label">Documents</label>
  225. <a type="file" className="border p-2 mx-2 text-dark text-uppercase"> Upload</a>
  226. </div>
  227. </div>
  228. <div className="col-12">
  229. <div className="form-check">
  230. <input
  231. className="form-check-input"
  232. type="checkbox"
  233. value=""
  234. id="invalidCheck"
  235. required
  236. />
  237. <label className="form-check-label" for="invalidCheck">
  238. Agree to terms and conditions
  239. </label>
  240. <div className="invalid-feedback">
  241. You must agree before submitting.
  242. </div>
  243. </div>
  244. </div>
  245. </form>
  246. </Modal.Body>
  247. <Modal.Footer>
  248. <Button variant="primary" onClick={handleClose}>
  249. Submit Request
  250. </Button>
  251. </Modal.Footer>
  252. </Modal>
  253. <div className="card-body">
  254. <div className="invoice-table">
  255. <div className="table-responsive">
  256. <table className="table">
  257. <thead>
  258. <tr>
  259. <th>Application No</th>
  260. <th>Service</th>
  261. <th>Name</th>
  262. <th>Documents</th>
  263. <th>Mobile</th>
  264. <th className="text-center">Status</th>
  265. </tr>
  266. </thead>
  267. <tbody>
  268. <tr>
  269. <td>ABCD4556464QWE</td>
  270. <td>New Water Connection</td>
  271. <td>Jhon</td>
  272. <td>File_090-1</td>
  273. <td>5678909876</td>
  274. <td>
  275. <span className="badge px-3 py-2 bg-success w-75">
  276. Completed
  277. </span>
  278. </td>
  279. </tr>
  280. <tr>
  281. <td>ABMK846493CFE</td>
  282. <td>New Sewerage Connection</td>
  283. <td>Jhon</td>
  284. <td>File_08982_-1</td>
  285. <td>5678907865</td>
  286. <td>
  287. <span className="badge px-3 py-2 bg-danger w-75">
  288. Cancel
  289. </span>
  290. </td>
  291. </tr>
  292. <tr>
  293. <td>ABGU745632CFE</td>
  294. <td>Water Leak</td>
  295. <td>Rajesh</td>
  296. <td>File_08_88-1</td>
  297. <td>5678903491</td>
  298. <td>
  299. <span className="badge px-3 py-2 bg-success w-75">
  300. Completed
  301. </span>
  302. </td>
  303. </tr>
  304. <tr>
  305. <td>ABJK879125HNE</td>
  306. <td>Water Shortage</td>
  307. <td>Karan</td>
  308. <td>File_070-1</td>
  309. <td>5678905672</td>
  310. <td>
  311. <span className="badge px-3 py-2 bg-warning w-75">
  312. Pending
  313. </span>
  314. </td>
  315. </tr>
  316. <tr>
  317. <td>ABTY876545JIE</td>
  318. <td>New Water Connection</td>
  319. <td>Rathod</td>
  320. <td></td>
  321. <td>5678901232</td>
  322. <td>
  323. <span className="badge px-3 py-2 bg-success w-75">
  324. Completed
  325. </span>
  326. </td>
  327. </tr>
  328. <tr>
  329. <td>ABQW345678RTE</td>
  330. <td>New Sewerage Connection</td>
  331. <td>Smith</td>
  332. <td></td>
  333. <td>5678903456</td>
  334. <td>
  335. <span className="badge px-3 py-2 bg-warning w-75">
  336. Pending
  337. </span>
  338. </td>
  339. </tr>
  340. </tbody>
  341. </table>
  342. </div>
  343. </div>
  344. </div>
  345. </div>
  346. </div>
  347. </div>
  348. </Layout>
  349. );
  350. }
  351. export default services;