From eaed1e0813bc93f89d0ae2d194d38080be4b55d8 Mon Sep 17 00:00:00 2001 From: paoloar77 Date: Tue, 21 Dec 2021 01:26:29 +0100 Subject: [PATCH] - Codice internazionale numero + Country --- package.json | 1 - quasar.conf.js | 2 +- src/common/shared_vuejs.ts | 5 + .../CEventsCalendar/CEventsCalendar.vue | 4 +- src/components/CGridTableRec/CGridTableRec.ts | 3 +- .../CGridTableRec/CGridTableRec.vue | 4 + src/components/CMyAvatar/CMyAvatar.ts | 2 + src/components/CMyAvatar/CMyAvatar.vue | 1 + src/components/CMyFieldDb/CMyFieldDb.ts | 20 ++ src/components/CMyFieldDb/CMyFieldDb.vue | 266 +----------------- src/components/CMyPopupEdit/CMyPopupEdit.ts | 23 +- src/components/CMyPopupEdit/CMyPopupEdit.vue | 123 ++++---- src/components/CMySelect/CMySelect.ts | 81 +++++- src/components/CMySelect/CMySelect.vue | 41 +++ src/model/GlobalStore.ts | 5 + src/model/UserStore.ts | 19 +- src/statics/lang/it.js | 2 +- src/store/Modules/fieldsTable.ts | 41 +++ src/store/globalStore.ts | 22 +- src/views/user/profile/profile.vue | 25 +- yarn.lock | 8 +- 21 files changed, 326 insertions(+), 372 deletions(-) diff --git a/package.json b/package.json index 8ae77836..8da52654 100755 --- a/package.json +++ b/package.json @@ -69,7 +69,6 @@ "vue-scroll-reveal": "^1.0.11", "vue-svgicon": "^4.0.0-alpha.3", "vue2-dragula": "^2.5.5", - "vue3-tel-input": "^1.0.4", "vuex": "^4.0.1", "vuex-router-sync": "^6.0.0-rc.1" }, diff --git a/quasar.conf.js b/quasar.conf.js index 2b9b56c5..d097314a 100755 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -37,7 +37,7 @@ module.exports = configure((ctx) => ({ // --> boot files are part of "main.js" // https://v2.quasar.dev/quasar-cli/boot-files // boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'], - boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vuetelinput'], + boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines'], // https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css css: [ diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts index 078291a0..3f1258dd 100755 --- a/src/common/shared_vuejs.ts +++ b/src/common/shared_vuejs.ts @@ -44,6 +44,11 @@ export const shared_consts = { REPORT_FILT_RESP: 1, REPORT_FILT_ATTIVITA: 2, + TAB_COUNTRY: 'countries', + TAB_PHONES: 'phones', + + TablePickup: ['countries', 'phones'], + CashType: { None: 0, Incoming: 1, diff --git a/src/components/CEventsCalendar/CEventsCalendar.vue b/src/components/CEventsCalendar/CEventsCalendar.vue index 97043c2a..30471637 100755 --- a/src/components/CEventsCalendar/CEventsCalendar.vue +++ b/src/components/CEventsCalendar/CEventsCalendar.vue @@ -207,12 +207,12 @@ :label="$t('event.icon')"> - + - + diff --git a/src/components/CGridTableRec/CGridTableRec.ts b/src/components/CGridTableRec/CGridTableRec.ts index 6bf2d276..f0f7f834 100755 --- a/src/components/CGridTableRec/CGridTableRec.ts +++ b/src/components/CGridTableRec/CGridTableRec.ts @@ -223,8 +223,9 @@ export default defineComponent({ // E' il mio, quindi modificalo return true } + } else { + return true } - return false // if (userStore.isAdmin || userStore.isManager) // return true } diff --git a/src/components/CGridTableRec/CGridTableRec.vue b/src/components/CGridTableRec/CGridTableRec.vue index 223bd8df..5cf13b38 100755 --- a/src/components/CGridTableRec/CGridTableRec.vue +++ b/src/components/CGridTableRec/CGridTableRec.vue @@ -214,6 +214,7 @@
+ {{myimgint}} diff --git a/src/components/CMyFieldDb/CMyFieldDb.ts b/src/components/CMyFieldDb/CMyFieldDb.ts index a89321f6..a3b88627 100755 --- a/src/components/CMyFieldDb/CMyFieldDb.ts +++ b/src/components/CMyFieldDb/CMyFieldDb.ts @@ -45,6 +45,11 @@ export default defineComponent({ required: false, default: false, }, + canModify: { + type: Boolean, + required: false, + default: true, + }, disable: { type: Boolean, required: false, @@ -75,6 +80,16 @@ export default defineComponent({ required: false, default: '', }, + tablesel: { + type: String, + required: false, + default: '', + }, + pickup: { + type: Boolean, + required: false, + default: false, + }, }, components: { CMyPopupEdit }, setup(props, { emit }) { @@ -94,6 +109,10 @@ export default defineComponent({ setValDb($q, props.mykey, newval, props.type, props.serv, props.table, props.mysubkey, props.id, props.indrec, props.mysubsubkey) } + function withBorder() { + return col.value.fieldtype !== costanti.FieldType.onlydate && col.value.fieldtype !== costanti.FieldType.date + } + return { tools, costanti, @@ -102,6 +121,7 @@ export default defineComponent({ col, row, showandsel, + withBorder, } }, }) diff --git a/src/components/CMyFieldDb/CMyFieldDb.vue b/src/components/CMyFieldDb/CMyFieldDb.vue index 4d9a73a0..4f5c217f 100755 --- a/src/components/CMyFieldDb/CMyFieldDb.vue +++ b/src/components/CMyFieldDb/CMyFieldDb.vue @@ -20,8 +20,9 @@
-
+
- - -
diff --git a/src/components/CMyPopupEdit/CMyPopupEdit.ts b/src/components/CMyPopupEdit/CMyPopupEdit.ts index b02a55ea..f23fd61a 100755 --- a/src/components/CMyPopupEdit/CMyPopupEdit.ts +++ b/src/components/CMyPopupEdit/CMyPopupEdit.ts @@ -135,6 +135,16 @@ export default defineComponent({ required: false, default: '', }, + tablesel: { + type: String, + required: false, + default: '', + }, + pickup: { + type: Boolean, + required: false, + default: false, + }, }, components: { CMyChipList, CDateTime, CDate, CMyToggleList, CMySelect, CMyEditor, CGallery }, setup(props, { emit }) { @@ -230,7 +240,7 @@ export default defineComponent({ // console.log('row', props.row, 'col', props.mycol, 'newval', newval) // console.log('row[col.value.name]', props.row[col.value.name]) if (props.type === costanti.FieldType.image) { - console.log('image', newval) + // console.log('image', newval) } myrow.value[col.value.name] = newval // console.log('changevalRec update:row', newval) @@ -429,6 +439,16 @@ export default defineComponent({ return '[---]' else return globalStore.getValueByTable(col, val) + } else if (col.fieldtype === costanti.FieldType.nationality) { + if (!val) + return '[---]' + else + return val + } else if (col.fieldtype === costanti.FieldType.intcode) { + if (!val) + return '[---]' + else + return val } else if (col.fieldtype === costanti.FieldType.multiselect) { if (val === undefined) return '[---]' @@ -558,7 +578,6 @@ export default defineComponent({ ) } - onBeforeMount(mounted) crea() diff --git a/src/components/CMyPopupEdit/CMyPopupEdit.vue b/src/components/CMyPopupEdit/CMyPopupEdit.vue index aa32aec9..134020b6 100755 --- a/src/components/CMyPopupEdit/CMyPopupEdit.vue +++ b/src/components/CMyPopupEdit/CMyPopupEdit.vue @@ -124,52 +124,38 @@
- - - - -
- -
+ :tablesel="tablesel" + :pickup="pickup" + :optval="fieldsTable.getKeyByTable(col.jointable)" + :optlab="fieldsTable.getLabelByTable(col.jointable)" + :options="globalStore.getTableJoinByName(col.jointable)" + :useinput="false"> +
- {{ myvalue }} +
-
- +
+ +
- {{ myvalue }} +
@@ -445,46 +431,33 @@
- - - - -
- -
+ +
- - - +
+ + +
diff --git a/src/components/CMySelect/CMySelect.ts b/src/components/CMySelect/CMySelect.ts index 1890abad..fbfb70b5 100755 --- a/src/components/CMySelect/CMySelect.ts +++ b/src/components/CMySelect/CMySelect.ts @@ -4,6 +4,8 @@ import { useUserStore } from '@store/UserStore' import { useGlobalStore } from '@store/globalStore' import { useQuasar } from 'quasar' import { costanti } from '@costanti' +import { fieldsTable } from '@store/Modules/fieldsTable' +import { shared_consts } from '@/common/shared_vuejs' export default defineComponent({ name: 'CMySelect', @@ -23,6 +25,11 @@ export default defineComponent({ required: false, default: '' }, + tablesel: { + type: String, + required: false, + default: '' + }, optlab: [String, Function], optval: { type: String, @@ -33,6 +40,11 @@ export default defineComponent({ required: false, default: true }, + pickup: { + type: Boolean, + required: false, + default: false + }, addall: { type: Boolean, required: false, @@ -64,9 +76,12 @@ export default defineComponent({ const userStore = useUserStore() const globalStore = useGlobalStore() + const optFiltered = ref([]) + const valori = ref([]) + const myvalue = ref('') - const valori = computed(() => { + const valoriload = computed(() => { let myarr = props.options if (props.addall) { let myobj: any = {} @@ -82,10 +97,15 @@ export default defineComponent({ }) function changeval(newval: any) { - console.log('changeval', newval) - myvalue.value = newval - emit('update:value', newval) - emit('changeval', newval) + if (props.tablesel === shared_consts.TAB_COUNTRY) + myvalue.value = newval && newval['value'] ? newval['value'] : newval + else if (props.tablesel === shared_consts.TAB_PHONES) + myvalue.value = newval && newval['code'] ? newval['code'] : newval + else + myvalue.value = newval + console.log('Myselect changeval', myvalue.value) + emit('update:value', myvalue.value) + emit('changeval', myvalue.value) } function mounted() { @@ -117,12 +137,63 @@ export default defineComponent({ // console.log('cmyselect: myvalue.value', myvalue.value) } + function filterFn(val: any, update: any, abort: any) { + update( + async () => { + console.log('Filter val', val, val.length) + let myarr: any = [] + + if (val.length < 1) { + abort() + return + } + + let mystr = val.toLocaleLowerCase() + + if (fieldsTable.tableRemotePickup.includes(props.tablesel)) { + // if (myvalue.value.length > 1) { + if (mystr !== '') + myarr = await globalStore.loadPickup({ table: props.tablesel, search: mystr }) + // const needle = val.toLocaleLowerCase() + // optFiltered.value = optFiltered.value.filter((v: any) => v.toLocaleLowerCase().indexOf(needle) > -1) + // } + } else { + myarr = props.options + } + + if (props.addall) { + let myobj: any = {} + if (typeof props.optlab === 'string') { + myobj[props.optlab] = '(Tutti)' + myobj[props.optval] = costanti.FILTER_TUTTI + } + + myarr = [myobj, ...myarr] + } + + valori.value = myarr + + console.log('tablesel', props.tablesel, 'filterFn', myarr) + }, + // "ref" is the Vue reference to the QSelect + (ref: any) => { + if (val !== '' && ref.options.length > 0) { + ref.setOptionIndex(-1) // reset optionIndex in case there is something selected + ref.moveOptionSelection(1, true) // focus the first selectable option and do not update the input-value + } + } + ) + } + onMounted(mounted) + valori.value = valoriload.value + return { changeval, myvalue, valori, + filterFn, } } }) diff --git a/src/components/CMySelect/CMySelect.vue b/src/components/CMySelect/CMySelect.vue index 75445db6..9dedb28d 100755 --- a/src/components/CMySelect/CMySelect.vue +++ b/src/components/CMySelect/CMySelect.vue @@ -22,6 +22,47 @@
+ + + + { + // console.table(res) + return res.data + }) + .catch((error) => { + console.log('error loadPickup', error) + userStore.setErrorCatch(error) + return null + }) + }, + async loadPage(path: string) { const userStore = useUserStore() diff --git a/src/views/user/profile/profile.vue b/src/views/user/profile/profile.vue index a7f6d353..92dd1731 100755 --- a/src/views/user/profile/profile.vue +++ b/src/views/user/profile/profile.vue @@ -45,15 +45,19 @@ :type="costanti.FieldType.string">
-
+ + +
-
+ :type="costanti.FieldType.intcode" + tablesel="phones" + :pickup="true"> + :filtercustom="filtroutente"> diff --git a/yarn.lock b/yarn.lock index 646c11bc..913d167b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12886,10 +12886,10 @@ vue2-dragula@^2.5.5: dependencies: dragula "3.7.2" -vue3-tel-input@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vue3-tel-input/-/vue3-tel-input-1.0.4.tgz#ed26cb808d124aebb5073d03f366b23e686804d6" - integrity sha512-C60OyAq5ORDErSJ4x7UmJJbF95CDncMswnySmAUtbuBP0pcVcJBu6DOTxKquykvTbJEh9I73DXyqMtDxtLrwJg== +vue3-tel-input@^5.0.4-vue3: + version "5.0.4-vue3" + resolved "https://registry.yarnpkg.com/vue3-tel-input/-/vue3-tel-input-5.0.4-vue3.tgz#ed79e21e9fba84eef2ba7a467cade202c2e7ada2" + integrity sha512-QvN7tyqzqL/gIBOohNcYdEbjpWzd3kucCMcqyVIpckBIPNl6ki/ARd0y/I73jKfUJ0Hg5RSxHu/IgIWAtMKMrw== dependencies: core-js "^3.6.5" libphonenumber-js "^1.9.6"