fix: 修改bug

This commit is contained in:
100011797 2023-07-15 16:22:51 +08:00
parent e0c9fa623a
commit 439ac44e7e
6 changed files with 122 additions and 38 deletions

View File

@ -74,6 +74,7 @@
<div class="header">
<div class="title">
<div>运行结果</div>
<div v-if="virtualRule?.script && !isBeginning">正在运行......</div>
</div>
<div class="action">
<div v-if="virtualRule?.script">
@ -127,6 +128,7 @@ type propertyType = {
last?: string;
};
const property = ref<propertyType[]>([]);
// virtualRule?.rule?.windowType === 'undefined' ? moment(item.time).format('HH:mm:ss')
const columns = [
{

View File

@ -613,6 +613,7 @@ const onPlatError = (val: any) => {
_errorSet.value.add(val)
}
};
const _validator = (_rule: any, value: string): Promise<any> =>
new Promise((resolve, reject) => {
const _item = productList.value.find((item) => item.id === value);
@ -657,7 +658,7 @@ watch(
async (newId) => {
if (newId) {
queryRegionsList();
getProduct();
await getProduct();
if (newId === ':id' || !newId) return;
const resp = await detail(newId as string);
const _data: any = resp.result;

View File

@ -17,60 +17,66 @@
</template>
<script lang="ts" setup>
import { PropType } from "vue";
import { PropType } from 'vue';
import { Form } from 'jetlinks-ui-components';
const props = defineProps({
disabled: {
type: Boolean,
default: false
default: false,
},
options: {
type: Array as PropType<any[]>,
default: () => []
default: () => [],
},
value: {
type: String,
default: undefined
default: undefined,
},
type: {
type: String,
default: 'product'
}
})
default: 'product',
},
});
const emits = defineEmits(['update:value', 'change', 'error']);
const formItemContext = Form.useInjectFormItemContext()
const formItemContext = Form.useInjectFormItemContext();
const _value = ref<any>(undefined)
const _value = ref<any>(undefined);
const formTouchOff = () => {
formItemContext.onFieldChange()
}
formItemContext.onFieldChange();
};
const _options = computed(() => {
if(props.type === 'product') {
return props.options.filter(i => i?.state || i.id === props.value)
if (props.type === 'product') {
return props.options.filter((i) => i?.state || i.id === props.value);
} else {
return props.options
return props.options;
}
})
});
watchEffect(() => {
_value.value = props.value
if(props.type !== 'product') {
formTouchOff()
} else {
if(props.value){
formTouchOff()
watch(
() => props.value,
() => {
_value.value = props.value;
if (props.type !== 'product') {
formTouchOff();
} else {
if (props.value) {
formTouchOff();
}
emits('error', props.value);
}
emits('error', props.value)
},
{
immediate: true
}
})
);
const productChange = (val: any) => {
emits('update:value', val)
emits('change', val)
}
emits('update:value', val);
emits('change', val);
};
</script>

View File

@ -12,8 +12,9 @@
:request="(e) => handleData(e)"
model="CARD"
:bodyStyle="{
padding: 0
padding: 0,
}"
ref="tableRef"
:params="params"
:gridColumn="2"
:noPagination="true"
@ -83,6 +84,10 @@ const props = defineProps({
type: String,
default: '',
},
notifyType: {
type: String,
default: '',
},
});
const emit = defineEmits(['update:value', 'change', 'update:detail']);
@ -97,6 +102,7 @@ const getMethodTxt = (type: string) => {
const params = ref<Record<string, any>>({});
const _selectedRowKeys = ref<string[]>([]);
const tableRef = ref<any>();
const columns = [
{
@ -129,19 +135,70 @@ const handleSearch = (_params: any) => {
params.value = _params;
};
const handleClick = (dt: any) => {
const typeObj = {
weixin: 'wechat',
dingTalk: 'dingtalk',
};
const queryUserList = async (id: string) => {
if (!(props.notifyType && props.notifierId)) return '';
const resp = await TemplateApi.getUser(
typeObj[props.notifyType],
props.notifierId,
);
if (resp.status === 200) {
return resp.result?.find((item: any) => item.id === id)?.name;
} else {
return '';
}
};
const queryOrgList = async (id: string) => {
if (!(props.notifyType && props.notifierId)) return '';
const resp = await TemplateApi.getDept(
typeObj[props.notifyType],
props.notifierId,
);
if (resp.status === 200) {
return resp.result?.find((item: any) => item.id === id)?.name;
} else {
return '';
}
};
const getOptions = async (dt: any) => {
const obj = {};
//
if (props.notifyType === 'weixin') {
if (dt?.template?.toParty) {
obj['orgName'] = await queryOrgList(dt?.template?.toParty);
}
if (dt?.template?.toUser) {
obj['sendTo'] = await queryUserList(dt?.template?.toUser);
}
}
if (props.notifyType === 'dingTalk') {
if (dt?.template?.departmentIdList) {
obj['orgName'] = await queryOrgList(dt?.template?.departmentIdList);
}
if (dt?.template?.userIdList) {
obj['sendTo'] = await queryUserList(dt?.template?.userIdList);
}
}
return obj;
};
const handleClick = async (dt: any) => {
if (_selectedRowKeys.value.includes(dt.id)) {
_selectedRowKeys.value = [];
emit('update:value', undefined);
// emit('change', { templateName: undefined, orgName: undefined, sendTo: undefined });
emit('change', { templateName: undefined });
emit('change', { templateName: undefined, orgName: undefined, sendTo: undefined });
emit('update:detail', undefined);
} else {
// console.log(dt)
const obj = await getOptions(dt)
_selectedRowKeys.value = [dt.id];
emit('change', { templateName: dt?.name, ...obj });
emit('update:value', dt.id);
// emit('change', { templateName: dt?.name, orgName: dt.template?.departmentIdList, sendTo: dt.template?.userIdList });
emit('change', { templateName: dt?.name });
emit('update:detail', dt);
}
};
@ -176,6 +233,7 @@ watch(
(newValue) => {
if (newValue) {
_selectedRowKeys.value = [newValue];
// (tableRef.value?._dataSource || []).find()
} else {
_selectedRowKeys.value = [];
}

View File

@ -48,6 +48,7 @@
<NotifyTemplate
v-model:value="formModel.templateId"
v-model:detail="template"
:notifyType="formModel.notifyType"
:notifierId="formModel.notifierId"
@change="(val) => onValChange(val, 'templateId')"
/>

View File

@ -104,7 +104,7 @@
mode="multiple"
style="width: calc(100% - 40px)"
placeholder="请选择角色"
:options="form.roleOptions"
:options="_roleOptions"
:disabled="form.data.username === 'admin'"
></j-select>
@ -123,7 +123,7 @@
show-search
style="width: calc(100% - 40px)"
placeholder="请选择组织"
:tree-data="form.departmentOptions"
:tree-data="_departmentOptions"
:fieldNames="{ label: 'name', value: 'id' }"
multiple
:filterTreeNode="
@ -205,6 +205,7 @@ import { DefaultOptionType } from 'ant-design-vue/es/vc-tree-select/TreeSelect';
import { AxiosResponse } from 'axios';
import { passwordRegEx } from '@/utils/validate';
import { filterSelectNode, onlyMessage } from '@/utils/comm';
import { uniqBy } from 'lodash-es';
const deptPermission = 'system/Department';
const rolePermission = 'system/Role';
@ -279,6 +280,9 @@ const form = reactive({
roleOptions: [] as optionType[],
departmentOptions: [] as DefaultOptionType[],
_roleOptions: [] as optionType[],
_departmentOptions: [] as DefaultOptionType[],
init: () => {
form.getDepartmentList();
form.getRoleList();
@ -286,7 +290,6 @@ const form = reactive({
},
getUserInfo: () => {
const id = props.data.id || '';
console.log(111);
if (props.type === 'add') form.data = {} as formType;
else if (props.type === 'reset') form.data = { id } as formType;
@ -301,6 +304,10 @@ const form = reactive({
(item: dictType) => item.id,
),
};
form._roleOptions = resp.result?.roleList?.map((i: any) => {
return {label: i.name, value: i.id}
});
form._departmentOptions = resp.result?.orgList
nextTick(() => {
formRef.value?.clearValidate();
});
@ -358,6 +365,15 @@ const form = reactive({
};
},
});
const _roleOptions = computed(() => {
return uniqBy([...form.roleOptions, ...form._roleOptions], 'value')
})
const _departmentOptions = computed(() => {
return uniqBy([...form.departmentOptions, ...form._departmentOptions], 'id')
})
form.init();
interface AxiosResponseRewrite<T = any[]> extends AxiosResponse<T, any> {