123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- import { Component, OnInit, ViewChild } from "@angular/core";
- import { ActivatedRoute } from "@angular/router";
- import { FormBuilder, Validators, FormGroup } from "@angular/forms";
- import { NzMessageService } from "ng-zorro-antd/message";
- import { MainService } from "../../services/main.service";
- import { OverlayScrollbarsComponent } from "overlayscrollbars-ngx";
- import { ToolService } from "../../services/tool.service";
- import { Subject } from "rxjs";
- import { debounceTime } from "rxjs/operators";
- @Component({
- selector: "app-group-management",
- templateUrl: "./group-management.component.html",
- styleUrls: ["./group-management.component.less"],
- })
- export class GroupManagementComponent implements OnInit {
- tableHeight;
- constructor(
- private fb: FormBuilder,
- private route: ActivatedRoute,
- private mainService: MainService,
- private msg: NzMessageService,
- private tool: ToolService
- ) {}
- @ViewChild("osComponentRef1", {
- read: OverlayScrollbarsComponent,
- static: false,
- })
- osComponentRef1: OverlayScrollbarsComponent;
- ngOnInit() {
- this.changeInpSubject
- .pipe(debounceTime(500))
- .subscribe((keyword: string) => {
- this.getUserList(keyword);
- });
- this.coopBtns = this.tool.initCoopBtns(this.route);
- this.initForm();
- this.getHospitalList();
- this.getGroupList();
- this.getScheduleList();
- this.tableHeight = document.body.clientHeight - 267;
- }
- isAllDisplayDataChecked = false;
- isIndeterminate = false;
- listOfDisplayData: any[] = [];
- allUserList: any[] = []; //所有用户
- groupUserList: any[] = []; //所选组内用户
- mapOfCheckedId: { [key: string]: boolean } = {};
- checkedGroup: any = {}; //选中分组
- groupList: Array<any> = []; //分组信息
- hospitalList: Array<any> = []; //院区列表
- hosId: any; //当前选择的院区id
- scheduleList: Array<any> = []; //班次列表
- userList: Array<any> = []; //用户列表
- searchName: string = ""; //用户信息搜索输入框
- promptContent: string; //操作提示框提示信息
- ifSuccess: boolean; //操作成功/失败
- promptInfo: string; //操作结果提示信息
- promptModalShow: boolean; //是否展示提示框
- btnLoading: boolean = false; //确认按钮loading状态
- saveLoading: boolean = false; //批量打印按钮loading状态
- changeInpSubject = new Subject();
- // 初始化增删改按钮
- coopBtns: any = {};
- // 边输边搜节流阀
- isLoading = false;
- changeInp(keyword: string = "") {
- this.isLoading = true;
- this.changeInpSubject.next(keyword);
- }
- // 打开搜索框
- changeSearch(flag) {
- if (flag && !this.editLoading) {
- this.changeInp();
- }
- }
- // 分组列表
- loading1 = false;
- getGroupList() {
- let that = this;
- let arr = [];
- this.hospitalList.forEach((item) => {
- arr.push(item["id"]);
- });
- let data = {
- idx: 0,
- sum: 999,
- group2: {
- hospitals: arr.join(),
- },
- };
- this.loading1 = true;
- that.mainService
- .getFetchDataList("data", "group2", data)
- .subscribe((data1) => {
- this.loading1 = false;
- that.groupList = data1.list;
- console.log(this.checkedGroup);
- if (Object.keys(this.checkedGroup).length) {
- console.log(this.checkedGroup);
- data1.list.forEach((item) => {
- if (item.id == this.checkedGroup.id) {
- this.checkGroup(item);
- }
- });
- } else {
- this.checkGroup(data1.list[0]);
- }
- });
- }
- // 获取选中院区下用户列表
- loading2 = false;
- onlyFlag = true;
- allUsers = [];
- getAllUser() {
- // 初始化的时候搜索一次,然后前端过滤
- if (this.onlyFlag) {
- let data = {
- idx: 0,
- sum: 999,
- user: {
- name: this.searchName,
- usertype: { id: 106 },
- hospital: { id: this.hosId },
- },
- };
- this.timeNum++;
- this.loading2 = true;
- this.mainService
- .getFetchDataList("data", "user", data)
- .subscribe((result) => {
- this.timeNum--;
- if (this.timeNum === 0) {
- this.loading2 = false;
- this.onlyFlag = false;
- }
- this.allUserList = result.list;
- this.allUsers = JSON.parse(JSON.stringify(result.list));
- this.refreshStatus(true);
- });
- } else {
- this.allUserList = this.allUsers.filter((item) => {
- return (
- item.pinYin.includes(this.searchName) ||
- item.name.includes(this.searchName) ||
- item.inputCode.includes(this.searchName)
- );
- });
- this.refreshStatus(true);
- }
- }
- // 输入用户信息搜索节流阀
- time: any;
- timeNum = 0;
- searchInp(e) {
- let that = this;
- that.getAllUser();
- }
- // 院区列表
- getHospitalList() {
- this.hosId = this.tool.getCurrentHospital().id;
- this.hospitalList = [this.tool.getCurrentHospital()];
- }
- // 班次列表
- getScheduleList() {
- const data = {
- idx: 0,
- scheduleClass: { hospital: { id: this.hosId } },
- sum: 999,
- };
- this.mainService
- .getFetchDataList("configuration", "scheduleClass", data)
- .subscribe((data) => {
- this.scheduleList = data.list;
- });
- }
- // 用户列表
- getUserList(keyword: string = "") {
- const data = {
- idx: 0,
- user: {
- hospital: { id: this.hosId },
- name: keyword,
- simpleQuery: true,
- },
- sum: 5,
- };
- this.mainService
- .getFetchDataList("data", "user", data)
- .subscribe((result) => {
- this.isLoading = false;
- if (result.status == 200) {
- this.userList = result.list;
- }
- });
- }
- // 选中分组
- positionY = 0; //记录其他建单Y轴滚动距离
- checkGroup(data) {
- this.positionY = this.osComponentRef1.osInstance().scroll().position.y; //内容滚动的距离
- this.searchName = "";
- this.checkedGroup = data ? data : {};
- this.mapOfCheckedId = {};
- this.groupUserList = this.checkedGroup["users"]
- ? this.checkedGroup["users"]
- : [];
- this.getAllUser();
- }
- selectedUser(data) {
- console.log(data)
- if(this.checkedGroup.type == 2){
- return;
- }
- this.mapOfCheckedId[data.id] = !this.mapOfCheckedId[data.id];
- this.refreshStatus();
- }
- // 选中列表中当前分组用户
- usersArr = [];
- refreshStatus(first?): void {
- let i, j;
- // 切换分组信息时初始化表格內checkbox选中情况
- if (first) {
- for (j = 0; j < this.groupUserList.length; j++) {
- for (i = 0; i < this.allUserList.length; i++) {
- if (this.allUserList[i]["id"] == this.groupUserList[j]["id"]) {
- this.mapOfCheckedId[this.allUserList[i]["id"]] = true;
- break;
- }
- }
- }
- }
- let arr = [];
- for (var m in this.mapOfCheckedId) {
- if (this.mapOfCheckedId[m]) {
- arr.push({ id: m });
- }
- }
- this.usersArr = arr;
- }
- // 保存
- save() {
- let that = this;
- that.saveLoading = true;
- let postData = {
- group2: {
- id: that.checkedGroup["id"],
- users: that.usersArr,
- },
- };
- that.mainService
- .coopData("updData", "group2", postData)
- .subscribe((data) => {
- that.saveLoading = false;
- if (data.status == 200) {
- that.showPromptModal("保存", true, "");
- } else {
- that.showPromptModal("保存", false, data.msg);
- }
- });
- }
- // 新增/编辑模态框
- coopModal: boolean = false; //模态框是否展示
- add: boolean = true; //true:新增;false:编辑
- editLoading = false;//分组组长选择框loading
- isDisabledGroupType = false;//分组类型是否禁用
- showCoopModal(type) {
- if (type == "edit" && !this.checkedGroup["groupName"]) {
- this.msg.create("warning", "请选择需要编辑的分组!");
- return;
- }
- this.coopModal = true;
- this.add = type == "add";
- if (type == "edit") {
- this.isDisabledGroupType = true;
- this.validateForm.controls.groupLeader.setValue(null);//先清空组长
- this.validateForm.controls.classes.setValue(
- this.checkedGroup["scheduleClass"].id + ""
- );
- this.validateForm.controls.groupName.setValue(
- this.checkedGroup["groupName"]
- );
- this.validateForm.controls.groupType.setValue(
- this.checkedGroup["type"].toString()
- );
- if (this.checkedGroup["manager"]) {
- this.editLoading = true;
- this.mainService
- .getFetchData("data", "user", this.checkedGroup["manager"])
- .subscribe((result) => {
- this.editLoading = false;
- if (result.status == 200) {
- if (result.data) {
- this.userList.unshift(result.data);
- }
- this.validateForm.controls.groupLeader.setValue(
- this.checkedGroup["manager"].toString()
- );
- }
- });
- } else {
- this.validateForm.controls.groupLeader.setValue(null);
- }
- } else {
- this.isDisabledGroupType = false;
- this.validateForm.controls.classes.setValue(null);
- this.validateForm.controls.groupName.setValue(null);
- this.validateForm.controls.groupLeader.setValue(null);
- this.validateForm.controls.groupType.setValue(null);
- }
- }
- // 隐藏分组信息模态框
- hideCoopModal() {
- this.coopModal = false;
- }
- // 初始化新增form表单
- initForm() {
- this.validateForm = this.fb.group({
- classes: [null, [Validators.required]],
- groupName: [null, [Validators.required]],
- groupType: [null, [Validators.required]],
- groupLeader: [null, [Validators.required]],
- });
- }
- // 新增/编辑提交
- validateForm: FormGroup;
- submitForm(): void {
- let that = this;
- for (const i in that.validateForm.controls) {
- that.validateForm.controls[i].markAsDirty();
- that.validateForm.controls[i].updateValueAndValidity();
- }
- if (that.validateForm.invalid) return;
- that.btnLoading = true;
- let data = {
- group2: {
- groupName: that.validateForm.value.groupName,
- hospital: { id: that.hosId - 0 },
- scheduleClass: { id: that.validateForm.value.classes - 0 },
- manager: that.validateForm.value.groupLeader,
- type: that.validateForm.value.groupType,
- },
- };
- if (!that.add) {
- data.group2["id"] = that.checkedGroup["id"];
- }
- that.mainService
- .coopData(that.add ? "addData" : "updData", "group2", data)
- .subscribe((data) => {
- that.hideCoopModal();
- that.btnLoading = false;
- that.initForm();
- if (data.status == 200) {
- that.showPromptModal(that.add ? "新增" : "编辑", true, "");
- } else {
- that.showPromptModal(that.add ? "新增" : "编辑", false, data.msg);
- }
- });
- }
- //删除modal
- delModal: boolean = false;
- showDelModal() {
- if (!this.checkedGroup["groupName"]) {
- this.msg.create("warning", "请选择需要删除的分组!");
- return;
- }
- this.delModal = true;
- }
- hideDelModal() {
- this.delModal = false;
- }
- // 确认删除
- confirmDel() {
- this.btnLoading = true;
- this.mainService
- .coopData("rmvData", "group2", [this.checkedGroup["id"]])
- .subscribe((data) => {
- this.hideDelModal();
- this.btnLoading = false;
- if (data.data && data.data[0]) {
- if (!data.data[0].msg) {
- this.showPromptModal("删除", true, "");
- this.checkedGroup = {};
- } else {
- this.showPromptModal("删除", false, data.data[0].msg);
- }
- } else {
- this.showPromptModal("删除", false, "");
- }
- });
- }
- // 展示信息提示框(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)(con:提示信息,success:操作是否成功,promptInfo:操作结果提示信息)
- showPromptModal(con, success, promptInfo?) {
- this.promptModalShow = false;
- this.promptContent = con;
- this.ifSuccess = success;
- this.promptInfo = promptInfo;
- this.osComponentRef1.osInstance().scroll({ x: 0, y: this.positionY });
- setTimeout(() => {
- this.promptModalShow = true;
- this.getGroupList();
- }, 100);
- }
- }
|