From 2193f1e8240e2a0ed5900dddc6347a1d9db081cf Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期四, 21 九月 2023 14:38:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
server/service/src/main/java/com/doumee/core/utils/ImageUtil.java | 172 ++++++++
platform/src/views/system/user.vue | 5
h5/main.js | 5
platform/src/views/business/company.vue | 18
company_admin/src/api/system/menu.js | 2
platform/package.json | 2
server/zhubo/src/main/java/com/doumee/api/business/WebParamController.java | 1
h5/package-lock.json | 32 +
h5/apis/index.js | 2
h5/pages/index/index.vue | 103 ++++
platform/src/utils/request.js | 4
server/zhubo/src/main/resources/application.yml | 2
platform/src/components/business/OperaCompanyUserWindow.vue | 10
platform/src/components/business/OperaGoodsWindow.vue | 8
platform/.env.production | 11
h5/static/default_nodata@2x.png | 0
h5/components/bigImg1.vue | 140 ++++++
h5/components/noData.vue | 27 +
platform/.env.development | 6
platform/src/components/common/GlobalAlertWindow.vue | 1
platform/src/views/business/category.vue | 9
platform/src/api/business/fileRecord.js | 8
platform/src/views/business/fileRecord.vue | 119 +++++
platform/src/components/business/OperaCompanyWindow.vue | 46 +
h5/components/bigImg.vue | 4
server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java | 9
platform/src/assets/logo.png | 0
platform/src/components/system/user/OperaUserWindow.vue | 6
server/company/src/main/resources/application.yml | 2
platform/public/favicon.ico | 0
platform/public/template/goods_import_modle.xlsx | 0
server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java | 5
output.jpg | 0
platform/src/utils/form.js | 83 +++
company_admin/.env.development | 8
company_admin/src/views/business/goods.vue | 320 +++++++-------
platform/src/views/business/goods.vue | 43 +
server/platform/src/main/resources/application.yml | 2
38 files changed, 959 insertions(+), 256 deletions(-)
diff --git a/company_admin/.env.development b/company_admin/.env.development
index d53d032..02e8212 100644
--- a/company_admin/.env.development
+++ b/company_admin/.env.development
@@ -3,8 +3,12 @@
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
-VUE_APP_API = 'http://192.168.0.15:10022/'
+<<<<<<< HEAD
+VUE_APP_API = 'http://192.168.0.35:10022/'
+=======
+# VUE_APP_API = 'http://192.168.0.15:10024/'
+>>>>>>> 3fbfdefe98e5d35e32d74138ce73a1b4e2fe5465
-# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_web_interface/'
+VUE_APP_API = 'https://dmtest.ahapp.net/preselect_web_interface/'
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
\ No newline at end of file
diff --git a/company_admin/src/api/system/menu.js b/company_admin/src/api/system/menu.js
index 19f25a0..0d3d593 100644
--- a/company_admin/src/api/system/menu.js
+++ b/company_admin/src/api/system/menu.js
@@ -36,7 +36,7 @@
// 鏌ヨ鑿滃崟鏍�
export function fetchMenuTree () {
- return request.get('/system/menu/treeNodes')
+ return request.get('/system/menu/treeNodes?type=1')
}
// 鎺掑簭
diff --git a/company_admin/src/views/business/goods.vue b/company_admin/src/views/business/goods.vue
index ff3547d..48e5642 100644
--- a/company_admin/src/views/business/goods.vue
+++ b/company_admin/src/views/business/goods.vue
@@ -68,7 +68,7 @@
<el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
<el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
- <!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goods:delete']">鍒犻櫎</el-button></li> -->
+ <el-button style="background: red;border-color:red" type="primary" :loading="isWorking.export" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goods:delete']">鎵归噺鍒犻櫎</el-button>
</ul>
<el-table
v-loading="isWorking.search"
@@ -151,165 +151,165 @@
<selectProduct ref="selectProduct" @success="handlePageChange" @result="search"/>
</TableLayout>
</template>
-
- <script>
- import BaseTable from '@/components/base/BaseTable'
- import TableLayout from '@/layouts/TableLayout'
- import Pagination from '@/components/common/Pagination'
- import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
- import selectProduct from '@/components/business/selectProduct'
- import { brand, category, importExcel } from '@/api/system/common.js'
- import { updateDisableById, queryById, exportDoc, batchUpdateDisableById } from '@/api/business/goods.js'
- export default {
- name: 'Goods',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaGoodsWindow, selectProduct },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- name: '',
- status: '',
- categoryId: '',
- brandId: '',
- type: ''
- },
- ids: '',
- categoryList: [],
- brandList: [],
- statusList: [
- { name: '鍚敤', id: 0 },
- { name: '绂佺敤', id: 1 }
- ],
- typeList: [
- { name: '鑷缓', id: 0 },
- { name: '鎷夊彇', id: 1 }
- ]
- }
- },
- created () {
- this.config({
- module: '鍟嗗搧',
- api: '/business/goods',
- 'field.id': 'id',
- 'field.main': 'name'
- })
- this.search()
- this.getbrand()
- this.getcategory()
- },
- methods: {
- handleSelectionChange(e) {
- let arr = e.map(item => item.id)
- this.ids = arr.join(',')
- console.log(this.ids)
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
+import selectProduct from '@/components/business/selectProduct'
+import { brand, category, importExcel } from '@/api/system/common.js'
+import { updateDisableById, queryById, exportDoc, batchUpdateDisableById } from '@/api/business/goods.js'
+export default {
+ name: 'Goods',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaGoodsWindow, selectProduct },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ id: '',
+ name: '',
+ status: '',
+ categoryId: '',
+ brandId: '',
+ type: ''
},
- // 鎵归噺涓婁笅鏋�
- bulkOperation(type) {
- if (!this.ids) {
- this.$message.warning({ message: '鑷冲皯閫夋嫨涓�椤瑰唴瀹�' })
- return
- }
- batchUpdateDisableById({
- ids: this.ids,
- status: type
- }).then(res => {
- this.$message.success({ message: res })
- this.handlePageChange()
- })
- },
- downloadFile() {
- exportDoc({})
- .then(response => {
- this.download(response)
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- },
- rowStyle() {
- return "text-align:center";
- },
- importFile() {
- this.$refs.upload.click()
- },
- uplaodFile(e) {
- const FORMDATE = new FormData()
- FORMDATE.append('file', e.target.files[0])
- // 璇锋眰鎺ュ彛
- importExcel(FORMDATE)
- .then(res => {
- console.log(res)
- this.search()
- })
- .catch ((err) => {
- this.$message.error(err.message)
- })
- this.$refs.upload.value = null
- },
- edit(id) {
- queryById(id)
- .then(res => {
- let obj = {
- id: res.id,
- name: res.name,
- categoryId: res.categoryId,
- brandId: res.brandId,
- zdPrice: res.zdPrice,
- price: res.price,
- attrFirstIds: res.attrFirstIds ? this.turnNum(res.attrFirstIds.split(',')) : [],
- attrFirstNames: res.attrFirstNames,
- attrSecodIds: res.attrSecodIds ? this.turnNum(res.attrSecodIds.split(',')) : [],
- attrSecodNames: res.attrSecodNames,
- imgurl: res.imgurl,
- multifileList: [],
- files: [],
- ztList: res.imgurl ? [{ url: res.prefixUrl + res.imgurl }] : [],
- pzList: [],
- attrFirstList: [],
- attrSecodList: []
- }
- if (res.multifileList.length > 0) {
- res.multifileList.forEach(item => {
- obj.multifileList.push({ fileurl: item.fileurl, name: item.name, url: res.prefixUrl + item.fileurl })
- obj.files.push({ fileurl: item.fileurl, name: item.name, url: res.prefixUrl + item.fileurl })
- })
- }
- this.$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', obj)
- })
- },
- changeStatus(item) {
- updateDisableById({
- id: item.id,
- status: item.status
- }).then(res => {
- this.$tip.apiSuccess('鏇存柊鎴愬姛')
- }).finally(() => {
- this.search()
- }).catch(err => {
- this.$message.warning({ message: err.message })
- })
- },
- turnNum (nums) {
- for(let i=0;i<nums.length;i++){
- nums[i] = parseInt(nums[i])
- }
- return nums;
- },
- getbrand() {
- brand({})
- .then(res => {
- this.brandList = res
- })
- },
- getcategory() {
- category({})
- .then(res => {
- this.categoryList = res
- })
- }
+ ids: '',
+ categoryList: [],
+ brandList: [],
+ statusList: [
+ { name: '鍚敤', id: 0 },
+ { name: '绂佺敤', id: 1 }
+ ],
+ typeList: [
+ { name: '鑷缓', id: 0 },
+ { name: '鎷夊彇', id: 1 }
+ ]
}
+ },
+ created () {
+ this.config({
+ module: '鍟嗗搧',
+ api: '/business/goods',
+ 'field.id': 'id',
+ 'field.main': 'name'
+ })
+ this.search()
+ this.getbrand()
+ this.getcategory()
+ },
+ methods: {
+ // handleSelectionChange(e) {
+ // let arr = e.map(item => item.id)
+ // this.ids = arr.join(',')
+ // console.log(this.ids)
+ // },
+ // 鎵归噺涓婁笅鏋�
+ bulkOperation (type) {
+ if (this.tableData.selectedRows.length === 0) {
+ // if (!this.ids) {
+ this.$message.warning({ message: '鑷冲皯閫夋嫨涓�椤瑰唴瀹�' })
+ return
+ }
+ const idList = this.tableData.selectedRows.map(item => item.id)
+ batchUpdateDisableById({
+ ids: idList.join(','),
+ status: type
+ }).then(res => {
+ this.$message.success({ message: res })
+ this.handlePageChange()
+ })
+ },
+ downloadFile() {
+ exportDoc({})
+ .then(response => {
+ this.download(response)
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ },
+ rowStyle() {
+ return "text-align:center";
+ },
+ importFile() {
+ this.$refs.upload.click()
+ },
+ uplaodFile(e) {
+ const FORMDATE = new FormData()
+ FORMDATE.append('file', e.target.files[0])
+ // 璇锋眰鎺ュ彛
+ importExcel(FORMDATE)
+ .then(res => {
+ console.log(res)
+ this.search()
+ })
+ .catch ((err) => {
+ this.$message.error(err.message)
+ })
+ this.$refs.upload.value = null
+ },
+ edit(id) {
+ queryById(id)
+ .then(res => {
+ let obj = {
+ id: res.id,
+ name: res.name,
+ categoryId: res.categoryId,
+ brandId: res.brandId,
+ zdPrice: res.zdPrice,
+ price: res.price,
+ attrFirstIds: res.attrFirstIds ? this.turnNum(res.attrFirstIds.split(',')) : [],
+ attrFirstNames: res.attrFirstNames,
+ attrSecodIds: res.attrSecodIds ? this.turnNum(res.attrSecodIds.split(',')) : [],
+ attrSecodNames: res.attrSecodNames,
+ imgurl: res.imgurl,
+ multifileList: [],
+ files: [],
+ ztList: res.imgurl ? [{ url: res.prefixUrl + res.imgurl }] : [],
+ pzList: [],
+ attrFirstList: [],
+ attrSecodList: []
+ }
+ if (res.multifileList.length > 0) {
+ res.multifileList.forEach(item => {
+ obj.multifileList.push({ fileurl: item.fileurl, name: item.name, url: res.prefixUrl + item.fileurl })
+ obj.files.push({ fileurl: item.fileurl, name: item.name, url: res.prefixUrl + item.fileurl })
+ })
+ }
+ this.$refs.operaGoodsWindow.open('缂栬緫鍟嗗搧', obj)
+ })
+ },
+ changeStatus(item) {
+ updateDisableById({
+ id: item.id,
+ status: item.status
+ }).then(res => {
+ this.$tip.apiSuccess('鏇存柊鎴愬姛')
+ }).finally(() => {
+ this.search()
+ }).catch(err => {
+ this.$message.warning({ message: err.message })
+ })
+ },
+ turnNum (nums) {
+ for(let i=0;i<nums.length;i++){
+ nums[i] = parseInt(nums[i])
+ }
+ return nums;
+ },
+ getbrand() {
+ brand({})
+ .then(res => {
+ this.brandList = res
+ })
+ },
+ getcategory() {
+ category({})
+ .then(res => {
+ this.categoryList = res
+ })
+ }
}
- </script>
-
\ No newline at end of file
+}
+</script>
\ No newline at end of file
diff --git a/h5/apis/index.js b/h5/apis/index.js
index c98a957..a0a8c4c 100644
--- a/h5/apis/index.js
+++ b/h5/apis/index.js
@@ -31,7 +31,7 @@
}
// 鐧诲綍
-export function loginH5(data) {
+export function loginH5(data){
return post('system/loginH5', data)
}
diff --git a/h5/components/bigImg.vue b/h5/components/bigImg.vue
index ead3946..2cf1eef 100644
--- a/h5/components/bigImg.vue
+++ b/h5/components/bigImg.vue
@@ -6,8 +6,8 @@
<view class="img_content_tu_nr">
<swiper style="width: 100%; height: 100%;" @change="handlechange" :current="mycurrent" :indicator-dots="false" :circular="true" :interval="1000" :duration="1000">
<swiper-item v-for="(item,index) in imgList" :key="index">
- <view :class="['swiper-item',index==mycurrent ? 'active' : '']">
- <image :src="item" style="width: 100%;height: 100%;" mode="aspectFit" />
+ <view :class="['swiper-item',index == mycurrent ? 'active' : '']">
+ <image :src="item" style="width: 150%;height: 150%;" mode="aspectFit" />
</view>
</swiper-item>
</swiper>
diff --git a/h5/components/bigImg1.vue b/h5/components/bigImg1.vue
new file mode 100644
index 0000000..404f165
--- /dev/null
+++ b/h5/components/bigImg1.vue
@@ -0,0 +1,140 @@
+<template>
+ <view class="img" :style="{ opacity: opacity, zIndex: zindex }">
+ <view class="img_content">
+ <view class="img_content_tu">
+ <image class="left" src="@/static/ic_left@2x.png" mode="widthFix" @click="jian"></image>
+ <view class="img_content_tu_nr">
+ <swiper style="width: 100%; height: 100%;" @change="handlechange" :current="mycurrent" :indicator-dots="false" :circular="true" :interval="1000" :duration="1000">
+ <swiper-item v-for="(item,index) in imgList" :key="index">
+ <view :class="['swiper-item',index == mycurrent ? 'active' : '']">
+ <image :src="item" style="width: 100%;height: 100%;" mode="aspectFit" />
+ </view>
+ </swiper-item>
+ </swiper>
+ </view>
+ <image class="right" src="@/static/ic_right@2x.png" mode="widthFix" @click="add"></image>
+ </view>
+ <view class="img_content_close">
+ <image src="@/static/ic_close@2x.png" mode="widthFix" @click="close"></image>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ opacity: 0,
+ zindex: '-1',
+ mycurrent: 0
+ }
+ },
+ props: {
+ imgList: {
+ type: Array,
+ default: () => []
+ }
+ },
+ methods: {
+ add() {
+ if (this.imgList.length - 1 === this.mycurrent) return
+ this.mycurrent++
+ },
+ jian() {
+ if (this.mycurrent === 0) return
+ this.mycurrent--
+ },
+ handlechange(e){
+ this.mycurrent=e.detail.current
+ },
+ open(i) {
+ this.mycurrent = i
+ this.zindex = 3
+ this.opacity = 1
+ },
+ close() {
+ this.zindex = '-1'
+ this.opacity = 0
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .img {
+ width: 100vw;
+ height: 100vh;
+ background: rgba(0,0,0,0.4);
+ position: fixed;
+ transition: .2s;
+ top: 0;
+ left: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .img_content {
+ display: flex;
+ flex-direction: column;
+ .img_content_tu {
+ display: flex;
+ align-items: center;
+ .img_content_tu_nr {
+ width: 600px;
+ height: 600px;
+ padding: 30px;
+ box-sizing: border-box;
+ border-radius: 8px;
+ margin: 0 32px;
+ display: flex;
+ align-items: center;
+ flex-wrap: nowrap;
+ .swiper-item{
+ width: 100%;
+ border-radius: 30rpx;
+ overflow: hidden;
+ // 鍍忚繖绉嶅寮犺疆鎾浘鍚屾椂鍑虹幇鍦ㄤ竴灞忕殑鎯呭喌涓嬪氨涓嶈鎸囧畾width浜嗭紝涓嶇劧浣犱細鍙戠幇previous-margin鍜� next-margin浼氬嚭鐜版兂涓嶅埌鐨勬晥鏋�
+ // 濡傛灉鎯宠璁剧疆瀹芥瘡涓�寮犺疆鎾浘鐨勫搴︼紝鍙渶瑕佽缃畃revious-margin鍜宯ext-margin灏卞彲浠ヤ簡锛屾兂瑕佽缃珮搴︾洿鎺ユ敼涓嬮潰鐨刪eight灏卞彲浠ヤ簡
+ // width: 450rpx;
+ height: 100%;
+ // transform: scale(1);
+ // transition: all 0.5s ease;
+ text-align: center;
+ // transition: all 0.5s ease-in-out;
+ }
+ .img_content_tu_nr_item {
+ width: 100%;
+ height: 600px;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ }
+ .left {
+ width: 80px;
+ height: 80px;
+ cursor: pointer;
+ }
+ .right {
+ width: 80px;
+ height: 80px;
+ cursor: pointer;
+ }
+ }
+ .img_content_close {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-top: 40px;
+ image {
+ width: 60px;
+ height: 60px;
+ cursor: pointer;
+ }
+ }
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/components/noData.vue b/h5/components/noData.vue
new file mode 100644
index 0000000..35c85b8
--- /dev/null
+++ b/h5/components/noData.vue
@@ -0,0 +1,27 @@
+<template>
+ <view class="no">
+ <image src="@/static/default_nodata@2x.png" mode="widthFix"></image>
+ </view>
+</template>
+
+<script>
+ export default {
+ name:"noData"
+ }
+</script>
+
+<style lang="scss" scoped>
+ .no {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ // margin-top: 36px;
+ padding: 36px 0;
+ box-sizing: border-box;
+ image {
+ width: 268px;
+ height: 268px;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/main.js b/h5/main.js
index 7bead7b..e9c6651 100644
--- a/h5/main.js
+++ b/h5/main.js
@@ -7,6 +7,11 @@
import store from './store/index.js'
+import 'viewerjs/dist/viewer.css'
+import Viewer from 'v-viewer'
+
+Vue.use(Viewer)
+
Vue.prototype.$store = store;
try {
diff --git a/h5/package-lock.json b/h5/package-lock.json
new file mode 100644
index 0000000..839857b
--- /dev/null
+++ b/h5/package-lock.json
@@ -0,0 +1,32 @@
+{
+<<<<<<< HEAD
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "throttle-debounce": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+ "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="
+ },
+ "v-viewer": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/v-viewer/-/v-viewer-1.6.4.tgz",
+ "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+ "requires": {
+ "throttle-debounce": "^2.0.1",
+ "viewerjs": "^1.5.0"
+ }
+ },
+ "viewerjs": {
+ "version": "1.11.6",
+ "resolved": "https://registry.npmjs.org/viewerjs/-/viewerjs-1.11.6.tgz",
+ "integrity": "sha512-TlhdSp2oEOLFXvEp4psKaeTjR5zBjTRcM/sHUN8PkV1UWuY8HKC8n7GaVdW5Xqnwdr/F1OmzLik1QwDjI4w/nw=="
+ }
+ }
+=======
+ "name": "h5",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {}
+>>>>>>> 1ee5043af9ee5e53acb52a70fd93c4656e8bbb44
+}
diff --git a/h5/pages/index/index.vue b/h5/pages/index/index.vue
index 1571973..2336445 100644
--- a/h5/pages/index/index.vue
+++ b/h5/pages/index/index.vue
@@ -198,16 +198,19 @@
</view>
</view>
<view class="productPage_shop" v-if="status === 1 && !pkcontent">
- <view class="productPage_shop_item" v-for="(item, index) in isSOU ? shopPageDataSou : shopPageData" :key="index" @click="clickshoppageItem(item)">
- <view class="productPage_shop_item_img">
- <image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image>
+ <noData v-if="shopPageData.length === 0 && shopPageDataSou.length === 0" />
+ <template v-else>
+ <view class="productPage_shop_item" v-for="(item, index) in isSOU ? shopPageDataSou : shopPageData" :key="index" @click="clickshoppageItem(item)">
+ <view class="productPage_shop_item_img">
+ <image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image>
+ </view>
+ <!-- stringOperations(item.name, 6) -->
+ <text>{{item.name}}</text>
</view>
- <!-- stringOperations(item.name, 6) -->
- <text>{{item.name}}</text>
- </view>
- <view class="productPage_shop_zw"></view>
- <view class="productPage_shop_zw"></view>
- <view class="productPage_shop_zw"></view>
+ <view class="productPage_shop_zw"></view>
+ <view class="productPage_shop_zw"></view>
+ <view class="productPage_shop_zw"></view>
+ </template>
</view>
<!-- v-if="status === 2" -->
<view class="productPage_parameter" v-if="isPK && pkcontent">
@@ -227,7 +230,12 @@
</view>
</view>
<view class="productPage_parameter_item_content_nr">
- <view class="item" v-for="(child, i) in item.goodsParamList" :key="i">
+ <view class="item" v-if="item.param1" v-for="(child, i) in item.param1" :key="child.index">
+ <view class="label">{{child.name}}锛�</view>
+ <view class="value">{{child.val}}</view>
+ </view>
+ <view v-if="item.param2.length>0" class="paramline"></view>
+ <view class="item" v-if="item.param2" v-for="(child, j) in item.param2" :key="child.index">
<view class="label">{{child.name}}锛�</view>
<view class="value">{{child.val}}</view>
</view>
@@ -241,6 +249,10 @@
<!-- 鏌ョ湅澶у浘 -->
<bigImg
ref="bigImg"
+ :imgList="imgList"/>
+ <!-- 鏌ョ湅澶у浘 -->
+ <bigImg1
+ ref="bigImg1"
:imgList="imgList"/>
<!-- 鎼滅储 -->
@@ -259,7 +271,9 @@
<script>
import bigImg from '@/components/bigImg.vue'
+ import bigImg1 from '@/components/bigImg1.vue'
import search from '@/components/search.vue'
+ import noData from '@/components/noData.vue'
import { mapState } from 'vuex'
import { categoryList, goodsList, brandList, h5Image, goodsPage, listForH5 } from '@/apis/index.js'
export default {
@@ -338,7 +352,7 @@
page: 1
}
},
- components: { bigImg, search },
+ components: { bigImg, search, noData, bigImg1 },
onLoad() {
var that = this
// 鐩戝惉閿洏缁勫悎閿�
@@ -694,7 +708,12 @@
})
}
})
- this.$refs.bigImg.open(0)
+ // console.log(this.imgList)
+ this.$viewerApi({
+ images: this.imgList,
+ })
+ // this.$refs.bigImg.open(0)
+ // this.$refs.bigImg1.open(0)
},
empty() {
this.shopList = []
@@ -844,6 +863,51 @@
this.leftShop = JSON.parse(JSON.stringify(val))
} else if (this.$refs.search.typeName === 'right') {
this.rightShop = JSON.parse(JSON.stringify(val))
+ let leftParamList = this.leftShop.goodsParamList;
+ let rightParamList = this.rightShop.goodsParamList;
+ let leftList1 = new Array();
+ let leftList2 = new Array();
+ let rightList1 = new Array();
+ let rightList2 = new Array();
+ if(leftParamList && leftParamList.length>0){
+ leftParamList.forEach(item => {
+ let flag =0;
+ let rightTemp = null;
+ if(rightParamList && rightParamList.length>0){
+ rightParamList.forEach(item1 => {
+ if (item.name === item1.name ) {
+ flag =1;
+ rightTemp = item1;
+ return;
+ }
+ })
+ }
+ if(flag === 1){
+ leftList1.push(item);
+ rightList1.push(rightTemp);
+ }else{
+ leftList2.push(item);
+ }
+ })
+ }
+ if(rightParamList && rightParamList.length>0){
+ rightParamList.forEach(item=> {
+ let flag1 = 0;
+ rightList1.forEach(item1 => {
+ if (item.name === item1.name ) {
+ flag1 =1;
+ //return;
+ }
+ })
+ if(flag1 === 0){
+ rightList2.push(item);
+ }
+ })
+ }
+ Reflect.set(this.leftShop, "param1",leftList1);
+ Reflect.set(this.leftShop, "param2",leftList2);
+ Reflect.set(this.rightShop, "param1",rightList1);
+ Reflect.set(this.rightShop, "param2",rightList2);
} else {
this.shopList.push(JSON.parse(JSON.stringify(val)))
}
@@ -1135,7 +1199,7 @@
margin-top: 16px;
.commodityFrom_head {
width: 100%;
- height: 60px;
+ height: 45px;
padding: 10px 8px;
box-sizing: border-box;
background: rgba(0,224,255,0.24) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
@@ -1182,7 +1246,7 @@
flex-direction: column;
.commodityFrom_body_content_item {
width: 100%;
- height: 56px;
+ height: 45px;
display: flex;
align-items: center;
margin-bottom: 6px;
@@ -1203,7 +1267,7 @@
opacity: 0;
transform: translate(0%, 0%);
z-index: -1;
- height: 56px;
+ height: 45px;
display: flex;
align-items: center;
background: rgba(0,224,255,0.3);
@@ -1352,7 +1416,7 @@
}
.commodityFrom_body_total {
width: 100%;
- height: 56px;
+ height: 45px;
display: flex;
align-items: center;
.commodityFrom_body_total_item {
@@ -1444,7 +1508,6 @@
}
}
}
-
.productPage {
width: 100%;
padding: 0 22px;
@@ -1452,7 +1515,7 @@
margin-top: 16px;
.productPage_head {
width: 100%;
- height: 60px;
+ height: 45px;
display: flex;
align-items: center;
background: rgba(0,224,255,0.34) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
@@ -1792,6 +1855,10 @@
margin-top: 12px;
display: flex;
flex-direction: column;
+ .paramline{
+ border-bottom: #c7c9ce 2px dashed;
+ margin-bottom: 15px;
+ }
.item {
display: flex;
align-items: flex-start;
diff --git a/h5/static/default_nodata@2x.png b/h5/static/default_nodata@2x.png
new file mode 100644
index 0000000..0ef2f94
--- /dev/null
+++ b/h5/static/default_nodata@2x.png
Binary files differ
diff --git a/output.jpg b/output.jpg
new file mode 100644
index 0000000..29f702b
--- /dev/null
+++ b/output.jpg
Binary files differ
diff --git a/platform/.env.development b/platform/.env.development
index 360f8b7..c53b589 100644
--- a/platform/.env.development
+++ b/platform/.env.development
@@ -7,9 +7,9 @@
# 浠诲悍
# VUE_APP_API = 'http://192.168.0.15:10017/'
# 鐒︽澗
-VUE_APP_API = 'http://192.168.0.36:10011'
+VUE_APP_API = 'http://192.168.0.36:10023'
# 姹熻悕
-VUE_APP_API = 'http://192.168.0.35:10011'
+# VUE_APP_API = 'http://192.168.0.35:10023'
-#娴嬭瘯鏈嶅姟鍣�
+# #娴嬭瘯鏈嶅姟鍣�
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_admin_interface'
diff --git a/platform/.env.production b/platform/.env.production
index eb6b15b..5c2b951 100644
--- a/platform/.env.production
+++ b/platform/.env.production
@@ -1,12 +1,11 @@
# 鐢熶骇鐜閰嶇疆
NODE_ENV = 'production'
-# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
-VUE_APP_API = 'http://127.0.0.1/'
+VUE_APP_CONTEXT_PATH = '/admin'
+VUE_APP_API_PREFIX = '/admin_interface'
-# VUE_APP_API = 'https://dm.ahapp.net/preselect_interface/'
-# VUE_APP_API = 'http://yx.doumee.com/preselect_interface/'
-
-# VUE_APP_API = 'http://mjyx.doumee.com/preselect_interface/'
\ No newline at end of file
+# http://yx.ahapp.net/admin_interface/doc.html
+# VUE_APP_API = 'https://yx.ahapp.net/admin_interface'
+VUE_APP_API = 'http://127.0.0.1:10023/
\ No newline at end of file
diff --git a/platform/package.json b/platform/package.json
index bc7b751..14effa1 100644
--- a/platform/package.json
+++ b/platform/package.json
@@ -4,7 +4,7 @@
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
- "build": "vue-cli-service build",
+ "build:pro": "vue-cli-service build",
"build:dev": "vue-cli-service build --mode staging",
"lint": "vue-cli-service lint",
"fix": "eslint --ext .js,.vue src --fix"
diff --git a/platform/public/favicon.ico b/platform/public/favicon.ico
index c6ff5db..64ccd74 100644
--- a/platform/public/favicon.ico
+++ b/platform/public/favicon.ico
Binary files differ
diff --git a/platform/public/template/goods_import_modle.xlsx b/platform/public/template/goods_import_modle.xlsx
index 84a9c9a..87678a5 100644
--- a/platform/public/template/goods_import_modle.xlsx
+++ b/platform/public/template/goods_import_modle.xlsx
Binary files differ
diff --git a/platform/src/api/business/fileRecord.js b/platform/src/api/business/fileRecord.js
new file mode 100644
index 0000000..5e34b26
--- /dev/null
+++ b/platform/src/api/business/fileRecord.js
@@ -0,0 +1,8 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/business/fileRecord/page', data, {
+ trim: true
+ })
+}
diff --git a/platform/src/assets/logo.png b/platform/src/assets/logo.png
index 3c0b233..5d8fd16 100644
--- a/platform/src/assets/logo.png
+++ b/platform/src/assets/logo.png
Binary files differ
diff --git a/platform/src/components/business/OperaCompanyUserWindow.vue b/platform/src/components/business/OperaCompanyUserWindow.vue
index 6613a25..45942e7 100644
--- a/platform/src/components/business/OperaCompanyUserWindow.vue
+++ b/platform/src/components/business/OperaCompanyUserWindow.vue
@@ -11,11 +11,11 @@
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴蜂紒涓氬叏绉帮紝涓嶈秴杩�30瀛�" v-trim/>
浼佷笟鍚嶇О闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
</el-form-item>
- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
+ <el-form-item label="瀹㈡埛绠�绉�" prop="shortName">
<el-input v-model="form.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" v-trim/>
</el-form-item>
- <el-form-item label="缁熶竴绀句細淇$敤浠g爜" prop="creditCode">
- <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" v-trim/>
+ <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCode">
+ <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
缁熶竴淇$敤浠g爜闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
</el-form-item>
<el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
@@ -26,6 +26,7 @@
</el-form-item>
<el-form-item label="涓绘挱鏁伴噺闄愬埗" prop="userNum">
<el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="璇疯緭鍏ヤ富鎾暟閲忛檺鍒�" v-trim/>
+
</el-form-item>
<el-form-item label="閿�鍞汉鍛�" prop="salesmanId">
<!-- <el-input v-model="form.salesmanId" placeholder="璇疯緭鍏ラ攢鍞汉鍛樼紪鐮�" v-trim/> -->
@@ -71,7 +72,7 @@
linkname: '',
linkephone: '',
creditCode: '',
- userNum: '',
+ userNum: 5,
oepnValidDate: '',
salesmanId: ''
},
@@ -106,6 +107,7 @@
<style lang="scss" scoped>
.more {
margin-top: 40px;
+ margin-bottom: 10px;
.more-title {
font-weight: 600;
font-size: 18px;
diff --git a/platform/src/components/business/OperaCompanyWindow.vue b/platform/src/components/business/OperaCompanyWindow.vue
index 4c91ee7..0739250 100644
--- a/platform/src/components/business/OperaCompanyWindow.vue
+++ b/platform/src/components/business/OperaCompanyWindow.vue
@@ -11,11 +11,11 @@
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴蜂紒涓氬叏绉帮紝涓嶈秴杩�30瀛�" v-trim/>
浼佷笟鍚嶇О闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
</el-form-item>
- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
- <el-input v-model="form.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" v-trim/>
+ <el-form-item label="瀹㈡埛绠�绉�" prop="shortName">
+ <el-input v-model="form.shortName" placeholder="璇疯緭鍏ュ鎴风畝绉�" v-trim/>
</el-form-item>
- <el-form-item label="缁熶竴绀句細淇$敤浠g爜" prop="creditCode">
- <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" v-trim/>
+ <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCode">
+ <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
缁熶竴淇$敤浠g爜闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
</el-form-item>
<el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
@@ -26,6 +26,7 @@
</el-form-item>
<el-form-item label="涓绘挱鏁伴噺闄愬埗" prop="userNum">
<el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="璇疯緭鍏ヤ富鎾暟閲忛檺鍒�" v-trim/>
+ 杈撳叆0琛ㄧず涓嶉檺鍒�
</el-form-item>
<el-form-item label="閿�鍞汉鍛�" prop="salesmanId">
<!-- <el-input v-model="form.salesmanId" placeholder="璇疯緭鍏ラ攢鍞汉鍛樼紪鐮�" v-trim/> -->
@@ -54,6 +55,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
import { findAllList } from '@/api/system/user'
+import { loginNameRule, creditCode } from '@/utils/form'
export default {
name: 'OperaCompanyWindow',
extends: BaseOpera,
@@ -71,7 +73,7 @@
linkname: '',
linkephone: '',
creditCode: '',
- userNum: '',
+ userNum: '5',
oepnValidDate: '',
salesmanId: ''
},
@@ -82,7 +84,10 @@
{ required: true, message: '璇疯緭鍏ュ鎴蜂紒涓氬叏绉�', tigger: 'blur'}
],
managerUserName: [
- { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur'}
+ { required: true, validator: loginNameRule, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur'}
+ ],
+ creditCode: [
+ { validator: creditCode, trigger: 'blur' }
],
openUserNum: [
{ pattern: /^[0-9]+$/, message: '鍙彲浠ヨ緭鍏ユ暟瀛�', trigger: 'change' }
@@ -99,16 +104,43 @@
.then(res => {
this.sales = res
})
- }
+ },
+ methods: {
+ open(title, target) {
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ let data = new Date(new Date().getTime() + 31536000000)
+ this.form.oepnValidDate = `${data.getFullYear()}-${data.getMonth() +1}-${data.getDate()}`
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ this.form.multifileList.forEach(item => {
+ item.url = item.filefullurl
+ })
+ })
+ },
+ },
}
</script>
<style lang="scss" scoped>
.more {
margin-top: 40px;
+
.more-title {
font-weight: 600;
font-size: 18px;
+ margin-bottom: 10px;
}
}
::v-deep .el-input {
diff --git a/platform/src/components/business/OperaGoodsWindow.vue b/platform/src/components/business/OperaGoodsWindow.vue
index 4bbcc37..b4d0072 100644
--- a/platform/src/components/business/OperaGoodsWindow.vue
+++ b/platform/src/components/business/OperaGoodsWindow.vue
@@ -2,18 +2,18 @@
<GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" width="800px"
v-loading="isUploading">
<el-form :model="form" ref="form" label-width="120px" :rules="rules">
- <div style="font-size: 18px;font-weight: bold;">鍩烘湰淇℃伅</div>
+ <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">鍩烘湰淇℃伅</div>
<el-form-item label="鍟嗗搧鍚嶇О" prop="name">
<el-input v-model="form.name" maxlength="50" placeholder="璇疯緭鍏ュ晢鍝佸悕绉帮紝涓嶈秴杩�50涓瓧" v-trim />
</el-form-item>
<el-form-item label="鍟嗗搧鍝佺墝" prop="brandId">
- <el-select v-model="form.brandId" placeholder="璇烽�夋嫨锛屽崟閫�">
+ <el-select v-model="form.brandId" filterable placeholder="璇烽�夋嫨锛屽崟閫�">
<el-option v-for="item in brandList()" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="鍟嗗搧绫诲埆" prop="categoryId">
- <el-select v-model="form.categoryId" placeholder="璇烽�夋嫨锛屽崟閫�" @change="categorySelect">
+ <el-select v-model="form.categoryId" filterable placeholder="璇烽�夋嫨锛屽崟閫�" @change="categorySelect">
<el-option v-for="item in categoryList()" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
@@ -37,7 +37,7 @@
鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�600*600px
</el-form-item>
<template v-if="form.baseGoodsParamList && form.baseGoodsParamList.length > 0">
- <div style="font-size: 18px;font-weight: bold;">鍙傛暟灞炴�у�奸厤缃� <span
+ <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">鍙傛暟灞炴�у�奸厤缃� <span
style="font-size: 13px; font-weight: 500;">鎸夐渶閰嶇疆褰撳墠鍟嗗搧鐨勪骇鍝佸弬鏁板�硷紝鍗曚釜鍙傛暟鍊间笉瓒呰繃30涓瓧</span></div>
<el-form-item :label="item.name" v-for="(item, index) in form.baseGoodsParamList" :key="index">
<el-input v-model="item.val" maxlength="30" type="text" placeholder="璇疯緭鍏�" v-trim />
diff --git a/platform/src/components/common/GlobalAlertWindow.vue b/platform/src/components/common/GlobalAlertWindow.vue
index f1d4255..74d06aa 100644
--- a/platform/src/components/common/GlobalAlertWindow.vue
+++ b/platform/src/components/common/GlobalAlertWindow.vue
@@ -1,6 +1,7 @@
<template>
<el-dialog
+ top="10vh"
class="global-window"
title="title"
:visible="visible"
diff --git a/platform/src/components/system/user/OperaUserWindow.vue b/platform/src/components/system/user/OperaUserWindow.vue
index 240a739..c3ac6e7 100644
--- a/platform/src/components/system/user/OperaUserWindow.vue
+++ b/platform/src/components/system/user/OperaUserWindow.vue
@@ -19,12 +19,12 @@
<el-radio label="0">濂�</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item label="澶村儚" prop="avatar" required>
+ <!-- <el-form-item label="澶村儚" prop="avatar" required>
<el-radio-group v-model="form.avatar" class="form-item-avatar">
<el-radio label="https://dmtest.ahapp.net/preselectfile/man.png" border><img src="https://dmtest.ahapp.net/preselectfile/man.png" alt=""></el-radio>
<el-radio label="https://dmtest.ahapp.net/preselectfile/woman.png" border><img src="https://dmtest.ahapp.net/preselectfile/woman.png" alt=""></el-radio>
</el-radio-group>
- </el-form-item>
+ </el-form-item> -->
<el-form-item v-if="form.id == null" label="鍒濆瀵嗙爜" prop="password" required>
<el-input v-model="form.password" type="password" placeholder="璇疯緭鍏ュ垵濮嬪瘑鐮�" maxlength="30" show-password/>
</el-form-item>
@@ -71,7 +71,7 @@
empNo: '', // 宸ュ彿
departmentId: null, // 鎵�灞為儴闂↖D
positionIds: [], // 鎵�灞炲矖浣岻D闆�
- avatar: '/avatar/man.png', // 澶村儚
+ // avatar: '/avatar/man.png', // 澶村儚
password: '', // 瀵嗙爜
mobile: '', // 鎵嬫満鍙风爜
email: '', // 閭
diff --git a/platform/src/utils/form.js b/platform/src/utils/form.js
index cf60c6f..e625827 100644
--- a/platform/src/utils/form.js
+++ b/platform/src/utils/form.js
@@ -1,15 +1,88 @@
-// 楠岃瘉鎵嬫満鍙风爜
-export function checkMobile (rule, value, callback) {
+
+export function checkMobile(rule, value, callback) {
if (value == null || value.trim() === '') {
- callback(new Error('鎵嬫満鍙风爜涓嶈兘涓虹┖'))
+ if (rule.required) {
+ callback(new Error('璇疯緭鍏ユ墜鏈哄彿'))
+ } else {
+ callback()
+ }
return
}
- if (!/^1\d{10}$/.test(value)) {
- callback(new Error('鎵嬫満鍙风爜鏍煎紡涓嶆纭�'))
+ let re = /^[0-9]{11}$/;
+ var result = re.test(value);
+ if(!result) {
+ callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙�'))
+ } else {
+ callback()
+ }
+}
+
+export function checkPhone(rule, value, callback) {
+ //鎵嬫満鍙凤細13锛�14锛�15锛�17锛�18锛�19鍙锋
+ const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
+ //鍥鸿瘽锛氬尯鍙�(3-4浣�)-鍙风爜(7-9浣�)
+ const mobReg = /(^[0-9]{3,4}-[0-9]{7,9}$)/
+ //婢抽棬鐢佃瘽鍙风爜: 28寮�澶达紝鍚庨潰璺�6浣嶆暟瀛楋紝鍖哄彿涓�853
+ const macaoMobReg = /^(853)?28\d{6}$/
+ //婢抽棬鎵嬫満鍙风爜锛�6寮�澶达紝鍚庨潰璺�7浣嶆暟瀛楋紝鍖哄彿涓�853
+ const macaoPhoneReg = /^(853)?6\d{7}$/
+ //鍚屾椂鏀寔鎵嬫満鍙风爜鍜岀數璇濆彿鐮�
+ const macaoReg = /^(853)?(?:28\d{6}|6\d{7})$/
+ if (!value) {
+ callback(new Error('鐢佃瘽鍙风爜涓嶈兘涓虹┖'))
+ } else if (phoneReg.test(value)||mobReg.test(value)||macaoReg.test(value)) {
+ callback()
+ } else {
+ callback(new Error('璇疯緭鍏ユ纭數璇濆彿鐮�'))
+ }
+}
+
+export function loginNameRule (rule, value, callback) {
+ if (value == null || value.trim() === '') {
+ if (rule.required) {
+ callback(new Error('璇疯緭鍏ヨ处鍙�'))
+ } else {
+ callback()
+ }
+ return
+ }
+ let re =/^[\u4e00-\u9fa5a-zA-Z0-9]+$/
+ var result = re.test(value)
+ if(!result) {
+ callback(new Error('璇疯緭鍏ユ纭殑璐﹀彿'))
+ } else {
+ callback()
+ }
+}
+
+export function nameRule (rule, value, callback) {
+ if (value == null || value.trim() === '') {
+ if (rule.required) {
+ callback(new Error('璇疯緭鍏ュ悕瀛�'))
+ } else {
+ callback()
+ }
return
}
callback()
}
+export function creditCode (rule, value, callback) {
+ if (value == null || value.trim() === '') {
+ if (rule.required) {
+ callback(new Error('璇疯緭鍏ョぞ浼氫俊鐢ㄤ唬鐮�'))
+ } else {
+ callback()
+ }
+ return
+ }
+ let re = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
+ var result = re.test(value)
+ if(!result) {
+ callback(new Error('璇疯緭鍏ユ纭殑绀句細淇$敤浠g爜'))
+ } else {
+ callback()
+ }
+}
// 楠岃瘉閭
export function checkEmail (rule, value, callback) {
diff --git a/platform/src/utils/request.js b/platform/src/utils/request.js
index bb715e1..703ba15 100644
--- a/platform/src/utils/request.js
+++ b/platform/src/utils/request.js
@@ -29,9 +29,9 @@
// 璁剧疆鎿嶄綔骞冲彴
config.headers['eva-platform'] = `pc-${pkg.version}`
// 璁剧疆璁よ瘉澶�
- const authToken = Cookies.get('eva-auth-token')
+ const authToken = Cookies.get('doumee-auth-token')
if (authToken != null) {
- config.headers['eva-auth-token'] = authToken
+ config.headers['doumee-auth-token'] = authToken
}
return config
}, function (error) {
diff --git a/platform/src/views/business/category.vue b/platform/src/views/business/category.vue
index 659971b..f937c4c 100644
--- a/platform/src/views/business/category.vue
+++ b/platform/src/views/business/category.vue
@@ -29,7 +29,7 @@
<el-table-column prop="priceRate" label="鍔犱环绯绘暟" min-width="100px"></el-table-column>
<el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" min-width="100px"></el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵��" min-width="100px">
+ <el-table-column v-if="containPermissions(['business:category:update'])" prop="status" label="鐘舵��" min-width="100px">
<template slot-scope="{row}">
<el-switch v-model="row.status" @change="changeStatus(row)" :active-value="0" :inactive-value="1">
</el-switch>
@@ -88,8 +88,11 @@
status: item.status
}).then(res => {
this.$tip.apiSuccess('鏇存柊鎴愬姛')
- }).finally(() => {
- // this.search()
+ }).catch (err => {
+ this.$message.error(err)
+ })
+ .finally(() => {
+ this.handlePageChange()
})
},
edit(id) {
diff --git a/platform/src/views/business/company.vue b/platform/src/views/business/company.vue
index 8ae8e33..ce296b3 100644
--- a/platform/src/views/business/company.vue
+++ b/platform/src/views/business/company.vue
@@ -2,14 +2,14 @@
<TableLayout :permissions="['business:company:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+ <el-form-item label="浼佷笟鍚嶇О" prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" @keypress.enter.native="search"></el-input>
</el-form-item>
<!-- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
<el-input v-model="searchForm.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" @keypress.enter.native="search"></el-input>
</el-form-item> -->
- <el-form-item label="绠$悊鍛樿处鍙�" prop="managerUserName">
- <el-input v-model="searchForm.managerUserName" placeholder="璇疯緭鍏ョ鐞嗗憳璐﹀彿" @keypress.enter.native="search"></el-input>
+ <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
+ <el-input v-model="searchForm.managerUserName" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" @keypress.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="鏈夋晥鏈�" prop="oepnValidDate">
<el-date-picker type="daterange" v-model="oepnValidDate" value-format="yyyy-MM-dd" start-placeholder="寮�濮嬫棩鏈�"
@@ -37,11 +37,15 @@
<!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
<el-table-column prop="id" label="浼佷笟缂栧彿" min-width="80px" align="center"></el-table-column>
<el-table-column prop="name" label="浼佷笟鍚嶇О" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="managerUserName" label="绠$悊鍛樿处鍙�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="managerUserName" label="鐧诲綍璐﹀彿" min-width="100px" align="center"></el-table-column>
<el-table-column prop="linkname" label="鑱旂郴浜�" min-width="100px" align="center"></el-table-column>
<el-table-column prop="linkephone" label="鑱旂郴浜虹數璇�" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="oepnValidDate" label="鐢ㄦ湁鏁堟湡" min-width="140px" align="center"></el-table-column>
- <el-table-column prop="userNum" label="涓绘挱鏁伴噺闄愬埗" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="oepnValidDate" label="鏈夋晥鏈�" min-width="140px" align="center"></el-table-column>
+ <el-table-column prop="userNum" label="涓绘挱璐﹀彿闄愬埗" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ row.userNum || '涓嶉檺' }}
+ </template>
+ </el-table-column>
<el-table-column prop="empUserNum" label="鍛樺伐鏁�" min-width="100px" align="center"></el-table-column>
<el-table-column prop="salesmanRealName" label="閿�鍞汉鍛�" min-width="100px" align="center"></el-table-column>
<el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
diff --git a/platform/src/views/business/fileRecord.vue b/platform/src/views/business/fileRecord.vue
new file mode 100644
index 0000000..f2160c6
--- /dev/null
+++ b/platform/src/views/business/fileRecord.vue
@@ -0,0 +1,119 @@
+<template>
+ <TableLayout :permissions="['business:filerecord:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+
+ <!-- <el-form-item label="鏂囦欢鍚�" prop="name">
+ <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ枃浠跺悕" @keypress.enter.native="search"></el-input>
+ </el-form-item> -->
+
+ <el-form-item label="鏂囦欢澶瑰悕绉�" prop="folder">
+ <el-input v-model="searchForm.folder" placeholder="璇疯緭鍏ユ枃浠跺す鍚嶇О" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+
+ <el-form-item label="OSS鏂囦欢key" prop="keyval">
+ <el-input v-model="searchForm.keyval" placeholder="璇疯緭鍏SS鏂囦欢key" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��">
+ <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ border
+ stripe
+ >
+ <el-table-column type="index" :index="newIndex" label="搴忓彿" width="80px" align="center"></el-table-column>
+ <el-table-column prop="name" label="鏂囦欢" width="100px" align="center">
+ <template slot-scope="{row}">
+ <el-image v-if="row.url" style="width: 70px; height: 70px" :src="row.url"
+ :preview-src-list="[row.url]" fit="cover"></el-image>
+ </template>
+ </el-table-column>
+ <el-table-column prop="folder" label="鏂囦欢澶瑰悕绉�" width="140px" align="center"></el-table-column>
+ <el-table-column prop="keyval" label="OSS鏂囦欢key" min-width="120px" align="center"></el-table-column>
+ <el-table-column prop="status" label="鐘舵��" width="100px" align="center">
+ <template slot-scope="{row}">
+ <!-- 0鏈笂浼� 1宸蹭笂浼� 2涓婁紶澶辫触 -->
+ {{ row.status == 0 ? '鏈笂浼�' : row.status == 1 ? '宸蹭笂浼�' : '涓婁紶澶辫触' }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" width="150px" align="center"></el-table-column>
+ <el-table-column prop="editDate" label="鏇存柊鏃堕棿" width="150px" align="center"></el-table-column>
+<!--
+ <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+ <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
+ <el-table-column prop="objId" label="鍏宠仈瀵硅薄缂栫爜" min-width="100px"></el-table-column>
+ <el-table-column prop="type" label="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬" min-width="100px"></el-table-column> -->
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+export default {
+ name: 'FileRecord',
+ extends: BaseTable,
+ components: { TableLayout, Pagination },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ id: '',
+ creator: '',
+ createDate: '',
+ editor: '',
+ editDate: '',
+ isdeleted: '',
+ name: '',
+ info: '',
+ objId: '',
+ type: '',
+ folder: '',
+ status: '',
+ keyval: ''
+ },
+ statusList: [
+ // 0鏈笂浼� 1宸蹭笂浼� 2涓婁紶澶辫触
+ { name: '鏈笂浼�', id: 0 },
+ { name: '宸蹭笂浼�', id: 1 },
+ { name: '涓婁紶澶辫触', id: 2 }
+ ]
+ }
+ },
+ created () {
+ this.config({
+ module: '闄勪欢涓婁紶杩涘害琛�',
+ api: '/business/fileRecord',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.search()
+ },
+ methods: {
+ newIndex(index) {
+ return (this.tableData.pagination.pageIndex - 1) * 10 + index + 1
+ }
+ },
+}
+</script>
diff --git a/platform/src/views/business/goods.vue b/platform/src/views/business/goods.vue
index b7f8046..98ebff2 100644
--- a/platform/src/views/business/goods.vue
+++ b/platform/src/views/business/goods.vue
@@ -43,14 +43,18 @@
</li>
<!-- <el-button type="primary" :loading="isWorking.export"
@click="$refs.selectProduct.open('閫夋嫨骞冲彴鍟嗗搧')">閫夋嫨骞冲彴鍟嗗搧</el-button> -->
- <li v-permissions="['business:basegoods:exportExcel']">
+ <li v-permissions="['business:basegoods:exportExcel', 'business:goods:delete']">
<ImportButton text="瀵煎叆" template-name="goods_import_modle.xlsx"
template-path="/template/goods_import_modle.xlsx" action="/business/baseGoods/importExcel"
@success="search" />
</li>
- <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
- <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
- <!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goods:delete']">鍒犻櫎</el-button></li> -->
+ <li>
+ <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
+ </li>
+ <li>
+ <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
+ </li>
+ <li v-permissions="['business:goods:delete']"><el-button @click="deleteByIdInBatch" style="color: red;">鎵归噺鍒犻櫎</el-button></li>
</ul>
<el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle"
:cell-style="rowStyle" @selection-change="handleSelectionChange">
@@ -72,7 +76,7 @@
<el-table-column prop="zdPrice" label="鎸囧浠凤紙鍏冿級" min-width="100px"></el-table-column>
<el-table-column prop="price" label="閲囪喘浠�(鍏�)" min-width="100px"></el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵��" min-width="100px">
+ <el-table-column prop="status" v-if="containPermissions(['business:basegoods:update'])" label="鐘舵��" min-width="100px">
<template slot-scope="{row}">
<el-switch v-model="row.status" @change="changeStatus(row)" active-color="#13ce66" inactive-color="#ff4949"
:active-value="0" :inactive-value="1">
@@ -106,7 +110,7 @@
import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
import selectProduct from '@/components/business/selectProduct'
import ImportButton from '@/components/common/ImportButton'
-import { brand, baseCategory, importExcel } from '@/api/system/common.js'
+import { brand, baseCategory } from '@/api/system/common.js'
import { updateStatus, queryById, exportDoc } from '@/api/business/goods.js'
export default {
name: 'Goods',
@@ -150,24 +154,25 @@
this.getcategory()
},
methods: {
- handleSelectionChange(e) {
- let arr = e.map(item => item.id)
- this.ids = arr.join(',')
- this.idList = arr;
- },
+ // handleSelectionChange(e) {
+ // let arr = e.map(item => item.id)
+ // this.ids = arr.join(',')
+ // this.idList = arr;
+ // },
// 鎵归噺涓婁笅鏋�
bulkOperation(type) {
- if (!this.ids) {
- this.$message.warning({ message: '鑷冲皯閫夋嫨涓�椤瑰唴瀹�' })
+ if (this.tableData.selectedRows.length === 0) {
+ this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
return
}
+ let idList = this.tableData.selectedRows.map(item => item.id)
updateStatus({
- idList: this.idList,
+ idList,
status: type
}).then(res => {
this.$tip.apiSuccess('鎿嶄綔鎴愬姛');
// this.$message.success({ message:res.message })
- this.search()
+ this.handlePageChange()
})
},
downloadFile() {
@@ -194,8 +199,12 @@
status: item.status
}).then(res => {
this.$tip.apiSuccess('鏇存柊鎴愬姛')
- }).finally(() => {
- // this.search()
+ })
+ .catch (err => {
+ this.$message.error(err)
+ } )
+ .finally(() => {
+ this.handlePageChange()
})
},
getbrand() {
diff --git a/platform/src/views/system/user.vue b/platform/src/views/system/user.vue
index 7a2711d..532e469 100644
--- a/platform/src/views/system/user.vue
+++ b/platform/src/views/system/user.vue
@@ -33,15 +33,16 @@
:data="tableData.list"
:default-sort = "{prop: 'createTime', order: 'descending'}"
stripe
+ border
@selection-change="handleSelectionChange"
@sort-change="handleSortChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="avatar" label="澶村儚" width="80px" class-name="table-column-avatar" fixed="left">
+ <!-- <el-table-column prop="avatar" label="澶村儚" width="80px" class-name="table-column-avatar" fixed="left">
<template slot-scope="{row}">
<img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar">
</template>
- </el-table-column>
+ </el-table-column> -->
<el-table-column prop="realname" label="濮撳悕" min-width="100px" fixed="left"></el-table-column>
<el-table-column prop="username" label="鐢ㄦ埛鍚�" min-width="120px"></el-table-column>
<el-table-column prop="empNo" label="宸ュ彿" sortable="custom" sort-by="EMP_NO" min-width="80px"></el-table-column>
diff --git a/server/company/src/main/resources/application.yml b/server/company/src/main/resources/application.yml
index ac52ad2..6787c56 100644
--- a/server/company/src/main/resources/application.yml
+++ b/server/company/src/main/resources/application.yml
@@ -11,7 +11,7 @@
# application:
# name: doumeemes
profiles:
- active: pro
+ active: dev
# JSON杩斿洖閰嶇疆
jackson:
diff --git a/server/platform/src/main/resources/application.yml b/server/platform/src/main/resources/application.yml
index 91e823b..bf924e8 100644
--- a/server/platform/src/main/resources/application.yml
+++ b/server/platform/src/main/resources/application.yml
@@ -11,7 +11,7 @@
# application:
# name: doumeemes
profiles:
- active: pro
+ active: dev
# JSON杩斿洖閰嶇疆
jackson:
diff --git a/server/service/src/main/java/com/doumee/core/utils/ImageUtil.java b/server/service/src/main/java/com/doumee/core/utils/ImageUtil.java
new file mode 100644
index 0000000..be93da1
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/core/utils/ImageUtil.java
@@ -0,0 +1,172 @@
+package com.doumee.core.utils;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.imageio.ImageIO;
+import javax.imageio.ImageWriter;
+import javax.imageio.stream.ImageOutputStream;
+import javax.net.ssl.HttpsURLConnection;
+
+public class ImageUtil {
+ private static List<File> fileList = new ArrayList<>();
+
+ public static void main(String[] args) {
+ //convertAllImages("F:\\before.png", "F:\\after.png");
+ fileList.add(new File("C:\\Users\\T14\\Desktop\\1\\1.jpg"));
+ convertAllImages(fileList);
+ }
+
+ /**
+ * 鍘婚櫎鏂囦欢鍒楄〃閲屽浘鐗囩殑姘村嵃骞舵浛鎹�
+ *
+ * @Param fileList 鏂囦欢鍒楄〃
+ */
+ public static void convertAllImages(List<File> fileList) {
+ try {
+ for (File file : fileList) {
+ if (!file.getName().endsWith("png") && !file.getName().endsWith("jpg")) {
+ continue;
+ }
+ BufferedImage bi = ImageIO.read(file); //鐢↖mageIO娴佽鍙栧儚绱犲潡
+ if (bi != null) {
+ removeWatermark(bi);
+ String formatName = file.getName().substring(file.getName().lastIndexOf(".") + 1);//鐢熸垚鐨勫浘鐗囨牸寮�
+ ImageIO.write(bi, formatName, file);//鐢↖mageIO娴佺敓鎴愮殑澶勭悊鍥炬浛鎹㈠師鍥剧墖
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 浠庢簮鐩綍鑾峰彇鍥剧墖澶勭悊鍚庡鍑哄埌鐩爣鐩綍
+ *
+ * @param dir 婧愮洰褰�
+ * @param saveDir 鐩爣鐩綍
+ */
+ private static void convertAllImages(String dir, String saveDir) {
+ File dirFile = new File(dir);
+ File saveDirFile = new File(saveDir);
+ dir = dirFile.getAbsolutePath();
+ saveDir = saveDirFile.getAbsolutePath();
+ loadImages(new File(dir));
+ for (File file : fileList) {
+ String filePath = file.getAbsolutePath();
+ String dstPath = saveDir + filePath.substring(filePath.indexOf(dir) + dir.length());
+ replace(file.getAbsolutePath(), dstPath);
+ }
+ }
+
+ /**
+ * 鍔犺浇鍥剧墖
+ */
+ private static void loadImages(File f) {
+ if (f != null) {
+ if (f.isDirectory()) {
+ File[] fileArray = f.listFiles();
+ if (fileArray != null) {
+ for (File file : fileArray) {
+ loadImages(file); //閫掑綊璋冪敤
+ }
+ }
+ } else {
+ String name = f.getName();
+ if (name.endsWith("png") || name.endsWith("jpg")) {
+ fileList.add(f);
+ }
+ }
+ }
+ }
+
+ /**
+ * 鐢熸垚婧愬浘鐗囩殑澶勭悊鍥�
+ *
+ * @param srcFile 婧愬浘鐗囪矾寰�
+ * @param dstFile 鐩爣鍥剧墖璺緞
+ */
+ private static void replace(String srcFile, String dstFile) {
+ try {
+ URL http;
+ if (srcFile.trim().startsWith("https")) {
+ http = new URL(srcFile);
+ HttpsURLConnection conn = (HttpsURLConnection) http.openConnection();
+ conn.setRequestMethod("GET");
+ } else if (srcFile.trim().startsWith("http")) {
+ http = new URL(srcFile);
+ HttpURLConnection conn = (HttpURLConnection) http.openConnection();
+ conn.setRequestMethod("GET");
+ } else {
+ http = new File(srcFile).toURI().toURL();
+ }
+ BufferedImage bi = ImageIO.read(http.openStream());
+ if (bi != null) {
+ removeWatermark(bi);
+ exportImage(bi, srcFile, dstFile);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鐢盜mageIO娴佺敓鎴愭簮鍥剧墖鐨勫鐞嗗浘
+ *
+ * @param bi ImageIO
+ * @param fileName 婧愬浘鐗囧甫鍚庣紑鐨勬枃浠跺悕
+ * @param dstFile 鐩爣鍥剧墖璺緞
+ */
+ private static void exportImage(BufferedImage bi, String fileName, String dstFile) {
+ try {
+ String type = fileName.substring(fileName.lastIndexOf(".") + 1);
+ Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName(type);
+ ImageWriter writer = it.next();
+ File f = new File(dstFile);
+ ImageOutputStream ios = ImageIO.createImageOutputStream(f);
+ writer.setOutput(ios);
+ writer.write(bi);
+ bi.flush();
+ ios.flush();
+ ios.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * 鍘婚櫎姘村嵃
+ */
+ private static void removeWatermark(BufferedImage bi) {
+ Color wColor = new Color(197, 196, 191);
+ Color hColor = new Color(140, 88, 100);
+// Color wColor = new Color(254, 254, 254);
+// Color hColor = new Color(197, 196, 191);
+ //鐧藉簳姘村嵃
+ for (int i = 0; i < bi.getWidth(); i++) {
+ for (int j = 0; j < bi.getHeight(); j++) {
+ int color = bi.getRGB(i, j);
+ Color oriColor = new Color(color);
+ int red = oriColor.getRed();
+ int greed = oriColor.getGreen();
+ int blue = oriColor.getBlue();
+ if (red == 254 && greed == 254 && blue == 254) {
+ continue;
+ }
+ if (red > 220 && greed > 180 && blue > 80) {
+ bi.setRGB(i, j, wColor.getRGB());
+ }
+ if (red <= 240 && greed >= 200 && blue >= 150) {
+ bi.setRGB(i, j, wColor.getRGB());
+ }
+ }
+ }
+ }
+}
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
index 118f433..7a8c622 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/BaseDataServiceImpl.java
@@ -300,7 +300,7 @@
for(BaseData data :result.getRecords()){
//澶氬浘锛岃嫳鏂囬�楀彿闅斿紑
if(StringUtils.isNotBlank(data.getBgImg())){
- String tImg = data.getBgImg().replace("锛�", ",").replace(".avif", "").replace("/n1/jfs/", "/n0/jfs/");
+ String tImg = data.getBgImg().replace("锛�", ",").replace(".avif", "").replace("/n1/jfs/", "/imgzone/jfs/");
String[] imgs =tImg.split(",");
data.setBgImgs(imgs);
@@ -462,7 +462,7 @@
private int addImg(int i,OssModel ossModel, Integer id,String bgImg,List<Multifile> fileList,List<FileRecord> fileRecords) {
if(StringUtils.isNotBlank(bgImg)){
- bgImg = bgImg.replace("/n1/jfs/", "/n0/jfs/");
+ bgImg = bgImg.replace("/n1/jfs/", "/imgzone/jfs/");
// String img =getOssImgurl(ossModel, ossModel.getGoodsFolder() ,bgImg);
String img = getOssImgurlFile(ossModel.getGoodsFolder(), bgImg, null,Constants.TWO,fileRecords);
if(StringUtils.isNotBlank(img)){
@@ -525,7 +525,10 @@
return;
}
String attrName = attr.substring(0,index);
- if(StringUtils.isBlank(attrName) || StringUtils.equals(attrName, "鍟嗗搧鍚嶇О") || StringUtils.equals(attrName, "鍟嗗搧缂栧彿")){
+ if(StringUtils.isBlank(attrName)
+ || StringUtils.equals(attrName, "鍟嗗搧鍚嶇О")
+ || StringUtils.equals(attrName, "鍟嗗搧缂栧彿")
+ || StringUtils.equals(attrName, "搴楅摵")){
return;
}
String val = attr.substring(index+1);
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
index 02cde3d..0f972e2 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -401,7 +401,10 @@
if (CollectionUtils.isEmpty(ids)) {
return;
}
- goodsMapper.deleteBatchIds(ids);
+ for(Integer id : ids){
+ deleteById(id);
+ }
+// goodsMapper.deleteBatchIds(ids);
}
@Override
diff --git a/server/zhubo/src/main/java/com/doumee/api/business/WebParamController.java b/server/zhubo/src/main/java/com/doumee/api/business/WebParamController.java
index 47ef372..7e7bb5a 100644
--- a/server/zhubo/src/main/java/com/doumee/api/business/WebParamController.java
+++ b/server/zhubo/src/main/java/com/doumee/api/business/WebParamController.java
@@ -31,7 +31,6 @@
@Autowired
private WebParamService webParamService;
-
@ApiOperation("鑾峰彇褰撳墠鐧诲綍浼佷笟閰嶇疆淇℃伅")
@GetMapping("/getByLogin")
public ApiResponse<WebParam> getByLogin() {
diff --git a/server/zhubo/src/main/resources/application.yml b/server/zhubo/src/main/resources/application.yml
index 4fb560e..cfb19a6 100644
--- a/server/zhubo/src/main/resources/application.yml
+++ b/server/zhubo/src/main/resources/application.yml
@@ -11,7 +11,7 @@
# application:
# name: doumeemes
profiles:
- active: pro
+ active: dev
# JSON杩斿洖閰嶇疆
jackson:
--
Gitblit v1.9.3