Browse Source

修复

master
主管理员 3 weeks ago
parent
commit
a636fa07d2
53 changed files with 2292 additions and 22182 deletions
  1. +1
    -1
      admin-pc/.env.development
  2. +1
    -1
      admin-pc/.env.production
  3. +102
    -22016
      admin-pc/package-lock.json
  4. +1
    -0
      admin-pc/package.json
  5. +92
    -87
      admin-pc/src/main.js
  6. +377
    -0
      admin-pc/src/views/popularizeActivity/PopularizeActivityList.vue
  7. +250
    -0
      admin-pc/src/views/popularizeActivity/modules/PopularizeActivityForm.vue
  8. +0
    -0
      admin-pc/src/views/popularizeActivity/modules/PopularizeActivityModal.Style#Drawer.vue
  9. +0
    -0
      admin-pc/src/views/popularizeActivity/modules/PopularizeActivityModal.vue
  10. +234
    -0
      admin-pc/src/views/popularizeActivity/modules/TencentMapPicker.vue
  11. +267
    -0
      admin-pc/src/views/popularizeAuthentication/PopularizeAuthenticationList.vue
  12. +144
    -0
      admin-pc/src/views/popularizeAuthentication/modules/PopularizeAuthenticationForm.vue
  13. +0
    -0
      admin-pc/src/views/popularizeAuthentication/modules/PopularizeAuthenticationModal.Style#Drawer.vue
  14. +0
    -0
      admin-pc/src/views/popularizeAuthentication/modules/PopularizeAuthenticationModal.vue
  15. +5
    -5
      module-common/src/main/java/org/jeecg/api/controller/ApiShopUserController.java
  16. +2
    -2
      module-common/src/main/java/org/jeecg/api/service/ApiIndexService.java
  17. +237
    -7
      module-common/src/main/java/org/jeecg/api/service/impl/ApiIndexServiceImpl.java
  18. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/controller/PopularizeActivityController.java
  19. +2
    -2
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/entity/PopularizeActivity.java
  20. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/mapper/PopularizeActivityMapper.java
  21. +4
    -3
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/PopularizeActivityList.vue
  22. +6
    -3
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/modules/PopularizeActivityForm.vue
  23. +84
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/modules/PopularizeActivityModal.Style#Drawer.vue
  24. +60
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/modules/PopularizeActivityModal.vue
  25. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/service/IPopularizeActivityService.java
  26. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/service/impl/PopularizeActivityServiceImpl.java
  27. +10
    -4
      module-common/src/main/java/org/jeecg/modules/popularizeActivity/vue3/PopularizeActivity.data.ts
  28. +12
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/controller/PopularizeAuthenticationController.java
  29. +6
    -5
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/entity/PopularizeAuthentication.java
  30. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/mapper/PopularizeAuthenticationMapper.java
  31. +46
    -8
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/PopularizeAuthenticationList.vue
  32. +7
    -7
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/modules/PopularizeAuthenticationForm.vue
  33. +84
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/modules/PopularizeAuthenticationModal.Style#Drawer.vue
  34. +60
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/modules/PopularizeAuthenticationModal.vue
  35. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/service/IPopularizeAuthenticationService.java
  36. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/service/impl/PopularizeAuthenticationServiceImpl.java
  37. +55
    -12
      module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/vue3/PopularizeAuthentication.data.ts
  38. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/controller/PopularizeOrderController.java
  39. +9
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/entity/PopularizeOrder.java
  40. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/mapper/PopularizeOrderMapper.java
  41. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/service/IPopularizeOrderService.java
  42. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/service/impl/PopularizeOrderServiceImpl.java
  43. +13
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/vue/PopularizeOrderList.vue
  44. +10
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/vue/modules/PopularizeOrderForm.vue
  45. +20
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeOrder/vue3/PopularizeOrder.data.ts
  46. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/controller/PopularizeSignLogController.java
  47. +13
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/entity/PopularizeSignLog.java
  48. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/mapper/PopularizeSignLogMapper.java
  49. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/service/IPopularizeSignLogService.java
  50. +1
    -1
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/service/impl/PopularizeSignLogServiceImpl.java
  51. +18
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/vue/PopularizeSignLogList.vue
  52. +15
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/vue/modules/PopularizeSignLogForm.vue
  53. +30
    -0
      module-common/src/main/java/org/jeecg/modules/popularizeSignLog/vue3/PopularizeSignLog.data.ts

+ 1
- 1
admin-pc/.env.development View File

@ -1,5 +1,5 @@
NODE_ENV=development
VUE_APP_API_BASE_URL=http://localhost:8005/popularize-admin/
VUE_APP_API_BASE_URL=https://popularize-admin.hhlm1688.com/popularize-admin/
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview


+ 1
- 1
admin-pc/.env.production View File

@ -1,4 +1,4 @@
NODE_ENV=production
VUE_APP_API_BASE_URL=http://localhost:8005/popularize-admin/
VUE_APP_API_BASE_URL=https://popularize-admin.hhlm1688.com/popularize-admin/
VUE_APP_CAS_BASE_URL=http://localhost:8888/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview

+ 102
- 22016
admin-pc/package-lock.json
File diff suppressed because it is too large
View File


+ 1
- 0
admin-pc/package.json View File

@ -35,6 +35,7 @@
"vue-area-linkage": "^5.1.0",
"vue-cropper": "^0.5.4",
"vue-i18n": "^8.7.0",
"vue-jsonp": "^2.1.0",
"vue-loader": "^15.7.0",
"vue-ls": "^3.2.0",
"vue-photo-preview": "^1.1.3",


+ 92
- 87
admin-pc/src/main.js View File

