labourServices-list.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. <template>
  2. <div>
  3. <el-breadcrumb separator=">">
  4. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  5. <el-breadcrumb-item>
  6. <a href="#">企业HR</a>
  7. </el-breadcrumb-item>
  8. <el-breadcrumb-item>
  9. <a href="/labourServices">劳务对接管理</a>
  10. </el-breadcrumb-item>
  11. </el-breadcrumb>
  12. <el-divider></el-divider>
  13. <!--
  14. 要resetFields起作用,必须配置:model和prop
  15. -->
  16. <el-form
  17. ref="queryForm"
  18. :model="queryModel"
  19. inline
  20. class="demo-form-inline"
  21. >
  22. <el-form-item label="审批状态" prop="t">
  23. <el-select v-model="queryModel.approvalStatus" filterable placeholder="请选择" size="mini">
  24. <el-option
  25. v-for="result in approvalStatusList"
  26. :key="result.id"
  27. :label="result.name"
  28. :value="result.value"
  29. ></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="审批时间" prop="approveTime">
  33. <el-date-picker
  34. v-model="approveTimeRange"
  35. type="daterange"
  36. size="mini"
  37. range-separator="至"
  38. start-placeholder="开始日期"
  39. end-placeholder="结束日期"
  40. value-format="yyyy-MM-dd"
  41. format="yyyy-MM-dd">
  42. </el-date-picker>
  43. </el-form-item>
  44. <el-form-item>
  45. <el-button
  46. type="primary"
  47. size="mini"
  48. icon="ios-search"
  49. @click="changePage(1)"
  50. :loading="loading"
  51. >查询</el-button
  52. >&nbsp;
  53. <el-button
  54. type="info"
  55. size="mini"
  56. style="margin-left: 8px"
  57. @click="handleReset('queryForm')"
  58. >重置</el-button
  59. >&nbsp;
  60. </el-form-item>
  61. </el-form>
  62. <el-divider></el-divider>
  63. <el-row class="button-group">
  64. <el-button
  65. type="primary"
  66. size="small"
  67. plain
  68. icon="el-icon-circle-plus"
  69. @click="handleAdd"
  70. >发布信息</el-button
  71. >
  72. </el-row>
  73. <el-table
  74. :data="tableData"
  75. style="min-height: 400px"
  76. v-loading="loading"
  77. stripe
  78. @sort-change="sortChange"
  79. @selection-change="handleSelectionChange"
  80. >
  81. <el-table-column
  82. prop="typeN"
  83. label="发布类型"
  84. width="120"
  85. ></el-table-column>
  86. <el-table-column
  87. prop="createTime"
  88. label="发布时间"
  89. width="180"
  90. ></el-table-column>
  91. <!-- <el-table-column prop="content"
  92. label="内容摘要"
  93. width="400"
  94. :show-overflow-tooltip="true"
  95. ></el-table-column> -->
  96. <el-table-column
  97. prop="approvalStatusN"
  98. label="审核进度"
  99. width="120"
  100. ></el-table-column>
  101. <el-table-column
  102. prop="approvePersonName"
  103. label="审核人"
  104. width="120"
  105. ></el-table-column>
  106. <el-table-column
  107. prop="approveTime"
  108. label="审核时间"
  109. width="180"
  110. ></el-table-column>
  111. <el-table-column label="操作">
  112. <template slot-scope="{ row }">
  113. <el-button size="mini" type="warning" @click="handleLookUp(row)"
  114. >查看</el-button
  115. >
  116. <el-button size="mini" type="primary" @click="handleEdit(row)"
  117. >修改</el-button
  118. >
  119. <el-button size="mini" type="danger" @click="handleDelete(row)"
  120. >删除</el-button
  121. >
  122. </template>
  123. </el-table-column>
  124. </el-table>
  125. <el-pagination
  126. :current-page.sync="pageIndex"
  127. :total="totalElements"
  128. :page-sizes="pageSizeList"
  129. @current-change="changePage"
  130. @size-change="pageSizeChange"
  131. layout="total, sizes, prev, pager, next, jumper"
  132. ></el-pagination>
  133. <labourServices-detail
  134. v-if="showModal"
  135. :businessKey="businessKey"
  136. :title="modalTitle"
  137. @close="onDetailModalClose"
  138. ></labourServices-detail>
  139. </div>
  140. </template>
  141. <script>
  142. import Constant from "@/constant";
  143. import LabourServicesDetail from "./labourServices-detail";
  144. import labourServicesApi from "@/api/base/labourServices";
  145. import NProgress from "nprogress"; // progress bar
  146. import "nprogress/nprogress.css"; // progress bar style
  147. import dataDictionaryApi from "@/api/sys/dataDictionary";
  148. export default {
  149. data() {
  150. var self = this;
  151. return {
  152. queryModel: {
  153. id: "",
  154. type: "",
  155. content: "",
  156. status: "",
  157. sortNo: "",
  158. approvalStatus: "",
  159. createBy: "",
  160. createTime: "",
  161. updateBy: "",
  162. updateTime: "",
  163. delFlag: "",
  164. approvePersonId: "",
  165. approveTime: "",
  166. },
  167. loading: false,
  168. tableData: [],
  169. pageIndex: 1,
  170. pageSize: 10,
  171. totalPages: 0,
  172. totalElements: 0,
  173. field: "",
  174. direction: "",
  175. pageSizeList: [10, 20, 30],
  176. multipleSelection: [],
  177. showModal: false,
  178. modalTitle: "",
  179. businessKey: "",
  180. approveTimeRange:"",
  181. approvalStatusList:[],
  182. };
  183. },
  184. created() {
  185. dataDictionaryApi.findByCatalogName({
  186. "catalogName" : "劳务对接审批状态"
  187. }).then(response => {
  188. var jsonData = response.data;
  189. this.approvalStatusList = jsonData.data;
  190. });
  191. },
  192. methods: {
  193. changePage(pageIndex) {
  194. var self = this;
  195. self.loading = true;
  196. self.pageIndex = pageIndex;
  197. var formData = new FormData();
  198. formData.append("pageIndex", self.pageIndex);
  199. formData.append("pageSize", self.pageSize);
  200. formData.append("approvalStatus", self.queryModel.approvalStatus);
  201. if(self.approveTimeRange!=null&&self.approveTimeRange!=""){
  202. formData.append("approveTimeRange", self.approveTimeRange.toString());
  203. }
  204. if (this.field != null) {
  205. formData.append("field", this.field);
  206. }
  207. if (this.direction != null) {
  208. formData.append("direction", this.direction);
  209. }
  210. labourServicesApi
  211. .pageList(formData)
  212. .then(function (response) {
  213. self.loading = false;
  214. var jsonData = response.data.data;
  215. self.tableData = jsonData.data;
  216. self.totalPages = jsonData.totalPages;
  217. self.totalElements = jsonData.recordsTotal;
  218. })
  219. .catch((error) => {
  220. self.loading = false;
  221. // self.$message.error(error + "");
  222. });
  223. },
  224. pageSizeChange(pageSize) {
  225. this.pageSize = pageSize;
  226. this.$nextTick(() => {
  227. this.changePage(this.pageIndex);
  228. });
  229. },
  230. sortChange(data) {
  231. this.field = data.column.field;
  232. this.direction = data.order;
  233. this.changePage(this.pageIndex);
  234. },
  235. handleSelectionChange(val) {
  236. this.multipleSelection = val;
  237. },
  238. handleReset(name) {
  239. this.$refs[name].resetFields();
  240. this.approveTimeRange="";
  241. },
  242. handleAdd() {
  243. this.modalTitle = "新增";
  244. this.businessKey = "";
  245. this.showModal = true;
  246. },
  247. handleEdit(record) {
  248. this.modalTitle = "编辑";
  249. this.businessKey = record.id;
  250. this.showModal = true;
  251. },
  252. handleDelete(record) {
  253. var self = this;
  254. self
  255. .$confirm("是否确认删除?", "提示", {
  256. confirmButtonText: "确定",
  257. cancelButtonText: "取消",
  258. type: "warning",
  259. })
  260. .then(() => {
  261. labourServicesApi.remove(record.id).then(function (response) {
  262. var jsonData = response.data;
  263. if (jsonData.result) {
  264. // var index = self.tableData.indexOf(record);
  265. // self.tableData.splice(index, 1);
  266. self.changePage(self.pageIndex);
  267. self.$message({
  268. type: "success",
  269. message: "删除成功!",
  270. });
  271. }
  272. });
  273. });
  274. },
  275. handleBatchDelete() {
  276. var self = this;
  277. var idList = this.multipleSelection.map((record) => {
  278. return record.id;
  279. });
  280. this.$confirm("是否确认删除选中项?", "提示", {
  281. confirmButtonText: "确定",
  282. cancelButtonText: "取消",
  283. type: "warning",
  284. }).then(() => {
  285. labourServicesApi.batchRemove(idList).then(function (response) {
  286. var jsonData = response.data;
  287. if (jsonData.result) {
  288. self.changePage(self.pageIndex);
  289. self.$message({
  290. type: "success",
  291. message: "删除成功!",
  292. });
  293. }
  294. });
  295. });
  296. },
  297. handleLookUp(row){
  298. console.log(row);
  299. window["listPage"] = this;
  300. var path = "/base/labourServices/lookUp";
  301. this.$store
  302. .dispatch("tagsView/delView", {
  303. name: "labourServicesLookUp",
  304. path: path,
  305. })
  306. .then(({ visitedViews }) => {
  307. this.$router.push({
  308. path: path,
  309. query: {
  310. businessKey: row.id,
  311. },
  312. });
  313. });
  314. },
  315. onDetailModalClose(refreshed) {
  316. //保存成功后回调
  317. this.showModal = false;
  318. if (refreshed) {
  319. this.changePage(this.pageIndex);
  320. }
  321. },
  322. },
  323. mounted: function () {
  324. this.changePage(1);
  325. },
  326. components: {
  327. "labourServices-detail": LabourServicesDetail,
  328. },
  329. };
  330. </script>
  331. <style lang="scss" scoped>
  332. .el-breadcrumb {
  333. margin: 10px;
  334. line-height: 20px;
  335. }
  336. .el-divider {
  337. margin: 5px 0;
  338. }
  339. .demo-form-inline {
  340. margin-left: 10px;
  341. text-align: left;
  342. }
  343. .button-group {
  344. margin-left: 10px;
  345. text-align: left;
  346. }
  347. </style>