pull/781/head
parent
185b306240
commit
fda9b655fb
|
|
@ -6,8 +6,8 @@ VITE_DEV=true
|
|||
# 请求路径
|
||||
# VITE_BASE_URL='http://8.130.12.151:48080'
|
||||
# VITE_BASE_URL='http://lhy.free.idcfengye.com'
|
||||
VITE_BASE_URL='http://m94844f6.natappfree.cc'
|
||||
# VITE_BASE_URL='http://172.22.3.168:48080'
|
||||
# VITE_BASE_URL='http://m94844f6.natappfree.cc'
|
||||
VITE_BASE_URL='http://172.22.3.168:48080'
|
||||
# VITE_BASE_URL='http://172.22.3.203:48080'
|
||||
|
||||
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
clearable
|
||||
popper-class="event-select-poper"
|
||||
v-el-select-loadmore="loadmore"
|
||||
placeholder="请选择"
|
||||
:placeholder="placeholder"
|
||||
style="width: 100%"
|
||||
:filter-method="filterOptions"
|
||||
@change="handleEventsChange"
|
||||
|
|
@ -28,12 +28,22 @@ import { propTypes } from '@/utils/propTypes'
|
|||
defineOptions({ name: 'SelectCustomer' })
|
||||
const props = defineProps({
|
||||
disabled: propTypes.number.def(undefined),
|
||||
value: propTypes.number.def(undefined),
|
||||
modelValue: propTypes.number.def(undefined),
|
||||
placeholder: {
|
||||
type:String,
|
||||
default: '请选择'
|
||||
},
|
||||
customerList: propTypes.object.def([]), //所有数据
|
||||
})
|
||||
const options = ref([]) //显示的数据
|
||||
const selectValue = ref( '')
|
||||
watch(() => props.value, (val) => {
|
||||
watch(() => props.modelValue, (val) => {
|
||||
selectValue.value = val
|
||||
let arr = options.value.filter( v=> v.id === val)
|
||||
if (!arr.length) {
|
||||
let selectItem = props.customerList.filter( v=> v.id === val)
|
||||
options.value = [...options.value, ...selectItem]
|
||||
}
|
||||
}, {
|
||||
immediate: true,
|
||||
});
|
||||
|
|
@ -47,7 +57,6 @@ let pageNo = ref(1)
|
|||
let pageSize = ref(10)
|
||||
const loading = ref(false);
|
||||
const allFilterEvents = reactive([]);
|
||||
const options = ref([]) //显示的数据
|
||||
const vElSelectLoadmore = {
|
||||
beforeMount(el, binding) {
|
||||
const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap');
|
||||
|
|
@ -113,9 +122,10 @@ const handleVisibleChange = (visible) => {
|
|||
});
|
||||
}
|
||||
};
|
||||
|
||||
const emit = defineEmits(['update:modelValue', 'change'])
|
||||
const handleEventsChange = (val) => {
|
||||
console.log('update:selectValue:', val);
|
||||
emit('update:modelValue', val);
|
||||
emit('change', val);
|
||||
};
|
||||
|
||||
</script>
|
||||
|
|
@ -166,7 +166,9 @@ const validateNode = (node: SimpleFlowNode | undefined, errorNodes: SimpleFlowNo
|
|||
}
|
||||
}
|
||||
|
||||
const route = useRoute();
|
||||
onMounted(async () => {
|
||||
console.log('%csrc/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue:1029 activeTabName.value', 'color: #007acc;', route.params.type);
|
||||
try {
|
||||
loading.value = true
|
||||
// 获取表单字段
|
||||
|
|
@ -178,7 +180,7 @@ onMounted(async () => {
|
|||
const bpmnForm = (await getForm(bpmnModel.formId)) as unknown as FormVO
|
||||
formFields.value = bpmnForm?.fields
|
||||
}
|
||||
if (formType.value === BpmModelFormType.CUSTOM && bpmnModel.formId) {
|
||||
if (formType.value === BpmModelFormType.CUSTOM && route.params.type === 'update') {
|
||||
window.localStorage.setItem('businessKey', bpmnModel.key)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1025,8 +1025,8 @@ const updatePermission = (type: string) => {
|
|||
})
|
||||
}
|
||||
|
||||
const route = useRoute();
|
||||
const tabClick = async (tab) => {
|
||||
console.log('%csrc/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue:1029 activeTabName.value', 'color: #007acc;', tab.props);
|
||||
if(tab.props.name === 'businessFields') {
|
||||
const bpmnForm = (await getBusinessForm({
|
||||
key: window.localStorage.getItem('businessKey'),
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ import install from '@form-create/element-ui/auto-import'
|
|||
import { UploadFile, UploadImg, UploadImgs } from '@/components/UploadFile'
|
||||
import { processForm } from '@/components/processForm'
|
||||
import { processTable } from '@/components/processTable'
|
||||
import { SelectComponent } from '@/components/SelectCustomer'
|
||||
// import { SelectComponent } from '@/components/SelectCustomer'
|
||||
import { useApiSelect } from '@/components/FormCreate'
|
||||
import { Editor } from '@/components/Editor'
|
||||
import DictSelect from '@/components/FormCreate/src/components/DictSelect.vue'
|
||||
|
|
@ -117,7 +117,7 @@ const components = [
|
|||
UploadFile,
|
||||
processForm,
|
||||
processTable,
|
||||
SelectComponent,
|
||||
// SelectComponent,
|
||||
DictSelect,
|
||||
UserSelect,
|
||||
DeptSelect,
|
||||
|
|
|
|||
|
|
@ -51,7 +51,8 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault || type" v-model="formData.customerId" />
|
||||
<!-- <el-select
|
||||
:disabled="formData.customerDefault || type"
|
||||
v-model="formData.customerId"
|
||||
clearable
|
||||
|
|
@ -65,7 +66,7 @@
|
|||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
|
@ -275,6 +276,7 @@ import { defaultProps, handleTree } from '@/utils/tree';
|
|||
import BusinessProductForm from './components/BusinessProductForm.vue';
|
||||
import { erpPriceMultiply, erpPriceInputFormatter } from '@/utils';
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
const { proxy }: any = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
|
|
@ -319,6 +321,8 @@ const formRules = reactive({
|
|||
paymentTerm: [{ required: true, message: '账期不能为空', trigger: 'change' }],
|
||||
creditMethod: [{ required: true, message: '授信方式不能为空', trigger: 'change' }],
|
||||
techSupport: [{ required: true, message: '技术需求支持不能为空', trigger: 'change' }],
|
||||
projectDifficultyId: [{ required: true, message: '项目难度不能为空', trigger: 'change' }],
|
||||
platformId: [{ required: true, message: '平台不能为空', trigger: 'change' }],
|
||||
|
||||
});
|
||||
const formRef = ref();
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault" :value="formData.customerId" />
|
||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault" v-model="formData.customerId" />
|
||||
<!-- <el-select
|
||||
:disabled="formData.customerDefault"
|
||||
v-model="formData.customerId"
|
||||
|
|
@ -262,7 +262,6 @@ const open = async (type: string, id?: number, customerId?: number, businessId?:
|
|||
contactList.value = await ContactApi.getSimpleContactList()
|
||||
// 获得客户列表
|
||||
customerList.value = await CustomerApi.getSelfCustomerSimpleList()
|
||||
options.value = customerList.value.slice(0, 10)
|
||||
// 获得地区列表
|
||||
areaList.value = await AreaApi.getAreaTree()
|
||||
// 获得用户列表
|
||||
|
|
@ -326,80 +325,6 @@ const resetForm = () => {
|
|||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
const loading = ref(false);
|
||||
const placeholder = ref('请选择');
|
||||
const allFilterEvents = reactive([]);
|
||||
const vElSelectLoadmore = {
|
||||
beforeMount(el, binding) {
|
||||
const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap');
|
||||
const loadMores = function() {
|
||||
const isBase = this.scrollHeight - this.scrollTop <= this.clientHeight + 20;
|
||||
if (isBase) {
|
||||
binding.value && binding.value();
|
||||
}
|
||||
};
|
||||
el.selectDomInfo = selectDom;
|
||||
el.selectLoadMore = loadMores;
|
||||
selectDom?.addEventListener('scroll', loadMores.bind(selectDom));
|
||||
},
|
||||
beforeUnmount(el) {
|
||||
if (el.selectLoadMore) {
|
||||
el.selectDomInfo.removeEventListener('scroll', el.selectLoadMore);
|
||||
delete el.selectDomInfo;
|
||||
delete el.selectLoadMore;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
watch(() => allFilterEvents, () => {
|
||||
let startIndex = pageNo.value * pageSize.value - pageSize.value;
|
||||
let endIndex = pageNo.value * pageSize.value;
|
||||
options.value = allFilterEvents.slice(startIndex, endIndex);
|
||||
}, {
|
||||
immediate: true,
|
||||
deep: true
|
||||
});
|
||||
|
||||
const loadmore = () => {
|
||||
if (customerList.value.length <= options.value.length) return;
|
||||
pageNo.value++;
|
||||
nextTick(() => {
|
||||
loading.value = true;
|
||||
let startIndex = pageNo.value * pageSize.value - pageSize.value;
|
||||
let endIndex = pageNo.value * pageSize.value;
|
||||
options.value = [
|
||||
...options.value,
|
||||
...customerList.value.slice(startIndex, endIndex)
|
||||
];
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
|
||||
const filterOptions = (query = '') => {
|
||||
pageNo.value = 1;
|
||||
nextTick(() => {
|
||||
if (query === '') {
|
||||
allFilterEvents.splice(0, allFilterEvents.length, ...customerList.value);
|
||||
} else {
|
||||
allFilterEvents.splice(0, allFilterEvents.length, ...customerList.value.filter(item => item.name.includes(query)));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const handleVisibleChange = (visible) => {
|
||||
if (!visible) {
|
||||
pageNo.value = 1;
|
||||
nextTick(() => {
|
||||
allFilterEvents.splice(0, allFilterEvents.length, ...customerList.value);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleEventsChange = (val) => {
|
||||
console.log('Selected value:', val);
|
||||
};
|
||||
|
||||
|
||||
// onMounted(async() => {
|
||||
// })
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
placeholder="请输入合同名称"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<!-- <el-form-item label="客户" prop="customerId">
|
||||
<el-select
|
||||
v-model="queryParams.customerId"
|
||||
class="!w-240px"
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
:value="item.id!"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery">
|
||||
|
|
|
|||
|
|
@ -26,20 +26,7 @@
|
|||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
@change="changeCustomer"
|
||||
:disabled="formType"
|
||||
placeholder="请选择客户"
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in customerList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
<SelectComponent :customerList="customerList" :disabled="formType" v-model="formData.customerId" @change="changeCustomer" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="!formType">
|
||||
|
|
@ -153,6 +140,7 @@ import ContractProductForm from '@/views/crm/contract/components/ContractProduct
|
|||
import ContractAAuthorizedCompanyForm from './components/ContractAAuthorizedCompanyForm.vue'
|
||||
import ContractBAuthorizedPersonForm from './components/ContractAAuthorizedPersonForm.vue'
|
||||
import ContractForm from './ContractForm.vue'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
|
|
|||
|
|
@ -19,20 +19,7 @@
|
|||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
placeholder="请选择客户名称"
|
||||
:disabled="!!formType"
|
||||
@change="onCustomerChange"
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contactList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
<SelectComponent :customerList="customerList" :disabled="!!formType" v-model="formData.customerId" @change="onCustomerChange" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="formType">
|
||||
|
|
@ -504,6 +491,7 @@ import { propTypes } from '@/utils/propTypes'
|
|||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||
import { defaultProps, handleTree } from '@/utils/tree'
|
||||
import * as DeptApi from '@/api/system/dept'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
|
|
|||
|
|
@ -26,19 +26,7 @@
|
|||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customerId">
|
||||
<el-select
|
||||
v-model="formData.customerId"
|
||||
placeholder="请选择客户"
|
||||
disabled
|
||||
class="w-1/1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in contactList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
<SelectComponent :customerList="customerList" :disabled="true" v-model="formData.customerId" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -134,6 +122,7 @@ import ContractAAuthorizedCompanyForm from '../components/ContractAAuthorizedCom
|
|||
import ContractBAuthorizedPersonForm from '../components/ContractAAuthorizedPersonForm.vue'
|
||||
import ContractForm from './ContractDetail.vue'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@
|
|||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select
|
||||
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
||||
<!-- <el-select
|
||||
v-model="queryParams.customerId"
|
||||
class="!w-240px"
|
||||
clearable
|
||||
|
|
@ -41,7 +42,7 @@
|
|||
:label="item.name"
|
||||
:value="item.id!"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
|
@ -320,6 +321,7 @@ import { erpPriceInputFormatter, erpPriceTableColumnFormatter } from '@/utils'
|
|||
import * as CustomerApi from '@/api/crm/customer'
|
||||
import { checkPermi } from '@/utils/permission'
|
||||
import { TabsPaneContext } from 'element-plus'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
defineOptions({ name: 'CrmContract' })
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
>
|
||||
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select
|
||||
<SelectComponent v-model="formData.customerId" :customerList="customerList" />
|
||||
<!-- <el-select
|
||||
v-model="formData.customerId"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -25,7 +26,7 @@
|
|||
:label="item.name"
|
||||
:value="item.id!"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="投诉级别" prop="complaintLevel">
|
||||
|
|
@ -112,6 +113,7 @@ import * as ProcessInstanceApi from '@/api/bpm/processInstance'
|
|||
import { CandidateStrategy, NodeId } from '@/components/SimpleProcessDesignerV2/src/consts'
|
||||
import { ApprovalNodeInfo } from '@/api/bpm/processInstance'
|
||||
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
defineOptions({ name: 'CustomerComplaintsCreate' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
>
|
||||
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select
|
||||
<SelectComponent :customerList="customerList" v-model="formData.customerId" />
|
||||
<!-- <el-select
|
||||
v-model="formData.customerId"
|
||||
clearable
|
||||
filterable
|
||||
|
|
@ -25,7 +26,7 @@
|
|||
:label="item.name"
|
||||
:value="item.id!"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="反馈部门" prop="feedbackDeptId">
|
||||
|
|
@ -104,6 +105,7 @@ import { CandidateStrategy, NodeId } from '@/components/SimpleProcessDesignerV2/
|
|||
import { ApprovalNodeInfo } from '@/api/bpm/processInstance'
|
||||
import {defaultProps, handleTree} from "@/utils/tree";
|
||||
import {getSelfCustomerSimpleList} from "@/api/crm/customer";
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
defineOptions({ name: 'CustomerSuggestionCreate' })
|
||||
|
||||
|
|
|
|||
|
|
@ -47,14 +47,15 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select v-model="formData.customerId" disabled clearable @change="onCustomerChange">
|
||||
<SelectComponent :customerList="customerList" :disabled="true" v-model="formData.customerId" />
|
||||
<!-- <el-select v-model="formData.customerId" disabled clearable @change="onCustomerChange">
|
||||
<el-option
|
||||
v-for="item in customerList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -409,6 +410,7 @@ import * as UserApi from '@/api/system/user'
|
|||
import * as DeptApi from '@/api/system/dept'
|
||||
import * as BusinessApi from '@/api/crm/business'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
/** CRM 方案报价 表单 */
|
||||
defineOptions({ name: 'QuotationForm' })
|
||||
|
|
|
|||
|
|
@ -47,14 +47,15 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select v-model="formData.customerId" placeholder="" disabled clearable @change="onCustomerChange">
|
||||
<SelectComponent :customerList="customerList" :disabled="true" placeholder="" v-model="formData.customerId" />
|
||||
<!-- <el-select v-model="formData.customerId" placeholder="" disabled clearable>
|
||||
<el-option
|
||||
v-for="item in customerList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -418,6 +419,7 @@ import * as DeptApi from '@/api/system/dept'
|
|||
import * as BusinessApi from '@/api/crm/business'
|
||||
import { propTypes } from '@/utils/propTypes'
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
/** CRM 方案报价 表单 */
|
||||
defineOptions({ name: 'QuotationForm' })
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户" prop="customerId">
|
||||
<el-select
|
||||
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
||||
<!-- <el-select
|
||||
v-model="queryParams.customerId"
|
||||
placeholder="请选择客户"
|
||||
clearable
|
||||
|
|
@ -30,7 +31,7 @@
|
|||
:label="dict.name"
|
||||
:value="dict.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-select> -->
|
||||
</el-form-item>
|
||||
<el-form-item label="商机负责人" prop="ownerUserId">
|
||||
<el-select
|
||||
|
|
@ -272,6 +273,7 @@ import * as UserApi from '@/api/system/user'
|
|||
import * as DeptApi from '@/api/system/dept'
|
||||
import { TabsPaneContext } from 'element-plus'
|
||||
import { checkPermi } from '@/utils/permission'
|
||||
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||
|
||||
/** CRM 方案报价 列表 */
|
||||
defineOptions({ name: 'Quotation' })
|
||||
|
|
|
|||
Loading…
Reference in New Issue