diff --git a/package.json b/package.json index c4a3fc7..aa580fa 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@vueuse/core": "10.11.0", "axios": "0.28.1", "echarts": "5.5.1", - "element-plus": "2.7.6", + "element-plus": "^2.9.0", "file-saver": "2.0.5", "fuse.js": "6.6.2", "js-cookie": "3.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f46ac35..380f68d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: 5.5.1 version: 5.5.1 element-plus: - specifier: 2.7.6 - version: 2.7.6(vue@3.4.31) + specifier: ^2.9.0 + version: 2.9.0(vue@3.4.31) file-saver: specifier: 2.0.5 version: 2.0.5 @@ -1042,8 +1042,8 @@ packages: echarts@5.5.1: resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} - element-plus@2.7.6: - resolution: {integrity: sha512-36sw1K23hYjgeooR10U6CiCaCp2wvOqwoFurADZVlekeQ9v5U1FhJCFGEXO6i/kZBBMwsE1c9fxjLs9LENw2Rg==} + element-plus@2.9.0: + resolution: {integrity: sha512-ccOFXKsauo2dtokAr4OX7gZsb7TuAoVxA2zGRZo5o2yyDDBLBaZxOoFQPoxITSLcHbBfQuNDGK5Iag5hnyKkZA==} peerDependencies: vue: ^3.2.0 @@ -3148,7 +3148,7 @@ snapshots: tslib: 2.3.0 zrender: 5.6.0 - element-plus@2.7.6(vue@3.4.31): + element-plus@2.9.0(vue@3.4.31): dependencies: '@ctrl/tinycolor': 3.6.1 '@element-plus/icons-vue': 2.3.1(vue@3.4.31) diff --git a/src/api/customer/info.js b/src/api/customer/info.js new file mode 100644 index 0000000..504dad1 --- /dev/null +++ b/src/api/customer/info.js @@ -0,0 +1,44 @@ +import request from "@/utils/request"; + +// 查询客户信息列表 +export function listCustomer(query) { + return request({ + url: "/business/customer/list", + method: "get", + params: query, + }); +} + +// 查询客户信息详细 +export function getCustomer(id) { + return request({ + url: "/business/customer/" + id, + method: "get", + }); +} + +// 新增客户信息 +export function addCustomer(data) { + return request({ + url: "/business/customer", + method: "post", + data: data, + }); +} + +// 修改客户信息 +export function updateCustomer(data) { + return request({ + url: "/business/customer", + method: "put", + data: data, + }); +} + +// 删除客户信息 +export function delCustomer(id) { + return request({ + url: "/business/customer/" + id, + method: "delete", + }); +} diff --git a/src/api/customer/member.js b/src/api/customer/member.js new file mode 100644 index 0000000..65eefd0 --- /dev/null +++ b/src/api/customer/member.js @@ -0,0 +1,44 @@ +import request from "@/utils/request"; + +// 查询客户人员信息列表 +export function listCustomerStaff(query) { + return request({ + url: "/business/customerStaff/list", + method: "get", + params: query, + }); +} + +// 查询客户人员信息详细 +export function getCustomerStaff(id) { + return request({ + url: "/business/customerStaff/" + id, + method: "get", + }); +} + +// 新增客户人员信息 +export function addCustomerStaff(data) { + return request({ + url: "/business/customerStaff", + method: "post", + data: data, + }); +} + +// 修改客户人员信息 +export function updateCustomerStaff(data) { + return request({ + url: "/business/customerStaff", + method: "put", + data: data, + }); +} + +// 删除客户人员信息 +export function delCustomerStaff(id) { + return request({ + url: "/business/customerStaff/" + id, + method: "delete", + }); +} diff --git a/src/api/product/category.js b/src/api/product/category.js index 2affe58..3229487 100644 --- a/src/api/product/category.js +++ b/src/api/product/category.js @@ -3,7 +3,7 @@ import request from "@/utils/request"; // 查询分类列表 export function listCategory(query) { return request({ - url: "/system/category/list", + url: "/business/category/list", method: "get", params: query, }); @@ -12,7 +12,7 @@ export function listCategory(query) { // 查询分类详细 export function getCategory(id) { return request({ - url: "/system/category/" + id, + url: "/business/category/" + id, method: "get", }); } @@ -20,7 +20,7 @@ export function getCategory(id) { // 新增分类 export function addCategory(data) { return request({ - url: "/system/category", + url: "/business/category", method: "post", data: data, }); @@ -29,7 +29,7 @@ export function addCategory(data) { // 修改分类 export function updateCategory(data) { return request({ - url: "/system/category", + url: "/business/category", method: "put", data: data, }); @@ -38,7 +38,7 @@ export function updateCategory(data) { // 删除分类 export function delCategory(id) { return request({ - url: "/system/category/" + id, + url: "/business/category/" + id, method: "delete", }); } diff --git a/src/api/product/productsCategory.js b/src/api/product/productsCategory.js new file mode 100644 index 0000000..53b59e2 --- /dev/null +++ b/src/api/product/productsCategory.js @@ -0,0 +1,44 @@ +import request from "@/utils/request"; + +// 查询产品品类列表 +export function listProductsCategory(query) { + return request({ + url: "/business/productsCategory/list", + method: "get", + params: query, + }); +} + +// 查询产品品类详细 +export function getProductsCategory(id) { + return request({ + url: "/business/productsCategory/" + id, + method: "get", + }); +} + +// 新增产品品类 +export function addProductsCategory(data) { + return request({ + url: "/business/productsCategory", + method: "post", + data: data, + }); +} + +// 修改产品品类 +export function updateProductsCategory(data) { + return request({ + url: "/business/productsCategory", + method: "put", + data: data, + }); +} + +// 删除产品品类 +export function delProductsCategory(id) { + return request({ + url: "/business/productsCategory/" + id, + method: "delete", + }); +} diff --git a/src/api/product/productsRecord.js b/src/api/product/productsRecord.js new file mode 100644 index 0000000..8860835 --- /dev/null +++ b/src/api/product/productsRecord.js @@ -0,0 +1,44 @@ +import request from "@/utils/request"; + +// 查询产品归档列表 +export function listProductsRecord(query) { + return request({ + url: "/business/products/list", + method: "get", + params: query, + }); +} + +// 查询产品归档详细 +export function getProductsRecord(id) { + return request({ + url: "/business/products/" + id, + method: "get", + }); +} + +// 新增产品归档 +export function addProductsRecord(data) { + return request({ + url: "/business/products", + method: "post", + data: data, + }); +} + +// 修改产品归档 +export function updateProductsRecord(data) { + return request({ + url: "/business/products", + method: "put", + data: data, + }); +} + +// 删除产品归档 +export function delProductsRecord(id) { + return request({ + url: "/business/products/" + id, + method: "delete", + }); +} diff --git a/src/api/product/productsType.js b/src/api/product/productsType.js new file mode 100644 index 0000000..900b64a --- /dev/null +++ b/src/api/product/productsType.js @@ -0,0 +1,44 @@ +import request from "@/utils/request"; + +// 查询产品类型列表 +export function listProductsType(query) { + return request({ + url: "/business/productsType/list", + method: "get", + params: query, + }); +} + +// 查询产品类型详细 +export function getProductsType(id) { + return request({ + url: "/business/productsType/" + id, + method: "get", + }); +} + +// 新增产品类型 +export function addProductsType(data) { + return request({ + url: "/business/productsType", + method: "post", + data: data, + }); +} + +// 修改产品类型 +export function updateProductsType(data) { + return request({ + url: "/business/productsType", + method: "put", + data: data, + }); +} + +// 删除产品类型 +export function delProductsType(id) { + return request({ + url: "/business/productsType/" + id, + method: "delete", + }); +} diff --git a/src/api/supplier/record.js b/src/api/supplier/record.js new file mode 100644 index 0000000..a4b83fa --- /dev/null +++ b/src/api/supplier/record.js @@ -0,0 +1,44 @@ +import request from "@/utils/request"; + +// 查询供应商档案信息列表 +export function listSupplierRecord(query) { + return request({ + url: "/business/supplier/list", + method: "get", + params: query, + }); +} + +// 查询供应商档案信息详细 +export function getSupplierRecord(id) { + return request({ + url: "/business/supplier/" + id, + method: "get", + }); +} + +// 新增供应商档案信息 +export function addSupplierRecord(data) { + return request({ + url: "/business/supplier", + method: "post", + data: data, + }); +} + +// 修改供应商档案信息 +export function updateSupplierRecord(data) { + return request({ + url: "/business/supplier", + method: "put", + data: data, + }); +} + +// 删除供应商档案信息 +export function delSupplierRecord(id) { + return request({ + url: "/business/supplier/" + id, + method: "delete", + }); +} diff --git a/src/hooks/useForm.js b/src/hooks/useForm.js index 123b9ec..ec4d3b0 100644 --- a/src/hooks/useForm.js +++ b/src/hooks/useForm.js @@ -8,14 +8,16 @@ * * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. */ -import { reactive } from "vue"; +import { reactive, ref } from "vue"; +// import { objectMerge } from "@/utils"; function useForm(formRef, defaultForm) { - const form = reactive({ ...defaultForm }); + // const form = reactive({ ...defaultForm }); + const form = ref({ ...defaultForm }); // 校验表单 function validateForm() { - formRef.validate((status, fields) => { + return formRef.value.validate((status, fields) => { return status ? Promise.resolve(status) : Promise.reject(fields); }); } @@ -23,8 +25,9 @@ function useForm(formRef, defaultForm) { // 重置表单 function resetForm(customForm) { const rForm = customForm || defaultForm; - form.value = { ...rForm }; - formRef.resetFields(); + form.value = rForm; + // objectMerge(form, rForm); + formRef.value && formRef.value.resetFields(); } return { form, validateForm, resetForm }; diff --git a/src/hooks/useRemote.js b/src/hooks/useRemote.js new file mode 100644 index 0000000..f433713 --- /dev/null +++ b/src/hooks/useRemote.js @@ -0,0 +1,17 @@ +import { reactive, ref } from "vue"; + +function useRemote() { + const loading = ref(false); + + async function remoteMethod(query, callback) { + if (!query) return; + + loading.value = true; + await callback(query); + loading.value = false; + } + + return { loading, remoteMethod }; +} + +export default useRemote; diff --git a/src/main.js b/src/main.js index b55541e..67cc414 100644 --- a/src/main.js +++ b/src/main.js @@ -35,6 +35,7 @@ import { selectDictLabel, selectDictLabels, } from "@/utils/ruoyi"; +import * as $utils from "./utils"; // 分页组件 import Pagination from "@/components/Pagination"; @@ -62,6 +63,7 @@ app.config.globalProperties.handleTree = handleTree; app.config.globalProperties.addDateRange = addDateRange; app.config.globalProperties.selectDictLabel = selectDictLabel; app.config.globalProperties.selectDictLabels = selectDictLabels; +app.config.globalProperties.$utils = $utils; // 全局组件挂载 app.component("DictTag", DictTag); diff --git a/src/utils/index.js b/src/utils/index.js index 4e65504..04e0810 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -1,18 +1,25 @@ -import { parseTime } from './ruoyi' +import { parseTime } from "./ruoyi"; /** * 表格时间格式化 */ export function formatDate(cellValue) { if (cellValue == null || cellValue == "") return ""; - var date = new Date(cellValue) - var year = date.getFullYear() - var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 - var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() - var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() - var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() - var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() - return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds + var date = new Date(cellValue); + var year = date.getFullYear(); + var month = + date.getMonth() + 1 < 10 + ? "0" + (date.getMonth() + 1) + : date.getMonth() + 1; + var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate(); + var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); + var minutes = + date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); + var seconds = + date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); + return ( + year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + ); } /** @@ -21,40 +28,40 @@ export function formatDate(cellValue) { * @returns {string} */ export function formatTime(time, option) { - if (('' + time).length === 10) { - time = parseInt(time) * 1000 + if (("" + time).length === 10) { + time = parseInt(time) * 1000; } else { - time = +time + time = +time; } - const d = new Date(time) - const now = Date.now() + const d = new Date(time); + const now = Date.now(); - const diff = (now - d) / 1000 + const diff = (now - d) / 1000; if (diff < 30) { - return '刚刚' + return "刚刚"; } else if (diff < 3600) { // less 1 hour - return Math.ceil(diff / 60) + '分钟前' + return Math.ceil(diff / 60) + "分钟前"; } else if (diff < 3600 * 24) { - return Math.ceil(diff / 3600) + '小时前' + return Math.ceil(diff / 3600) + "小时前"; } else if (diff < 3600 * 24 * 2) { - return '1天前' + return "1天前"; } if (option) { - return parseTime(time, option) + return parseTime(time, option); } else { return ( d.getMonth() + 1 + - '月' + + "月" + d.getDate() + - '日' + + "日" + d.getHours() + - '时' + + "时" + d.getMinutes() + - '分' - ) + "分" + ); } } @@ -63,18 +70,18 @@ export function formatTime(time, option) { * @returns {Object} */ export function getQueryObject(url) { - url = url == null ? window.location.href : url - const search = url.substring(url.lastIndexOf('?') + 1) - const obj = {} - const reg = /([^?&=]+)=([^?&=]*)/g + url = url == null ? window.location.href : url; + const search = url.substring(url.lastIndexOf("?") + 1); + const obj = {}; + const reg = /([^?&=]+)=([^?&=]*)/g; search.replace(reg, (rs, $1, $2) => { - const name = decodeURIComponent($1) - let val = decodeURIComponent($2) - val = String(val) - obj[name] = val - return rs - }) - return obj + const name = decodeURIComponent($1); + let val = decodeURIComponent($2); + val = String(val); + obj[name] = val; + return rs; + }); + return obj; } /** @@ -83,14 +90,14 @@ export function getQueryObject(url) { */ export function byteLength(str) { // returns the byte length of an utf8 string - let s = str.length + let s = str.length; for (var i = str.length - 1; i >= 0; i--) { - const code = str.charCodeAt(i) - if (code > 0x7f && code <= 0x7ff) s++ - else if (code > 0x7ff && code <= 0xffff) s += 2 - if (code >= 0xDC00 && code <= 0xDFFF) i-- + const code = str.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) s++; + else if (code > 0x7ff && code <= 0xffff) s += 2; + if (code >= 0xdc00 && code <= 0xdfff) i--; } - return s + return s; } /** @@ -98,13 +105,13 @@ export function byteLength(str) { * @returns {Array} */ export function cleanArray(actual) { - const newArray = [] + const newArray = []; for (let i = 0; i < actual.length; i++) { if (actual[i]) { - newArray.push(actual[i]) + newArray.push(actual[i]); } } - return newArray + return newArray; } /** @@ -112,13 +119,13 @@ export function cleanArray(actual) { * @returns {Array} */ export function param(json) { - if (!json) return '' + if (!json) return ""; return cleanArray( - Object.keys(json).map(key => { - if (json[key] === undefined) return '' - return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]) + Object.keys(json).map((key) => { + if (json[key] === undefined) return ""; + return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]); }) - ).join('&') + ).join("&"); } /** @@ -126,21 +133,21 @@ export function param(json) { * @returns {Object} */ export function param2Obj(url) { - const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') + const search = decodeURIComponent(url.split("?")[1]).replace(/\+/g, " "); if (!search) { - return {} + return {}; } - const obj = {} - const searchArr = search.split('&') - searchArr.forEach(v => { - const index = v.indexOf('=') + const obj = {}; + const searchArr = search.split("&"); + searchArr.forEach((v) => { + const index = v.indexOf("="); if (index !== -1) { - const name = v.substring(0, index) - const val = v.substring(index + 1, v.length) - obj[name] = val + const name = v.substring(0, index); + const val = v.substring(index + 1, v.length); + obj[name] = val; } - }) - return obj + }); + return obj; } /** @@ -148,9 +155,9 @@ export function param2Obj(url) { * @returns {string} */ export function html2Text(val) { - const div = document.createElement('div') - div.innerHTML = val - return div.textContent || div.innerText + const div = document.createElement("div"); + div.innerHTML = val; + return div.textContent || div.innerText; } /** @@ -160,21 +167,21 @@ export function html2Text(val) { * @returns {Object} */ export function objectMerge(target, source) { - if (typeof target !== 'object') { - target = {} + if (typeof target !== "object") { + target = {}; } if (Array.isArray(source)) { - return source.slice() + return source.slice(); } - Object.keys(source).forEach(property => { - const sourceProperty = source[property] - if (typeof sourceProperty === 'object') { - target[property] = objectMerge(target[property], sourceProperty) + Object.keys(source).forEach((property) => { + const sourceProperty = source[property]; + if (typeof sourceProperty === "object" && sourceProperty !== null) { + target[property] = objectMerge(target[property], sourceProperty); } else { - target[property] = sourceProperty + target[property] = sourceProperty; } - }) - return target + }); + return target; } /** @@ -183,18 +190,18 @@ export function objectMerge(target, source) { */ export function toggleClass(element, className) { if (!element || !className) { - return + return; } - let classString = element.className - const nameIndex = classString.indexOf(className) + let classString = element.className; + const nameIndex = classString.indexOf(className); if (nameIndex === -1) { - classString += '' + className + classString += "" + className; } else { classString = classString.substr(0, nameIndex) + - classString.substr(nameIndex + className.length) + classString.substr(nameIndex + className.length); } - element.className = classString + element.className = classString; } /** @@ -202,10 +209,10 @@ export function toggleClass(element, className) { * @returns {Date} */ export function getTime(type) { - if (type === 'start') { - return new Date().getTime() - 3600 * 1000 * 24 * 90 + if (type === "start") { + return new Date().getTime() - 3600 * 1000 * 24 * 90; } else { - return new Date(new Date().toDateString()) + return new Date(new Date().toDateString()); } } @@ -216,38 +223,38 @@ export function getTime(type) { * @return {*} */ export function debounce(func, wait, immediate) { - let timeout, args, context, timestamp, result + let timeout, args, context, timestamp, result; - const later = function() { + const later = function () { // 据上一次触发时间间隔 - const last = +new Date() - timestamp + const last = +new Date() - timestamp; // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait if (last < wait && last > 0) { - timeout = setTimeout(later, wait - last) + timeout = setTimeout(later, wait - last); } else { - timeout = null + timeout = null; // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 if (!immediate) { - result = func.apply(context, args) - if (!timeout) context = args = null + result = func.apply(context, args); + if (!timeout) context = args = null; } } - } + }; - return function(...args) { - context = this - timestamp = +new Date() - const callNow = immediate && !timeout + return function (...args) { + context = this; + timestamp = +new Date(); + const callNow = immediate && !timeout; // 如果延时不存在,重新设定延时 - if (!timeout) timeout = setTimeout(later, wait) + if (!timeout) timeout = setTimeout(later, wait); if (callNow) { - result = func.apply(context, args) - context = args = null + result = func.apply(context, args); + context = args = null; } - return result - } + return result; + }; } /** @@ -258,18 +265,18 @@ export function debounce(func, wait, immediate) { * @returns {Object} */ export function deepClone(source) { - if (!source && typeof source !== 'object') { - throw new Error('error arguments', 'deepClone') + if (!source && typeof source !== "object") { + throw new Error("error arguments", "deepClone"); } - const targetObj = source.constructor === Array ? [] : {} - Object.keys(source).forEach(keys => { - if (source[keys] && typeof source[keys] === 'object') { - targetObj[keys] = deepClone(source[keys]) + const targetObj = source.constructor === Array ? [] : {}; + Object.keys(source).forEach((keys) => { + if (source[keys] && typeof source[keys] === "object") { + targetObj[keys] = deepClone(source[keys]); } else { - targetObj[keys] = source[keys] + targetObj[keys] = source[keys]; } - }) - return targetObj + }); + return targetObj; } /** @@ -277,16 +284,16 @@ export function deepClone(source) { * @returns {Array} */ export function uniqueArr(arr) { - return Array.from(new Set(arr)) + return Array.from(new Set(arr)); } /** * @returns {string} */ export function createUniqueString() { - const timestamp = +new Date() + '' - const randomNum = parseInt((1 + Math.random()) * 65536) + '' - return (+(randomNum + timestamp)).toString(32) + const timestamp = +new Date() + ""; + const randomNum = parseInt((1 + Math.random()) * 65536) + ""; + return (+(randomNum + timestamp)).toString(32); } /** @@ -296,7 +303,7 @@ export function createUniqueString() { * @returns {boolean} */ export function hasClass(ele, cls) { - return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')) + return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)")); } /** @@ -305,7 +312,7 @@ export function hasClass(ele, cls) { * @param {string} cls */ export function addClass(ele, cls) { - if (!hasClass(ele, cls)) ele.className += ' ' + cls + if (!hasClass(ele, cls)) ele.className += " " + cls; } /** @@ -315,76 +322,73 @@ export function addClass(ele, cls) { */ export function removeClass(ele, cls) { if (hasClass(ele, cls)) { - const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)') - ele.className = ele.className.replace(reg, ' ') + const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)"); + ele.className = ele.className.replace(reg, " "); } } export function makeMap(str, expectsLowerCase) { - const map = Object.create(null) - const list = str.split(',') + const map = Object.create(null); + const list = str.split(","); for (let i = 0; i < list.length; i++) { - map[list[i]] = true + map[list[i]] = true; } - return expectsLowerCase - ? val => map[val.toLowerCase()] - : val => map[val] + return expectsLowerCase ? (val) => map[val.toLowerCase()] : (val) => map[val]; } - -export const exportDefault = 'export default ' + +export const exportDefault = "export default "; export const beautifierConf = { html: { - indent_size: '2', - indent_char: ' ', - max_preserve_newlines: '-1', + indent_size: "2", + indent_char: " ", + max_preserve_newlines: "-1", preserve_newlines: false, keep_array_indentation: false, break_chained_methods: false, - indent_scripts: 'separate', - brace_style: 'end-expand', + indent_scripts: "separate", + brace_style: "end-expand", space_before_conditional: true, unescape_strings: false, jslint_happy: false, end_with_newline: true, - wrap_line_length: '110', + wrap_line_length: "110", indent_inner_html: true, comma_first: false, e4x: true, - indent_empty_lines: true + indent_empty_lines: true, }, js: { - indent_size: '2', - indent_char: ' ', - max_preserve_newlines: '-1', + indent_size: "2", + indent_char: " ", + max_preserve_newlines: "-1", preserve_newlines: false, keep_array_indentation: false, break_chained_methods: false, - indent_scripts: 'normal', - brace_style: 'end-expand', + indent_scripts: "normal", + brace_style: "end-expand", space_before_conditional: true, unescape_strings: false, jslint_happy: true, end_with_newline: true, - wrap_line_length: '110', + wrap_line_length: "110", indent_inner_html: true, comma_first: false, e4x: true, - indent_empty_lines: true - } -} + indent_empty_lines: true, + }, +}; // 首字母大小 export function titleCase(str) { - return str.replace(/( |^)[a-z]/g, L => L.toUpperCase()) + return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase()); } // 下划转驼峰 export function camelCase(str) { - return str.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase()) + return str.replace(/_[a-z]/g, (str1) => str1.substr(-1).toUpperCase()); } export function isNumberStr(str) { - return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str) + return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str); } - diff --git a/src/views/customer/info/index.vue b/src/views/customer/info/index.vue new file mode 100644 index 0000000..77f7277 --- /dev/null +++ b/src/views/customer/info/index.vue @@ -0,0 +1,307 @@ + + + + + diff --git a/src/views/customer/member/index.vue b/src/views/customer/member/index.vue new file mode 100644 index 0000000..706227d --- /dev/null +++ b/src/views/customer/member/index.vue @@ -0,0 +1,311 @@ + + + diff --git a/src/views/product/category/index.vue b/src/views/product/category/index.vue index 6c8e42c..a7311f7 100644 --- a/src/views/product/category/index.vue +++ b/src/views/product/category/index.vue @@ -1,120 +1,125 @@ diff --git a/src/views/product/productRecord/index.vue b/src/views/product/productRecord/index.vue new file mode 100644 index 0000000..9d61883 --- /dev/null +++ b/src/views/product/productRecord/index.vue @@ -0,0 +1,294 @@ + + + diff --git a/src/views/product/productType/index.vue b/src/views/product/productType/index.vue new file mode 100644 index 0000000..2839404 --- /dev/null +++ b/src/views/product/productType/index.vue @@ -0,0 +1,278 @@ + + + diff --git a/src/views/supplier/record/index.vue b/src/views/supplier/record/index.vue new file mode 100644 index 0000000..1938a4a --- /dev/null +++ b/src/views/supplier/record/index.vue @@ -0,0 +1,479 @@ + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index df624d3..37f5109 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -1,249 +1,375 @@