@ -1,88 +1,93 @@
/** init domain config */
import './config'
import Vue from 'vue'
import App from './App.vue'
import Storage from 'vue-ls'
import router from './router'
import store from './store/'
import { VueAxios } from "@/utils/request"
require('@jeecg/antd-online-mini')
require('@jeecg/antd-online-mini/dist/OnlineForm.css')
import Antd, { version } from 'ant-design-vue'
console.log('ant-design-vue version:', version)
import Viser from 'viser-vue'
import 'ant-design-vue/dist/antd.less'; // or 'ant-design-vue/dist/antd.less'
import '@/permission' // permission control
import '@/utils/filter' // base filter
import Print from 'vue-print-nb-jeecg'
/*import '@babel/polyfill'*/
import preview from 'vue-photo-preview'
import 'vue-photo-preview/dist/skin.css'
import SSO from '@/cas/sso.js'
import {
ACCESS_TOKEN,
DEFAULT_COLOR,
DEFAULT_THEME,
DEFAULT_LAYOUT_MODE,
DEFAULT_COLOR_WEAK,
SIDEBAR_TYPE,
DEFAULT_FIXED_HEADER,
DEFAULT_FIXED_HEADER_HIDDEN,
DEFAULT_FIXED_SIDEMENU,
DEFAULT_CONTENT_WIDTH_TYPE,
DEFAULT_MULTI_PAGE
} from "@/store/mutation-types"
import config from '@/defaultSettings'
import JDictSelectTag from './components/dict/index.js'
import hasPermission from '@/utils/hasPermission'
import vueBus from '@/utils/vueBus';
import JeecgComponents from '@/components/jeecg/index'
import '@/assets/less/JAreaLinkage.less'
import VueAreaLinkage from 'vue-area-linkage'
import '@/components/jeecg/JVxeTable/install'
import '@/components/JVxeCells/install'
//表单验证
import { rules } from '@/utils/rules'
Vue.prototype.rules = rules
Vue.config.productionTip = false
Vue.use(Storage, config.storageOptions)
Vue.use(Antd)
Vue.use(VueAxios, router)
Vue.use(Viser)
Vue.use(hasPermission)
Vue.use(JDictSelectTag)
Vue.use(Print)
Vue.use(preview)
Vue.use(vueBus);
Vue.use(JeecgComponents);
Vue.use(VueAreaLinkage);
SSO.init(() => {
main()
})
function main() {
new Vue({
router,
store,
mounted () {
store.commit('SET_SIDEBAR_TYPE', Vue.ls.get(SIDEBAR_TYPE, true))
store.commit('TOGGLE_THEME', Vue.ls.get(DEFAULT_THEME, config.navTheme))
store.commit('TOGGLE_LAYOUT_MODE', Vue.ls.get(DEFAULT_LAYOUT_MODE, config.layout))
store.commit('TOGGLE_FIXED_HEADER', Vue.ls.get(DEFAULT_FIXED_HEADER, config.fixedHeader))
store.commit('TOGGLE_FIXED_SIDERBAR', Vue.ls.get(DEFAULT_FIXED_SIDEMENU, config.fixSiderbar))
store.commit('TOGGLE_CONTENT_WIDTH', Vue.ls.get(DEFAULT_CONTENT_WIDTH_TYPE, config.contentWidth))
store.commit('TOGGLE_FIXED_HEADER_HIDDEN', Vue.ls.get(DEFAULT_FIXED_HEADER_HIDDEN, config.autoHideHeader))
store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak))
store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))
store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN))
store.commit('SET_MULTI_PAGE',Vue.ls.get(DEFAULT_MULTI_PAGE,config.multipage))
},
render: h => h(App)
}).$mount('#app')
/** init domain config */
import './config'
import Vue from 'vue'
import App from './App.vue'
import Storage from 'vue-ls'
import router from './router'
import store from './store/'
import { VueAxios } from "@/utils/request"
import { VueJsonp } from 'vue-jsonp'
Vue.use(VueJsonp)
require('@jeecg/antd-online-mini')
require('@jeecg/antd-online-mini/dist/OnlineForm.css')
import Antd, { version } from 'ant-design-vue'
console.log('ant-design-vue version:', version)
import Viser from 'viser-vue'
import 'ant-design-vue/dist/antd.less'; // or 'ant-design-vue/dist/antd.less'
import '@/permission' // permission control
import '@/utils/filter' // base filter
import Print from 'vue-print-nb-jeecg'
/*import '@babel/polyfill'*/
import preview from 'vue-photo-preview'
import 'vue-photo-preview/dist/skin.css'
import SSO from '@/cas/sso.js'
import {
ACCESS_TOKEN,
DEFAULT_COLOR,
DEFAULT_THEME,
DEFAULT_LAYOUT_MODE,
DEFAULT_COLOR_WEAK,
SIDEBAR_TYPE,
DEFAULT_FIXED_HEADER,
DEFAULT_FIXED_HEADER_HIDDEN,
DEFAULT_FIXED_SIDEMENU,
DEFAULT_CONTENT_WIDTH_TYPE,
DEFAULT_MULTI_PAGE
} from "@/store/mutation-types"
import config from '@/defaultSettings'
import JDictSelectTag from './components/dict/index.js'
import hasPermission from '@/utils/hasPermission'
import vueBus from '@/utils/vueBus';
import JeecgComponents from '@/components/jeecg/index'
import '@/assets/less/JAreaLinkage.less'
import VueAreaLinkage from 'vue-area-linkage'
import '@/components/jeecg/JVxeTable/install'
import '@/components/JVxeCells/install'
//表单验证
import { rules } from '@/utils/rules'
Vue.prototype.rules = rules
Vue.config.productionTip = false
Vue.use(Storage, config.storageOptions)
Vue.use(Antd)
Vue.use(VueAxios, router)
Vue.use(Viser)
Vue.use(hasPermission)
Vue.use(JDictSelectTag)
Vue.use(Print)
Vue.use(preview)
Vue.use(vueBus);
Vue.use(JeecgComponents);
Vue.use(VueAreaLinkage);
SSO.init(() => {
main()
})
function main() {
new Vue({
router,
store,
mounted () {
store.commit('SET_SIDEBAR_TYPE', Vue.ls.get(SIDEBAR_TYPE, true))
store.commit('TOGGLE_THEME', Vue.ls.get(DEFAULT_THEME, config.navTheme))
store.commit('TOGGLE_LAYOUT_MODE', Vue.ls.get(DEFAULT_LAYOUT_MODE, config.layout))
store.commit('TOGGLE_FIXED_HEADER', Vue.ls.get(DEFAULT_FIXED_HEADER, config.fixedHeader))
store.commit('TOGGLE_FIXED_SIDERBAR', Vue.ls.get(DEFAULT_FIXED_SIDEMENU, config.fixSiderbar))
store.commit('TOGGLE_CONTENT_WIDTH', Vue.ls.get(DEFAULT_CONTENT_WIDTH_TYPE, config.contentWidth))
store.commit('TOGGLE_FIXED_HEADER_HIDDEN', Vue.ls.get(DEFAULT_FIXED_HEADER_HIDDEN, config.autoHideHeader))
store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak))
store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))
store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN))
store.commit('SET_MULTI_PAGE',Vue.ls.get(DEFAULT_MULTI_PAGE,config.multipage))
},
render: h => h(App)
}).$mount('#app')
}

+ 377
- 0
admin-pc/src/views/popularizeActivity/PopularizeActivityList.vue View File

