144 lines
4.2 KiB
JavaScript
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);
|
|
}
|
|
|
|
|
|
|
|
} |