From be0be4945495c5cefa8520170539cade1ce28d27 Mon Sep 17 00:00:00 2001 From: Viet An Date: Mon, 6 Jul 2026 11:25:42 +0700 Subject: [PATCH] changes --- app/components/Tooltip.vue | 17 -- app/components/common/ActionInfo.vue | 16 +- app/components/common/Editor.vue | 69 +++----- app/components/customer/Company.vue | 26 +-- app/components/customer/Customer.vue | 77 ++------ app/components/datatable/ContextMenu.vue | 60 +++---- app/components/datatable/CreateTemplate.vue | 165 +++++++++--------- app/components/datatable/DataTable.vue | 38 ++-- app/components/datatable/FilterOption.vue | 2 +- app/components/datatable/FormatOption.vue | 52 +++--- app/components/datatable/NewField.vue | 46 ++--- app/components/datatable/TableSetting.vue | 2 +- app/components/datepicker/EventSummary.vue | 3 +- app/components/inventory/Inventory.vue | 6 + app/components/maintab/Configuration.vue | 4 +- .../marketing/email/forms/EmailForm1.vue | 2 - app/components/media/Camera.vue | 2 +- app/components/parameter/CodeName.vue | 4 +- app/components/parameter/Common.vue | 32 ++-- app/components/people/PeopleInfo.vue | 23 ++- app/plugins/01-common.js | 40 ++--- app/plugins/02-connection.js | 6 +- 22 files changed, 301 insertions(+), 391 deletions(-) delete mode 100644 app/components/Tooltip.vue diff --git a/app/components/Tooltip.vue b/app/components/Tooltip.vue deleted file mode 100644 index 63c9586..0000000 --- a/app/components/Tooltip.vue +++ /dev/null @@ -1,17 +0,0 @@ - - diff --git a/app/components/common/ActionInfo.vue b/app/components/common/ActionInfo.vue index 5d64fa5..222a496 100644 --- a/app/components/common/ActionInfo.vue +++ b/app/components/common/ActionInfo.vue @@ -267,20 +267,20 @@ const options = [ { code: "system", name: "Của hệ thống" }, { code: "your", name: "Của bạn" }, ]; -var props = defineProps({ +const props = defineProps({ pagename: String, row: Object, }); -var message = ref(); -var image = ref(); -var file = ref(); -var link = ref(); -var tab = ref("message"); -var record = await $getdata("useraction", { +const message = ref(); +const image = ref(); +const file = ref(); +const link = ref(); +const tab = ref("message"); +let record = await $getdata("useraction", { first: true, filter: { user: 1, action: props.row.id }, }); -var option = ref(record ? "your" : "system"); +const option = ref(record ? "your" : "system"); function getValue() { if (option.value === "your") { message.value = record ? $copy(record.message || [{ code: $id() }]) : [{ code: $id() }]; diff --git a/app/components/common/Editor.vue b/app/components/common/Editor.vue index cb9ce5b..7ba29cd 100644 --- a/app/components/common/Editor.vue +++ b/app/components/common/Editor.vue @@ -1,63 +1,36 @@ - - - + diff --git a/app/components/customer/Company.vue b/app/components/customer/Company.vue index 26af902..b50cb71 100644 --- a/app/components/customer/Company.vue +++ b/app/components/customer/Company.vue @@ -199,34 +199,36 @@ import InputPhone from "~/components/common/InputPhone"; import InputEmail from "~/components/common/InputEmail"; import SearchBox from "~/components/SearchBox"; -var props = defineProps({ + +const props = defineProps({ pagename: String, row: Object, }); + const store = useStore(); const { $find, $getdata, $patchapi, $insertapi, $findapi, $getapi, $empty, $errPhone, $resetNull, $snackbar } = useNuxtApp(); const emit = defineEmits(["update", "dataevent"]); -var viewport = store.viewport; -var errors = ref({}); -var record = ref(); -var showmodal = undefined; -var existedCustomer = undefined; +const viewport = store.viewport; +const errors = ref({}); +const record = ref(); +const showmodal = ref(); +let existedCustomer = undefined; async function initData() { if (props.row) { - let conn = $findapi("company"); + const conn = $findapi("company"); conn.params.filter = { id: props.row.company || props.row.customer__company || props.row.id, }; - let rs = await $getapi([conn]); - let found = $find(rs, { name: "company" }); + const rs = await $getapi([conn]); + const found = $find(rs, { name: "company" }); if (found.data.rows.length > 0) record.value = found.data.rows[0]; } else { record.value = {}; } } function findLang(code) { - let found = $find(store.common, { code: code }); + const found = $find(store.common, { code: code }); return found ? found[store.lang] : ""; } function showCustomer() { @@ -269,13 +271,13 @@ async function update() { if (!record.value.creator) record.value.creator = store.login.id; record.value.updater = store.login.id; record.update_time = new Date(); - let rs = record.value.id + const rs = record.value.id ? await $patchapi("company", { data: record.value }) : await $insertapi("company", { data: record.value }); if (rs === "error") return; if (!record.value.id) $snackbar(`Khách hàng đã được khởi tạo với mã ${rs.code}`, "Success"); record.value.id = rs.id; - let ele = await $getdata("company", { + const ele = await $getdata("company", { first: true, filter: { id: rs.id }, }); diff --git a/app/components/customer/Customer.vue b/app/components/customer/Customer.vue index 912fa68..3151d95 100644 --- a/app/components/customer/Customer.vue +++ b/app/components/customer/Customer.vue @@ -2,38 +2,21 @@
- -
-
-
-
- {{ isVietnamese ? v.name : v.en }} -
-
-
+
-
+
+ /> + />
- + v-bind="showmodal" + @close="showmodal.value = undefined" + /> - - diff --git a/app/components/datatable/ContextMenu.vue b/app/components/datatable/ContextMenu.vue index 028e927..ed72794 100644 --- a/app/components/datatable/ContextMenu.vue +++ b/app/components/datatable/ContextMenu.vue @@ -446,10 +446,10 @@ const store = useStore(); const { colorchoice } = store; const errors = ref([]); const currentTab = ref("value"); -var pagedata = store[props.pagename]; -var fields = []; -var currentField = $copy(props.field); -var { label } = currentField; +let pagedata = store[props.pagename]; +let fields = []; +let currentField = $copy(props.field); +let { label } = currentField; const showmodal = ref(); const checkFilter = function () {}; const getMenu = function () { @@ -461,33 +461,33 @@ const getMenu = function () { return array; }; var selectTab = getMenu()[0]; -var datatype = store.datatype; -// var current = 1; -// var value1 = undefined; -// var value2 = undefined; +let datatype = store.datatype; +// let current = 1; +// let value1 = undefined; +// let value2 = undefined; const moneyunit = store.moneyunit; const radioType = store.datatype.find((v) => v.code === currentField.format); -// var selectUnit = currentField.format === "number" ? moneyunit.find((v) => v.detail === currentField.unit) : undefined; -// var bgcolor = undefined; -// var radioBGcolor = colorchoice.find((v) => v.code === "none"); -// var color = undefined; -// var radioColor = colorchoice.find((v) => v.code === "none"); -// var textsize = undefined; -// var radioSize = colorchoice.find((v) => v.code === "none"); -var minwidth = undefined; -var radioWidth = colorchoice.find((v) => v.code === "none"); -var radioMaxWidth = colorchoice.find((v) => v.code === "none"); -var maxwidth = undefined; -// var selectAlign = undefined; -// var radioAlign = colorchoice.find((v) => v.code === "none"); -var radioTemplate = ref(colorchoice.find((v) => v.code === (currentField.template ? "option" : "none"))["code"]); -// var selectPlacement = store.placement.find((v) => v.code === "is-right"); -// var selectScheme = store.colorscheme.find((v) => v.code === "is-primary"); -// var radioTooltip = store.colorchoice.find((v) => v.code === "none"); -// var selectField = undefined; -// var tags = currentField.tags ? currentField.tags.map((v) => fields.find((x) => x.name === v)) : []; -// var formula = currentField.formula ? currentField.formula : undefined; -var decimal = currentField.decimal; +// let selectUnit = currentField.format === "number" ? moneyunit.find((v) => v.detail === currentField.unit) : undefined; +// let bgcolor = undefined; +// let radioBGcolor = colorchoice.find((v) => v.code === "none"); +// let color = undefined; +// let radioColor = colorchoice.find((v) => v.code === "none"); +// let textsize = undefined; +// let radioSize = colorchoice.find((v) => v.code === "none"); +let minwidth = undefined; +let radioWidth = colorchoice.find((v) => v.code === "none"); +let radioMaxWidth = colorchoice.find((v) => v.code === "none"); +let maxwidth = undefined; +// let selectAlign = undefined; +// let radioAlign = colorchoice.find((v) => v.code === "none"); +let radioTemplate = ref(colorchoice.find((v) => v.code === (currentField.template ? "option" : "none"))["code"]); +// let selectPlacement = store.placement.find((v) => v.code === "is-right"); +// let selectScheme = store.colorscheme.find((v) => v.code === "is-primary"); +// let radioTooltip = store.colorchoice.find((v) => v.code === "none"); +// let selectField = undefined; +// let tags = currentField.tags ? currentField.tags.map((v) => fields.find((x) => x.name === v)) : []; +// let formula = currentField.formula ? currentField.formula : undefined; +let decimal = currentField.decimal; let shortmenu = store.menuchoice.filter((x) => currentField.format === "number" ? currentField.formula @@ -498,7 +498,7 @@ let shortmenu = store.menuchoice.filter((x) => var selectTab = shortmenu.find((v) => selectTab.code === v.code) ? selectTab : menuchoice.find((v) => v.code === "value"); -var search = undefined; +let search = undefined; // if(selectTab.code==='value') { // let self = this // setTimeout(function() {self.$refs[currentField.name]? self.$refs[currentField.name].focus() : false}, 50) diff --git a/app/components/datatable/CreateTemplate.vue b/app/components/datatable/CreateTemplate.vue index 1dd4602..ee8f408 100644 --- a/app/components/datatable/CreateTemplate.vue +++ b/app/components/datatable/CreateTemplate.vue @@ -1,5 +1,5 @@
@@ -456,61 +460,61 @@ import { ref } from "vue"; const store = useStore(); const { $id, $copy, $empty, $calc, $remove, $copyToClipboard } = useNuxtApp(); -var props = defineProps({ +const props = defineProps({ pagename: String, field: Object, }); -var colorscheme = store.colorscheme; -var colorchoice = store.colorchoice; -var pageData = store[props.pagename]; -var field = props.field; -var type = undefined; -var size = undefined; -var types = [ +let colorscheme = store.colorscheme; +let colorchoice = store.colorchoice; +let pageData = store[props.pagename]; +let field = props.field; +let type = undefined; +let size = undefined; +const types = [ { code: "span", name: "span" }, { code: "tag", name: "tag" }, ]; -var sizes = [ +const sizes = [ { code: "is-small", name: "Nhỏ", value: "is-size-6" }, { code: "is-normal", name: "Trung bình", value: "is-size-5" }, { code: "is-medium", name: "Lớn", value: "is-size-4" }, ]; -var shapes = [ +const shapes = [ { code: "default", name: "Mặc định" }, { code: "is-rounded", name: "Tròn góc" }, ]; -var shape = undefined; -var outlines = [ +let shape = undefined; +const outlines = [ { code: "default", name: "Mặc định" }, { code: "is-outlined", name: "Outline" }, ]; -var outline = undefined; -var conditions = [ +let outline = undefined; +const conditions = [ { code: "no", name: "Không áp dụng" }, { code: "yes", name: "Có áp dụng" }, ]; -var condition = undefined; +let condition = undefined; const tags = ref([]); -var selected = undefined; -var tabs = [ +let selected = undefined; +const tabs = [ { code: "selected", name: "Bước 1: Tạo nội dung" }, { code: "condition", name: "Bước 2: Đặt điều kiện" }, { code: "option", name: "Bước 3: Chọn màu, cỡ chữ" }, { code: "template", name: "Bước 4: Mã lệnh & áp dụng" }, ]; -var tab = ref(undefined); -var tagsField = []; -var errors = []; -var expression = ""; -var text = ref(null); -var radioBGcolor = undefined; -var radioColor = undefined; -var radioSize = undefined; -var bgcolor = undefined; -var color = undefined; -var textsize = undefined; -var source = undefined; -var target = $copy(field.name); +const tab = ref(undefined); +let tagsField = []; +let errors = []; +let expression = ""; +const text = ref(null); +let radioBGcolor = undefined; +let radioColor = undefined; +let radioSize = undefined; +let bgcolor = undefined; +let color = undefined; +let textsize = undefined; +let source = undefined; +let target = $copy(field.name); const initData = function () { type = types.find((v) => v.code === "tag"); @@ -653,5 +657,4 @@ const getSpanClass = function (v) { return value; }; initData(); -var docid = $id(); diff --git a/app/components/datatable/DataTable.vue b/app/components/datatable/DataTable.vue index 3a80d48..f190eea 100644 --- a/app/components/datatable/DataTable.vue +++ b/app/components/datatable/DataTable.vue @@ -167,26 +167,26 @@ function dynamicComponent(htmlString) { }, }); } -var timer = undefined; -var showPaging = ref(false); -var totalRows = ref(0); -var currentPage = 1; -var displayFields = ref([]); -var displayData = []; -var pagedata = store[props.pagename]; +let timer = undefined; +const showPaging = ref(false); +const totalRows = ref(0); +let currentPage = 1; +const displayFields = ref([]); +let displayData = []; +let pagedata = store[props.pagename]; let tablesetting = $copy(isEmpty(pagedata.tablesetting) ? store.tablesetting : pagedata.tablesetting); if (!Array.isArray(tablesetting)) { tablesetting = Object.values(tablesetting); } -var perPage = Number($find(tablesetting, { code: "per-page" }, "detail")) || 20; -var filters = $copy(pagedata.filters || []); -var currentField; -var filterData = []; -var currentsetting; -var scrollbar; -var fields; -var currentRow; -var data = $copy(pagedata.data); +let perPage = Number($find(tablesetting, { code: "per-page" }, "detail")) || 20; +let filters = $copy(pagedata.filters || []); +let currentField; +let filterData = []; +let currentsetting; +let scrollbar; +let fields; +let currentRow; +let data = $copy(pagedata.data); const showmodal = ref(); watch( () => store[props.pagename], @@ -428,7 +428,7 @@ const frontendFilter = function (newVal) { } }; newVal = $copy(newVal); - var data = $copy(pagedata.data); + let data = $copy(pagedata.data); newVal .filter((m) => m.select || m.filter) .map((v) => { @@ -487,14 +487,14 @@ const doSelect = function (value) { updateShow(); }; const doubleScroll = function (element) { - var _scrollbar = document.createElement("div"); + const _scrollbar = document.createElement("div"); _scrollbar.appendChild(document.createElement("div")); _scrollbar.style.overflow = "auto"; _scrollbar.style.overflowY = "hidden"; _scrollbar.firstChild.style.width = element.scrollWidth + "px"; _scrollbar.firstChild.style.height = "1px"; _scrollbar.firstChild.appendChild(document.createTextNode("\xA0")); - var running = false; + let running = false; _scrollbar.onscroll = function () { if (running) { running = false; diff --git a/app/components/datatable/FilterOption.vue b/app/components/datatable/FilterOption.vue index 88baced..ca3d3af 100644 --- a/app/components/datatable/FilterOption.vue +++ b/app/components/datatable/FilterOption.vue @@ -204,7 +204,7 @@ export default { changeStyle() { let check = this.field.format === "number" ? this.checkExpression() : this.checkCondition(); if (!check) return; - var row = + const row = this.field.format === "number" ? { expression: this.expression, diff --git a/app/components/datatable/FormatOption.vue b/app/components/datatable/FormatOption.vue index 246b6ec..ae7b292 100644 --- a/app/components/datatable/FormatOption.vue +++ b/app/components/datatable/FormatOption.vue @@ -36,7 +36,7 @@ />

Copy @@ -225,22 +220,20 @@

- + v-bind="{ pagename }" + /> - + /> diff --git a/app/components/people/PeopleInfo.vue b/app/components/people/PeopleInfo.vue index ccce926..9141c1f 100644 --- a/app/components/people/PeopleInfo.vue +++ b/app/components/people/PeopleInfo.vue @@ -257,7 +257,7 @@ import InputEmail from "~/components/common/InputEmail"; import SearchBox from "~/components/SearchBox"; import Datepicker from "~/components/datepicker/Datepicker"; -var props = defineProps({ +const props = defineProps({ pagename: String, row: Object, }); @@ -277,29 +277,28 @@ const { $updatepage, } = useNuxtApp(); const emit = defineEmits(["update"]); -var viewport = store.viewport; -var companyAddon = { +const companyAddon = { component: "customer/Company", with: "55%", height: "400px", title: findLang("company"), }; -var companyviewAddon = { +const companyviewAddon = { component: "customer/Company", width: "50%", height: "400px", title: findLang("company"), }; -var errors = ref({}); -var record = ref(); -var showmodal = ref(); -var existedPeople = undefined; +const errors = ref({}); +const record = ref(); +const showmodal = ref(); +let existedPeople = undefined; async function initData() { if (props.row) { - let conn = $findapi("people"); + const conn = $findapi("people"); conn.params.filter = { id: props.row.customer || props.row.id }; - let rs = await $getapi([conn]); - let found = $find(rs, { name: "people" }); + const rs = await $getapi([conn]); + const found = $find(rs, { name: "people" }); if (found.data.rows.length > 0) record.value = found.data.rows[0]; } else { // let code = await $getdata('getcodepeople') @@ -307,7 +306,7 @@ async function initData() { } } function findLang(code) { - let found = $find(store.common, { code: code }); + const found = $find(store.common, { code }); return found ? found[store.lang] : ""; } function showPeople() { diff --git a/app/plugins/01-common.js b/app/plugins/01-common.js index 7f91398..1c465fa 100644 --- a/app/plugins/01-common.js +++ b/app/plugins/01-common.js @@ -176,7 +176,7 @@ export default defineNuxtPlugin((nuxtApp) => { if (obj1[v] !== obj2[v]) change = true; }); } else { - for (var k in obj1) { + for (const k in obj1) { if (obj1[k] !== obj2[k]) change = true; } } @@ -201,7 +201,7 @@ export default defineNuxtPlugin((nuxtApp) => { // IE specific code path to prevent textarea being shown while dialog is visible. return clipboardData.setData("Text", text); } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) { - var textarea = document.createElement("textarea"); + const textarea = document.createElement("textarea"); textarea.textContent = text; textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in MS Edge. document.body.appendChild(textarea); @@ -308,9 +308,9 @@ export default defineNuxtPlugin((nuxtApp) => { }; const vnmoney = function (amount) { - var readGroup = function (group) { - let readDigit = [" Không", " Một", " Hai", " Ba", " Bốn", " Năm", " Sáu", " Bảy", " Tám", " Chín"]; - var temp = ""; + const readGroup = function (group) { + const readDigit = [" Không", " Một", " Hai", " Ba", " Bốn", " Năm", " Sáu", " Bảy", " Tám", " Chín"]; + let temp = ""; if (group == "000") return ""; temp = readDigit[parseInt(group.substring(0, 1))] + " Trăm"; if (group.substring(1, 2) == "0") @@ -324,8 +324,8 @@ export default defineNuxtPlugin((nuxtApp) => { else if (group.substring(2, 3) != "0") temp += readDigit[parseInt(group.substring(2, 3))]; return temp; }; - var readMoney = function (num) { - if (num == null || num == "") return ""; + const readMoney = function (num) { + if ($empty(num)) return ""; let temp = ""; while (num.length < 18) { num = "0" + num; @@ -450,22 +450,20 @@ export default defineNuxtPlugin((nuxtApp) => { }; const numberToVietnamese = (input) => { - if (input === null || input === undefined || input === "") return ""; + if ($empty(input)) return ""; - var number = Number(input); + let number = Number(input); if (isNaN(number) || number < 0 || number % 1 !== 0) return ""; - if (number === 0) return "Không"; - var units = ["không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"]; - - var scales = ["", "nghìn", "triệu", "tỷ", "nghìn tỷ", "triệu tỷ"]; + const units = ["không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"]; + const scales = ["", "nghìn", "triệu", "tỷ", "nghìn tỷ", "triệu tỷ"]; function readThreeDigits(num, isFull) { - var result = ""; - var hundred = Math.floor(num / 100); - var ten = Math.floor((num % 100) / 10); - var unit = num % 10; + let result = ""; + const hundred = Math.floor(num / 100); + const ten = Math.floor((num % 100) / 10); + const unit = num % 10; if (hundred > 0 || isFull) { result += units[hundred] + " trăm"; @@ -488,14 +486,14 @@ export default defineNuxtPlugin((nuxtApp) => { return result.trim(); } - var result = ""; - var scaleIndex = 0; + let result = ""; + let scaleIndex = 0; while (number > 0) { - var chunk = number % 1000; + let chunk = number % 1000; if (chunk > 0) { - var isFull = result !== ""; + const isFull = result !== ""; result = readThreeDigits(chunk, isFull) + (scales[scaleIndex] ? " " + scales[scaleIndex] : "") + diff --git a/app/plugins/02-connection.js b/app/plugins/02-connection.js index 861c62d..af9701d 100644 --- a/app/plugins/02-connection.js +++ b/app/plugins/02-connection.js @@ -186,8 +186,8 @@ export default defineNuxtPlugin((nuxtApp) => { }; const findpage = function (arr) { - var copy = $copy(store.pagetrack); - var doFind = function () { + const copy = $copy(store.pagetrack); + function doFind() { let found = undefined; for (let i = 1; i <= 30; i++) { let name = `pagedata${i}`; @@ -199,7 +199,7 @@ export default defineNuxtPlugin((nuxtApp) => { } if (!found) console.log("pagename not found"); return found; - }; + } let result; if (arr) { result = [];