This commit is contained in:
王创世 2024-05-31 17:16:09 +08:00
parent 72dece78f7
commit becf7b8f37
15 changed files with 851 additions and 78 deletions

BIN
dist.zip Normal file

Binary file not shown.

View File

@ -32,6 +32,7 @@
"typescript": "^5.1.6",
"vue": "~2.6.14",
"vue-clipboard2": "^0.3.1",
"vue-cropper": "^0.6.5",
"vue-router": "^3.5.1",
"vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0"

View File

@ -14,7 +14,6 @@ import '@/style/index.less';
import './permission';
import store from './store';
Vue.use(VueRouter);
Vue.use(TDesign);
Vue.use(VueClipboard);
@ -41,7 +40,7 @@ new Vue({
// eslint-disable-next-line @typescript-eslint/no-unused-vars
render: (h) => (
<div>
{/* config-provider
{/* config-provider
<t-config-provider globalConfig={enConfig}> */}
<t-config-provider globalConfig={zhConfig}>
<App />

View File

@ -77,6 +77,9 @@
</div>
<t-dialog header="报名详情" :confirmBtn="null" :visible="infoMode" :onClose="onCloseMy" width="65%" top="50px">
<div style="height: 600px;overflow-y: scroll;">
<div style="text-align: right">
<t-button @click="exportList"><CloudDownloadIcon slot="icon" />导出</t-button>
</div>
<t-table
rowKey="index"
:data="info_list"
@ -183,6 +186,12 @@
<t-option key="4" label="学习培训" value="4"/>
</t-select>
</t-form-item>
<t-form-item label="显示报名人" name="if_display_registrants" >
<t-select v-model="addForm.if_display_registrants" :style="{ width: '480px' }">
<t-option key="1" label="显示" value="1"/>
<t-option key="2" label="不显示" value="2"/>
</t-select>
</t-form-item>
<t-form-item v-if="addForm.activity_type==4" label="付费金额" name="money">
<t-input placeholder="请输入付费金额0为免费" v-model="addForm.money" :style="{ width: '480px' }"/>
</t-form-item>
@ -325,11 +334,13 @@
</template>
<script lang="ts">
import store from "@/store";
import {Editor, Toolbar} from '@wangeditor/editor-for-vue';
import {CloudDownloadIcon} from "tdesign-icons-vue";
import axios from "axios";
export default {
components: {Editor, Toolbar},
components: {Editor, Toolbar,CloudDownloadIcon},
data() {
return {
questionnaireData: [{
@ -350,6 +361,7 @@ export default {
activity_content: '',
activity_location: '',
activity_type: null,
if_display_registrants:null,
},
activity_video:'',
activity_video_show:[],
@ -359,7 +371,7 @@ export default {
infoId: 0,
info_list: [],
info_columns: [
{colKey: 'photo_image', title: '证件照', align: 'center'},
{colKey: 'photo_image', title: '形象照', align: 'center'},
{colKey: 'nikename', title: '姓名', align: 'center'},
{colKey: 'phone', title: '手机号', align: 'center'},
{colKey: 'position_name', title: '职位', align: 'center'},
@ -373,7 +385,7 @@ export default {
list: [],
columns: [
{colKey: 'weigh', title: '排序', align: 'center',width: 80,},
{colKey: 'activity_name', title: '活动标题', align: 'center',width: 200,},
{colKey: 'activity_name', title: '活动标题', align: 'center',width: 300,},
{colKey: 'activity_type', title: '活动类别', width: 200, align: 'center'},
{colKey: 'money', title: '付费金额', align: 'center'},
{colKey: 'activity_start_time', title: '活动开始时间', align: 'center'},
@ -707,6 +719,7 @@ export default {
activity_content: '',
activity_location: '',
activity_type: null,
if_display_registrants:null,
};
},
edit(d) {
@ -727,6 +740,7 @@ export default {
this.addForm.activity_location = d.activity_location;
this.addForm.activity_content = d.activity_content;
this.addForm.activity_type = d.activity_type;
this.addForm.if_display_registrants = d.if_display_registrants;
this.addForm.money = d.money;
this.addMode = true;
this.isEdit = true;
@ -816,6 +830,10 @@ export default {
this.QuestionnaireMode=false;
this.JuanMode=false;
},
exportList(){
const token = store.state.user.token;
window.open(store.state.user.apiUrl + '/api/excel_controller/applicationexport?id='+this.infoId+"&token="+token);
},
}
}
</script>

View File

@ -23,8 +23,8 @@
<t-form-item label="协会邮箱" name="association_emal">
<t-input placeholder="请输入协会邮箱" v-model="addForm.association_emal"/>
</t-form-item>
<t-form-item label="协会电话" name="association_phone">
<t-input placeholder="请输入协会电话" v-model="addForm.association_phone"/>
<t-form-item label="联系方式" name="association_phone">
<t-input placeholder="请输入联系方式" v-model="addForm.association_phone"/>
</t-form-item>
<t-form-item label="协会简介" name="association_desc">
<div style="border: 1px solid #ccc;">
@ -196,7 +196,7 @@ export default {
return;
}
if (this.association_phone == '') {
this.$message.error('协会电话不能为空');
this.$message.error('协会联系方式不能为空');
return;
}
if (this.association_emal == '') {

View File

@ -0,0 +1,374 @@
<template>
<div>
<t-row :gutter="[16, 16]">
<t-col :xs="12" :xl="3">
<t-card title="空间使用情况" :subtitle="currentMonth" class="dashboard-chart-card" :bordered="false">
<div
id="countContainer"
ref="countContainer"
:style="{ width: `${resizeTime * 326}px`, height: `${resizeTime * 326}px`, margin: '0 auto' }"
></div>
</t-card>
</t-col>
<t-col :xs="12" :xl="9">
<t-card title="流量统计" subtitle="(GB)" class="dashboard-chart-card" :bordered="false">
<div
id="monitorContainer"
ref="monitorContainer"
:style="{ width: '100%', height: `${resizeTime * 326}px` }"
></div>
</t-card>
</t-col>
</t-row>
<div style="margin-top: 15px;">
<t-card :bordered="false" style="padding: 20px">
<t-row :gutter="[16, 16]">
<t-col :span="5" :offset="3">
<t-form :labelWidth="150">
<t-form-item label="绑定主体">
<t-input size="large" :disabled="true" v-model="association.association_name"/>
</t-form-item>
<t-form-item label="微信支付商户号">
<t-input size="large" placeholder="请输入微信支付商户号" v-model="pay.mchID"/>
</t-form-item>
<t-form-item label="微信支付密钥V3">
<t-input size="large" placeholder="请输入微信支付密钥V3" v-model="pay.appkey"/>
</t-form-item>
<t-form-item label="证书序列号">
<t-input size="large" placeholder="请输入证书序列号" v-model="pay.serial"/>
</t-form-item>
</t-form>
<div style="text-align: center;margin-top: 30px">
<t-button theme="primary" style="width: 200px">保存</t-button>
</div>
</t-col>
</t-row>
</t-card>
</div>
</div>
</template>
<script setup lang="ts">
import {ChevronRightIcon} from 'tdesign-icons-vue';
import store from "@/store";
import * as echarts from "echarts/core";
import {GridComponent, LegendComponent, TooltipComponent} from "echarts/components";
import {LineChart, PieChart} from "echarts/charts";
import {CanvasRenderer} from "echarts/renderers";
import dayjs from "dayjs";
import {getRandomArray} from "@/utils/charts";
echarts.use([TooltipComponent, LegendComponent, PieChart, GridComponent, LineChart, CanvasRenderer]);
export default {
components: {
ChevronRightIcon,
},
data() {
return {
resizeTime: 1,
currentMonth: this.getThisMonth(),
subject: '',
association: '',
pay: {
mchID: '',
appkey: '',
serial: '',
},
dataSet: {
tooltip: {
trigger: 'item',
},
grid: {
left: '0',
right: '20px',
top: '5px',
bottom: '36px',
containLabel: true,
},
legend: {
left: 'center',
bottom: '0',
orient: 'horizontal', // legend
data: ['本月', '上月'],
textStyle: {
fontSize: 12,
color: "#000000",
},
},
xAxis: {
type: 'category',
data: ["05-20", "05-21", "05-22", "05-23", "05-24", "05-25", "05-26", "05-27", "05-28", "05-29","05-30"],
boundaryGap: false,
axisLabel: {
color: "#000000",
},
axisLine: {
lineStyle: {
width: 1,
},
},
},
yAxis: {
type: 'value',
axisLabel: {
color: "#000000",
},
splitLine: {
lineStyle: {},
},
},
series: [
{
name: '本月',
data: ["10", "93", "2", "24", "30", "68", "42", "57", "50", "23","10"],
type: 'line',
smooth: false,
showSymbol: true,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
normal: {
borderWidth: 1,
borderColor: "#0052D9",
},
},
areaStyle: {
normal: {
opacity: 0.1,
},
},
},
{
name: '上月',
data:["84", "10", "33", "24", "37", "30", "72", "1", "78", "50","10"],
type: 'line',
smooth: false,
showSymbol: true,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
normal: {
borderWidth: 1,
},
},
},
],
},
One_data: {
tooltip: {
show: false,
trigger: 'axis',
position: null,
},
grid: {
top: '0',
right: '0',
},
legend: {
selectedMode: false,
itemWidth: 25,
itemHeight: 15,
textStyle: {
fontSize: 20,
color: "#0052D9",
},
left: 'center',
bottom: '0',
orient: 'horizontal', // legend
},
series: [
{
name: '空间使用情况',
type: 'pie',
radius: ['48%', '60%'],
avoidLabelOverlap: true,
selectedMode: true,
hoverAnimation: true,
silent: true,
itemStyle: {
borderColor: "#666666",
borderWidth: 1,
},
label: {
show: true,
position: 'center',
formatter: ['{value|{d}%}', '{name|{b}剩余}'].join('\n'),
rich: {
value: {
color: "#000000",
fontSize: 28,
fontWeight: 'normal',
lineHeight: 46,
},
name: {
color: '#909399',
fontSize: 12,
lineHeight: 14,
},
},
},
labelLine: {
show: false,
},
data: [
{
value: 10,
name: '空间总量',
},
{value: 4.3, name: '已使用'},
],
},
],
}
};
},
mounted() {
if (typeof (store.state.user.association) == 'object') {
this.association = store.state.user.association;
} else {
this.association = JSON.parse(store.state.user.association);
}
this.renderCharts();
},
methods: {
onCurrencyChange(checkedValues) {
const {chartColors} = this.$store.state.setting;
this.currentMonth = this.getThisMonth(checkedValues);
this.monitorChart.setOption(this.dataSet);
},
renderCharts() {
const {chartColors} = this.$store.state.setting;
//
if (!this.monitorContainer) {
this.monitorContainer = document.getElementById('monitorContainer');
}
this.monitorChart = echarts.init(this.monitorContainer);
this.monitorChart.setOption(this.dataSet);
//
if (!this.countContainer) {
this.countContainer = document.getElementById('countContainer');
}
this.countChart = echarts.init(this.countContainer);
const option = this.One_data;
this.countChart.setOption(option);
},
/** 获取当前选中时间的短时间表达法 */
getThisMonth(checkedValues = '') {
let date;
if (!checkedValues || checkedValues.length === 0) {
date = new Date();
return `${date.getFullYear()}-${date.getMonth() + 1}`;
}
date = new Date(checkedValues[0]);
const date2 = new Date(checkedValues[1]);
const startMonth = date.getMonth() + 1 > 9 ? date.getMonth() + 1 : `0${date.getMonth() + 1}`;
const endMonth = date2.getMonth() + 1 > 9 ? date2.getMonth() + 1 : `0${date2.getMonth() + 1}`;
return `${date.getFullYear()}-${startMonth}${date2.getFullYear()}-${endMonth}`;
},
}
,
}
;
</script>
<style scoped lang="less">
@import '@/style/variables.less';
.dashboard-item {
padding: 8px;
/deep/ .t-card__footer {
padding-top: 0;
}
/deep/ .t-card__title {
font-size: 14px;
font-weight: 500;
}
/deep/ .t-card__body {
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 1;
position: relative;
padding: 0px 20px;
}
&:hover {
cursor: pointer;
}
&-top {
display: flex;
flex-direction: row;
align-items: flex-start;
> span {
display: inline-block;
color: var(--td-text-color-primary);
font-size: 36px;
line-height: 44px;
}
}
&-bottom {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
> .t-icon {
cursor: pointer;
}
}
&-block {
display: flex;
align-items: center;
justify-content: center;
line-height: 22px;
color: var(--td-text-color-placeholder);
}
&-trend {
margin-left: 8px;
}
&-left {
position: absolute;
top: 0;
right: 32px;
> span {
display: inline-flex;
align-items: center;
justify-content: center;
width: 56px;
height: 56px;
background: var(--td-brand-color-1);
border-radius: 50%;
.t-icon {
font-size: 24px;
color: var(--td-brand-color);
}
}
}
}
.dashboard-chart-card {
padding: 8px;
/deep/ .t-card__header {
padding-bottom: 0px;
}
/deep/ .t-card__title {
font-size: 20px;
font-weight: 500;
}
}
</style>

View File

@ -204,9 +204,10 @@ export function getLineChartDataSet({
.format('MM-DD'),
);
}
console.log(timeArray);
inArray.push(getRandomArray().toString());
outArray.push(getRandomArray().toString());
}
const dataSet = {

View File

@ -41,7 +41,7 @@
<t-form-item label="简短标题" name="news_titleshort">
<t-input placeholder="请输入简短标题" v-model="addForm.news_titleshort"/>
</t-form-item>
<t-form-item label="文章分类" name="activity_location">
<t-form-item label="所属类目" name="activity_location">
<t-select v-model="addForm.gory_id">
<t-option v-for="(item,index) in gory_list" :key="index" :label="item.name" :value="item.id" />
</t-select>
@ -120,8 +120,8 @@ export default {
list: [],
gory_list:[],
columns: [
{colKey: 'news_title', title: '新闻标题', align: 'center'},
{colKey: 'name', title: '类别', align: 'center'},
{colKey: 'news_title', title: '新闻标题', align: 'center', width: 300},
{colKey: 'name', title: '所属类目', align: 'center'},
{colKey: 'news_auto', title: '作者', align: 'center'},
{colKey: 'news_hits', title: '点击量', align: 'center'},
{colKey: 'news_source', title: '来源', align: 'center'},

View File

@ -118,12 +118,12 @@
<div style="padding: 0px 20px">
<t-form labelAlign="top"
layout="inline">
<t-form-item label="证件照">
<t-form-item label="形象照">
<t-upload
:action="$store.state.user.apiUrl+'/api/common/upload'"
v-model="formData.photo_image_show"
theme="image"
tips="请选择证件照"
tips="请选择形象照"
accept="image/*"
:format-response="(response) => formatResponse(response, 0)"
></t-upload>

View File

@ -65,9 +65,9 @@
<t-form-item label="学位" name="academic_degree">
<t-input v-model="formData.academic_degree" placeholder="请输入学位"></t-input>
</t-form-item>
<!-- <t-form-item label="工作单位" name="academic_degree">-->
<!-- <t-input v-model="formData.work_unit" placeholder="请输入工作单位"></t-input>-->
<!-- </t-form-item>-->
<!-- <t-form-item label="工作单位" name="academic_degree">-->
<!-- <t-input v-model="formData.work_unit" placeholder="请输入工作单位"></t-input>-->
<!-- </t-form-item>-->
<t-form-item label="单位职务" name="unit_position">
<t-input v-model="formData.unit_position" placeholder="请输入单位职务"></t-input>
</t-form-item>
@ -102,15 +102,17 @@
<div style="padding: 0px 20px">
<t-form labelAlign="top"
layout="inline">
<t-form-item label="证件照">
<t-upload
:action="$store.state.user.apiUrl+'/api/common/upload'"
v-model="formData.photo_image_show"
theme="image"
tips="请选择证件照"
accept="image/*"
:format-response="(response) => formatResponse(response, 0)"
></t-upload>
<t-form-item label="形象照">
<div class="t-upload" @click="openCai">
<div class="t-upload__card-container" style="cursor: pointer">
<img :src="$store.state.user.apiUrl+formData.photo_image" style="width: 110px;height: 110px;" v-if="formData.photo_image!=''">
<svg fill="none" viewBox="0 0 24 24" width="1em" height="1em" class="t-icon t-icon-add" v-if="formData.photo_image==''">
<path fill="currentColor" d="M13 4v7h7v2h-7v7h-2v-7H4v-2h7V4h2z"></path>
</svg>
<p class="t-size-s t-upload__add-text" v-if="formData.photo_image==''">点击上传图片</p>
</div>
<small class="t-upload__tips t-size-s">请选择身份证正面照</small>
</div>
</t-form-item>
<t-form-item label="身份证正面照">
<t-upload
@ -169,8 +171,8 @@
<t-form-item label="员工人数" name="employee">
<t-input v-model="formData.employee" placeholder="请输入员工人数"></t-input>
</t-form-item>
<t-form-item label="企业注册地" name="enterprise_location">
<t-input v-model="formData.enterprise_location" placeholder="请输入企业注册地"></t-input>
<t-form-item label="企业" name="enterprise_location">
<t-input v-model="formData.enterprise_location" placeholder="请输入企业"></t-input>
</t-form-item>
<t-form-item label="上年度营业额" name="previous_revenue">
<t-input v-model="formData.previous_revenue" placeholder="请输入上年度营业额"></t-input>
@ -187,7 +189,7 @@
<t-form-item label="其他企业任职情况" name="qitaqiyerenzhiqingkuang">
<t-input v-model="formData.qitaqiyerenzhiqingkuang" placeholder="其他企业任职情况"></t-input>
</t-form-item>
<t-form-item label="企业介绍" name="enterprise_Introduction">
<t-form-item label="公司介绍" name="enterprise_Introduction">
<t-textarea placeholder="请输入企业介绍" :autosize="{ minRows: 3, maxRows: 5 }"
v-model="formData.enterprise_Introduction"/>
</t-form-item>
@ -247,22 +249,63 @@
</div>
</div>
</t-card>
<t-dialog header="图片上传" :visible="caiMode" width="40%" top="20px" :onClose="onCloseMy" @confirm="onSubmit">
<div class="cropper-content">
<div class="cropper">
<vueCropper
ref="cropper"
:img="caiImg"
:canMoveBox="false"
:output-size="1"
output-type="png"
:info="true"
:full="false"
:auto-crop="true"
autoCropWidth="200px"
autoCropHeight="200px"
mode="100%"
@realTime="realTime"
@imgLoad="imgLoad"
:fixed="true"
:fixedNumber="[1,1]"
></vueCropper>
</div>
<div class="show-preview"
:style="{'width': previews.w + 'px', 'height': previews.h + 'px', 'overflow': 'hidden', 'margin': '5px'}">
<div :style="previews.div" class="preview">
<img :src="previews.url" :style="previews.img">
</div>
</div>
</div>
<div class="footer-btn">
<div class="scope-btn">
<label class="btn" for="uploads">上传图片</label>
<input type="file" id="uploads" style="position:absolute; clip:rect(0 0 0 0);"
accept="image/png, image/jpeg, image/gif, image/jpg" @change="uploadImg($event, 1)">
</div>
</div>
</t-dialog>
</div>
</template>
<script lang="ts">
import {UserIcon, LockOnIcon} from 'tdesign-icons-vue';
import {CheckCircleIcon} from 'tdesign-icons-vue';
import store from '@/store'
import store from '@/store';
import {VueCropper} from 'vue-cropper';
import axios from 'axios';
export default {
components: {
VueCropper,
CheckCircleIcon,
UserIcon,
LockOnIcon,
},
data() {
return {
caiMode: false,
previews: {},
caiImg: '',
formData: {
phone: '',
password: '',
@ -334,6 +377,79 @@ export default {
this.getIndustry();
},
methods: {
onSubmit() {
this.$refs.cropper.getCropBlob(data => {
// do something
console.log(data)
console.log(this.caiImg);
let formData = new FormData();
formData.append('file', data, 'image.jpg');
console.log(formData);
axios.post(store.state.user.apiUrl + '/api/common/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
console.log(response);
var data=response.data;
if(data.code==1){
this.formData.photo_image=data.data.url;
this.$message.success('图片上传成功!');
this.caiMode=false;
this.caiImg='';
this.$refs.cropper.stopCrop();
this.$refs.cropper.clearCrop();
}else{
this.$message.error('图片上传失败!');
}
})
.catch(error => {
console.error('文件上传失败', error);
});
})
},
onCloseMy() {
this.caiMode = false;
},
openCai() {
this.$refs.cropper.startCrop();
this.caiMode = true;
},
realTime(data) {
this.previews = data
},
uploadImg(e, num) {
//
// this.option.img
var file = e.target.files[0]
if (!/\.(gif|jpg|jpeg|png|bmp|GIF|JPG|PNG)$/.test(e.target.value)) {
alert('图片类型必须是.gif,jpeg,jpg,png,bmp中的一种')
return false
}
var reader = new FileReader()
reader.onload = (e) => {
let data
if (typeof e.target.result === 'object') {
// Array Bufferblob base64
data = window.URL.createObjectURL(new Blob([e.target.result]))
} else {
data = e.target.result
}
if (num === 1) {
this.caiImg = data
} else if (num === 2) {
this.example2.img = data
}
}
// base64
// reader.readAsDataURL(file)
// blob
reader.readAsArrayBuffer(file)
},
imgLoad(msg) {
console.log(msg)
},
formatResponse(res, type) {
console.log(res);
if (type == 0) {
@ -357,7 +473,7 @@ export default {
console.log(res);
if (res.code == 1) {
this.industry_list = res.data;
this.industry_list.push({id:0,industry_name:'其他行业'});
this.industry_list.push({id: 0, industry_name: '其他行业'});
}
})
.catch((e) => {
@ -406,28 +522,28 @@ export default {
this.formData.other_contacts = res.data.other_contacts;
this.formData.other_social_positions = res.data.other_social_positions;
this.formData.position = res.data.position;
if(res.data.cardf_image==''){
if (res.data.cardf_image == '') {
this.formData.cardf_image_show = [];
}else{
} else {
this.formData.cardf_image_show = [{url: store.state.user.apiUrl + res.data.cardf_image}];
}
if( res.data.cardz_image==''){
if (res.data.cardz_image == '') {
this.formData.cardz_image_show = [];
}else{
} else {
this.formData.cardz_image_show = [{url: store.state.user.apiUrl + res.data.cardz_image}];
}
if( res.data.photo_image==''){
if (res.data.photo_image == '') {
this.formData.photo_image_show = [];
}else{
} else {
this.formData.photo_image_show = [{url: store.state.user.apiUrl + res.data.photo_image}];
}
this.formData.cardf_image = res.data.cardf_image;
this.formData.cardz_image = res.data.cardz_image;
this.formData.photo_image = res.data.photo_image;
if(res.data.business_license_image==''){
if (res.data.business_license_image == '') {
this.formData.business_license_image_show = [];
}else{
} else {
this.formData.business_license_image_show = [{url: store.state.user.apiUrl + res.data.business_license_image}];
}
this.formData.business_license_image = res.data.business_license_image;
@ -456,6 +572,7 @@ export default {
this.formData.documents_file_show = [{url: store.state.user.apiUrl + res.data.documents_file}];
this.formData.introduction = res.data.introduction;
this.formData.enterprise_name = res.data.enterprise_name;
})
.catch((e) => {
console.log(e);
@ -482,8 +599,8 @@ export default {
this.$message.error('请填写企业名称!');
return;
}
if(this.formData.photo_image==''){
this.formData.photo_image = '/uploads/20240517/8b2da599cd1e90fcfbb56bdf0f4f4181.webp';
if (this.formData.photo_image == '') {
this.formData.photo_image = '/uploads/20240517/8b2da599cd1e90fcfbb56bdf0f4f4181.webp';
}
// if (this.formData.enterprise_nature == '') {
// this.$message.error('');
@ -596,5 +713,80 @@ export default {
};
</script>
<style scoped lang="less">
.cropper-content {
display: flex;
display: -webkit-flex;
justify-content: flex-end;
-webkit-justify-content: flex-end;
.cropper {
width: 350px;
height: 300px;
}
.show-preview {
flex: 1;
-webkit-flex: 1;
display: flex;
display: -webkit-flex;
justify-content: center;
-webkit-justify-content: center;
.preview {
overflow: hidden;
border-radius: 50%;
border: 1px solid #cccccc;
background: #cccccc;
margin-left: 40px;
}
}
}
.footer-btn {
margin-top: 30px;
display: flex;
display: -webkit-flex;
justify-content: flex-end;
-webkit-justify-content: flex-end;
.scope-btn {
width: 350px;
display: flex;
display: -webkit-flex;
justify-content: space-between;
-webkit-justify-content: space-between;
}
.upload-btn {
flex: 1;
-webkit-flex: 1;
display: flex;
display: -webkit-flex;
justify-content: center;
-webkit-justify-content: center;
}
.btn {
outline: none;
display: inline-block;
line-height: 1;
white-space: nowrap;
cursor: pointer;
-webkit-appearance: none;
text-align: center;
-webkit-box-sizing: border-box;
box-sizing: border-box;
outline: 0;
margin: 0;
-webkit-transition: .1s;
transition: .1s;
font-weight: 500;
padding: 8px 15px;
font-size: 12px;
border-radius: 3px;
color: #fff;
background-color: #67c23a;
border-color: #67c23a;
}
}
</style>

View File

@ -20,12 +20,13 @@
</template>
<template #if_xianshi="{ row }">
<t-tag theme="primary" v-if="row.if_xianshi==0">待审核</t-tag>
<t-tag theme="success" v-if="row.if_xianshi==1">正式会员</t-tag>
<t-tag theme="danger" v-if="row.if_xianshi==2">申请拒绝</t-tag>
<t-tag theme="success" v-if="row.if_xianshi==1">审核通过</t-tag>
<t-tag theme="danger" v-if="row.if_xianshi==2">已拒绝</t-tag>
</template>
<template #select="{ row }">
<t-space size="24px">
<t-button theme="default" v-if="row.if_xianshi==0" @click="openMode()">审核</t-button>
<t-button theme="default" v-if="row.if_xianshi==0" @click="openMode(row,1)">审核</t-button>
<t-button theme="default" v-if="row.if_xianshi!=0" @click="openMode(row,0)">详情</t-button>
</t-space>
</template>
</t-table>
@ -38,41 +39,137 @@
></t-pagination>
</div>
</div>
<t-dialog header="信息审核" :confirmBtn="null" :visible="ShenMode" :onClose="onCloseMy" width="65%" top="50px">
<div style="height: 600px;text-align: center">
<t-dialog header="信息审核" :confirmBtn="null" :visible="ShenMode" :onClose="onCloseMy" :cancelBtn="null"
width="800px" top="50px">
<div style="text-align: center;width: 700px;height: 700px;margin: 0 auto;position: relative;overflow-y: scroll;">
<t-space direction="vertical">
<t-row>
<t-col :span="4">
<div style="font-size: 16px;font-weight: 600">旧信息</div>
</t-col>
<t-col :span="4">
</t-col>
<t-col :span="4">
<div style="font-size: 16px;font-weight: 600">新信息</div>
</t-col>
</t-row>
<t-row v-for="item in 5">
<t-col :span="4">
<div>证件照123456</div>
</t-col>
<t-col :span="4">
<div>-></div>
</t-col>
<t-col :span="4">
<div>123456</div>
</t-col>
</t-row>
<t-row>
<t-col :span="3">
<div style="font-size: 16px;font-weight: 600">类别</div>
</t-col>
<t-col :span="3">
<div style="font-size: 16px;font-weight: 600">原信息</div>
</t-col>
<t-col :span="3">
</t-col>
<t-col :span="3">
<div style="font-size: 16px;font-weight: 600">新信息</div>
</t-col>
</t-row>
<t-row style="font-size: 16px">
<t-col :span="3">
<t-space direction="vertical">
<div style="height: 100px;text-align: center;line-height: 100px" v-if="typeof (updateInfo.member_log.background_image) !='undefined'">名片背景图</div>
<div style="height: 100px;text-align: center;line-height: 100px" v-if="typeof (updateInfo.member_log.photo_image) !='undefined'">形象照</div>
<div v-if="typeof (updateInfo.member_log.position_name) !='undefined'">协会职务</div>
<div v-if="typeof (updateInfo.member_log.nikename) !='undefined'">姓名</div>
<div v-if="typeof (updateInfo.member_log.gender_name) !='undefined'">性别</div>
<div v-if="typeof (updateInfo.member_log.phone) !='undefined'">联系方式</div>
<div style="height: 200px" v-if="typeof (updateInfo.member_log.introduction) !='undefined'">个人经历</div>
<div style="height: 100px;text-align: center;line-height: 100px" v-if="typeof (updateInfo.member_log.company_image) !='undefined'">公司图标</div>
<div v-if="typeof (updateInfo.member_log.enterprise_name) !='undefined'">公司名称</div>
<div v-if="typeof (updateInfo.member_log.industry_name) !='undefined'">公司行业</div>
<div v-if="typeof (updateInfo.member_log.enterprise_location) !='undefined'">公司地址</div>
<div v-if="typeof (updateInfo.member_log.enterprise_Introduction) !='undefined'">公司介绍</div>
</t-space>
</t-col>
<t-col :span="3">
<t-space direction="vertical">
<div v-if="typeof (updateInfo.member.background_image) !='undefined'" style="height: 100px;">
<img v-if="updateInfo.member.background_image!=''"
:src="$store.state.user.apiUrl+updateInfo.member.background_image"
style="height: 100px;width:100%">
<div v-if="updateInfo.member.background_image==''"
style="height: 100px;text-align: center;line-height: 100px">
</div>
</div>
<div v-if="updateInfo.member.photo_image" style="height: 100px;"><img
:src="$store.state.user.apiUrl+updateInfo.member.photo_image"
style="width: 100px;height: 100px"></div>
<div v-if="typeof (updateInfo.member.position_name) !='undefined'">{{ updateInfo.member.position_name }}</div>
<div v-if="typeof (updateInfo.member.nikename) !='undefined'">{{ updateInfo.member.nikename }}</div>
<div v-if="typeof (updateInfo.member.gender_name) !='undefined'">{{ updateInfo.member.gender_name }}</div>
<div v-if="typeof (updateInfo.member.phone) !='undefined'">{{ updateInfo.member.phone }}</div>
<div style="height: 200px" v-if="typeof (updateInfo.member.introduction) !='undefined'">{{ updateInfo.member.introduction }}</div>
<div v-if="typeof (updateInfo.member.company_image) !='undefined'" style="height: 100px;">
<img v-if="updateInfo.member.company_image!=''"
:src="$store.state.user.apiUrl+updateInfo.member.company_image"
style="height: 100px">
<div v-if="updateInfo.member.company_image==''"
style="height: 100px;text-align: center;line-height: 100px">
</div>
</div>
<div v-if="typeof (updateInfo.member.enterprise_name) !='undefined'">{{ updateInfo.member.enterprise_name }}</div>
<div v-if="typeof (updateInfo.member.industry_name) !='undefined'">{{ updateInfo.member.industry_name }}</div>
<div v-if="typeof (updateInfo.member.enterprise_location) !='undefined'">{{ updateInfo.member.enterprise_location==''?'':updateInfo.member.enterprise_location }}</div>
<div v-if="typeof (updateInfo.member.enterprise_Introduction) !='undefined'">{{ updateInfo.member.enterprise_Introduction }}</div>
</t-space>
</t-col>
<t-col :span="3">
<div style="position: absolute;width: 100%;">
<SwapRightIcon size="2em"/>
</div>
</t-col>
<t-col :span="3">
<t-space direction="vertical">
<div v-if="updateInfo.member_log.background_image" style="height: 100px;"><img
:src="$store.state.user.apiUrl+updateInfo.member_log.background_image"
style="height: 100px;width:100%"></div>
<div v-if="updateInfo.member_log.photo_image" style="height: 100px;"><img
:src="$store.state.user.apiUrl+updateInfo.member_log.photo_image"
style="width: 100px;height: 100px"></div>
<div v-if="typeof (updateInfo.member_log.position_name) !='undefined'">{{ updateInfo.member_log.position_name }}</div>
<div v-if="typeof (updateInfo.member_log.nikename) !='undefined'">{{ updateInfo.member_log.nikename }}</div>
<div v-if="typeof (updateInfo.member_log.gender_name) !='undefined'">{{ updateInfo.member_log.gender_name }}</div>
<div v-if="typeof (updateInfo.member_log.phone) !='undefined'">{{ updateInfo.member_log.phone }}</div>
<div style="height: 200px" v-if="typeof (updateInfo.member_log.introduction) !='undefined'">{{ updateInfo.member_log.introduction }}</div>
<div v-if="typeof (updateInfo.member_log.company_image) !='undefined'" style="height: 100px;">
<img v-if="updateInfo.member_log.company_image!=''"
:src="$store.state.user.apiUrl+updateInfo.member_log.company_image"
style="width: 100px;height: 100px">
<div v-if="updateInfo.member_log.company_image==''"
style="height: 100px;text-align: center;line-height: 100px">
</div>
</div>
<div v-if="typeof (updateInfo.member_log.enterprise_name) !='undefined'">{{ updateInfo.member_log.enterprise_name }}</div>
<div v-if="typeof (updateInfo.member_log.industry_name) !='undefined'">{{ updateInfo.member_log.industry_name }}</div>
<div v-if="typeof (updateInfo.member_log.enterprise_location) !='undefined'">{{ updateInfo.member_log.enterprise_location }}</div>
<div v-if="typeof (updateInfo.member_log.enterprise_Introduction) !='undefined'">{{ updateInfo.member_log.enterprise_Introduction }}</div>
</t-space>
</t-col>
</t-row>
</t-space>
<div style="text-align: center;margin-top: 50px" v-if="type==1">
<t-popconfirm content="确定要审核通过吗?" v-model="v1" @confirm="shenDo(1)">
<t-button theme="success">审核通过</t-button>
</t-popconfirm>
<t-popconfirm theme="danger" v-model="v2" @confirm="shenDo(2)">
<template slot="content">
<p class="title">拒绝理由</p>
<p class="describe" style="margin-top: 10px">
<t-input v-model="content" placeholder="请输入拒绝理由"/>
</p>
</template>
<t-button theme="danger" style="margin-left: 30px">审核拒绝</t-button>
</t-popconfirm>
</div>
</div>
</t-dialog>
</t-card>
</template>
<script lang="ts">
import store from "@/store";
import {SwapRightIcon} from "tdesign-icons-vue";
export default {
components: {SwapRightIcon},
data() {
return {
v1: false,
v2: false,
association: {},
ShenMode: false,
list: [],
@ -86,14 +183,64 @@ export default {
total: 0,
page: 1,
size: 10,
updateInfo: {
member: {},
member_log: {}
},
member_id: 0,
id: 0,
content: '',
type: 0,
}
},
mounted() {
this.getList();
},
methods: {
openMode() {
this.ShenMode = true;
shenDo(dis) {
if (dis == 2 && this.content == '') {
this.$message.error('请填写拒绝理由!');
return;
}
if (dis == 1) {
this.content = '您提交的信息修改已通过审核!';
}
this.$request
.post("/member_log/update", {
member_id: this.member_id,
id: this.id,
if_xianshi: dis,
content: this.content,
member_log: JSON.stringify(this.updateInfo.member_log)
})
.then((res) => {
console.log(res);
if (res.code == 1) {
this.$message.success(res.msg);
this.ShenMode = false;
this.getList();
} else {
this.$message.error(res.msg);
}
})
.catch((e) => {
console.log(e);
});
},
openMode(d, index) {
this.type = index;
this.member_id = d.member_id;
this.id = d.id;
this.$request
.post("/member_log/find", {member_id: d.member_id, id: d.id})
.then((res) => {
this.ShenMode = true;
console.log(res);
this.updateInfo = res.data;
})
.catch((e) => {
console.log(e);
});
},
onCloseMy() {
this.ShenMode = false;
@ -123,5 +270,7 @@ export default {
}
</script>
<style scoped lang="less">
::-webkit-scrollbar {
display: none;
}
</style>

View File

@ -9,7 +9,7 @@
:style="{ marginBottom: '30px' }"
>
<t-row>
<t-col :span="5">
<t-col :span="6">
<t-row :gutter="[16, 24]">
<t-col :flex="2">
<t-form-item label="会员姓名" name="nikename">
@ -33,6 +33,14 @@
/>
</t-form-item>
</t-col>
<t-col :flex="3">
<t-form-item label="职务" name="phone">
<t-select v-model="formData.position_id" style="width: 200px">
<t-option label="全部" value="" />
<t-option v-for="(item,index) in positionList" :label="item.position_name" :value="item.id" />
</t-select>
</t-form-item>
</t-col>
</t-row>
</t-col>
<t-col :span="2" class="operation-container">
@ -100,7 +108,7 @@ export default {
tabIndex:1,
columns:[
{ colKey: 'member_id', title: '会员ID'},
{ colKey: 'photo_image', title: '证件照'},
{ colKey: 'photo_image', title: '形象照'},
{ colKey: 'nikename', title: '会员姓名'},
{ colKey: 'position_name', title: '职位'},
{ colKey: 'phone', title: '手机号'},
@ -112,9 +120,11 @@ export default {
page:1,
size:10,
formData:{
position_id:'',
nikename: '',
phone: ''
},
positionList:[],
}
},
mounted() {
@ -124,8 +134,20 @@ export default {
this.association=JSON.parse(this.$store.state.user.association);
}
this.getList();
this.getPositionList();
},
methods: {
getPositionList() {
this.$request
.post("/position")
.then((res) => {
console.log(res);
this.positionList = res.data;
})
.catch((e) => {
console.log(e);
});
},
tabIndexChange(d){
console.log(d);
this.page=1;

View File

@ -2,7 +2,7 @@
<div class="detail-base">
<t-card title="基本信息" :bordered="false" class="info-block">
<t-descriptions :column="4">
<t-descriptions-item label="证件照">
<t-descriptions-item label="形象照">
<div slot="content">
<t-image-viewer v-model="visible" :draggable="true" mode="modeless" :images="[$store.state.user.apiUrl+info.photo_image]">
<template #trigger="{ open }">
@ -89,7 +89,7 @@
{{info.if_list==1?"否":"是"}}
</div>
</t-descriptions-item>
<t-descriptions-item label="企业注册地" :content="info.enterprise_location"></t-descriptions-item>
<t-descriptions-item label="企业" :content="info.enterprise_location"></t-descriptions-item>
<t-descriptions-item label="上年度营业额" :content="!info.previous_revenue?'':info.previous_revenue+'万'"></t-descriptions-item>
<t-descriptions-item label="上年度纳税额" :content="!info.previous_tax?'':info.previous_tax+'万'"></t-descriptions-item>
<t-descriptions-item label="上年度净利润" :content="!info.previous_profit?'':info.previous_profit+'万'"></t-descriptions-item>
@ -97,7 +97,7 @@
<t-descriptions-item label="企业介绍" :content="info.enterprise_Introduction"></t-descriptions-item>
<t-descriptions-item label="业务介绍" :content="info.introdiction"></t-descriptions-item>
<t-descriptions-item label="企业所获荣誉以及专利" :content="info.enterorise_honor"></t-descriptions-item>
<t-descriptions-item label="其他企业任职况" :content="info.qitaqiyerenzhiqingkuang"></t-descriptions-item>
<t-descriptions-item label="其他企业任职况" :content="info.qitaqiyerenzhiqingkuang"></t-descriptions-item>
<t-descriptions-item label="是否建立团组织">
<div slot="content">

View File

@ -32,12 +32,16 @@
<t-form-item label="职位名称" name="name">
<t-input placeholder="请输入职位名称" v-model="position_name"/>
</t-form-item>
<t-form-item label="职位等级" name="name">
<t-input placeholder="请输入职位等级" type="number" v-model="weigh"/>
</t-form-item>
<t-form-item label="职位类别" name="name">
<t-select v-model="type" :style="{ width: '200px' }">
<t-option label="理事会" value="1"></t-option>
<t-option label="监事会" value="2"></t-option>
</t-select>
</t-form-item>
</t-form>
</t-dialog>
</t-card>
@ -53,7 +57,9 @@ export default {
isEdit: false,
editID:0,
list: [],
weigh:0,
columns: [
{colKey: 'weigh', title: '职位等级'},
{colKey: 'position_name', title: '职位名称'},
{colKey: 'type', title: '职位类别'},
{colKey: 'select', title: '操作', width: 200},
@ -91,6 +97,7 @@ export default {
this.editID=d.id;
this.position_name=d.position_name;
this.type=String(d.type);
this.weigh=d.weigh;
this.addMode=true;
this.isEdit=true;
},
@ -114,12 +121,16 @@ export default {
this.$message.error('职位类别不能为空');
return;
}
if (this.weigh === '') {
this.$message.error('职位等级不能为空');
return;
}
var url='/position/add';
if(this.isEdit){
url='/position/update';
}
this.$request
.post(url,{position_name:this.position_name,type:this.type,id:this.editID})
.post(url,{position_name:this.position_name,type:this.type,id:this.editID,weigh:this.weigh})
.then((res) => {
if(res.code==1){
this.$message.success(res.msg);

View File

@ -101,6 +101,12 @@ export default [
name: 'associationIndex',
component: () => import('@/pages/association/index.vue'),
meta: { title: '关于我们' },
},
{
path: 'system',
name: 'systemIndex',
component: () => import('@/pages/association/system.vue'),
meta: { title: '系统设置' },
}
],
},