|
@@ -6,7 +6,7 @@
|
|
|
<a href="#">系统管理</a>
|
|
|
</el-breadcrumb-item>
|
|
|
<el-breadcrumb-item>
|
|
|
- <a href="/workPersonScheduling">workPersonScheduling管理</a>
|
|
|
+ <a href="/workPersonScheduling">人员排班管理</a>
|
|
|
</el-breadcrumb-item>
|
|
|
</el-breadcrumb>
|
|
|
<el-divider></el-divider>
|
|
@@ -16,82 +16,38 @@
|
|
|
<el-form
|
|
|
ref="queryForm"
|
|
|
:model="queryModel"
|
|
|
+ :rules="ruleValidate"
|
|
|
inline
|
|
|
class="demo-form-inline"
|
|
|
>
|
|
|
- <el-form-item label="编号" prop="id">
|
|
|
- <el-input type="text" size="mini" v-model="queryModel.id"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="人员id" prop="personId">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
+ <el-form-item label="安排日期" prop="queryMonth">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="queryModel.queryMonth"
|
|
|
size="mini"
|
|
|
- v-model="queryModel.personId"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="年" prop="year">
|
|
|
- <el-input type="text" size="mini" v-model="queryModel.year"></el-input>
|
|
|
+ type="month"
|
|
|
+ value-format="yyyy-MM"
|
|
|
+ placeholder="选择月"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="月" prop="month">
|
|
|
- <el-input type="text" size="mini" v-model="queryModel.month"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="日" prop="day">
|
|
|
- <el-input type="text" size="mini" v-model="queryModel.day"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="安排日期" prop="schedulingDay">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
+ <el-form-item label="部门" prop="companyId">
|
|
|
+ <el-select-tree
|
|
|
size="mini"
|
|
|
- v-model="queryModel.schedulingDay"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="班次ID,多逗号分隔" prop="shiftIds">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- size="mini"
|
|
|
- v-model="queryModel.shiftIds"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="班次编号,多逗号分隔" prop="shiftNumbers">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- size="mini"
|
|
|
- v-model="queryModel.shiftNumbers"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="创建人" prop="createBy">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- size="mini"
|
|
|
- v-model="queryModel.createBy"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="创建时间" prop="createTime">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- size="mini"
|
|
|
- v-model="queryModel.createTime"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="更新人" prop="updateBy">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- size="mini"
|
|
|
- v-model="queryModel.updateBy"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="更新时间" prop="updateTime">
|
|
|
- <el-input
|
|
|
- type="text"
|
|
|
- size="mini"
|
|
|
- v-model="queryModel.updateTime"
|
|
|
- ></el-input>
|
|
|
+ :props="props"
|
|
|
+ :options="companyResult"
|
|
|
+ v-model="queryModel.companyId"
|
|
|
+ height="200"
|
|
|
+ ></el-select-tree
|
|
|
+ >
|
|
|
+ <el-checkbox v-model="queryModel.subordinate"
|
|
|
+ >是否包含下级单位</el-checkbox
|
|
|
+ >
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="是否删除" prop="delFlag">
|
|
|
+ <el-form-item label="人员id" prop="personId">
|
|
|
<el-input
|
|
|
type="text"
|
|
|
size="mini"
|
|
|
- v-model="queryModel.delFlag"
|
|
|
+ v-model="queryModel.personId"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
@@ -99,7 +55,7 @@
|
|
|
type="primary"
|
|
|
size="mini"
|
|
|
icon="ios-search"
|
|
|
- @click="changePage(1)"
|
|
|
+ @click="handleQuery('queryForm')"
|
|
|
:loading="loading"
|
|
|
>查询</el-button
|
|
|
>
|
|
@@ -119,130 +75,98 @@
|
|
|
size="small"
|
|
|
plain
|
|
|
icon="el-icon-circle-plus"
|
|
|
- @click="handleAdd"
|
|
|
- >新增</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- plain
|
|
|
- icon="el-icon-circle-plus"
|
|
|
- :disabled="multipleSelection.length == 0"
|
|
|
- @click="handleBatchDelete"
|
|
|
- >删除选中项</el-button
|
|
|
+ @click="handleChange"
|
|
|
+ >自动排班</el-button
|
|
|
>
|
|
|
</el-row>
|
|
|
<el-table
|
|
|
:data="tableData"
|
|
|
- style="min-height: 400px"
|
|
|
v-loading="loading"
|
|
|
+ :height="tableHeight"
|
|
|
stripe
|
|
|
@sort-change="sortChange"
|
|
|
@selection-change="handleSelectionChange"
|
|
|
>
|
|
|
<el-table-column type="selection" width="55"></el-table-column>
|
|
|
- <el-table-column prop="id" label="编号" width="180"></el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="personId"
|
|
|
- label="人员id"
|
|
|
- width="180"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column prop="year" label="年" width="180"></el-table-column>
|
|
|
- <el-table-column prop="month" label="月" width="180"></el-table-column>
|
|
|
- <el-table-column prop="day" label="日" width="180"></el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="schedulingDay"
|
|
|
- label="安排日期"
|
|
|
- width="180"
|
|
|
+ type="index"
|
|
|
+ label="序号"
|
|
|
+ :index="indexMethod"
|
|
|
+ width="50"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="shiftIds"
|
|
|
- label="班次ID,多逗号分隔"
|
|
|
- width="180"
|
|
|
+ prop="companyName"
|
|
|
+ label="部门"
|
|
|
+ width="90"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="shiftNumbers"
|
|
|
- label="班次编号,多逗号分隔"
|
|
|
- width="180"
|
|
|
+ prop="id"
|
|
|
+ label="编号"
|
|
|
+ width="90"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
- prop="createBy"
|
|
|
- label="创建人"
|
|
|
- width="180"
|
|
|
+ prop="name"
|
|
|
+ label="名称"
|
|
|
+ width="150"
|
|
|
></el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="createTime"
|
|
|
- label="创建时间"
|
|
|
- width="180"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="updateBy"
|
|
|
- label="更新人"
|
|
|
- width="180"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="updateTime"
|
|
|
- label="更新时间"
|
|
|
- width="180"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="delFlag"
|
|
|
- label="是否删除"
|
|
|
- width="180"
|
|
|
- ></el-table-column>
|
|
|
- <el-table-column label="操作">
|
|
|
- <template slot-scope="{ row }">
|
|
|
- <el-button size="mini" type="warning" @click="handleEdit(row)"
|
|
|
- >编辑</el-button
|
|
|
- >
|
|
|
- <el-button size="mini" type="danger" @click="handleDelete(row)"
|
|
|
- >删除</el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
+ <template v-for="col in dayList">
|
|
|
+ <el-table-column
|
|
|
+ :label="col.day+''"
|
|
|
+ :prop="col.id+''"
|
|
|
+ :key="col.id+''"
|
|
|
+ width="80px"
|
|
|
+ >
|
|
|
+ <template slot-scope="{ row }">
|
|
|
+ <div style="display: flex; flex-direction: column">
|
|
|
+ <template v-for="(item, index) in row.personNumberMap[col.id]">
|
|
|
+ <div v-html="showItem(item)" :key="index+''"></div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </template>
|
|
|
</el-table>
|
|
|
- <el-pagination
|
|
|
- :current-page.sync="pageIndex"
|
|
|
- :total="totalElements"
|
|
|
- :page-sizes="pageSizeList"
|
|
|
- @current-change="changePage"
|
|
|
- @size-change="pageSizeChange"
|
|
|
- layout="total, sizes, prev, pager, next, jumper"
|
|
|
- ></el-pagination>
|
|
|
<workPersonScheduling-detail
|
|
|
v-if="showModal"
|
|
|
:businessKey="businessKey"
|
|
|
:title="modalTitle"
|
|
|
@close="onDetailModalClose"
|
|
|
></workPersonScheduling-detail>
|
|
|
+ <workPersonScheduling-change
|
|
|
+ v-if="showChangeModal"
|
|
|
+ :businessKey="businessKey"
|
|
|
+ :title="modalTitle"
|
|
|
+ @close="onDetailModalClose"
|
|
|
+ ></workPersonScheduling-change>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import Constant from "@/constant";
|
|
|
import WorkPersonSchedulingDetail from "./workPersonScheduling-detail";
|
|
|
+import WorkPersonSchedulingChange from "./workPersonScheduling-change";
|
|
|
import workPersonSchedulingApi from "@/api/base/workPersonScheduling";
|
|
|
+import companyInfoApi from "@/api/base/companyInfo";
|
|
|
+import SelectTree from "@/components/SelectTree";
|
|
|
import NProgress from "nprogress"; // progress bar
|
|
|
import "nprogress/nprogress.css"; // progress bar style
|
|
|
|
|
|
export default {
|
|
|
+ name: "BaseWorkPersonSchedulingList",
|
|
|
data() {
|
|
|
var self = this;
|
|
|
|
|
|
return {
|
|
|
+ ruleValidate: {
|
|
|
+ companyId: [{ required: true, message: "不能为空", trigger: "blur" }],
|
|
|
+ queryMonth: [
|
|
|
+ { required: true, message: "请选择", trigger: "blur" }
|
|
|
+ ]
|
|
|
+ },
|
|
|
queryModel: {
|
|
|
- id: "",
|
|
|
- personId: "",
|
|
|
- year: "",
|
|
|
- month: "",
|
|
|
- day: "",
|
|
|
- schedulingDay: "",
|
|
|
- shiftIds: "",
|
|
|
- shiftNumbers: "",
|
|
|
- createBy: "",
|
|
|
- createTime: "",
|
|
|
- updateBy: "",
|
|
|
- updateTime: "",
|
|
|
- delFlag: "",
|
|
|
+ personName: "",
|
|
|
+ queryMonth: "",
|
|
|
+ companyId: "",
|
|
|
+ subordinate: false,
|
|
|
},
|
|
|
loading: false,
|
|
|
tableData: [],
|
|
@@ -257,9 +181,47 @@ export default {
|
|
|
showModal: false,
|
|
|
modalTitle: "",
|
|
|
businessKey: "",
|
|
|
+ treeData: [],
|
|
|
+ props: {
|
|
|
+ // 配置项(必选)
|
|
|
+ value: "id",
|
|
|
+ label: "name",
|
|
|
+ children: "children",
|
|
|
+ },
|
|
|
+ companyResult:[],
|
|
|
+ dayList:[],
|
|
|
+ tableHeight: 300,
|
|
|
+ showChangeModal:false,
|
|
|
};
|
|
|
},
|
|
|
+ created() {
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ companyInfoApi.treeList().then(function (response) {
|
|
|
+ var jsonData = response.data;
|
|
|
+ if (jsonData.result) {
|
|
|
+ if (jsonData.data != null && jsonData.data != "") {
|
|
|
+ self.companyResult = jsonData.data;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
methods: {
|
|
|
+ handleQuery() {
|
|
|
+ var self = this;
|
|
|
+
|
|
|
+ this.$refs["queryForm"].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ self.changePage(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ showItem(item) {
|
|
|
+ return item;
|
|
|
+ },
|
|
|
+ indexMethod(index) {
|
|
|
+ return (this.pageIndex - 1) * this.pageSize + (index + 1);
|
|
|
+ },
|
|
|
changePage(pageIndex) {
|
|
|
var self = this;
|
|
|
|
|
@@ -268,22 +230,10 @@ export default {
|
|
|
self.pageIndex = pageIndex;
|
|
|
var formData = new FormData();
|
|
|
|
|
|
- formData.append("pageIndex", self.pageIndex);
|
|
|
- formData.append("pageSize", self.pageSize);
|
|
|
-
|
|
|
- formData.append("id", self.queryModel.id);
|
|
|
- formData.append("personId", self.queryModel.personId);
|
|
|
- formData.append("year", self.queryModel.year);
|
|
|
- formData.append("month", self.queryModel.month);
|
|
|
- formData.append("day", self.queryModel.day);
|
|
|
- formData.append("schedulingDay", self.queryModel.schedulingDay);
|
|
|
- formData.append("shiftIds", self.queryModel.shiftIds);
|
|
|
- formData.append("shiftNumbers", self.queryModel.shiftNumbers);
|
|
|
- formData.append("createBy", self.queryModel.createBy);
|
|
|
- formData.append("createTime", self.queryModel.createTime);
|
|
|
- formData.append("updateBy", self.queryModel.updateBy);
|
|
|
- formData.append("updateTime", self.queryModel.updateTime);
|
|
|
- formData.append("delFlag", self.queryModel.delFlag);
|
|
|
+ formData.append("personName", self.queryModel.personName);
|
|
|
+ formData.append("queryMonth", self.queryModel.queryMonth);
|
|
|
+ formData.append("companyId", self.queryModel.companyId);
|
|
|
+ formData.append("subordinate", self.queryModel.subordinate);
|
|
|
|
|
|
if (this.field != null) {
|
|
|
formData.append("field", this.field);
|
|
@@ -294,15 +244,17 @@ export default {
|
|
|
}
|
|
|
|
|
|
workPersonSchedulingApi
|
|
|
- .pageList(formData)
|
|
|
+ .findScheduling(formData)
|
|
|
.then(function (response) {
|
|
|
self.loading = false;
|
|
|
|
|
|
- var jsonData = response.data.data;
|
|
|
-
|
|
|
- self.tableData = jsonData.data;
|
|
|
- self.totalPages = jsonData.totalPages;
|
|
|
- self.totalElements = jsonData.recordsTotal;
|
|
|
+ var jsonData = response.data;
|
|
|
+ self.tableData = jsonData.personList;
|
|
|
+ self.dayList = jsonData.dayList;
|
|
|
+ //45为分页栏的高度
|
|
|
+ //页面高度-列表上面的高度-分页栏高度
|
|
|
+ self.tableHeight =
|
|
|
+ window.innerHeight - self.$refs.formTable.$el.offsetTop - 100;
|
|
|
})
|
|
|
.catch((error) => {
|
|
|
self.loading = false;
|
|
@@ -328,82 +280,28 @@ export default {
|
|
|
handleReset(name) {
|
|
|
this.$refs[name].resetFields();
|
|
|
},
|
|
|
- handleAdd() {
|
|
|
- this.modalTitle = "新增";
|
|
|
+ handleChange() {
|
|
|
+ this.modalTitle = "自动排班";
|
|
|
this.businessKey = "";
|
|
|
- this.showModal = true;
|
|
|
- },
|
|
|
- handleEdit(record) {
|
|
|
- this.modalTitle = "编辑";
|
|
|
- this.businessKey = record.id;
|
|
|
- this.showModal = true;
|
|
|
- },
|
|
|
- handleDelete(record) {
|
|
|
- var self = this;
|
|
|
-
|
|
|
- self
|
|
|
- .$confirm("是否确认删除?", "提示", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning",
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- workPersonSchedulingApi.remove(record.id).then(function (response) {
|
|
|
- var jsonData = response.data;
|
|
|
-
|
|
|
- if (jsonData.result) {
|
|
|
- // var index = self.tableData.indexOf(record);
|
|
|
- // self.tableData.splice(index, 1);
|
|
|
- self.changePage(self.pageIndex);
|
|
|
-
|
|
|
- self.$message({
|
|
|
- type: "success",
|
|
|
- message: "删除成功!",
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
- },
|
|
|
- handleBatchDelete() {
|
|
|
- var self = this;
|
|
|
-
|
|
|
- var idList = this.multipleSelection.map((record) => {
|
|
|
- return record.id;
|
|
|
- });
|
|
|
-
|
|
|
- this.$confirm("是否确认删除选中项?", "提示", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning",
|
|
|
- }).then(() => {
|
|
|
- workPersonSchedulingApi.batchRemove(idList).then(function (response) {
|
|
|
- var jsonData = response.data;
|
|
|
-
|
|
|
- if (jsonData.result) {
|
|
|
- self.changePage(self.pageIndex);
|
|
|
-
|
|
|
- self.$message({
|
|
|
- type: "success",
|
|
|
- message: "删除成功!",
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
+ this.showChangeModal = true;
|
|
|
},
|
|
|
onDetailModalClose(refreshed) {
|
|
|
//保存成功后回调
|
|
|
this.showModal = false;
|
|
|
+ this.showChangeModal = false;
|
|
|
|
|
|
if (refreshed) {
|
|
|
- this.changePage(this.pageIndex);
|
|
|
+ this.handleQuery();
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
mounted: function () {
|
|
|
- this.changePage(1);
|
|
|
+ //this.changePage(1);
|
|
|
},
|
|
|
components: {
|
|
|
"workPersonScheduling-detail": WorkPersonSchedulingDetail,
|
|
|
+ "workPersonScheduling-change": WorkPersonSchedulingChange,
|
|
|
+ "el-select-tree": SelectTree,
|
|
|
},
|
|
|
};
|
|
|
</script>
|