76 lines
1.8 KiB
TypeScript
76 lines
1.8 KiB
TypeScript
import { post } from '@/utils/https';
|
|
import { getAuthInfo, toArray } from '@/utils/util';
|
|
|
|
Component({
|
|
options: { multipleSlots: true },
|
|
/**
|
|
* 组件的属性列表
|
|
*/
|
|
properties: {
|
|
value: {
|
|
type: null,
|
|
},
|
|
},
|
|
observers: {
|
|
value: function () {
|
|
this.setData({ label: this.data.listToObj[this.data.value]?.label });
|
|
},
|
|
},
|
|
|
|
/**
|
|
* 组件的初始数据
|
|
*/
|
|
data: {
|
|
visible: false,
|
|
list: [] as any[],
|
|
listToObj: {} as any,
|
|
label: '',
|
|
},
|
|
lifetimes: {
|
|
attached() {
|
|
const auth = getAuthInfo();
|
|
const SF_ERP_ACCOUNT_VIEW = auth.SF_ERP_ACCOUNT_VIEW;
|
|
post('ErpAccount/list', { state: 1 }).then((res: any) => {
|
|
let accountDefaultObj: any = {};
|
|
const list = toArray(res?.data?.list).map((el) => {
|
|
if (el.if_default == 2) {
|
|
accountDefaultObj = el;
|
|
}
|
|
const label = `${el.account_name}${
|
|
SF_ERP_ACCOUNT_VIEW ? `(余额: ${el.current_amount})` : ''
|
|
}`;
|
|
el.label = label;
|
|
this.data.listToObj[el.account_id] = el;
|
|
return {
|
|
label: label,
|
|
value: el.account_id,
|
|
};
|
|
});
|
|
if (!accountDefaultObj) {
|
|
accountDefaultObj = list[0] || {};
|
|
}
|
|
this.setData({ list: list, label: this.data.listToObj[this.data.value]?.label });
|
|
this.triggerEvent('default', accountDefaultObj);
|
|
});
|
|
},
|
|
},
|
|
|
|
/**
|
|
* 组件的方法列表
|
|
*/
|
|
methods: {
|
|
onShowPicker() {
|
|
this.setData({ visible: true });
|
|
},
|
|
onPickerCancel() {
|
|
this.setData({ visible: false });
|
|
},
|
|
onPickerConfirm(e: any) {
|
|
// console.log(e);
|
|
const item = this.data.listToObj[e.detail.value[0]];
|
|
this.triggerEvent('ok', item);
|
|
this.setData({ visible: false });
|
|
},
|
|
},
|
|
});
|