workSchedule-update.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <style scoped>
  2. .user-panel {
  3. margin: 10px auto;
  4. }
  5. </style>
  6. <template>
  7. <el-dialog
  8. :visible.sync="showDialog"
  9. :title="title"
  10. :modal-append-to-body="false"
  11. style="text-align: left"
  12. @close="closeDialog"
  13. :close-on-click-modal="false"
  14. >
  15. <div class="user-panel"
  16. v-loading="loading"
  17. :element-loading-text="loadingText">
  18. <el-form
  19. ref="form"
  20. :model="formModel"
  21. :rules="ruleValidate"
  22. :label-width="'120px'"
  23. >
  24. <el-form-item label="更新班次">
  25. <el-input :value="scheduleName" readonly></el-input>
  26. </el-form-item>
  27. <el-form-item label="考勤时段" prop="companyId">
  28. <el-date-picker
  29. v-model="formModel.timeRanges"
  30. type="daterange"
  31. range-separator="至"
  32. start-placeholder="开始日期"
  33. end-placeholder="结束日期"
  34. value-format="yyyy-MM-dd"
  35. size="mini"
  36. ></el-date-picker>
  37. </el-form-item>
  38. </el-form>
  39. </div>
  40. <span slot="footer" class="dialog-footer">
  41. <el-button @click="closeDialog">取 消</el-button>
  42. <el-button type="primary" @click="handleSubmit" :loading="loading">更新</el-button>
  43. </span>
  44. </el-dialog>
  45. </template>
  46. <script>
  47. import Constant from "@/constant";
  48. import workScheduleApi from "@/api/base/workSchedule";
  49. import companyInfoApi from "@/api/base/companyInfo";
  50. import workScheduleReportApi from "@/api/business/workScheduleReport";
  51. import SelectTree from "@/components/SelectTree";
  52. export default {
  53. props: ["multipleSelection", "title"],
  54. computed: {
  55. scheduleName() {
  56. return this.multipleSelection
  57. .map((record) => {
  58. return record.name;
  59. })
  60. .join(",");
  61. },
  62. },
  63. data() {
  64. return {
  65. formModel: {
  66. timeRanges: null,
  67. },
  68. ruleValidate: {
  69. timeRanges: [
  70. { required: true, message: "考勤时段不能为空", trigger: "blur" },
  71. ],
  72. },
  73. showDialog: true,
  74. loading: false,
  75. loadingText: ""
  76. };
  77. },
  78. created() {
  79. var self = this;
  80. },
  81. methods: {
  82. //初始化日期
  83. getCurrentMonthFirst() {
  84. var self = this;
  85. var date = new Date();
  86. date.setDate(1);
  87. var month = parseInt(date.getMonth() + 1);
  88. var startTime = date.getFullYear() + "-" + month + "-" + date.getDate();
  89. date.setMonth(date.getMonth() + 1);
  90. var lastDate = new Date(date.getTime() - 1000 * 60 * 60 * 24);
  91. var endTime =
  92. lastDate.getFullYear() + "-" + month + "-" + lastDate.getDate();
  93. self.formModel.timeRanges = [startTime, endTime];
  94. },
  95. closeDialog() {
  96. this.$emit("close", false);
  97. },
  98. handleSubmit() {
  99. var self = this;
  100. this.$refs["form"].validate((valid) => {
  101. if (valid) {
  102. // self
  103. // .$confirm("是否确认更新考勤数据?", "提示", {
  104. // confirmButtonText: "确定",
  105. // cancelButtonText: "取消",
  106. // type: "warning",
  107. // })
  108. // .then(() => {
  109. var formData = new FormData();
  110. var workScheduleIds = this.multipleSelection
  111. .map((record) => {
  112. return record.id;
  113. })
  114. .join(",");
  115. formData.append("workScheduleIds", workScheduleIds);
  116. formData.append("startDate", this.formModel.timeRanges[0]);
  117. formData.append("endDate", this.formModel.timeRanges[1]);
  118. self.loading = true;
  119. self.loadingText = "考勤数据生成中...";
  120. workScheduleReportApi
  121. .batchUpdate(formData)
  122. .then(function (response) {
  123. var jsonData = response.data;
  124. self.loading = false;
  125. if (jsonData.result) {
  126. self.$message({
  127. type: "success",
  128. message: jsonData.data + "",
  129. });
  130. self.closeDialog();
  131. } else {
  132. self.$message({
  133. type: "warning",
  134. message: jsonData.message + "",
  135. });
  136. }
  137. });
  138. // });
  139. }
  140. });
  141. },
  142. },
  143. mounted: function () {
  144. var self = this;
  145. this.getCurrentMonthFirst();
  146. },
  147. };
  148. </script>