weaver_trunk_cli/pc4mobx/hrm/stores/sendBless.js

144 lines
4.2 KiB
JavaScript

import { observable, action, computed } from "mobx";
import { WeaLocaleProvider } from "ecCom";
import { toJS } from "mobx";
import { message } from "antd";
import * as api from "../apis/sendBless.js";
import { i18n } from "../public/i18n.js";
const getLabel = WeaLocaleProvider.getLabel;
export class HrmSendBlessStore {
prefixUrl = "/hrm/hrm_e9/image/birth/";
greetingCardUrlSuffixs = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];
greetingCardUrl = this.greetingCardUrlSuffixs.map(suffix => `${this.prefixUrl}${suffix}.png`);
@observable startIndex = 0;
@observable tagGroupDatas = [];
@observable blessing = "";
@observable browserConditionParam = {};
@observable checkedImg = "";
@observable birthTargets = [];
get defaultBless() {
return i18n.label['528863']()
}
@computed get greetingCardShow() {
const index = this.startIndex;
return this.greetingCardUrl.slice(index * 3, (index + 1) * 3).map(url => (this.checkedImg == url) ? ({ url, isChecked: true }) : ({ url, isChecked: false }));
}
@computed get canPrev() {
return this.startIndex > 0;
}
@computed get canNext() {
const gclen = this.greetingCardUrlSuffixs.length;
return this.startIndex < Math.ceil(gclen / 3) - 1;
}
@computed get blessOptions() {
return this.birthTargets.filter(target => target.id != this.targetId);
}
@computed get birthIds() {
return this.birthTargets.map(data => data.id);
}
@action prev = () => {
this.canPrev && this.startIndex--;
}
@action next = () => {
this.canNext && this.startIndex++;
}
@action getBlessingForm = () => {
const params = { targetId: this.targetId, createDate: this.createDate, fromModule:this.fromModule,recordId:this.recordId};
api.getBlessingForm(params).then(res => {
["blessing", "browserConditionParam"].forEach(v => {
if (res[v]) {
this[v] = res[v];
}
})
if (window.e9_locale.userLanguage != '7') {
this.blessing = i18n.label['529463']()
}
const { browserConditionParam } = res;
if (browserConditionParam) {
this.tagGroupDatas = browserConditionParam.replaceDatas
}
})
}
sendBless = () => {
const validDatas = this.tagGroupDatas.filter(unhandledData => this.birthTargets.find(validData => unhandledData.id == validData.id));
if (!validDatas.length) {
message.warning(i18n.label['528864']());
return;
}
const params = {
imgUrl: this.checkedImg,
target: validDatas.map(data => data.id).join(","),
blessing: this.blessing ? this.blessing : this.defaultBless
};
api.saveBlessingForm(params).then(res => {
if (res.status == "1") {
var dialog = top.window.getParentDialog();
if (dialog) {
dialog.close();
dialog.callback({ msg: i18n.label['528865']().replace("{param}", validDatas.length) })
}
} else {
message.error(res.message);
}
})
}
@action handleImgClick = (srcName) => {
this.checkedImg = srcName
}
@action handleTagGroupChange = (datas) => {
this.tagGroupDatas = datas;
}
@action addBlessTarget = (data) => {
if (!this.tagGroupDatas.find(oldData => oldData.id == data.id)) {
this.tagGroupDatas.push(data);
}
}
@action checkAll = () => {
this.tagGroupDatas = this.birthTargets;
}
@action setBirthTargets = (datas) => {
this.birthTargets = JSON.parse(datas);
}
setQueryDatas = (query) => {
const { datas, targetId, createDate,fromModule,recordId } = query;
this.targetId = targetId;
this.birthTargets = datas && JSON.parse(datas);
this.createDate = createDate;
this.fromModule = fromModule || 'mobile';
this.recordId = recordId
}
handleTextareaChange = (val) => {
this.blessing = val;
}
dovalidate = (data) => {
return !this.birthIds.find(id => data.id == id);
}
}