From f8a4a4306824bf9874a4333e12a0307555ffbb08 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 15 七月 2025 14:41:42 +0800
Subject: [PATCH] 前端
---
server/services/src/main/java/com/doumee/dao/business/CategoryMapper.java | 3
admin/src/api/business/category.js | 3
admin/src/components/business/OperaCategoryWindow.vue | 105 +++++---
/dev/null | 206 ------------------
admin/src/views/business/category.vue | 55 ++--
admin/src/views/business/member.vue | 9
server/admin/src/main/java/com/doumee/api/business/CategoryController.java | 10
server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java | 21 +
server/services/src/main/java/com/doumee/dao/business/model/Category.java | 11 +
admin/src/components/business/OperaIdentityDetailWindow.vue | 34 +--
admin/src/views/business/categoryCar.vue | 106 +++++++++
server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java | 51 ++--
12 files changed, 279 insertions(+), 335 deletions(-)
diff --git a/admin/src/api/business/category.js b/admin/src/api/business/category.js
index d44f859..3162d80 100644
--- a/admin/src/api/business/category.js
+++ b/admin/src/api/business/category.js
@@ -11,6 +11,9 @@
export function create (data) {
return request.post('/business/category/create', data)
}
+export function updateStatus (data) {
+ return request.post('/business/category/updateStatus', data)
+}
// 淇敼
export function updateById (data) {
diff --git a/admin/src/components/business/OperaCategoryWindow.vue b/admin/src/components/business/OperaCategoryWindow.vue
index 40738ff..828473c 100644
--- a/admin/src/components/business/OperaCategoryWindow.vue
+++ b/admin/src/components/business/OperaCategoryWindow.vue
@@ -6,41 +6,27 @@
@confirm="confirm"
>
<el-form :model="form" ref="form" :rules="rules">
- <el-form-item label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" prop="deleted">
- <el-input v-model="form.deleted" placeholder="璇疯緭鍏ユ槸鍚﹀凡鍒犻櫎 0鏈垹闄� 1宸插垹闄�" v-trim/>
+ <el-form-item label="鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
</el-form-item>
- <el-form-item label="鐘舵��:0=鍚敤锛�1=绂佺敤锛�" prop="status">
- <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬�:0=鍚敤锛�1=绂佺敤锛�" v-trim/>
+ <el-form-item v-if="form.type == 1 || form.type == 2" :label=" form.type == 1?'杞﹁締瑙勬牸':'椁愭爣閰嶇疆'" prop="detailList">
+ <el-input v-model="form.detailList" placeholder="璇疯緭鍏ュ唴瀹�" v-trim/>
</el-form-item>
- <el-form-item label="鍒涘缓浜虹紪鐮�" prop="createUser">
- <el-input v-model="form.createUser" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+ <el-form-item v-if="form.type == 1" label="鍥炬爣" prop="icon">
+ <UploadAvatarImage
+ :file="{ imgurlfull: form.iconFull, imgurl: form.icon }"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess"
+ />
</el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
- <el-date-picker v-model="form.createTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+ <el-form-item v-if="form.type == 1" label="鏄惁鍥哄畾杞﹁締" prop="isFixed">
+ <el-radio-group v-model="form.isFixed">
+ <el-radio :label="0">闈炲浐瀹�</el-radio>
+ <el-radio :label="1">鍥哄畾杞﹀瀷</el-radio>
+ </el-radio-group>
</el-form-item>
- <el-form-item label="鏇存柊浜虹紪鐮�" prop="updateUser">
- <el-input v-model="form.updateUser" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
- </el-form-item>
- <el-form-item label="鏇存柊鏃堕棿" prop="updateTime">
- <el-date-picker v-model="form.updateTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
- </el-form-item>
- <el-form-item label="澶囨敞" prop="remark">
- <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
- </el-form-item>
- <el-form-item label="鍗曚綅鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ崟浣嶅悕绉�" v-trim/>
- </el-form-item>
- <el-form-item label="绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱" prop="type">
- <el-input v-model="form.type" placeholder="璇疯緭鍏ョ被鍨�:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱" v-trim/>
- </el-form-item>
- <el-form-item label="鍐呭锛堣溅杈嗚鏍笺�侀鏍囥�佹墜缁垂姣斾緥锛�" prop="detail">
- <el-input v-model="form.detail" placeholder="璇疯緭鍏ュ唴瀹癸紙杞﹁締瑙勬牸銆侀鏍囥�佹墜缁垂姣斾緥锛�" v-trim/>
- </el-form-item>
- <el-form-item label="鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級" prop="icon">
- <el-input v-model="form.icon" placeholder="璇疯緭鍏ュ浘鏍囷紙杞﹁締绫诲瀷浣跨敤锛�" v-trim/>
- </el-form-item>
- <el-form-item label="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱" prop="isFixed">
- <el-input v-model="form.isFixed" placeholder="璇疯緭鍏ユ槸鍚﹀浐瀹氳溅杈嗭紙杞﹁締绫诲瀷浣跨敤锛�:0=鍚︼紱1=鏄紱" v-trim/>
+ <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+ <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
</el-form-item>
</el-form>
</GlobalWindow>
@@ -49,27 +35,27 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
export default {
name: 'OperaCategoryWindow',
extends: BaseOpera,
- components: { GlobalWindow },
+ components: { GlobalWindow ,UploadAvatarImage},
data () {
return {
+ isUploading: false,
+ uploadData: {
+ folder: 'category'
+ },
// 琛ㄥ崟鏁版嵁
form: {
id: null,
- deleted: '',
- status: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
+ status: 0,
+ sortnum: null,
name: '',
- type: '',
- detail: '',
+ type: null,
+ detailList: [],
icon: '',
- isFixed: ''
+ isFixed: 0
},
// 楠岃瘉瑙勫垯
rules: {
@@ -81,6 +67,41 @@
api: '/business/category',
'field.id': 'id'
})
+ },
+ methods:{
+ uploadAvatarSuccess (file) {
+ this.$set(this.param, 'icon', file.imgurl)
+ this.$set(this.param, 'iconFull', file.imgurlfull)
+ },
+ open(title, target, type) {
+ this.title = title
+ this.visible = true
+ this.form = {
+ id: null,
+ status: 0,
+ sortnum: null,
+ name: '',
+ type: type,
+ detailList: [],
+ icon: '',
+ isFixed: 0
+ }
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ this.form.type = type
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ }
}
}
</script>
diff --git a/admin/src/components/business/OperaIdentityDetailWindow.vue b/admin/src/components/business/OperaIdentityDetailWindow.vue
index 3872416..4d97125 100644
--- a/admin/src/components/business/OperaIdentityDetailWindow.vue
+++ b/admin/src/components/business/OperaIdentityDetailWindow.vue
@@ -80,8 +80,8 @@
<el-input type="textarea" rows="5" v-model="form.auditRemark" placeholder="璇疯緭鍏ヨ璇佸鏍稿娉�" v-trim/>
</el-form-item>
</el-form>
- <el-button @click="checkDo(2)" type="primary" class="status-red">鍚屾剰</el-button>
- <el-button @click="checkDo(3)" type="danger" >鎷掔粷</el-button>
+ <el-button @click="checkDo(2)" :loading="dealing" type="primary" class="status-red">鍚屾剰</el-button>
+ <el-button @click="checkDo(3)" :loading="dealing" type="danger" >鎷掔粷</el-button>
</div>
</div>
</GlobalWindow>
@@ -91,7 +91,7 @@
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
import { getById } from '@/api/business/member'
-import { fetchList as renzhengList,audit } from '@/api/business/identityInfo'
+import { fetchList as renzhengList, audit } from '@/api/business/identityInfo'
export default {
components: {
GlobalWindow
@@ -99,6 +99,7 @@
extends: BaseOpera,
data () {
return {
+ dealing: false,
form: {
id: null,
auditRemark: null
@@ -135,25 +136,11 @@
open (title, row) {
this.title = title
this.visible = true
- this.activeTabs = 0
- this.type = 0
- this.page0 = 1
- this.pageSize = 10
- this.tableData = {}
- this.tableData1 = {}
this.tableData2 = []
this.id = row.id
this.form.id = this.id
+ this.form.auditRemark =null
this.memberId = row.memberId
- this.searchForm = {
- type: 0,
- startTime: null,
- endTime: null,
- optType: null,
- acceptMemberId: -1,
- releaseMemberId: -1,
- transactionNo: null
- }
this.getData()
},
getData () {
@@ -168,12 +155,12 @@
},
checkDo (status) {
- console.log( this.$refs.formCheck.length)
+ console.log(this.$refs.formCheck.length)
this.$refs.formCheck.validate((valid) => {
if (!valid) {
return
}
- this.$dialog.actionConfirm('鎮ㄧ‘璁ゃ��' + (status === 3 ? '鎷掔粷' : '鍚屾剰') + '銆戣鐢宠鍚楋紵','鎿嶄綔纭')
+ this.$dialog.actionConfirm('鎮ㄧ‘璁ゃ��' + (status === 3 ? '鎷掔粷' : '鍚屾剰') + '銆戣鐢宠鍚楋紵', '鎿嶄綔纭')
.then(() => {
this.dealing = true
audit({
@@ -182,9 +169,12 @@
auditRemark: this.form.auditRemark
})
.then(res => {
- this.$tip.apiSuccess('澶勭悊鎴愬姛')
+ this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
this.getData()
- this.isShowProblem = false
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
})
.finally(() => {
this.dealing = false
diff --git a/admin/src/components/common/UploadFaceImg.vue b/admin/src/components/common/UploadFaceImg.vue
deleted file mode 100644
index 98e2dd1..0000000
--- a/admin/src/components/common/UploadFaceImg.vue
+++ /dev/null
@@ -1,206 +0,0 @@
-<template>
- <div>
- <el-upload
- class="avatar-uploader"
- accept=".png,.jpg,.jpeg"
- :style="customStyle"
- action=""
- :auto-upload="false"
- :show-file-list="false"
- :on-change='openUpdateIcon'>
- <img v-if=" file.imgurlfull" style="width: 100%;" :src="file.imgurlfull" :style="customStyle" class="avatar">
- <div v-else :style="customStyle">
- <i class="el-icon-plus avatar-uploader-icon"></i>
- <div class="tips-style">{{ tipsLabel }}</div>
- </div>
- </el-upload>
- <el-dialog
- append-to-body
- :close-on-click-modal="false"
- title="涓婁紶鍥剧墖"
- :visible.sync="updateImg"
- width="1000px"
- class="icon-dialog-wrapper dialong-com-style">
- <ImageCropper ref="iconShot" v-if="updateImg" :imgSrc="img" >
- </ImageCropper>
- <span slot="footer" class="dialog-footer">
- <el-button v-if="loading">鍙� 娑�</el-button>
- <el-button v-else @click="updateImg = false">鍙� 娑�</el-button>
- <el-button :loading="loading" type="primary" @click="uploadIcon">纭� 瀹�</el-button>
- </span>
- </el-dialog>
- </div>
-</template>
-
-<script>
-import ImageCropper from '@/components/common/ImageCropper'
-import { upload } from '@/api/system/common'
-export default {
- components: { ImageCropper },
- props: {
- file: {
- type: Object,
- default: () => {}
- },
- tipsLabel: '',
- customStyle: {
- type: String,
- default: 'width: 90px; height: 90px;'
- },
- uploadData: Object
- },
- data () {
- return {
- loading: false,
- fileInfo:{},
- img: null,
- updateImg: false,
- imageSrc: null,
- uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload'
- }
- },
-
- methods: {
- uploadIcon () {
- // 鑾峰彇瑁佸壀鍚庣殑鍥剧墖
- this.$refs.iconShot.getImagecropper().getCropBlob((fileData) => { // 鑾峰彇褰撳墠瑁佸壀濂界殑鏁版嵁
- // 娉ㄦ鏃剁殑data鏄竴涓狟lob鏁版嵁锛岄儴鍒嗘帴鍙f帴鏀剁殑鏄疐ile杞寲鐨凢ormData鏁版嵁
- console.log(fileData)
- const formData = new FormData()
-
- formData.append('folder', 'member')
- if(this.uploadData.isFace || this.uploadData.isFace == 0){
- formData.append('isFace', 0)
- }
- formData.append(
- 'file',
- new File(
- [fileData], // 灏咮lob绫诲瀷杞寲鎴怓ile绫诲瀷
- this.fileInfo.name, // 璁剧疆File绫诲瀷鐨勬枃浠跺悕绉�
- { type: this.fileInfo.type } // 璁剧疆File绫诲瀷鐨勬枃浠剁被鍨�
- )
- )
- this.loading = true
- upload(formData).then(res => {
- this.loading = false
- console.log(res)
- this.file.imgurl = res.imgaddr
- this.file.imgurlfull = res.url
- this.$message.success('涓婁紶鎴愬姛')
- this.imageSrc = res.url
- this.updateImg = false
- this.$emit('uploadSuccess', { imgurl: res.imgaddr, imgurlfull: res.url, name: res.originname })
- this.$emit('uploadEnd')
- }, () => {
- this.loading = false
- })
- })
- },
-
- // 涓婁紶鍥剧墖
- openUpdateIcon (file, fileList) {
- const isJPG = file.raw.type === 'image/jpeg' || file.raw.type === 'image/png'
- const isLt2M = file.size / 1024 / 1024 < 5
- if (!isJPG) {
- this.$message.error('涓婁紶澶村儚鍥剧墖鍙兘鏄� JPG/PNG 鏍煎紡!')
- return false
- }
- if (!isLt2M) {
- this.$message.error('涓婁紶澶村儚鍥剧墖澶у皬涓嶈兘瓒呰繃 5MB!')
- return false
- }
- // 涓婁紶鎴愬姛鍚庡皢鍥剧墖鍦板潃璧嬪�肩粰瑁佸壀妗嗘樉绀哄浘鐗�
- this.$nextTick(async () => {
- // base64鏂瑰紡
- // this.option.img = await fileByBase64(file.raw)
- this.fileInfo.name = file.name
- this.fileInfo.type = file.type
- console.log(file, fileList)
- this.img = URL.createObjectURL(file.raw)
- // this.loading = false
- this.updateImg = true
- })
- },
- handleAvatarSuccess (res, file) {
- if (res.code == 200) {
- const { data } = res
- this.file.imgurl = data.imgaddr
- this.file.imgurlfull = data.url
- this.$message.success('涓婁紶鎴愬姛')
- this.imageSrc = data.url
- this.updateImg = true
- // this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url, name: data.originname })
- } else {
- this.$message.error('涓婁紶澶辫触')
- }
- this.$emit('uploadEnd')
- },
- uploadError () {
- this.$message.error('涓婁紶澶辫触')
- this.$emit('uploadEnd')
- },
- // // 鎷︽埅
- beforeAvatarUpload (file) {
- this.$emit('uploadBegin')
- return true
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-$image-width: 90px;
-.avatar-uploader {
- width: $image-width;
- height: $image-width;
-}
-::v-deep .el-upload {
- border: 1px dashed #d9d9d9;
- border-radius: 6px;
- cursor: pointer;
- position: relative;
- overflow: hidden;
-}
-.avatar-uploader .el-upload:hover {
- border-color: #409EFF;
-}
-.avatar-uploader-icon {
- line-height: 90px;
- font-size: 28px;
- color: #8c939d;
- width: $image-width;
- height: $image-width;
- text-align: center;
-}
-.avatar {
- width: 100% !important;
- height: auto !important;
- display: block;
-}
-.tips-style {
- height: 13px;
- font-size: 13px;
- font-weight: 400;
- color: #999999;
- line-height: 13px;
-}
-</style>
-<style lang="scss" scoped>
-::v-deep .el-upload--picture-card{
- width: 90px !important;
- height: 90px !important;
-}
-::v-deep .el-upload-list__item {
- width: 90px !important;
- height: 90px !important;
-}
-.icon {
- -webkit-transform: translate(-50%,-50%);
- -ms-transform: translate(-50%,-50%);
- transform: translate(0%, -85%);
-}
-::v-deep .el-upload-list__item {
- width: 90px !important;
- height: 90px !important;
-}
-</style>
diff --git a/admin/src/views/business/category.vue b/admin/src/views/business/category.vue
index 66c2d14..0581cdd 100644
--- a/admin/src/views/business/category.vue
+++ b/admin/src/views/business/category.vue
@@ -13,7 +13,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍒嗙被淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍝佺閰嶇疆',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
<li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
</ul>
<el-table
@@ -24,19 +24,17 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="deleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵��:0=鍚敤锛�1=绂佺敤锛�" min-width="100px"></el-table-column>
- <el-table-column prop="createUser" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
<el-table-column prop="name" label="鍗曚綅鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="type" label="绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱" min-width="100px"></el-table-column>
- <el-table-column prop="detail" label="鍐呭锛堣溅杈嗚鏍笺�侀鏍囥�佹墜缁垂姣斾緥锛�" min-width="100px"></el-table-column>
- <el-table-column prop="icon" label="鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級" min-width="100px"></el-table-column>
- <el-table-column prop="isFixed" label="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱" min-width="100px"></el-table-column>
+ <el-table-column label="鐘舵��">
+ <template slot-scope="{row}">
+ <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
+ inactive-color="#ff4949" :active-value="0" :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
+ <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
<el-table-column
v-if="containPermissions(['business:category:update', 'business:category:delete'])"
label="鎿嶄綔"
@@ -44,7 +42,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍒嗙被淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鏂板缓鍝佺閰嶇疆', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -74,19 +72,8 @@
return {
// 鎼滅储
searchForm: {
- id: '',
- deleted: '',
- status: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
name: '',
- type: '',
- detail: '',
- icon: '',
- isFixed: ''
+ type: 0
}
}
},
@@ -98,6 +85,22 @@
'field.main': 'id'
})
this.search()
+ },
+ methods: {
+ changeStatus (e, row) {
+ this.working = true
+ this.api.updateStatus({ id: row.id, status: e })
+ .then(res => {
+ this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
+ this.search()
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.working = false
+ })
+ }
}
}
</script>
diff --git a/admin/src/views/business/categoryCar.vue b/admin/src/views/business/categoryCar.vue
new file mode 100644
index 0000000..2ff4c1a
--- /dev/null
+++ b/admin/src/views/business/categoryCar.vue
@@ -0,0 +1,106 @@
+<template>
+ <TableLayout :permissions="['business:category: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>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍒嗙被淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
+ </ul>
+ <el-table
+ :height="tableHeightNew"
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+ <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
+ <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鍗曚綅鍚嶇О" min-width="100px"></el-table-column>
+ <el-table-column label="鐘舵��">
+ <template slot-scope="{row}">
+ <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
+ inactive-color="#ff4949" :active-value="0" :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column prop="type" label="绫诲瀷:0=鍝佺閰嶇疆锛�1=杞﹁締绫诲瀷閰嶇疆锛�2=椁愭爣閰嶇疆锛�3=鎵嬬画璐归厤缃紱" min-width="100px"></el-table-column>
+ <el-table-column prop="detail" label="鍐呭锛堣溅杈嗚鏍笺�侀鏍囥�佹墜缁垂姣斾緥锛�" min-width="100px"></el-table-column>
+ <el-table-column prop="icon" label="鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級" min-width="100px"></el-table-column>
+ <el-table-column prop="isFixed" label="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱" min-width="100px">
+ </el-table-column>
+ <el-table-column
+ v-if="containPermissions(['business:category:update', 'business:category:delete'])"
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍒嗙被淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
+export default {
+ name: 'Category',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaCategoryWindow },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ id: '',
+ deleted: '',
+ status: '',
+ createUser: '',
+ createTime: '',
+ updateUser: '',
+ updateTime: '',
+ remark: '',
+ name: '',
+ type: '',
+ detail: '',
+ icon: '',
+ isFixed: ''
+ }
+ }
+ },
+ created () {
+ this.config({
+ module: '鍒嗙被淇℃伅琛�',
+ api: '/business/category',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.search()
+ }
+}
+</script>
diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
index be349a1..8d63f67 100644
--- a/admin/src/views/business/member.vue
+++ b/admin/src/views/business/member.vue
@@ -14,13 +14,12 @@
<el-option :value="1" label="鎺ュ崟鏂�"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="鐘舵��" prop="status">
+<!-- <el-form-item label="鐘舵��" prop="status">
<el-select v-model="searchForm.status" @keypress.enter.native="search" clearable placeholder="鐘舵��">
<el-option label="鍚敤" value="0"></el-option>
<el-option label="绂佺敤" value="1"></el-option>
</el-select>
- </el-form-item>
-
+ </el-form-item>-->
<el-form-item label="娉ㄥ唽鏃堕棿" prop="eventType">
<el-date-picker type="datetime" style="width: 120px" v-model="searchForm.startTime" clearable value-format="yyyy-MM-dd HH:mm:ss"
placeholder="寮�濮嬫椂闂�" />-
@@ -70,13 +69,13 @@
{{row.autoReciveStatus ==1?"鏄�":"鍚�"}}
</template>
</el-table-column>
- <el-table-column label="鐘舵��">
+<!-- <el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
inactive-color="#ff4949" :active-value="0" :inactive-value="1">
</el-switch>
</template>
- </el-table-column>
+ </el-table-column>-->
<el-table-column
v-if="containPermissions(['business:member:update', 'business:member:delete'])"
label="鎿嶄綔"
diff --git a/server/admin/src/main/java/com/doumee/api/business/CategoryController.java b/server/admin/src/main/java/com/doumee/api/business/CategoryController.java
index fdc565b..fbfd63d 100644
--- a/server/admin/src/main/java/com/doumee/api/business/CategoryController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/CategoryController.java
@@ -3,15 +3,18 @@
import com.doumee.api.BaseController;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.Constants;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Category;
+import com.doumee.dao.system.model.SystemJob;
import com.doumee.service.business.CategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@@ -45,6 +48,13 @@
categoryService.deleteById(id);
return ApiResponse.success(null);
}
+ @ApiOperation("淇敼鐘舵��")
+ @PostMapping("/updateStatus")
+ @RequiresPermissions("system:category:update")
+ public ApiResponse updateStatus( @RequestBody Category param) {
+ categoryService.updateById(param);
+ return ApiResponse.success(null);
+ }
@ApiOperation("鎵归噺鍒犻櫎")
@GetMapping("/delete/batch")
diff --git a/server/services/src/main/java/com/doumee/dao/business/CategoryMapper.java b/server/services/src/main/java/com/doumee/dao/business/CategoryMapper.java
index 324b66b..e470e9d 100644
--- a/server/services/src/main/java/com/doumee/dao/business/CategoryMapper.java
+++ b/server/services/src/main/java/com/doumee/dao/business/CategoryMapper.java
@@ -2,11 +2,12 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.Category;
+import com.github.yulichang.base.MPJBaseMapper;
/**
* @author 姹熻箘韫�
* @date 2025/07/09 12:00
*/
-public interface CategoryMapper extends BaseMapper<Category> {
+public interface CategoryMapper extends MPJBaseMapper<Category> {
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Category.java b/server/services/src/main/java/com/doumee/dao/business/model/Category.java
index beca239..0665ae1 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Category.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Category.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +10,7 @@
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
+import java.util.List;
/**
* 鍒嗙被淇℃伅琛�
@@ -69,9 +71,18 @@
@ApiModelProperty(value = "鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級")
@ExcelColumn(name="鍥炬爣锛堣溅杈嗙被鍨嬩娇鐢級")
private String icon;
+ @ApiModelProperty(value = "鎺掑簭鐮侊紙鍗囧簭锛�")
+ @ExcelColumn(name="鎺掑簭鐮侊紙鍗囧簭锛�")
+ private Integer sortnum;
@ApiModelProperty(value = "鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱", example = "1")
@ExcelColumn(name="鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱")
private Integer isFixed;
+ @ApiModelProperty(value = "鏄惁鍥哄畾杞﹁締锛堣溅杈嗙被鍨嬩娇鐢級:0=鍚︼紱1=鏄紱", example = "1")
+ @TableField(exist = false)
+ private String updateUserName;
+ @ApiModelProperty(value = "椁愭爣绛夐厤缃」闆嗗悎", example = "1")
+ @TableField(exist = false)
+ private List<String> detailList;
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
index 478f86a..13c59df 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -1,15 +1,20 @@
package com.doumee.service.business.impl;
+import com.doumee.core.constants.Constants;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CategoryMapper;
import com.doumee.dao.business.model.Category;
+import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.CategoryService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -87,57 +92,55 @@
@Override
public PageData<Category> findPage(PageWrap<Category> pageWrap) {
IPage<Category> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
+ MPJLambdaWrapper<Category> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
+ pageWrap.getModel().setDeleted(Constants.ZERO);
+ queryWrapper.selectAll(Category.class)
+ .selectAs(SystemUser::getUsername, Category::getUpdateUserName)
+ .leftJoin(SystemUser.class,SystemUser::getId,Category::getUpdateUser);
if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().eq(Category::getId, pageWrap.getModel().getId());
+ queryWrapper.eq(Category::getId, pageWrap.getModel().getId());
}
if (pageWrap.getModel().getDeleted() != null) {
- queryWrapper.lambda().eq(Category::getDeleted, pageWrap.getModel().getDeleted());
+ queryWrapper.eq(Category::getDeleted, pageWrap.getModel().getDeleted());
}
if (pageWrap.getModel().getStatus() != null) {
- queryWrapper.lambda().eq(Category::getStatus, pageWrap.getModel().getStatus());
+ queryWrapper.eq(Category::getStatus, pageWrap.getModel().getStatus());
}
if (pageWrap.getModel().getCreateUser() != null) {
- queryWrapper.lambda().eq(Category::getCreateUser, pageWrap.getModel().getCreateUser());
+ queryWrapper.eq(Category::getCreateUser, pageWrap.getModel().getCreateUser());
}
if (pageWrap.getModel().getCreateTime() != null) {
- queryWrapper.lambda().ge(Category::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
- queryWrapper.lambda().le(Category::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
+ queryWrapper.ge(Category::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
+ queryWrapper.le(Category::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
}
if (pageWrap.getModel().getUpdateUser() != null) {
- queryWrapper.lambda().eq(Category::getUpdateUser, pageWrap.getModel().getUpdateUser());
+ queryWrapper.eq(Category::getUpdateUser, pageWrap.getModel().getUpdateUser());
}
if (pageWrap.getModel().getUpdateTime() != null) {
- queryWrapper.lambda().ge(Category::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
- queryWrapper.lambda().le(Category::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
+ queryWrapper.ge(Category::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
+ queryWrapper.le(Category::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
}
if (pageWrap.getModel().getRemark() != null) {
- queryWrapper.lambda().eq(Category::getRemark, pageWrap.getModel().getRemark());
+ queryWrapper.eq(Category::getRemark, pageWrap.getModel().getRemark());
}
if (pageWrap.getModel().getName() != null) {
- queryWrapper.lambda().eq(Category::getName, pageWrap.getModel().getName());
+ queryWrapper.like(Category::getName, pageWrap.getModel().getName());
}
if (pageWrap.getModel().getType() != null) {
- queryWrapper.lambda().eq(Category::getType, pageWrap.getModel().getType());
+ queryWrapper.eq(Category::getType, pageWrap.getModel().getType());
}
if (pageWrap.getModel().getDetail() != null) {
- queryWrapper.lambda().eq(Category::getDetail, pageWrap.getModel().getDetail());
+ queryWrapper.eq(Category::getDetail, pageWrap.getModel().getDetail());
}
if (pageWrap.getModel().getIcon() != null) {
- queryWrapper.lambda().eq(Category::getIcon, pageWrap.getModel().getIcon());
+ queryWrapper.eq(Category::getIcon, pageWrap.getModel().getIcon());
}
if (pageWrap.getModel().getIsFixed() != null) {
- queryWrapper.lambda().eq(Category::getIsFixed, pageWrap.getModel().getIsFixed());
+ queryWrapper.eq(Category::getIsFixed, pageWrap.getModel().getIsFixed());
}
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
- }
- }
- return PageData.from(categoryMapper.selectPage(page, queryWrapper));
+ queryWrapper.orderByAsc(Category::getSortnum);
+ return PageData.from(categoryMapper.selectJoinPage(page, Category.class,queryWrapper));
}
@Override
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
index 5f6cd0b..aa13767 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/IdentityInfoServiceImpl.java
@@ -371,8 +371,10 @@
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
public void audit(AuditDTO auditDTO){
if(Objects.isNull(auditDTO)
- || Objects.isNull(auditDTO.getId())
- || Objects.isNull(auditDTO.getAuditStatus())){
+ || Objects.isNull(auditDTO.getId())
+ || Objects.isNull(auditDTO.getAuditStatus())
+ || auditDTO.getAuditStatus()<2
+ || auditDTO.getAuditStatus()>3){
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -383,21 +385,22 @@
if(!Constants.equalsInteger(identityInfo.getAuditStatus(),Constants.ONE)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸插鎵癸紝璇峰嬁閲嶅鎿嶄綔");
}
+ Date date = new Date();
identityInfoMapper.update(new UpdateWrapper<IdentityInfo>().lambda()
- .set(IdentityInfo::getAuditStatus,Constants.equalsInteger(auditDTO.getAuditStatus(),Constants.ZERO)?Constants.TWO:Constants.THREE)
+ .set(IdentityInfo::getAuditStatus, auditDTO.getAuditStatus() )
.set(StringUtils.isNotBlank(auditDTO.getAuditRemark()),IdentityInfo::getAuditRemark,auditDTO.getAuditRemark())
- .set(IdentityInfo::getAuditTime,"now()")
+ .set(IdentityInfo::getAuditTime,date)
.set(IdentityInfo::getUpdateUser,user.getId())
- .set(IdentityInfo::getUpdateTime,"now()")
+ .set(IdentityInfo::getUpdateTime,date)
.eq(IdentityInfo::getId,identityInfo.getId())
);
memberMapper.update(new UpdateWrapper<Member>().lambda()
.set(Member::getUpdateUser,user.getId())
- .set(Member::getUpdateTime,"now()")
- .set(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO),Member::getWorkerIdentity,Constants.equalsInteger(auditDTO.getAuditStatus(),Constants.ZERO)?Constants.TWO:Constants.THREE)
- .set(Constants.equalsInteger(identityInfo.getType(),Constants.ONE),Member::getDriverIdentity,Constants.equalsInteger(auditDTO.getAuditStatus(),Constants.ZERO)?Constants.TWO:Constants.THREE)
- .set(Constants.equalsInteger(identityInfo.getType(),Constants.TWO),Member::getChefIdentity,Constants.equalsInteger(auditDTO.getAuditStatus(),Constants.ZERO)?Constants.TWO:Constants.THREE)
+ .set(Member::getUpdateTime,date)
+ .set(Constants.equalsInteger(identityInfo.getType(),Constants.ZERO),Member::getWorkerIdentity, auditDTO.getAuditStatus() )
+ .set(Constants.equalsInteger(identityInfo.getType(),Constants.ONE),Member::getDriverIdentity , auditDTO.getAuditStatus() )
+ .set(Constants.equalsInteger(identityInfo.getType(),Constants.TWO),Member::getChefIdentity , auditDTO.getAuditStatus() )
.eq(Member::getId,identityInfo.getMemberId())
);
--
Gitblit v1.9.3