131 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { ref, onMounted, reactive } from 'vue';
import inputSuppliesApis from '@/apis/inputSuppliesApi';
const { getMaterailTypes } = inputSuppliesApis;
export function useBasicInfo(set = {}) {
const loadFinish = ref(false);
const searchCondition = Object.assign(
{
dataType: '',
moduleType: '',
},
set
);
/* ------ data ------ */
// #region
const materialTypes = reactive({
1: [{ value: '0', label: '全部' }],
2: [{ value: '0', label: '全部' }],
3: [{ value: '0', label: '全部' }],
4: [{ value: '0', label: '全部' }],
5: [{ value: '0', label: '全部' }],
});
/* 不包含顶级 */
const materialTwoLevel = ref({});
/* ------ 农药 ------ */
// #region
const pesticideTypes = reactive({});
const goodsUnitOptions = reactive([
{ value: '1', label: 'ml/瓶' },
{ value: '2', label: 'mg/盒' },
{ value: '3', label: 'kg/袋' },
]);
const useDosageUnit = reactive([
{ value: '1', label: '/亩' },
{ value: '2', label: '/平方米' },
{ value: '3', label: '/株' },
]);
// #endregion
// #endregion
/* ------ ------ */
// #region
/* 获取物资类型 */
async function getmaterialType(_set = {}) {
let params = Object.assign(searchCondition, _set);
let res = await getMaterailTypes(params);
if (res && res?.code == 200) {
res.data.forEach((item) => {
const { moduleType, children } = item;
materialTypes[moduleType].push(...handleTypes(children));
// materialTwoLevel.value[moduleType] = handleTypes(children);
handleTwoLevel();
});
console.log('materialTypes --- ', materialTypes);
console.log('materialTwoLevel --- ', materialTwoLevel.value);
}
loadFinish.value = true;
}
/* 将所有的数据处理成value label格式方便其他地方指直接使用 */
function handleTypes(arr) {
arr.forEach((item) => {
item.value = item.id;
item.label = item.dataName;
if (item.children.length > 0) {
item.children = handleTypes(item.children);
}
});
return arr;
}
/* 处理二级及以下的联动数据 */
function handleTwoLevel() {
for (let key in materialTypes) {
materialTwoLevel.value[key] = {};
materialTypes[key].forEach((v) => {
if (v.value != 0) {
materialTwoLevel.value[key][v.dataType] = v.children;
}
});
}
}
/* 获取标签的名字 */
function targetName(arr, ids, _name) {
let _ids = JSON.parse(JSON.stringify(ids));
let name = '';
if (!arr || !arr.length || _ids.length < 1) {
return;
} else {
let obj = arr.find((v) => v.value == _ids[0]) || { value: '', label: '', children: [] };
name = _name + (_name ? '/' : '') + obj.label;
_ids.splice(0, 1);
if (_ids.length > 0) {
name = targetName(obj.children, _ids, name);
}
}
return name;
}
function filterTypes(_set = {}) {
let filterType = Object.assign(
{
dataType: '1',
moduleType: '1',
},
_set
);
let all = materialTypes[filterType.moduleType];
let _arr = [];
all.forEach((item) => {
if (filterType.dataType == item.dataType) {
_arr = item.children;
}
});
return _arr;
}
// #endregion
onMounted(getmaterialType);
return {
loadFinish,
materialTypes,
materialTwoLevel,
goodsUnitOptions,
useDosageUnit,
getmaterialType,
targetName,
filterTypes,
};
}