|
|
@@ -70,25 +70,43 @@
|
|
|
options.value = mineStore.filterDepartTree((e) => e.parentId === props.rootId);
|
|
|
}
|
|
|
|
|
|
+ // 如果从STORE里初始化数据需要触发一次watcher以初始化组件状态
|
|
|
+ if (props.initFromStore) {
|
|
|
+ handleWatch(mineStore.getDepartId);
|
|
|
+ // 为了让使用该组件的各个页面能够第一时间使用到该组件传递的值,手动触发一次emit
|
|
|
+ handleChange([mineStore.getDepartId]);
|
|
|
+ } else {
|
|
|
+ handleWatch(props.value);
|
|
|
+ // 为了让使用该组件的各个页面能够第一时间使用到该组件传递的值,手动触发一次emit
|
|
|
+ handleChange([props.value]);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* change事件
|
|
|
* @param e
|
|
|
*/
|
|
|
function handleChange(value: any[] = []) {
|
|
|
- // const dep = mineStore.findDepartById(id, options.value);
|
|
|
- const val = last(value) ? last(value) : mineStore.calcMineCodeByDepart(options.value);
|
|
|
-
|
|
|
- emit('update:value', val);
|
|
|
- emit('change', val);
|
|
|
+ if (!mineStore.findDepartById(last(value), options.value)) {
|
|
|
+ console.warn('[Change] The value provided is not included in MineOptions');
|
|
|
+ const val = mineStore.calcMineCodeByDepart(options.value);
|
|
|
+ emit('update:value', val);
|
|
|
+ emit('change', val);
|
|
|
+ } else {
|
|
|
+ emit('update:value', last(value));
|
|
|
+ emit('change', last(value));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
function handleWatch(id: string = '') {
|
|
|
// rootId提供了选项过滤功能,任何传入的值都应该检查
|
|
|
if (!mineStore.findDepartById(id, options.value)) {
|
|
|
- console.warn('The value of MineCascader is not included in MineOptions');
|
|
|
+ console.warn('[Watch] The id provided is not included in MineOptions');
|
|
|
innerValue.value = [];
|
|
|
- return;
|
|
|
+ } else {
|
|
|
+ const path = mineStore.calcDepartPathById(id, options.value, (e) => e.id);
|
|
|
+ innerValue.value = path;
|
|
|
}
|
|
|
+
|
|
|
if (props.syncToStore) {
|
|
|
mineStore.setDepartById(id);
|
|
|
}
|
|
|
@@ -97,17 +115,6 @@
|
|
|
innerValue.value = path;
|
|
|
}
|
|
|
|
|
|
- // 如果从STORE里初始化数据需要触发一次watcher以初始化组件状态
|
|
|
- if (props.initFromStore) {
|
|
|
- handleWatch(mineStore.getDepartId);
|
|
|
- // 为了让使用该组件的各个页面能够第一时间使用到该组件传递的值,手动触发一次emit
|
|
|
- handleChange([mineStore.getDepartId]);
|
|
|
- } else {
|
|
|
- handleWatch(props.value);
|
|
|
- // 为了让使用该组件的各个页面能够第一时间使用到该组件传递的值,手动触发一次emit
|
|
|
- handleChange([props.value]);
|
|
|
- }
|
|
|
-
|
|
|
watch(() => props.value, handleWatch);
|
|
|
|
|
|
return {
|