@ -0,0 +1,377 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="中文-活动标题">
<a-input placeholder="请输入中文-活动标题" v-model="queryParam.title"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="英文-活动标题">
<a-input placeholder="请输入英文-活动标题" v-model="queryParam.enTitle"></a-input>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="活动类型">
<j-dict-select-tag placeholder="请选择活动类型" v-model="queryParam.type" dictCode="no_type"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="活动时间">
<j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择活动时间" v-model="queryParam.startTime"></j-date>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="中文-活动地址">
<a-input placeholder="请输入中文-活动地址" v-model="queryParam.address"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="英文-活动地址">
<a-input placeholder="请输入英文-活动地址" v-model="queryParam.enAddress"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="主理人">
<j-search-select-tag placeholder="请选择主理人" v-model="queryParam.adminUser" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="是否上架">
<j-switch placeholder="请选择是否上架" v-model="queryParam.isOpen" query></j-switch>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="活动状态">
<j-dict-select-tag placeholder="请选择活动状态" v-model="queryParam.state" dictCode="no_state"/>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('活动信息表')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
<!-- <a-button type="primary" icon="import">导入</a-button>-->
<!-- </a-upload>-->
<!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<popularize-activity-modal ref="modalForm" @ok="modalFormOk"></popularize-activity-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import PopularizeActivityModal from './modules/PopularizeActivityModal'
import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
export default {
name: 'PopularizeActivityList',
mixins:[JeecgListMixin, mixinDevice],
components: {
PopularizeActivityModal
},
data () {
return {
description: '活动信息表管理页面',
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'创建人',
align:"center",
dataIndex: 'createBy'
},
{
title:'创建日期',
align:"center",
sorter: true,
dataIndex: 'createTime'
},
{
title:'中文-活动标题',
align:"center",
dataIndex: 'title'
},
{
title:'英文-活动标题',
align:"center",
dataIndex: 'enTitle'
},
{
title:'活动类型',
align:"center",
dataIndex: 'type_dictText'
},
{
title:'活动封面',
align:"center",
dataIndex: 'image',
scopedSlots: {customRender: 'imgSlot'}
},
{
title:'活动时间',
align:"center",
dataIndex: 'startTime'
},
{
title:'中文-活动地址',
align:"center",
dataIndex: 'address'
},
{
title:'英文-活动地址',
align:"center",
dataIndex: 'enAddress'
},
{
title:'活动人数',
align:"center",
dataIndex: 'sum'
},
{
title:'报名人数',
align:"center",
dataIndex: 'num'
},
{
title:'报名费用',
align:"center",
dataIndex: 'price'
},
{
title:'主理人',
align:"center",
dataIndex: 'adminUser_dictText'
},
// {
// title:'',
// align:"center",
// dataIndex: 'openNum'
// },
{
title:'签到人数',
align:"center",
dataIndex: 'doNum'
},
{
title:'是否上架',
align:"center",
dataIndex: 'isOpen',
customRender: (text) => (text ? filterMultiDictText(this.dictOptions['isOpen'], text) : ''),
},
{
title:'活动状态',
align:"center",
dataIndex: 'state_dictText'
},
{
title:'早鸟票',
align:"center",
dataIndex: 'birdPrice'
},
{
title:'单人票',
align:"center",
dataIndex: 'personPrice'
},
{
title:'尊享票',
align:"center",
dataIndex: 'expensivePrice'
},
{
title:'经度',
align:"center",
dataIndex: 'longitude'
},
{
title:'纬度',
align:"center",
dataIndex: 'latitude'
},
{
title:'活动需知',
align:"center",
dataIndex: 'orderDetails',
scopedSlots: {customRender: 'htmlSlot'}
},
{
title:'活动城市',
align:"center",
dataIndex: 'cityId_dictText'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/popularizeActivity/popularizeActivity/list",
delete: "/popularizeActivity/popularizeActivity/delete",
deleteBatch: "/popularizeActivity/popularizeActivity/deleteBatch",
exportXlsUrl: "/popularizeActivity/popularizeActivity/exportXls",
importExcelUrl: "popularizeActivity/popularizeActivity/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.$set(this.dictOptions, 'isOpen', [{text:'是',value:'Y'},{text:'否',value:'N'}])
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'createBy',text:'创建人',dictCode:''})
fieldList.push({type:'datetime',value:'createTime',text:'创建日期'})
fieldList.push({type:'Text',value:'title',text:'中文-活动标题',dictCode:''})
fieldList.push({type:'Text',value:'enTitle',text:'英文-活动标题',dictCode:''})
fieldList.push({type:'string',value:'type',text:'活动类型',dictCode:'no_type'})
fieldList.push({type:'Text',value:'image',text:'活动封面',dictCode:''})
fieldList.push({type:'datetime',value:'startTime',text:'活动时间'})
fieldList.push({type:'Text',value:'address',text:'中文-活动地址',dictCode:''})
fieldList.push({type:'Text',value:'enAddress',text:'英文-活动地址',dictCode:''})
fieldList.push({type:'int',value:'sum',text:'活动人数',dictCode:''})
fieldList.push({type:'int',value:'num',text:'报名人数',dictCode:''})
fieldList.push({type:'BigDecimal',value:'price',text:'报名费用',dictCode:''})
fieldList.push({type:'sel_search',value:'adminUser',text:'主理人',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'})
fieldList.push({type:'int',value:'openNum',text:'签到人数',dictCode:''})
fieldList.push({type:'switch',value:'isOpen',text:'是否上架'})
fieldList.push({type:'int',value:'state',text:'活动状态',dictCode:'no_state'})
fieldList.push({type:'Text',value:'details',text:'活动详情',dictCode:''})
fieldList.push({type:'Text',value:'enDetails',text:'英文-活动详情',dictCode:''})
fieldList.push({type:'Text',value:'precautions',text:'中文-注意事项',dictCode:''})
fieldList.push({type:'Text',value:'enPrecautions',text:'英文-注意事项',dictCode:''})
fieldList.push({type:'BigDecimal',value:'birdPrice',text:'早鸟票',dictCode:''})
fieldList.push({type:'BigDecimal',value:'personPrice',text:'单人票',dictCode:''})
fieldList.push({type:'BigDecimal',value:'expensivePrice',text:'尊享票',dictCode:''})
fieldList.push({type:'string',value:'longitude',text:'经度',dictCode:''})
fieldList.push({type:'string',value:'latitude',text:'纬度',dictCode:''})
fieldList.push({type:'Text',value:'orderDetails',text:'活动需知',dictCode:''})
fieldList.push({type:'sel_search',value:'cityId',text:'活动城市',dictTable:"popularize_city", dictText:'city', dictCode:'id'})
fieldList.push({type:'int',value:'doNum',text:'签到人数',dictCode:''})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

+ 250
- 0
admin-pc/src/views/popularizeActivity/modules/PopularizeActivityForm.vue View File

@ -0,0 +1,250 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="中文-活动标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="title">
<a-input v-model="model.title" placeholder="请输入中文-活动标题" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="英文-活动标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enTitle">
<a-input v-model="model.enTitle" placeholder="请输入英文-活动标题" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type">
<j-dict-select-tag type="list" v-model="model.type" dictCode="no_type" placeholder="请选择活动类型" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动封面" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="image">
<j-image-upload isMultiple v-model="model.image" ></j-image-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="startTime">
<j-date placeholder="请选择活动时间" v-model="model.startTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="中文-活动地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address">
<a-input v-model="model.address" placeholder="请输入中文-活动地址" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="英文-活动地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enAddress">
<a-input v-model="model.enAddress" placeholder="请输入英文-活动地址" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sum">
<a-input-number v-model="model.sum" placeholder="请输入活动人数" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="报名人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
<a-input-number v-model="model.num" placeholder="请输入报名人数" style="width: 100%" disabled/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="报名费用" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="price">
<a-input-number v-model="model.price" placeholder="请输入报名费用" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="主理人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminUser">
<j-search-select-tag v-model="model.adminUser" dict="han_hai_member,nick_name,id" />
</a-form-model-item>
</a-col>
<!-- <a-col :span="24">-->
<!-- <a-form-model-item label="签到人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="openNum">-->
<!-- <a-input-number v-model="model.openNum" placeholder="请输入签到人数" style="width: 100%" />-->
<!-- </a-form-model-item>-->
<!-- </a-col>-->
<a-col :span="24">
<a-form-model-item label="签到人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doNum">
<a-input-number v-model="model.doNum" placeholder="请输入签到人数" style="width: 100%" disabled/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="是否上架" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isOpen">
<j-switch v-model="model.isOpen" ></j-switch>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
<j-dict-select-tag type="list" v-model="model.state" dictCode="no_state" placeholder="请选择活动状态" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动详情" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="details">
<j-editor v-model="model.details" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="英文-活动详情" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enDetails">
<j-editor v-model="model.enDetails" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="中文-注意事项" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precautions">
<j-editor v-model="model.precautions" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="英文-注意事项" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enPrecautions">
<j-editor v-model="model.enPrecautions" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="早鸟票" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="birdPrice">
<a-input-number v-model="model.birdPrice" placeholder="请输入早鸟票" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="单人票" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="personPrice">
<a-input-number v-model="model.personPrice" placeholder="请输入单人票" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="尊享票" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="expensivePrice">
<a-input-number v-model="model.expensivePrice" placeholder="请输入尊享票" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="经度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="longitude">
<a-input v-model="model.longitude" placeholder="请输入经度" disabled ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="纬度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="latitude">
<a-input v-model="model.latitude" placeholder="请输入纬度" disabled ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="地图选择位置" :labelCol="labelCol" :wrapperCol="wrapperCol">
<TencentMapPicker
:latitude="model.latitude"
:longitude="model.longitude"
@onLocationSelected="handleLocationSelected"
/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动需知" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderDetails">
<j-editor v-model="model.orderDetails" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动城市" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cityId">
<j-search-select-tag v-model="model.cityId" dict="popularize_city,city,id" />
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import TencentMapPicker from './TencentMapPicker.vue';
export default {
name: 'PopularizeActivityForm',
components: {
TencentMapPicker
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
adminUser: [
{ required: true, message: '请输入主理人!'},
],
},
url: {
add: "/popularizeActivity/popularizeActivity/add",
edit: "/popularizeActivity/popularizeActivity/edit",
queryById: "/popularizeActivity/popularizeActivity/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
handleLocationSelected({latitude, longitude}) {
console.log('event11',latitude, longitude)
this.model.latitude = latitude;
this.model.longitude = longitude;
},
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
//
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

module-common/src/main/java/org/jeecg/modules/popularizeActivity/vue/modules/PopularizeActivityModal.Style#Drawer.vue → admin-pc/src/views/popularizeActivity/modules/PopularizeActivityModal.Style#Drawer.vue View File


module-common/src/main/java/org/jeecg/modules/popularizeActivity/vue/modules/PopularizeActivityModal.vue → admin-pc/src/views/popularizeActivity/modules/PopularizeActivityModal.vue View File


+ 234
- 0
admin-pc/src/views/popularizeActivity/modules/TencentMapPicker.vue View File

@ -0,0 +1,234 @@
<template>
<div>
<div class="map-box">
<div class="map" ref="map" style="height: 400px" ></div>
<div class="map-search">
<div>
<a-input-search id="place" v-model="searchValue" placeholder="请输入详细地址" enter-button @search="searchAddress(searchValue)" />
</div>
<div>
<ul v-if="kwData.length">
<li v-for="(item, index) in kwData" :key="index" @click="selectKeyword(item)">{{ item.address }}</li>
</ul>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'TencentMapPicker',
props: {
latitude: {
type: Number|String,
default: 0
},
longitude: {
type: Number|String,
default: 0
}
},
watch: {
latitude(newVal, oldVal) {
console.info(`newVal`,newVal,`oldVal`,oldVal)
if (newVal) {
this.form.latitude = newVal
// this.$nextTick(()=>{
// this.map.setCenter(new window.TMap.LatLng(this.form.latitude, this.form.longitude));
// })
}
},
longitude(newVal, oldVal) {
console.info(`newVal`,newVal,`oldVal`,oldVal)
if (newVal) {
this.form.longitude = newVal
// this.$nextTick(()=>{
// this.map.setCenter(new window.TMap.LatLng(this.form.latitude, this.form.longitude));
// })
}
}
},
data() {
return {
searchValue: '', //
form: {
longitude: 116.397128,
latitude: 39.916527
},
kwData:[]
}
},
mounted() {
let that = this
if (that.script) return;
that.script = document.createElement('script');
that.script.type = 'text/javascript';
that.script.src = `//map.qq.com/api/gljs?v=1.exp&libraries=service&key=DGFBZ-JU76M-34A63-6BU47-2FLJH-XLBCN`;
document.head.appendChild(that.script);
that.script.onload = () => {
window.initMap = that.initMap;
that.$nextTick(() => {
that.initMap();
});
};
},
methods: {
//
initMap() {
//
this.searchEr = new window.TMap.service.Search({ pageSize: 15 });
//
this.map = new window.TMap.Map(this.$refs.map, {
backgroundColor: '#f7f7f7',
mapStyleId: 'style1',
zoom: 14,
mapTypeControlOptions: {
mapTypeIds: [],
},
draggableCursor: 'crosshair',
center: new window.TMap.LatLng(this.form.latitude, this.form.longitude),
});
//
this.markerLayer = new window.TMap.MultiMarker({
map: this.map,
geometries: [],
});
//
this.geocoder = new window.TMap.service.Geocoder();
const setMarker = () => {
const latlng = new window.TMap.LatLng(this.form.latitude, this.form.longitude);
this.markerLayer.setGeometries([]);
let geometries = this.markerLayer.getGeometries();
geometries.push({
id: '-1',
position: latlng,
});
this.markerLayer.updateGeometries(geometries);
};
this.map.on('click', (e) => {
this.form.longitude = e.latLng.getLng(); //
this.form.latitude = e.latLng.getLat(); //
setMarker();
this.getAddressFormat();
});
if (this.form.longitude) {
this.map.setCenter(new window.TMap.LatLng(this.form.latitude, this.form.longitude));
setMarker();
}
},
selectKeyword(event){
this.map.setCenter(new window.TMap.LatLng(event.location.lat, event.location.lng));
this.kwData = []
},
//
searchAddress(keyword = '') {
if (!keyword) return;
this.$jsonp('https://apis.map.qq.com/ws/place/v1/suggestion', {
key: 'DGFBZ-JU76M-34A63-6BU47-2FLJH-XLBCN',
output: 'jsonp',
keyword: keyword,
}).then((res) => {
console.log(`res`,res)
if (res.status === 0) {
this.kwData = res.data
} else {
this.kwData = []
}
}).catch((e) => {
console.log(e)
})
this.markerLayer.setGeometries([]);
this.searchEr.searchRectangle({
keyword,
bounds: this.map.getBounds(),
})
.then((result) => {
console.info(`result`,result)
const { location = {} } = result.data[0] || {};
const { lat = 39.916527, lng = 116.397128 } = location;
this.map.setCenter(new window.TMap.LatLng(lat, lng));
result.data.forEach((item, index) => {
let geometries = this.markerLayer.getGeometries();
//
geometries.push({
id: String(index),
position: item.location,
});
//
this.markerLayer.updateGeometries(geometries);
});
});
},
getAddressFormat() {
const { longitude, latitude } = this.form;
this.geocoder
.getAddress({
location: new window.TMap.LatLng(latitude, longitude),
})
.then((res) => {
const {
formatted_addresses: { recommend = '' },
} = res.result || {};
this.searchValue = recommend
this.form.hotelDetailAddress = recommend;
this.$emit('onLocationSelected', this.form);
console.log(this.form);
});
},
}
}
</script>
<style scoped>
.map-box {
position: relative;
}
.map-search {
z-index: 1000;
display: flex;
flex-direction: column;
position: absolute;
top: 20px;
left: 20px;
width: 300px;
}
button {
border-radius: 0;
}
.icons {
display: flex;
align-items: center;
justify-content: space-between;
}
.time {
margin-top: 15px;
width: 100%;
font-size: 12px;
flex-wrap: wrap;
height: 70%;
}
ul{
background: white;
list-style-type: none;
padding-left: 0px;
height: 280px;
overflow: scroll;
}
li{
padding-left: 6px;
font-size: 10px;
text-align: left;
height: 40px;
line-height: 15px;
display: flex;
align-items: center;
}
li:hover{
cursor: pointer;
background: #f5f5f5;
}
</style>

+ 267
- 0
admin-pc/src/views/popularizeAuthentication/PopularizeAuthenticationList.vue View File

@ -0,0 +1,267 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="状态">
<j-dict-select-tag placeholder="请选择状态" v-model="queryParam.state" dictCode="no_state_type"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="姓名">
<a-input placeholder="请输入姓名" v-model="queryParam.name"></a-input>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="电话">
<a-input placeholder="请输入电话" v-model="queryParam.phone"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="身份证">
<a-input placeholder="请输入身份证" v-model="queryParam.cardNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="用户">
<j-search-select-tag placeholder="请选择用户" v-model="queryParam.userId" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>-->
<!-- <a-button type="primary" icon="download" @click="handleExportXls('主理人认证')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
<!-- <a-button type="primary" icon="import">导入</a-button>-->
<!-- </a-upload>-->
<!-- &lt;!&ndash; 高级查询区域 &ndash;&gt;-->
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">审核</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<popularize-authentication-modal ref="modalForm" @ok="modalFormOk"></popularize-authentication-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import PopularizeAuthenticationModal from './modules/PopularizeAuthenticationModal'
import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
export default {
name: 'PopularizeAuthenticationList',
mixins:[JeecgListMixin, mixinDevice],
components: {
PopularizeAuthenticationModal
},
data () {
return {
description: '主理人认证管理页面',
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'创建日期',
align:"center",
sorter: true,
dataIndex: 'createTime'
},
{
title:'状态',
align:"center",
dataIndex: 'state_dictText'
},
{
title:'姓名',
align:"center",
dataIndex: 'name'
},
{
title:'电话',
align:"center",
dataIndex: 'phone'
},
{
title:'身份证',
align:"center",
dataIndex: 'cardNo'
},
{
title:'简历附件',
align:"center",
dataIndex: 'image',
scopedSlots: {customRender: 'fileSlot'}
},
{
title:'用户',
align:"center",
dataIndex: 'userId_dictText'
},
{
title:'微信二维码',
align:"center",
dataIndex: 'img',
scopedSlots: {customRender: 'imgSlot'}
},
{
title:'主理人分数',
align:"center",
dataIndex: 'num'
},
{
title:'图片',
align:"center",
dataIndex: 'images',
scopedSlots: {customRender: 'imgSlot'}
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/popularizeAuthentication/popularizeAuthentication/list",
delete: "/popularizeAuthentication/popularizeAuthentication/delete",
deleteBatch: "/popularizeAuthentication/popularizeAuthentication/deleteBatch",
exportXlsUrl: "/popularizeAuthentication/popularizeAuthentication/exportXls",
importExcelUrl: "popularizeAuthentication/popularizeAuthentication/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'datetime',value:'createTime',text:'创建日期'})
fieldList.push({type:'int',value:'state',text:'状态',dictCode:'no_state_type'})
fieldList.push({type:'string',value:'name',text:'姓名',dictCode:''})
fieldList.push({type:'string',value:'phone',text:'电话',dictCode:''})
fieldList.push({type:'string',value:'cardNo',text:'身份证',dictCode:''})
fieldList.push({type:'Text',value:'image',text:'简历附件',dictCode:''})
fieldList.push({type:'sel_search',value:'userId',text:'用户',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'})
fieldList.push({type:'Text',value:'img',text:'微信二维码',dictCode:''})
fieldList.push({type:'int',value:'num',text:'主理人分数',dictCode:''})
fieldList.push({type:'Text',value:'images',text:'图片',dictCode:''})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

+ 144
- 0
admin-pc/src/views/popularizeAuthentication/modules/PopularizeAuthenticationForm.vue View File

@ -0,0 +1,144 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
<j-dict-select-tag type="list" v-model="model.state" dictCode="no_state_type" placeholder="请选择状态" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
<a-input v-model="model.name" placeholder="请输入姓名" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone">
<a-input v-model="model.phone" placeholder="请输入电话" disabled></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="身份证" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cardNo">
<a-input v-model="model.cardNo" placeholder="请输入身份证" disabled ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="简历附件" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="image">
<j-upload v-model="model.image" disabled ></j-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="用户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userId">
<j-search-select-tag v-model="model.userId" dict="han_hai_member,nick_name,id" disabled/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="微信二维码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="img">
<j-image-upload isMultiple v-model="model.img" disabled></j-image-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="主理人分数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
<a-input-number v-model="model.num" placeholder="请输入主理人分数" style="width: 100%" disabled/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="images">
<j-image-upload isMultiple v-model="model.images" disabled></j-image-upload>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'PopularizeAuthenticationForm',
components: {
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
},
url: {
add: "/popularizeAuthentication/popularizeAuthentication/add",
edit: "/popularizeAuthentication/popularizeAuthentication/edit",
queryById: "/popularizeAuthentication/popularizeAuthentication/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
//
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/vue/modules/PopularizeAuthenticationModal.Style#Drawer.vue → admin-pc/src/views/popularizeAuthentication/modules/PopularizeAuthenticationModal.Style#Drawer.vue View File


module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/vue/modules/PopularizeAuthenticationModal.vue → admin-pc/src/views/popularizeAuthentication/modules/PopularizeAuthenticationModal.vue View File


+ 5
- 5
module-common/src/main/java/org/jeecg/api/controller/ApiShopUserController.java View File

@ -25,8 +25,8 @@ public class ApiShopUserController {
//获取招募列表数据带分页
@ApiOperation(value="获取招募列表数据带分页", notes="获取招募列表数据带分页")
@GetMapping(value = "/getRecruitPageList")
public Result<?> getRecruitPageList(String title, PageBean pageBean){
return apiIndexService.getRecruitPageList(title, pageBean);
public Result<?> getRecruitPageList(String title,String token, PageBean pageBean){
return apiIndexService.getRecruitPageList(title,token, pageBean);
}
@ -54,7 +54,7 @@ public class ApiShopUserController {
}
//主理人主理的活动列表带分页
//主理人主理的活动列表带分页 -主理人签到
@ApiOperation(value="主理人主理的活动列表带分页", notes="主理人主理的活动列表带分页")
@GetMapping(value = "/getActivityMemberPageList")
public Result<?> getActivityMemberPageList(@RequestHeader("X-Access-Token") String token, String title,Integer type, String timeStr,String cityId,PageBean pageBean){
@ -65,8 +65,8 @@ public class ApiShopUserController {
//主理人主理的活动签到里面的签到用户列表带分页
@ApiOperation(value="主理人主理的活动签到里面的签到用户列表带分页", notes="主理人主理的活动签到里面的签到用户列表带分页")
@GetMapping(value = "/getSignInUserPageList")
public Result<?> getSignInUserPageList(@RequestHeader("X-Access-Token") String token,String recruitId, PageBean pageBean){
return apiIndexService.getSignInUserPageList(token,recruitId, pageBean);
public Result<?> getSignInUserPageList(@RequestHeader("X-Access-Token") String token,String recruitId,Integer type, PageBean pageBean){
return apiIndexService.getSignInUserPageList(token,recruitId,type,pageBean);
}


+ 2
- 2
module-common/src/main/java/org/jeecg/api/service/ApiIndexService.java View File

@ -69,7 +69,7 @@ public interface ApiIndexService {
//获取招募列表数据带分页
Result<?> getRecruitPageList(String title, PageBean pageBean);
Result<?> getRecruitPageList(String title,String token, PageBean pageBean);
//获取招募详情
@ -87,7 +87,7 @@ public interface ApiIndexService {
//主理人主理的活动签到里面的签到用户列表带分页
Result<?> getSignInUserPageList( String token,String recruitId, PageBean pageBean);
Result<?> getSignInUserPageList( String token,String recruitId, Integer type,PageBean pageBean);
//扫码签到
Result<?> scanSignIn(String recruitId);


+ 237
- 7
module-common/src/main/java/org/jeecg/api/service/impl/ApiIndexServiceImpl.java View File

@ -196,7 +196,18 @@ public class ApiIndexServiceImpl implements ApiIndexService {
public Result<?> getActivityInfo(String token,String activityId){
Map<String,Object> map = new HashMap<>();
PopularizeActivity byId = popularizeActivityService.getById(activityId);
byId.setPopularizeOrderList(
popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getActivityOrderId, byId.getId())
.ge(PopularizeOrder::getState, 1)
.list()
);
byId.setNum(byId.getPopularizeOrderList().size());
map.put("activityInfo",byId);
//根据活动中主理人用户标识查询用户信息
HanHaiMember byId1 = hanHaiMemberService.getById(byId.getAdminUser());
map.put("adminUserInfo",byId1);
@ -293,6 +304,15 @@ public class ApiIndexServiceImpl implements ApiIndexService {
public Result<?> getTravelInfo(String token,String travelId){
Map<String,Object> map = new HashMap<>();
PopularizeTravel byId = popularizeTravelService.getById(travelId);
byId.setOrderList(
popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getActivityOrderId, byId.getId())
.ge(PopularizeOrder::getState, 1)
.list()
);
byId.setNum(byId.getOrderList().size());
map.put("activityInfo",byId);
map.put("travel",byId);
//根据活动中主理人用户标识查询用户信息
HanHaiMember byId1 = hanHaiMemberService.getById(byId.getAdminUser());
@ -460,8 +480,43 @@ public class ApiIndexServiceImpl implements ApiIndexService {
@Override
public Result<?> signIn(String token,String orderId){
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//判断用户是否是主理人
if(hanHaiMember.getIsUser().equals("N")){
return Result.error("您不是主理人,不能签到");
}
PopularizeOrder byId = popularizeOrderService.getById(orderId);
//查询订单是否存在
if(byId == null){
return Result.error("订单不存在");
}
//查询订单类型 订单为活动
if(byId.getType().equals("0")){
//查询活动信息
PopularizeActivity activity = popularizeActivityService.getById(byId.getActivityOrderId());
//判断活动是否存在
if(activity == null){
return Result.error("活动不存在");
}
//判断是否是该活动的主理人
if(!activity.getAdminUser().equals(hanHaiMember.getId())){
return Result.error("您不是该活动的主理人,不能签到");
}
}else{
//查询游记信息
PopularizeTravel travel = popularizeTravelService.getById(byId.getTravelOrderId());
if(travel == null){
return Result.error("旅行不存在");
}
if(!travel.getAdminUser().equals(hanHaiMember.getId())){
return Result.error("您不是该旅行的主理人,不能签到");
}
}
if(byId.getState().equals("2")){
return Result.error("您已经签到过了");
}
byId.setState("2");
byId.setOpen("Y");
popularizeOrderService.updateById(byId);
return Result.OK("签到成功");
}
@ -619,7 +674,7 @@ public class ApiIndexServiceImpl implements ApiIndexService {
//获取招募列表数据带分页
@Override
public Result<?> getRecruitPageList(String title, PageBean pageBean){
public Result<?> getRecruitPageList(String title, String token, PageBean pageBean){
Page<PopularizeRecruit> page = new Page<PopularizeRecruit>(pageBean.getPageNo(), pageBean.getPageSize());
Page<PopularizeRecruit> page1 = popularizeRecruitService
.lambdaQuery()
@ -714,24 +769,195 @@ public class ApiIndexServiceImpl implements ApiIndexService {
@Override
public Result<?> getActivityMemberPageList( String token, String title, Integer type, String timeStr,String cityId,PageBean pageBean){
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//活动报名中
String state = "0";
if(type == 1){
return this.getTravelPageList(null,"1",timeStr,pageBean);
//旅行
Page<PopularizeTravel> page = new Page<PopularizeTravel>(pageBean.getPageNo(), pageBean.getPageSize());
Page<PopularizeTravel> page1 = popularizeTravelService
.lambdaQuery()
.orderByDesc(PopularizeTravel::getCreateTime)
.eq(PopularizeTravel::getAdminUser,hanHaiMember.getId())
.page(page);
//如果标题不为空
if(StringUtils.isNotBlank(title)){
page1 = popularizeTravelService
.lambdaQuery()
.like(PopularizeTravel::getTitle,title)
.eq(PopularizeTravel::getState,state)
.eq(PopularizeTravel::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeTravel::getCreateTime)
.page(page);
}
//如果时间不为空
if(StringUtils.isNotBlank(timeStr)){
page1 = popularizeTravelService
.lambdaQuery()
.like(PopularizeTravel::getStartTime,timeStr)
.eq(PopularizeTravel::getState,state)
.eq(PopularizeTravel::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeTravel::getCreateTime)
.page(page);
}
//如果状态不为空
if(StringUtils.isNotBlank(state)){
page1 = popularizeTravelService
.lambdaQuery()
.eq(PopularizeTravel::getState,state)
.eq(PopularizeTravel::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeTravel::getCreateTime)
.page(page);
}
//得到集合
List<PopularizeTravel> records = page1.getRecords();
//创建一个新的集合
List<PopularizeTravel> recruitList = new ArrayList<>();
for (PopularizeTravel recruit : records) {
//创建一个对象
PopularizeTravel recruitObj = recruit;
recruitObj.setOrderList(
popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getTravelOrderId, recruit.getId())
.ge(PopularizeOrder::getState, 1)
.list()
);
recruitObj.setNum(recruitObj.getOrderList().size());
//创建一个签到人数
recruitObj.setDoNum(
popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getTravelOrderId, recruit.getId())
.eq(PopularizeOrder::getState, 2)
.eq(PopularizeOrder::getOpen, "Y")
.list().size()
);
recruitList.add(recruitObj);
}
page1.setRecords(recruitList);
return Result.OK(page1);
}else{
return this.getActivityPageList(null,"1",timeStr,cityId,pageBean);
//活动
Page<PopularizeActivity> page = new Page<PopularizeActivity>(pageBean.getPageNo(), pageBean.getPageSize());
Page<PopularizeActivity> page1 = popularizeActivityService
.lambdaQuery()
.eq(PopularizeActivity::getState,state)
.eq(PopularizeActivity::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeActivity::getCreateTime)
.page(page);
//如果标题不为空
if(StringUtils.isNotBlank(title)){
page1 = popularizeActivityService
.lambdaQuery()
.like(PopularizeActivity::getTitle,title)
.eq(PopularizeActivity::getState,state)
.eq(PopularizeActivity::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeActivity::getCreateTime)
.page(page);
}
//如果时间不为空
if(StringUtils.isNotBlank(timeStr)){
page1 = popularizeActivityService
.lambdaQuery()
.like(PopularizeActivity::getStartTime,timeStr)
.eq(PopularizeActivity::getState,state)
.eq(PopularizeActivity::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeActivity::getCreateTime)
.page(page);
}
//如果地址不为空
if(StringUtils.isNotBlank(cityId)){
page1 = popularizeActivityService
.lambdaQuery()
.eq(PopularizeActivity::getCityId,cityId)
.eq(PopularizeActivity::getState,state)
.eq(PopularizeActivity::getAdminUser,hanHaiMember.getId())
.orderByDesc(PopularizeActivity::getCreateTime)
.page(page);
}
//得到集合
List<PopularizeActivity> records = page1.getRecords();
//创建一个新的集合
List<PopularizeActivity> recruitList = new ArrayList<>();
for (PopularizeActivity recruit : records) {
//创建一个对象
PopularizeActivity recruitObj = recruit;
recruitObj.setPopularizeOrderList(
popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getActivityOrderId, recruit.getId())
.ge(PopularizeOrder::getState, 1)
.list()
);
recruitObj.setNum(recruitObj.getPopularizeOrderList().size());
//创建一个签到人数
recruitObj.setDoNum(
popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getActivityOrderId, recruit.getId())
.eq(PopularizeOrder::getState, 2)
.eq(PopularizeOrder::getOpen, "Y")
.list().size()
);
recruitList.add(recruitObj);
}
page1.setRecords(recruitList);
return Result.OK(page1);
}
}
//招募活动签到里面的签到用户列表带分页
@Override
public Result<?> getSignInUserPageList(String token, String recruitId, PageBean pageBean){
public Result<?> getSignInUserPageList(String token, String recruitId,Integer type,PageBean pageBean){
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
// Page<PopularizeSignLog> page = new Page<PopularizeSignLog>(pageBean.getPageNo(), pageBean.getPageSize());
Page<PopularizeSignLog> page = popularizeSignLogService
Page<PopularizeOrder> page = popularizeOrderService
.lambdaQuery()
.orderByDesc(PopularizeOrder::getCreateTime)
.page(new Page<>(pageBean.getPageNo(), pageBean.getPageSize()));
//type==0判断活动是否存在
if(type==0){
PopularizeActivity byId = popularizeActivityService.getById(recruitId);
if(byId==null){
return Result.error("活动不存在");
}
page = popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getActivityOrderId, recruitId)
.orderByDesc(PopularizeOrder::getCreateTime)
.eq(PopularizeOrder::getType, 0)
.page(new Page<>(pageBean.getPageNo(), pageBean.getPageSize()));
}
if(type==1){
PopularizeTravel byId = popularizeTravelService.getById(recruitId);
if(byId==null){
return Result.error("活动不存在");
}
page = popularizeOrderService
.lambdaQuery()
.eq(PopularizeOrder::getTravelOrderId, recruitId)
.eq(PopularizeOrder::getType, 1)
.orderByDesc(PopularizeOrder::getCreateTime)
.page(new Page<>(pageBean.getPageNo(), pageBean.getPageSize()));
}
return Result.OK(page);
}
@ -907,6 +1133,8 @@ public class ApiIndexServiceImpl implements ApiIndexService {
popularizeOrder.setIsFp("N");
popularizeOrder.setIsPj("N");
popularizeOrder.setOpen("N");
popularizeOrder.setName(hanHaiMember.getNickName());
popularizeOrder.setPhone(hanHaiMember.getPhone());
popularizeOrderService.save(popularizeOrder);
@ -1001,6 +1229,8 @@ public class ApiIndexServiceImpl implements ApiIndexService {
popularizeOrder.setPayPrice(byId.getExpensivePrice());
payPrice = byId.getExpensivePrice();
}
popularizeOrder.setName(hanHaiMember.getNickName());
popularizeOrder.setPhone(hanHaiMember.getPhone());
popularizeOrder.setTypePrice(typePrice);
popularizeOrder.setNum(1);
popularizeOrder.setState("0");


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeActivity/controller/PopularizeActivityController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 活动信息表
* @Author: jeecg-boot
* @Date: 2025-01-13
* @Date: 2025-01-23
* @Version: V1.0
*/
@Api(tags="活动信息表")


+ 2
- 2
module-common/src/main/java/org/jeecg/modules/popularizeActivity/entity/PopularizeActivity.java View File

@ -24,7 +24,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 活动信息表
* @Author: jeecg-boot
* @Date: 2025-01-13
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@ -164,6 +164,6 @@ public class PopularizeActivity implements Serializable {
@ApiModelProperty(value = "签到人数")
private java.lang.Integer doNum;
@TableField(exist = false)
@TableField(exist = false)
private List<PopularizeOrder> popularizeOrderList;
}

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeActivity/mapper/PopularizeActivityMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 活动信息表
* @Author: jeecg-boot
* @Date: 2025-01-13
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface PopularizeActivityMapper extends BaseMapper<PopularizeActivity> {


module-common/src/main/java/org/jeecg/modules/popularizeActivity/vue/PopularizeActivityList.vue → module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/PopularizeActivityList.vue View File

@ -290,7 +290,8 @@
{
title:'活动需知',
align:"center",
dataIndex: 'orderDetails'
dataIndex: 'orderDetails',
scopedSlots: {customRender: 'htmlSlot'}
},
{
title:'活动城市',
@ -339,8 +340,8 @@
let fieldList=[];
fieldList.push({type:'string',value:'createBy',text:'创建人',dictCode:''})
fieldList.push({type:'datetime',value:'createTime',text:'创建日期'})
fieldList.push({type:'string',value:'title',text:'中文-活动标题',dictCode:''})
fieldList.push({type:'string',value:'enTitle',text:'英文-活动标题',dictCode:''})
fieldList.push({type:'Text',value:'title',text:'中文-活动标题',dictCode:''})
fieldList.push({type:'Text',value:'enTitle',text:'英文-活动标题',dictCode:''})
fieldList.push({type:'string',value:'type',text:'活动类型',dictCode:'no_type'})
fieldList.push({type:'Text',value:'image',text:'活动封面',dictCode:''})
fieldList.push({type:'datetime',value:'startTime',text:'活动时间'})

module-common/src/main/java/org/jeecg/modules/popularizeActivity/vue/modules/PopularizeActivityForm.vue → module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/modules/PopularizeActivityForm.vue View File

@ -85,12 +85,12 @@
</a-col>
<a-col :span="24">
<a-form-model-item label="中文-注意事项" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precautions">
<a-textarea v-model="model.precautions" rows="4" placeholder="请输入中文-注意事项" />
<j-editor v-model="model.precautions" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="英文-注意事项" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enPrecautions">
<a-textarea v-model="model.enPrecautions" rows="4" placeholder="请输入英文-注意事项" />
<j-editor v-model="model.enPrecautions" />
</a-form-model-item>
</a-col>
<a-col :span="24">
@ -120,7 +120,7 @@
</a-col>
<a-col :span="24">
<a-form-model-item label="活动需知" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderDetails">
<a-textarea v-model="model.orderDetails" rows="4" placeholder="请输入活动需知" />
<j-editor v-model="model.orderDetails" />
</a-form-model-item>
</a-col>
<a-col :span="24">
@ -170,6 +170,9 @@
},
confirmLoading: false,
validatorRules: {
adminUser: [
{ required: true, message: '请输入主理人!'},
],
},
url: {
add: "/popularizeActivity/popularizeActivity/add",

+ 84
- 0
module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/modules/PopularizeActivityModal.Style#Drawer.vue View File

@ -0,0 +1,84 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<popularize-activity-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></popularize-activity-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import PopularizeActivityForm from './PopularizeActivityForm'
export default {
name: 'PopularizeActivityModal',
components: {
PopularizeActivityForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

+ 60
- 0
module-common/src/main/java/org/jeecg/modules/popularizeActivity/popularizeActivity/modules/PopularizeActivityModal.vue View File

@ -0,0 +1,60 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<popularize-activity-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></popularize-activity-form>
</j-modal>
</template>
<script>
import PopularizeActivityForm from './PopularizeActivityForm'
export default {
name: 'PopularizeActivityModal',
components: {
PopularizeActivityForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeActivity/service/IPopularizeActivityService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 活动信息表
* @Author: jeecg-boot
* @Date: 2025-01-13
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IPopularizeActivityService extends IService<PopularizeActivity> {


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeActivity/service/impl/PopularizeActivityServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 活动信息表
* @Author: jeecg-boot
* @Date: 2025-01-13
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service


+ 10
- 4
module-common/src/main/java/org/jeecg/modules/popularizeActivity/vue3/PopularizeActivity.data.ts View File

@ -117,7 +117,8 @@ export const columns: BasicColumn[] = [
{
title: '活动需知',
align:"center",
dataIndex: 'orderDetails'
dataIndex: 'orderDetails',
slots: { customRender: 'htmlSlot' },
},
{
title: '活动城市',
@ -265,6 +266,11 @@ export const formSchema: FormSchema[] = [
componentProps:{
dict:"han_hai_member,nick_name,id"
},
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入主理人!'},
];
},
},
{
label: '签到人数',
@ -299,12 +305,12 @@ export const formSchema: FormSchema[] = [
{
label: '中文-注意事项',
field: 'precautions',
component: 'InputTextArea',//TODO 注意string转换问题
component: 'JCodeEditor', //TODO String后缀暂未添加
},
{
label: '英文-注意事项',
field: 'enPrecautions',
component: 'InputTextArea',//TODO 注意string转换问题
component: 'JCodeEditor', //TODO String后缀暂未添加
},
{
label: '早鸟票',
@ -334,7 +340,7 @@ export const formSchema: FormSchema[] = [
{
label: '活动需知',
field: 'orderDetails',
component: 'InputTextArea',//TODO 注意string转换问题
component: 'JCodeEditor', //TODO String后缀暂未添加
},
{
label: '活动城市',


+ 12
- 1
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/controller/PopularizeAuthenticationController.java View File

@ -12,6 +12,8 @@ import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService;
import org.jeecg.modules.popularizeAuthentication.entity.PopularizeAuthentication;
import org.jeecg.modules.popularizeAuthentication.service.IPopularizeAuthenticationService;
@ -39,7 +41,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 主理人认证
* @Author: jeecg-boot
* @Date: 2025-01-15
* @Date: 2025-01-23
* @Version: V1.0
*/
@Api(tags="主理人认证")
@ -49,6 +51,8 @@ import org.jeecg.common.aspect.annotation.AutoLog;
public class PopularizeAuthenticationController extends JeecgController<PopularizeAuthentication, IPopularizeAuthenticationService> {
@Autowired
private IPopularizeAuthenticationService popularizeAuthenticationService;
@Autowired
private IHanHaiMemberService hanHaiMemberService;
/**
* 分页列表查询
@ -96,6 +100,13 @@ public class PopularizeAuthenticationController extends JeecgController<Populari
@ApiOperation(value="主理人认证-编辑", notes="主理人认证-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody PopularizeAuthentication popularizeAuthentication) {
//如果状态为1
if(popularizeAuthentication.getState() == 1){
//根据用户标识修改用户信息
HanHaiMember hanHaiMember = hanHaiMemberService.getById(popularizeAuthentication.getUserId());
hanHaiMember.setIsUser("Y");
hanHaiMemberService.updateById(hanHaiMember);
}
popularizeAuthenticationService.updateById(popularizeAuthentication);
return Result.OK("编辑成功!");
}


+ 6
- 5
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/entity/PopularizeAuthentication.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 主理人认证
* @Author: jeecg-boot
* @Date: 2025-01-15
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@ -47,6 +47,11 @@ public class PopularizeAuthentication implements Serializable {
/**更新日期*/
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**状态*/
@Excel(name = "状态", width = 15, dicCode = "no_state_type")
@Dict(dicCode = "no_state_type")
@ApiModelProperty(value = "状态")
private java.lang.Integer state;
/**姓名*/
@Excel(name = "姓名", width = 15)
@ApiModelProperty(value = "姓名")
@ -63,10 +68,6 @@ public class PopularizeAuthentication implements Serializable {
@Excel(name = "简历附件", width = 15)
@ApiModelProperty(value = "简历附件")
private java.lang.String image;
/**状态*/
@Excel(name = "状态", width = 15)
@ApiModelProperty(value = "状态")
private java.lang.Integer state;
/**用户*/
@Excel(name = "用户", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/mapper/PopularizeAuthenticationMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 主理人认证
* @Author: jeecg-boot
* @Date: 2025-01-15
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface PopularizeAuthenticationMapper extends BaseMapper<PopularizeAuthentication> {


module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/vue/PopularizeAuthenticationList.vue → module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/PopularizeAuthenticationList.vue View File

@ -4,6 +4,43 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="状态">
<j-dict-select-tag placeholder="请选择状态" v-model="queryParam.state" dictCode="no_state_type"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="姓名">
<a-input placeholder="请输入姓名" v-model="queryParam.name"></a-input>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="电话">
<a-input placeholder="请输入电话" v-model="queryParam.phone"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="身份证">
<a-input placeholder="请输入身份证" v-model="queryParam.cardNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="用户">
<j-search-select-tag placeholder="请选择用户" v-model="queryParam.userId" dict="han_hai_member,nick_name,id"/>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
@ -128,6 +165,11 @@
sorter: true,
dataIndex: 'createTime'
},
{
title:'状态',
align:"center",
dataIndex: 'state_dictText'
},
{
title:'姓名',
align:"center",
@ -149,11 +191,6 @@
dataIndex: 'image',
scopedSlots: {customRender: 'fileSlot'}
},
{
title:'状态',
align:"center",
dataIndex: 'state'
},
{
title:'用户',
align:"center",
@ -173,7 +210,8 @@
{
title:'图片',
align:"center",
dataIndex: 'images'
dataIndex: 'images',
scopedSlots: {customRender: 'imgSlot'}
},
{
title: '操作',
@ -210,11 +248,11 @@
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'datetime',value:'createTime',text:'创建日期'})
fieldList.push({type:'int',value:'state',text:'状态',dictCode:'no_state_type'})
fieldList.push({type:'string',value:'name',text:'姓名',dictCode:''})
fieldList.push({type:'string',value:'phone',text:'电话',dictCode:''})
fieldList.push({type:'string',value:'cardNo',text:'身份证',dictCode:''})
fieldList.push({type:'string',value:'image',text:'简历附件',dictCode:''})
fieldList.push({type:'int',value:'state',text:'状态',dictCode:'no_state_type'})
fieldList.push({type:'Text',value:'image',text:'简历附件',dictCode:''})
fieldList.push({type:'sel_search',value:'userId',text:'用户',dictTable:"han_hai_member", dictText:'nick_name', dictCode:'id'})
fieldList.push({type:'Text',value:'img',text:'微信二维码',dictCode:''})
fieldList.push({type:'int',value:'num',text:'主理人分数',dictCode:''})

module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/vue/modules/PopularizeAuthenticationForm.vue → module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/modules/PopularizeAuthenticationForm.vue View File

@ -3,6 +3,11 @@
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
<j-dict-select-tag type="list" v-model="model.state" dictCode="no_state_type" placeholder="请选择状态" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
<a-input v-model="model.name" placeholder="请输入姓名" ></a-input>
@ -23,11 +28,6 @@
<j-upload v-model="model.image" ></j-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
<a-input-number v-model="model.state" placeholder="请输入状态" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="用户" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userId">
<j-search-select-tag v-model="model.userId" dict="han_hai_member,nick_name,id" />
@ -40,12 +40,12 @@
</a-col>
<a-col :span="24">
<a-form-model-item label="主理人分数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
<a-input-number v-model="model.num" placeholder="请输入主理人分数" style="width: 100%" />
<a-input-number v-model="model.num" placeholder="请输入主理人分数" style="width: 100%" disabled/>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="images">
<a-input v-model="model.images" placeholder="请输入图片" ></a-input>
<j-image-upload isMultiple v-model="model.images" ></j-image-upload>
</a-form-model-item>
</a-col>
</a-row>

+ 84
- 0
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/modules/PopularizeAuthenticationModal.Style#Drawer.vue View File

@ -0,0 +1,84 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<popularize-authentication-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></popularize-authentication-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import PopularizeAuthenticationForm from './PopularizeAuthenticationForm'
export default {
name: 'PopularizeAuthenticationModal',
components: {
PopularizeAuthenticationForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

+ 60
- 0
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/popularizeAuthentication/modules/PopularizeAuthenticationModal.vue View File

@ -0,0 +1,60 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<popularize-authentication-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></popularize-authentication-form>
</j-modal>
</template>
<script>
import PopularizeAuthenticationForm from './PopularizeAuthenticationForm'
export default {
name: 'PopularizeAuthenticationModal',
components: {
PopularizeAuthenticationForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/service/IPopularizeAuthenticationService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 主理人认证
* @Author: jeecg-boot
* @Date: 2025-01-15
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IPopularizeAuthenticationService extends IService<PopularizeAuthentication> {


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/service/impl/PopularizeAuthenticationServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 主理人认证
* @Author: jeecg-boot
* @Date: 2025-01-15
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service


+ 55
- 12
module-common/src/main/java/org/jeecg/modules/popularizeAuthentication/vue3/PopularizeAuthentication.data.ts View File

@ -10,6 +10,11 @@ export const columns: BasicColumn[] = [
sorter: true,
dataIndex: 'createTime'
},
{
title: '状态',
align:"center",
dataIndex: 'state_dictText'
},
{
title: '姓名',
align:"center",
@ -31,11 +36,6 @@ export const columns: BasicColumn[] = [
dataIndex: 'image',
slots: { customRender: 'fileSlot' },
},
{
title: '状态',
align:"center",
dataIndex: 'state'
},
{
title: '用户',
align:"center",
@ -55,14 +55,59 @@ export const columns: BasicColumn[] = [
{
title: '图片',
align:"center",
dataIndex: 'images'
dataIndex: 'images',
customRender:render.renderAvatar,
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "状态",
field: "state",
component: 'JDictSelectTag',
componentProps:{
dictCode:"no_state_type"
},
colProps: {span: 6},
},
{
label: "姓名",
field: "name",
component: 'Input',
colProps: {span: 6},
},
{
label: "电话",
field: "phone",
component: 'Input',
colProps: {span: 6},
},
{
label: "身份证",
field: "cardNo",
component: 'Input',
colProps: {span: 6},
},
{
label: "用户",
field: "userId",
component: 'JSearchSelect',
componentProps:{
dict:"han_hai_member,nick_name,id"
},
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [
{
label: '状态',
field: 'state',
component: 'JDictSelectTag',
componentProps:{
dictCode:"no_state_type"
},
},
{
label: '姓名',
field: 'name',
@ -85,11 +130,6 @@ export const formSchema: FormSchema[] = [
componentProps:{
},
},
{
label: '状态',
field: 'state',
component: 'InputNumber',
},
{
label: '用户',
field: 'userId',
@ -109,10 +149,13 @@ export const formSchema: FormSchema[] = [
label: '主理人分数',
field: 'num',
component: 'InputNumber',
dynamicDisabled:true
},
{
label: '图片',
field: 'images',
component: 'Input',
component: 'JImageUpload',
componentProps:{
},
},
];

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeOrder/controller/PopularizeOrderController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 订单列表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
@Api(tags="订单列表")


+ 9
- 1
module-common/src/main/java/org/jeecg/modules/popularizeOrder/entity/PopularizeOrder.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 订单列表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@ -124,4 +124,12 @@ public class PopularizeOrder implements Serializable {
@Excel(name = "类型", width = 15)
@ApiModelProperty(value = "类型")
private java.lang.Integer typePrice;
/**姓名*/
@Excel(name = "姓名", width = 15)
@ApiModelProperty(value = "姓名")
private java.lang.String name;
/**电话*/
@Excel(name = "电话", width = 15)
@ApiModelProperty(value = "电话")
private java.lang.String phone;
}

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeOrder/mapper/PopularizeOrderMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 订单列表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface PopularizeOrderMapper extends BaseMapper<PopularizeOrder> {


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeOrder/service/IPopularizeOrderService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 订单列表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IPopularizeOrderService extends IService<PopularizeOrder> {


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeOrder/service/impl/PopularizeOrderServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 订单列表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service


+ 13
- 1
module-common/src/main/java/org/jeecg/modules/popularizeOrder/vue/PopularizeOrderList.vue View File

@ -244,6 +244,16 @@
align:"center",
dataIndex: 'typePrice'
},
{
title:'姓名',
align:"center",
dataIndex: 'name'
},
{
title:'电话',
align:"center",
dataIndex: 'phone'
},
{
title: '操作',
dataIndex: 'action',
@ -287,7 +297,7 @@
fieldList.push({type:'Text',value:'image',text:'订单图片',dictCode:''})
fieldList.push({type:'string',value:'type',text:'类型',dictCode:'order_type'})
fieldList.push({type:'datetime',value:'startTime',text:'时间'})
fieldList.push({type:'string',value:'address',text:'地点',dictCode:''})
fieldList.push({type:'Text',value:'address',text:'地点',dictCode:''})
fieldList.push({type:'BigDecimal',value:'price',text:'价格',dictCode:''})
fieldList.push({type:'switch',value:'open',text:'是否签到'})
fieldList.push({type:'sel_search',value:'activityOrderId',text:'溯源活动',dictTable:"popularize_activity", dictText:'title', dictCode:'id'})
@ -299,6 +309,8 @@
fieldList.push({type:'switch',value:'isFp',text:'是否已开票'})
fieldList.push({type:'switch',value:'isPj',text:'是否已评价'})
fieldList.push({type:'int',value:'typePrice',text:'类型',dictCode:''})
fieldList.push({type:'string',value:'name',text:'姓名',dictCode:''})
fieldList.push({type:'string',value:'phone',text:'电话',dictCode:''})
this.superFieldList = fieldList
}
}


+ 10
- 0
module-common/src/main/java/org/jeecg/modules/popularizeOrder/vue/modules/PopularizeOrderForm.vue View File

@ -88,6 +88,16 @@
<a-input-number v-model="model.typePrice" placeholder="请输入类型" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="姓名" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
<a-input v-model="model.name" placeholder="请输入姓名" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phone">
<a-input v-model="model.phone" placeholder="请输入电话" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>


+ 20
- 0
module-common/src/main/java/org/jeecg/modules/popularizeOrder/vue3/PopularizeOrder.data.ts View File

@ -105,6 +105,16 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'typePrice'
},
{
title: '姓名',
align:"center",
dataIndex: 'name'
},
{
title: '电话',
align:"center",
dataIndex: 'phone'
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
@ -246,4 +256,14 @@ export const formSchema: FormSchema[] = [
field: 'typePrice',
component: 'InputNumber',
},
{
label: '姓名',
field: 'name',
component: 'Input',
},
{
label: '电话',
field: 'phone',
component: 'Input',
},
];

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/controller/PopularizeSignLogController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 签到记录表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
@Api(tags="签到记录表")


+ 13
- 1
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/entity/PopularizeSignLog.java View File

@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 签到记录表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
@Data
@ -77,4 +77,16 @@ public class PopularizeSignLog implements Serializable {
@Excel(name = "是否签到", width = 15)
@ApiModelProperty(value = "是否签到")
private java.lang.Integer state;
/**类型*/
@Excel(name = "类型", width = 15)
@ApiModelProperty(value = "类型")
private java.lang.Integer type;
/**活动标识*/
@Excel(name = "活动标识", width = 15)
@ApiModelProperty(value = "活动标识")
private java.lang.String activityId;
/**旅行标识*/
@Excel(name = "旅行标识", width = 15)
@ApiModelProperty(value = "旅行标识")
private java.lang.String travelId;
}

+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/mapper/PopularizeSignLogMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 签到记录表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface PopularizeSignLogMapper extends BaseMapper<PopularizeSignLog> {


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/service/IPopularizeSignLogService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 签到记录表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
public interface IPopularizeSignLogService extends IService<PopularizeSignLog> {


+ 1
- 1
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/service/impl/PopularizeSignLogServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 签到记录表
* @Author: jeecg-boot
* @Date: 2025-01-16
* @Date: 2025-01-23
* @Version: V1.0
*/
@Service


+ 18
- 0
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/vue/PopularizeSignLogList.vue View File

@ -157,6 +157,21 @@
align:"center",
dataIndex: 'state'
},
{
title:'类型',
align:"center",
dataIndex: 'type'
},
{
title:'活动标识',
align:"center",
dataIndex: 'activityId'
},
{
title:'旅行标识',
align:"center",
dataIndex: 'travelId'
},
{
title: '操作',
dataIndex: 'action',
@ -198,6 +213,9 @@
fieldList.push({type:'string',value:'name',text:'姓名',dictCode:''})
fieldList.push({type:'string',value:'phone',text:'手机号码',dictCode:''})
fieldList.push({type:'int',value:'state',text:'是否签到',dictCode:''})
fieldList.push({type:'int',value:'type',text:'类型',dictCode:''})
fieldList.push({type:'string',value:'activityId',text:'活动标识',dictCode:''})
fieldList.push({type:'string',value:'travelId',text:'旅行标识',dictCode:''})
this.superFieldList = fieldList
}
}


+ 15
- 0
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/vue/modules/PopularizeSignLogForm.vue View File

@ -38,6 +38,21 @@
<a-input-number v-model="model.state" placeholder="请输入是否签到" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type">
<a-input-number v-model="model.type" placeholder="请输入类型" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="活动标识" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="activityId">
<a-input v-model="model.activityId" placeholder="请输入活动标识" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="旅行标识" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="travelId">
<a-input v-model="model.travelId" placeholder="请输入旅行标识" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>


+ 30
- 0
module-common/src/main/java/org/jeecg/modules/popularizeSignLog/vue3/PopularizeSignLog.data.ts View File

@ -39,6 +39,21 @@ export const columns: BasicColumn[] = [
align:"center",
dataIndex: 'state'
},
{
title: '类型',
align:"center",
dataIndex: 'type'
},
{
title: '活动标识',
align:"center",
dataIndex: 'activityId'
},
{
title: '旅行标识',
align:"center",
dataIndex: 'travelId'
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
@ -86,4 +101,19 @@ export const formSchema: FormSchema[] = [
field: 'state',
component: 'InputNumber',
},
{
label: '类型',
field: 'type',
component: 'InputNumber',
},
{
label: '活动标识',
field: 'activityId',
component: 'Input',
},
{
label: '旅行标识',
field: 'travelId',
component: 'Input',
},
];

Loading…
Cancel
Save