diff --git a/src/api/open/openProduct.js b/src/api/open/openProduct.js new file mode 100644 index 0000000000000000000000000000000000000000..c63ddf64d2e4ffcec868352af58a1dc28684aa3d --- /dev/null +++ b/src/api/open/openProduct.js @@ -0,0 +1,167 @@ +import { request } from '@/utils/request.js' + +/** + * 商品 API JS + */ + +export default { + + /** + * 获取商品分页列表 + * @returns + */ + getList (params = {}) { + return request({ + url: 'open/product/index', + method: 'get', + params + }) + }, + + /** + * 添加商品 + * @returns + */ + save (data = {}) { + return request({ + url: 'open/product/save', + method: 'post', + data + }) + }, + + /** + * 更新商品数据 + * @returns + */ + update (id, data = {}) { + return request({ + url: 'open/product/update/' + id, + method: 'put', + data + }) + }, + + /** + * 读取商品 + * @returns + */ + read (data = {}) { + return request({ + url: 'open/product/read', + method: 'get', + data + }) + }, + + /** + * 将商品删除,有软删除则移动到回收站 + * @returns + */ + deletes (data) { + return request({ + url: 'open/product/delete', + method: 'delete', + data + }) + }, + + /** + * 从回收站获取商品数据列表 + * @returns + */ + getRecycleList (params = {}) { + return request({ + url: 'open/product/recycle', + method: 'get', + params + }) + }, + + /** + * 恢复商品数据 + * @returns + */ + recoverys (data) { + return request({ + url: 'open/product/recovery', + method: 'put', + data + }) + }, + + /** + * 真实删除商品 + * @returns + */ + realDeletes (data) { + return request({ + url: 'open/product/realDelete', + method: 'delete', + data + }) + }, + + /** + * 更改商品数据 + * @returns + */ + changeStatus (data = {}) { + return request({ + url: 'open/product/changeStatus', + method: 'put', + data + }) + }, + + /** + * 修改商品数值数据,自增自减 + * @returns + */ + numberOperation (data = {}) { + return request({ + url: 'open/product/numberOperation', + method: 'put', + data + }) + }, + + /** + * 商品导入 + * @returns + */ + importExcel (data = {}) { + return request({ + url: 'open/product/import', + method: 'post', + data + }) + }, + + /** + * 商品下载模板 + * @returns + */ + downloadTemplate () { + return request({ + url: 'open/product/downloadTemplate', + method: 'post', + responseType: 'blob' + }) + }, + + /** + * 商品导出 + * @returns + */ + exportExcel (params = {}) { + return request({ + url: 'open/product/export', + method: 'post', + responseType: 'blob', + params + }) + }, + + +} \ No newline at end of file diff --git a/src/components/ma-crud/index.vue b/src/components/ma-crud/index.vue index b8c630d0b75382fe86540e015037213a36e72df7..742431f5a59b4ce5a74e0a3ea06bc39fab443137 100644 --- a/src/components/ma-crud/index.vue +++ b/src/components/ma-crud/index.vue @@ -211,7 +211,9 @@ v-model="columns" v-model:crud="defaultCrud" @success="requestSuccess" - /> + > + + { if (defaultCrud.value.operationColumn && columns.value.length > 0 && columns.value[columns.value.length - 1].dataIndex !== '__operation') { columns.value.push({ title: defaultCrud.value.operationColumnText, dataIndex: '__operation', width: defaultCrud.value.operationWidth, align: 'right', fixed: 'right' }) } + columns.value.forEach(item => { + item.width = defaultCrud.value.columnWidth + }) + console.log(columns) showSearch.value = true initRequestParams() await refresh() diff --git a/src/components/ma-form/index.vue b/src/components/ma-form/index.vue index 7e5bfd52f2feeab77c6009154f037451a9c9bea8..dc8e954c2c868022836864190649a52eac73752f 100644 --- a/src/components/ma-form/index.vue +++ b/src/components/ma-form/index.vue @@ -593,6 +593,7 @@ const done = (status) => formLoading.value = status const requestDict = (url, method, params, data, timeout = 10 * 1000) => request({ url, method, params, data, timeout }) const init = () => { + console.log(11111) formLoading.value = true const allowRequestFormType = ['radio', 'checkbox', 'select', 'transfer', 'treeSelect', 'tree-select', 'cascader'] const allowCoverFormType = ['radio', 'checkbox', 'select', 'transfer'] @@ -610,6 +611,7 @@ const init = () => { }) columns.value.map(async item => { + console.log(item) if (! form.value[item.dataIndex] && typeof form.value[item.dataIndex] == 'undefined') { form.value[item.dataIndex] = undefined @@ -632,7 +634,7 @@ const init = () => { } else if (item.dict.url) { const response = await requestDict(item.dict.url, item.dict.method || 'GET', item.dict.params || {}, item.dict.body || {}) if (response.data) { - formDictData.value[item.dataIndex] = handlerProps(allowCoverFormType, item, response.data) + formDictData.value[item.dataIndex] = typeof item.dict.success == 'function' ? item.dict.success(allowCoverFormType, item, response.data) : handlerProps(allowCoverFormType, item, response.data) } } else if (item.dict.data) { if (isArray(item.dict.data)) { diff --git a/src/views/open/product/index.vue b/src/views/open/product/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..06f7ed0ce99a58db47f685c25755b12390415be0 --- /dev/null +++ b/src/views/open/product/index.vue @@ -0,0 +1,345 @@ + + + \ No newline at end of file