完成合并:保留本地新增/修改文件,同步远程历史

This commit is contained in:
ryx 2026-01-27 01:10:41 +08:00
commit 15097de339
13 changed files with 1722 additions and 0 deletions

31
.gitignore vendored Normal file
View File

@ -0,0 +1,31 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.out
*.so
*.dylib
*.pem
*.log
*.glb
*.zip
*.rar
*.pdf
*.docx
*.xls
*.doc
*.gltf
*.mp3
*.mp4
# Dependency directories (remove the comment below to include it)
资料/*
web/ud/docs/*
web/ud/2025/*
web/ud/2026/*
web/ud/2027/*
web/ud/2028/*
**/unpackage/
**/tmp/
web.ini
gitup.bat

View File

@ -18,12 +18,17 @@
"pagePath": "pages/main/index"
},
{
<<<<<<< HEAD
"pagePath": "pages/main/message"
},
{
"pagePath": "pages/main/me"
}
=======
"pagePath": "pages/main/me"
}
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
]
},
"preloadRule": {

View File

@ -7,13 +7,22 @@
}
},
{
<<<<<<< HEAD
"path": "pages/main/me",
=======
"path": "pages/main/notify",
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
"style": {
"enablePullDownRefresh": true
}
},
<<<<<<< HEAD
{
"path": "pages/main/message",
=======
{
"path": "pages/main/me",
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
"style": {
"enablePullDownRefresh": true
}
@ -58,7 +67,11 @@
"pagePath": "pages/main/index"
},
{
<<<<<<< HEAD
"pagePath": "pages/main/message"
=======
"pagePath": "pages/main/notify"
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
},
{
"pagePath": "pages/main/me"
@ -412,6 +425,7 @@
]
},
{
<<<<<<< HEAD
"root": "pages/lab",
"pages": [
{
@ -424,5 +438,17 @@
}
]
}
=======
"root": "pages/lab",
"pages": [
{
"path": "userlist",
"style": {
"enablePullDownRefresh": true
}
}
]
}
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
]
}

View File

@ -0,0 +1,280 @@
<template>
<view class="container">
<!-- 搜索栏按姓名/头衔搜索 -->
<view class="search my2">
<div class="flex flex-center">
<input
type="text"
v-model="searchKey"
placeholder="请输入姓名/头衔搜索"
class="flex1 px2 py1"
@confirm="getList"
/>
<button class="btn man ml2" @click="getList">搜索</button>
</div>
</view>
<!-- 新增按钮 -->
<button class="btn succ my2" @click="goToEdit">新增成员</button>
<!-- 成员列表 -->
<div class="table bg1 rounded">
<!-- 表头 -->
<div class="flex bg5 txt6 py2 px2">
<div class="col-3 txt-center">头像</div>
<div class="col-4 txt-center">姓名</div>
<div class="col-4 txt-center">手机号</div>
<div class="col-4 txt-center">头衔</div>
<div class="col-4 txt-center">状态</div>
<div class="col-3 txt-center">性别</div>
<div class="col-3 txt-center">学历</div>
<div class="col-3 txt-center">操作</div>
</div>
<!-- 列表内容 -->
<div class="list" v-if="list.length > 0">
<div
class="flex py2 px2 border-b border-bg6"
v-for="item in list"
:key="item.id"
>
<div class="col-3 txt-center">
<image :src="item.avatar" mode="aspectFill" class="w-10 h-10 rounded-full"></image>
</div>
<div class="col-4 txt-center">{{ item.name }}</div>
<div class="col-4 txt-center">{{ item.mobile }}</div>
<div class="col-4 txt-center">{{ getTitleText(item.usertitle) }}</div>
<div class="col-4 txt-center">
<span :class="getStatusTagClass(item.stpstatus)">{{ getStatusText(item.stpstatus) }}</span>
</div>
<div class="col-3 txt-center">{{ getSexText(item.sex) }}</div>
<div class="col-3 txt-center">{{ getEducationText(item.education) }}</div>
<div class="col-3 txt-center flex flex-center justify-center gap2">
<button class="btn def sm" @click.stop="goToEdit(item.id)">编辑</button>
<button class="btn dag sm" @click.stop="delMember(item.id)">删除</button>
<button
class="btn sm"
:class="item.stpstatus === 30 ? 'warn' : 'succ'"
@click.stop="auditMember(item.id, item.stpstatus === 30 ? 40 : 30)"
>
{{ item.stpstatus === 30 ? '设为历史' : '设为在册' }}
</button>
</div>
</div>
</div>
<!-- 空数据提示 -->
<div class="txt-center py10 txt3" v-if="list.length === 0">
暂无成员数据
</div>
</div>
<!-- 分页 -->
<div class="table page flex justify-end mt2" v-if="total > pageSize">
<button
class="btn def sm mr1"
@click="page--; getList()"
:disabled="page <= 1"
>上一页</button>
<span class="px2">{{ page }} / {{ Math.ceil(total / pageSize) }}</span>
<button
class="btn def sm ml1"
@click="page++; getList()"
:disabled="page >= Math.ceil(total / pageSize)"
>下一页</button>
</div>
</view>
</template>
<script>
export default {
data() {
return {
list: [], //
searchKey: '', // /
page: 1, //
pageSize: 15, //
total: 0, //
//
sexMap: {
10: '男',
20: '女',
90: '其他'
},
titleMap: {
10: '主任',
20: '副主任',
30: '顾问',
40: '名誉主任',
50: '教授',
60: '副教授',
70: '讲师',
80: '研究员'
},
statusMap: {
10: '负责人',
20: '科研秘书',
30: '在册成员',
40: '历史成员',
50: '外部成员'
},
educationMap: {
50: '本科',
60: '硕士',
70: '博士'
}
};
},
onLoad() {
this.getList();
},
methods: {
// /
async getList() {
try {
const res = await uni.request({
url: '/web/ambap/member.php',
method: 'POST',
data: {
act: 'member.list',
page: this.page,
pageSize: this.pageSize,
searchKey: this.searchKey, // /
searchType: 'name,title' // +
}
});
if (res.data.code === 1) {
this.list = res.data.list;
this.total = res.data.total;
} else {
uni.showToast({
title: res.data.errmsg || '获取列表失败',
icon: 'none'
});
}
} catch (err) {
uni.showToast({
title: '网络错误',
icon: 'none'
});
console.error('获取列表失败:', err);
}
},
//
goToEdit(id) {
uni.navigateTo({
url: `/pages/lab/useredit?id=${id || ''}`
});
},
//
async delMember(id) {
const confirm = await uni.showModal({
title: '提示',
content: '确定要删除该成员吗?'
});
if (!confirm.confirm) return;
try {
const res = await uni.request({
url: '/web/ambap/member.php',
method: 'POST',
data: {
act: 'member.del',
id: id
}
});
if (res.data.code === 1) {
uni.showToast({
title: '删除成功',
icon: 'success'
});
this.getList();
} else {
uni.showToast({
title: res.data.errmsg || '删除失败',
icon: 'none'
});
}
} catch (err) {
uni.showToast({
title: '网络错误',
icon: 'none'
});
console.error('删除失败:', err);
}
},
//
async auditMember(id, status) {
try {
const res = await uni.request({
url: '/web/ambap/member.php',
method: 'POST',
data: {
act: 'member.audit',
id: id,
status: status
}
});
if (res.data.code === 1) {
uni.showToast({
title: '操作成功',
icon: 'success'
});
this.getList();
} else {
uni.showToast({
title: res.data.errmsg || '操作失败',
icon: 'none'
});
}
} catch (err) {
uni.showToast({
title: '网络错误',
icon: 'none'
});
console.error('状态切换失败:', err);
}
},
//
getSexText(sex) {
return this.sexMap[sex] || '未知';
},
//
getTitleText(title) {
return this.titleMap[title] || '未知头衔';
},
//
getStatusText(status) {
return this.statusMap[status] || '未知状态';
},
//
getStatusTagClass(status) {
switch(status) {
case 10: return 'cata_man'; // -
case 20: return 'cata_warn'; // -
case 30: return 'cata_succ'; // -
case 40: return 'cata_def'; // -
case 50: return 'cata_dag'; // -
default: return 'cata_def';
}
},
//
getEducationText(edu) {
return this.educationMap[edu] || '未知学历';
}
}
};
</script>

View File

@ -22,7 +22,11 @@
<view class="icon" :style="{backgroundImage:svg2bg(svg.cqd)}"></view>
<view class="name">游客页面</view>
</view>
<<<<<<< HEAD
<view class="grid" @tap="gourl" data-url="$/pages/lab/user_list">
=======
<view class="grid" @tap="gourl" data-url="$/pages/lab/userlist">
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
<view class="icon" :style="{backgroundImage:svg2bg(svg.cjf)}"></view>
<view class="name">成员管理</view>
</view>
@ -55,6 +59,10 @@
}
},
onLoad() {
<<<<<<< HEAD
=======
console.log('onload');
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
if (this.opn.u) {
uni.navigateTo({
url: decodeURIComponent(this.opn.u)
@ -76,6 +84,10 @@
onShow() {
if (this._meid === this.me.id)
return;
<<<<<<< HEAD
=======
console.log('onshow 12');
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
this._meid = this.me.id;
this.pageno = 0;
this.init.members = [];

View File

@ -0,0 +1,412 @@
<template>
<ciy-header title="我的" mode="scroll"></ciy-header>
<view class="topbg"></view>
<view :style="{height:header_statusbar_height+'px'}"></view>
<view style="padding-top:1rem;">
<view class="avartop">
<image :src="file_stor(me.icon?me.icon:'/img/face.png')" mode="scaleToFill" />
</view>
</view>
<view class="maincard" style="margin-top: -2.5rem;">
<view class="flex flex-center">
<view class="nick" @tap="gourl" data-url="$/pages/me/user_info">{{me.id>0?(me.name?me.name:'游客'):'登录/注册'}}</view>
<view class="icon zy" style="margin-left:1rem;" v-if="showbalance" @tap="getbalance(2)"></view>
<view class="icon by" style="margin-left:1rem;" v-else @tap="getbalance(1)"></view>
</view>
<view class="abs r0 t0" style="opacity: 0;" @tap="gourl" data-url="/pages/demo/index">Demo</view>
<view class="abs r1 b1 txt-smmm" @tap="copyboard('E' + me.eid)" v-if="me.id>0">E{{me.eid}}</view>
<view class="usrnum">
<view>
<view class="num" v-if="showbalance">
<ciy-shownum speed="80" :value="me.mymoney" unit=",100,2|万,1000000,2|亿,10000000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit">可消费余额</view>
</view>
<view>
<view class="num" v-if="showbalance">
<ciy-shownum :value="me.mycashmoney" unit=",100,2|万,1000000,2|亿,10000000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit">可提现余额</view>
</view>
<view>
<view class="num" v-if="showbalance">
<ciy-shownum :value="me.mypnt" unit=",1,0|万,10000,2|亿,100000000,2"></ciy-shownum>
</view>
<view class="num" v-else>---</view>
<view class="tit" @tap="gourl" data-url="$/pages/me/pnt_lst">积分</view>
</view>
</view>
</view>
<view class="maincard px4" v-if="me.id>0">
<template v-if="me.accounttimes>tostamp()">
<view class="caption">有效会员</view>
<view class="expdate">{{ccode(g.userlevel, me.userlevel)}} 有效期至 {{todatetime(me.accounttimes, 'd')}}</view>
</template>
<template v-else>
<view class="caption">会员已到期</view>
<view class="expdate" style="color:var(--dag5);">{{ccode(g.userlevel, me.userlevel)}} 到期日 {{todatetime(me.accounttimes, 'd')}}</view>
</template>
<view class="ciy-hr"></view>
<view class="caption">选择{{me.accounttimes>tostamp()?'续费':'付费'}}方案</view>
<view class="userpay" v-if="init.userbuys">
<view class="item" @tap="buyuser(item)" v-for="(item,index) in init.userbuys" :key="index">
<view class="price">{{item.usermoney/100}}</view>
<view class="memo">{{item.name}}</view>
<view class="recommend" v-if="init.recommend == item.id">推荐</view>
</view>
</view>
xiaoxi 消息
<view class="caption">付费会员权益</view>
<view class="cgrid">
<view class="item">
<view class="icon">📇</view>
<view class="txt">权益1</view>
</view>
<view class="item">
<view class="icon">🤝</view>
<view class="txt">权益2</view>
</view>
</view>
</view>
<view class="maincard">
<view class="ciy-grid">
<view class="grid" data-url="$/pages/me/cash_charge" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v1)}"></view>
<view class="name">充值</view>
</view>
<view class="grid" data-url="$/pages/me/cashie_lst" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v3)}"></view>
<view class="name">收支明细</view>
</view>
<view class="grid" data-url="$/pages/me/cashout_cash" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v2)}"></view>
<view class="name">提现</view>
</view>
<view class="grid" data-url="$/pages/me/cashoe_lst" @tap="gourl">
<view class="icon" :style="{backgroundImage:svg2bg(svg.v3)}"></view>
<view class="name">收益明细</view>
</view>
</view>
<view class="ciy-grid">
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
<view class="grid">
<view class="icon" :style="{backgroundImage:svg2bg(svg.ciy)}"></view>
<view class="name">图标名称</view>
</view>
</view>
</view>
<view class="bg5" style="height:0.3rem;"></view>
<ciy-swipelist v-if="me.id>0" title="众识码" data-url="$/pages/me/safe_ccub" @tap="gourl" :right="tocciy(me.cciy)" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="实名认证" data-url="$/pages/me/safe_real" @tap="gourl" :right="tomsk(me.truename, '#***')" more></ciy-swipelist>
<view class="bg5" style="height:0.3rem;"></view>
<ciy-swipelist v-if="me.id>0" title="个人信息" @tap="gourl" data-url="$/pages/me/user_info" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="收款银行" @tap="gourl" data-url="$/pages/me/user_bank" :right="me.bankaccount?'已设置':'未设置'" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="收货地址" @tap="gourl" data-url="$/pages/me/user_shipaddr" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="我要开票" @tap="gourl" data-url="$/pages/me/invoicing" :right="me.myinvmoney>=1000?'可开票':'未达开票金额'" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="分享二维码" @tap="gourl" data-url="$/pages/me/share_qrcode" more></ciy-swipelist>
<ciy-swipelist v-if="me.mobile" :title="me.needpass?'设置密码':'修改密码'" @tap="gourl" data-url="$/pages/me/safe_password" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="意见建议" @tap="gourl" data-url="$/pages/me/suggest" right="留下您的宝贵建议" more></ciy-swipelist>
<ciy-swipelist title="帮助中心" @tap="gourl" data-url="/pages/pub/psection?id=1" right="FAQ" more></ciy-swipelist>
<ciy-swipelist v-if="me.id>0" title="工单提问" @tap="gourl" data-url="$/pages/me/problem_pub" right="提交您的问题" more></ciy-swipelist>
<ciy-swipelist title="联系客服" more>
<button open-type="contact" plain class="btn tran" style="color:var(--txt5)">在线客服</button>
</ciy-swipelist>
<ciy-swipelist title="关于我们" @tap="gourl" data-url="/pages/pub/paper?id=1" right="众产" more></ciy-swipelist>
<ciy-swipelist title="软件版本" @tap="upver" :right="version" more></ciy-swipelist>
<view class="bg5" v-if="me.id>0" style="height:0.5rem;"></view>
<ciy-swipelist v-if="me.id>0" title="重新登录" @tap="relogin" more></ciy-swipelist>
<ciy-tabbar ref="tabbar"></ciy-tabbar>
</template>
<script>
export default {
data() {
return {
svg: {},
version:'',
showbalance: false,
}
},
onLoad() {
var app = getApp();
this.version = app.globalData._version;
this.load_svgicon(this.file_stor('/svgicon/me.txt')).then(svgs => {
this.svg = svgs;
});
this.getinit();
},
onPullDownRefresh(b) {
var app = getApp();
app.globalData._restorage = true;
uni.stopPullDownRefresh();
},
methods: {
async getinit() {
await this.getauth();
var retjson = await this.callfunc({
func: 'main.me_init',
//cache: 86400,
});
if (retjson.code != 1)
return this.alert(retjson.errmsg);
this.init = retjson;
},
async getbalance(act) {
if (this._loading)
return;
await this.getauth();
if (this.me.id == 0)
return;
if (act == 2) {
this.showbalance = false;
return;
}
this._loading = true;
var retjson = await this.callfunc({
func: 'me.me_balance_get',
data: {}
});
this._loading = false;
if (retjson.code != 1)
return this.alert(retjson.errmsg);
this.showbalance = true;
this.me = this.objdeepmerge(this.me, retjson.user);
this.setstorage('me', this.me);
},
async buyuser(item) {
if (item.userlevel < this.me.userlevel) {
if (await this.askmsg('您当前会员等级高于续费等级,\n是否降级续费', '降级') != 'ok')
return;
}
if (this._loading)
return;
this._loading = true;
var retjson = await this.callfunc({
func: 'me.me_userbuy_create',
data: {
id: item.id
}
});
this._loading = false;
if (retjson.code != 1)
return this.alert(retjson.errmsg);
retjson.provider = 'wxpay';
try {
var retpay = await uni.requestPayment(retjson);
await this.sleep(1000);
var retjson2 = await this.callfunc({
func: 'me.me_userbuy_chk',
data: {
orderid: retjson.orderid
}
});
if (retjson2.code != 1)
return this.toast(retjson2.errmsg);
this.me.accounttimes = retjson2.accounttimes;
this.me.userlevel = retjson2.userlevel;
this.setstorage('me', this.me);
this.toast('支付成功');
} catch (e) {}
},
relogin() {
this.clearstorage();
this.getauth('relogin');
},
upver() {
var app = getApp();
app.appupdate('all', async verinfo => {
return await this.askmsg(verinfo, '更新') == 'ok';
});
},
}
}
</script>
<style>
.topbg {
height: 10rem;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
right: 0;
}
.topbg::before {
content: '';
left: -5rem;
right: -5rem;
border-radius: 0 0 100vw 100vw;
height: 100%;
background: linear-gradient(60deg, var(--e-userbg1), var(--e-userbg2));
position: absolute;
top: 0;
pointer-events: none;
z-index: 0;
}
.avartop {
position: relative;
display: flex;
margin: 0 0 0 1.5rem;
width: 5rem;
height: 5rem;
border-radius: 50%;
background: var(--bg2);
border: 2px solid var(--bg1);
overflow: hidden;
z-index: 3;
}
.avartop>image {
width: 100%;
height: 100%;
}
.maincard {
position: relative;
background: var(--bg1);
color: var(--txt6);
padding: 0.5rem;
margin: 0 1rem 1rem 1rem;
border-radius: 0.3rem;
box-shadow: 0 4px 8px var(--bg6);
}
.maincard .nick {
font-size: 1.2rem;
font-weight: bold;
padding-left: 4.5rem;
}
.expdate {
display: block;
padding-left: 1rem;
margin-top: -1rem;
margin-bottom: 1rem;
font-size: 0.9rem;
color: var(--succ5);
}
.caption {
font-size: 1.2rem;
font-weight: bold;
padding: 1em 0;
}
.userpay {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.userpay>.item {
position: relative;
width: 30%;
padding: 1em 0;
text-align: center;
border: 1px solid var(--bg4);
border-radius: 1rem;
}
.userpay>.item>.price {
display: block;
font-size: 1.2rem;
font-weight: bold;
color: var(--man5);
}
.userpay>.item>.memo {
font-size: 13px;
color: var(--txt4);
}
.userpay>.item>.recommend {
position: absolute;
top: -0.5rem;
right: 0.5rem;
padding: 0.2rem 0.8rem;
font-size: 0.8rem;
color: var(--dagt);
background: var(--dag5);
border-radius: 1rem;
}
.cgrid {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
.cgrid .item {
width: 48%;
margin-bottom: 1rem;
padding: 1rem;
display: flex;
flex-direction: column;
align-items: center;
background: var(--bg3);
border-radius: 1rem;
}
.cgrid .icon {
width: 2rem;
height: 2rem;
margin-bottom: 0.5rem;
border-radius: 50%;
background: linear-gradient(-25deg, #1890ff, #c0e1ff);
display: flex;
justify-content: center;
align-items: center;
font-size: 1.5rem;
}
.icon {
width: 1.5rem;
height: 1.5rem;
}
.icon.by {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkyNi4wMzM5MiAzMzkuODcwNzJjLTkuODY2MjQgMC0xOS4xNjkyOCA0LjE0MjA4LTI2LjE3ODU2IDExLjA4NDgtMTQuMDkwMjQgMTMuOTQ2ODgtMzkuNDQ0NDggMzAuOTQwMTYtNzkuODU2NjQgNDcuMjc4MDgtNzkuODYxNzYgMzIuMjg2NzItMTkyLjEyMjg4IDUwLjgwMDY0LTMwNy45OTM2IDUwLjgwMDY0cy0yMjguMTM2OTYtMTguNTEzOTItMzA3Ljk5MzYtNTAuODAwNjRjLTQwLjQxMjE2LTE2LjMzNzkyLTY1Ljc2NjQtMzMuMzMxMi03OS44NTY2NC00Ny4yNzgwOC03LjAxNDQtNi45NDI3Mi0xNi4zMTIzMi0xMS4wNzk2OC0yNi4xNzg1Ni0xMS4wNzk2OC0zMy4wNTQ3MiAwLTQ4Ljk5ODQgNDAuMzU1ODQtMjQuOTg1NiA2My4wNzMyOCA3Mi44MzIgNjguODk0NzIgMjQxLjk3MTIgMTE3LjE3MTIgNDM5LjAxOTUyIDExNy4xNzEyczM2Ni4xODc1Mi00OC4yODE2IDQzOS4wMTk1Mi0xMTcuMTcxMmMyNC4wMDI1Ni0yMi43MjI1NiA4LjA1Mzc2LTYzLjA3ODQtMjQuOTk1ODQtNjMuMDc4NHoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48cGF0aCBkPSJNMzUzLjgzODA4IDY0Mi40MTE1MmwyMi45MjIyNC0xMzAuMDAxOTJhMzUuNTQ4MTYgMzUuNTQ4MTYgMCAwIDEgNzAuMDAwNjQgMTIuMzM5MmwtMjIuOTIyMjQgMTMwLjAwMTkyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxLTcwLjAwMDY0LTEyLjMzOTJ6TTYxMC4zMTQyNCA2NTQuNzU1ODRsLTIyLjkyMjI0LTEzMC4wMDE5MmEzNS41MzI4IDM1LjUzMjggMCAwIDEgMjguODMwNzItNDEuMTY5OTIgMzUuNTMyOCAzNS41MzI4IDAgMCAxIDQxLjE2OTkyIDI4LjgzMDcybDIyLjkyMjI0IDEzMC4wMDE5MmEzNS41NDgxNiAzNS41NDgxNiAwIDAgMS03MC4wMDA2NCAxMi4zMzkyek04NzguNzk2OCA1ODkuMzc4NTZsLTkzLjM0MjcyLTkzLjM0MjcyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxIDUwLjI2MzA0LTUwLjI2MzA0bDkzLjM0MjcyIDkzLjM0MjcyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxLTUwLjI2MzA0IDUwLjI2MzA0ek0xMDUuMDk4MjQgNTM5LjExNTUybDkzLjM0MjcyLTkzLjM0MjcyYTM1LjUzNzkyIDM1LjUzNzkyIDAgMSAxIDUwLjI2MzA0IDUwLjI2MzA0bC05My4zNDI3MiA5My4zNDI3MmEzNS41Mzc5MiAzNS41Mzc5MiAwIDEgMS01MC4yNjMwNC01MC4yNjMwNHoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48L3N2Zz4=");
}
.icon.zy {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiAyODQuMTkwNzJjNzIuMzUwNzIgMCAxNjAuMTg5NDQgMzYuNTc3MjggMjQ3LjMzMTg0IDEwMi45ODg4IDY0LjY4NjA4IDQ5LjMwMDQ4IDEwOC4zMDg0OCA5OS4zNjg5NiAxMjYuMTc3MjggMTI1LjE3ODg4LTE3Ljg0MzIgMjUuNTIzMi02Mi4yOTUwNCA3NS42NDI4OC0xMjkuMzMxMiAxMjUuNjM0NTYtODguMDQ4NjQgNjUuNjY0LTE3NC43NjYwOCAxMDEuODIxNDQtMjQ0LjE3NzkyIDEwMS44MjE0NC03MC41MjggMC0xNTcuNjgwNjQtMzYuNTg3NTItMjQ1LjQwMTYtMTAzLjAyNDY0LTY1LjEzNjY0LTQ5LjMzMTItMTA5LjI2NTkyLTk5LjA5NzYtMTI3LjY3NzQ0LTEyNS4wNTA4OCAxOC4xMzUwNC0yNS45ODQgNjEuNTczMTItNzUuNjQ4IDEyNS43NTIzMi0xMjQuNTU5MzZDMzUxLjgxMDU2IDMyMC43NjI4OCA0MzkuNjQ5MjggMjg0LjE5MDcyIDUxMiAyODQuMTkwNzJtMC03MC44NzYxNmMtMjIwLjMyODk2IDAtNDUwLjU2IDI1MC41OTMyOC00NTAuNTYgMjk4LjY4NTQ0czIzNS4xODIwOCAyOTguNjg1NDQgNDUwLjU2IDI5OC42ODU0NGMyMTAuNDI2ODggMCA0NTAuNTYtMjQ1LjUyOTYgNDUwLjU2LTI5OC42ODU0NCAwLTQ4LjA5MjE2LTIzMC4yMzEwNC0yOTguNjg1NDQtNDUwLjU2LTI5OC42ODU0NHoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48cGF0aCBkPSJNNTEyIDQ0Ni4xODc1MmMzNi4yODU0NCAwIDY1LjgxMjQ4IDI5LjUyMTkyIDY1LjgxMjQ4IDY1LjgxMjQ4cy0yOS41MjcwNCA2NS44MTI0OC02NS44MTI0OCA2NS44MTI0OFM0NDYuMTg3NTIgNTQ4LjI5MDU2IDQ0Ni4xODc1MiA1MTIgNDc1LjcxNDU2IDQ0Ni4xODc1MiA1MTIgNDQ2LjE4NzUybTAtNzAuODc2MTZjLTc1LjQ4OTI4IDAtMTM2LjY4ODY0IDYxLjE5NDI0LTEzNi42ODg2NCAxMzYuNjg4NjRTNDM2LjUxMDcyIDY0OC42ODg2NCA1MTIgNjQ4LjY4ODY0czEzNi42ODg2NC02MS4xOTQyNCAxMzYuNjg4NjQtMTM2LjY4ODY0UzU4Ny40ODkyOCAzNzUuMzExMzYgNTEyIDM3NS4zMTEzNnoiIGZpbGw9IiM2NjY2NjYiPjwvcGF0aD48L3N2Zz4=");
}
.usrnum {
padding-top: 1rem;
padding-bottom: 0.5rem;
display: flex;
}
.usrnum>view {
flex: 1;
text-align: center;
}
.usrnum .num {
height: 2.5rem;
padding-top: 0.2rem;
font-size: 1.3rem;
}
.usrnum .tit {
font-size: 0.9rem;
}
</style>

View File

@ -19,8 +19,13 @@
"多语言切换": "多语言切换",
"tabbar.index": "广场",
<<<<<<< HEAD
"tabbar.me": "我的",
"tabbar.message":"消息中心",
=======
"tabbar.notify": "消息",
"tabbar.me": "我的",
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
"login.xieyi": "/pages/main/paper?id=3",
"login.tablogin": "登录",
"login.tabreg": "注册",

View File

@ -38,5 +38,19 @@ export default defineConfig({
scss: {},
},
},
<<<<<<< HEAD
server: {},
=======
server: {
// 仅新增这一段代理配置,其他保持不变
port: 5173, // 保留你原本的5173端口
proxy: {
'/ambap': { // 转发/ambap开头的请求到Nginx
target: 'https://labsci.local.ciy.cn', // 你的Nginx域名
changeOrigin: true, // 允许跨域
secure: false // 忽略HTTPS证书校验本地开发必加
}
}
},
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
})

408
lab.sql Normal file
View File

@ -0,0 +1,408 @@
CREATE TABLE `lab_orgbase` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR (100) NOT NULL COMMENT '全称',
`shortname` VARCHAR (50) NOT NULL COMMENT '简称',
`areacode` BIGINT NOT NULL COMMENT '所在地区,CATM,ciy_arearpc',
`addr` VARCHAR (100) NOT NULL COMMENT '地址',
`lat` DOUBLE NOT NULL COMMENT '',
`lng` DOUBLE NOT NULL COMMENT '地理位置,LOC,lat',
`signname` VARCHAR (50) NOT NULL COMMENT '签约人',
`contact` VARCHAR (50) NOT NULL COMMENT '联系方式',
`email` VARCHAR (50) NOT NULL COMMENT '邮箱',
`addtimes` BIGINT NOT NULL COMMENT '开通日,DATE,Y-m-d', -- 新增“开通日期”字段
`exptimes` BIGINT NOT NULL COMMENT '到期日,DATE,Y-m-d',
PRIMARY KEY (`id`)
) COMMENT = '科研机构';
CREATE TABLE `lab_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (50) NOT NULL COMMENT '姓名',
`usertitle` INT NOT NULL COMMENT '头衔,CATA,usertitle',
`sn` VARCHAR (50) NOT NULL COMMENT '编号',
`sex` INT NOT NULL COMMENT '性别,CATA,sex',
`addtimes` BIGINT NOT NULL COMMENT '加入日期,DATE,Y-m-d',
`mobile` VARCHAR (50) NOT NULL COMMENT '手机号,MSK,****',
`email` VARCHAR (100) NOT NULL COMMENT '信箱',
`password` VARCHAR (100) NOT NULL COMMENT ',密码',
`stpstatus` INT NOT NULL COMMENT '|状态|,CATA,stpstatus',
`userlevel` INT NOT NULL COMMENT '|等级|,CATA,userlevel',
`totalpnt` BIGINT NOT NULL COMMENT '总积分|,INT',
`dvotecnt` BIGINT NOT NULL COMMENT '互动贡献|,INT,次',
PRIMARY KEY (
`id`
)) COMMENT = '实验室成员';
CREATE TABLE `lab_usronline` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`vuser` BIGINT NOT NULL COMMENT '所属成员,CATU,labuser',
`targettype` INT NOT NULL COMMENT '登录来源',
`sid` VARCHAR (50) NOT NULL COMMENT 'SID',
`logintimes` BIGINT NOT NULL COMMENT '登录时间,DATE',
`exptimes` BIGINT NOT NULL COMMENT '过期时间,DATE',
`ip` VARCHAR (50) NOT NULL COMMENT 'IP',
PRIMARY KEY (
`id`
)) COMMENT = '成员在线';
CREATE TABLE `lab_rproject` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`isweb` INT NOT NULL COMMENT '是否公开,BOOL',
`rcate` INT NOT NULL COMMENT '科研类目,CATA,rcate',
`name` VARCHAR (180) NOT NULL COMMENT '标题',
`descs` VARCHAR (180) NOT NULL COMMENT '摘要,BR',
`mdeptname` VARCHAR (100) NOT NULL COMMENT '主管部门',
`mdeptlevel` VARCHAR (50) NOT NULL COMMENT '层次',
`budgetmoney` BIGINT NOT NULL COMMENT '预算|,CNY',
`serviceorg` VARCHAR (100) NOT NULL COMMENT '服务机构',
`rprojectstatus` INT NOT NULL COMMENT '|状态|,CATA,rprojectstatus',
`vuser` BIGINT NOT NULL COMMENT '负责人,CATU,labuser',
`progress` INT NOT NULL COMMENT '|进度|,PCT',
`lasttimes` BIGINT NOT NULL COMMENT '最新进展,DATE,Y-m-d',
`numachive` VARCHAR (100) NOT NULL COMMENT '编号成果',
PRIMARY KEY (
`id`
)) COMMENT = '在研课题';
CREATE TABLE `lab_rprojmember` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`rprojectid` BIGINT NOT NULL COMMENT '所属课题,DB,lab_rproject',
`vuser` BIGINT NOT NULL COMMENT '所属成员,CATU,labuser',
`mainduty` VARCHAR (180) NOT NULL COMMENT '主要职责',
`addtimes` BIGINT NOT NULL COMMENT '参与日期,DATE,Y-m-d',
PRIMARY KEY (
`id`
)) COMMENT = '课题成员';
CREATE TABLE `lab_rprojprogress` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`rprojectid` BIGINT NOT NULL COMMENT '所属课题,DB,lab_rproject',
`vuser` BIGINT NOT NULL COMMENT '所属成员,CATU,labuser',
`content` TEXT NOT NULL COMMENT ',进展内容,MD',
`addtimes` BIGINT NOT NULL COMMENT '进展日期,DATE',
`rppfiles` VARCHAR (180) NOT NULL COMMENT '进展附件,DOWN',
PRIMARY KEY (
`id`
)) COMMENT = '课题进展';
CREATE TABLE `lab_achievement` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`rcate` INT NOT NULL COMMENT '科研类目,CATA,rcate',
`name` VARCHAR (100) NOT NULL COMMENT '名称',
`numachive` VARCHAR (100) NOT NULL COMMENT '编号成果',
`descs` VARCHAR (180) NOT NULL COMMENT '摘要,BR',
`amurl` VARCHAR (180) NOT NULL COMMENT '链接,DOWN',
`ampdf` VARCHAR (50) NOT NULL COMMENT 'PDF,DOWN',
`pubtimes` BIGINT NOT NULL COMMENT '发表日期,DATE,Y-m-d',
`author` VARCHAR (100) NOT NULL COMMENT '负责人',
PRIMARY KEY (
`id`
)) COMMENT = '科研成果';
CREATE TABLE `lab_achievemember` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`achievementid` BIGINT NOT NULL COMMENT '所属成果,DB,lab_achievement',
`vuser` BIGINT NOT NULL COMMENT '所属成员,CATU,labuser',
`name` VARCHAR (50) NOT NULL COMMENT '|姓名|',
`email` VARCHAR (100) NOT NULL COMMENT '邮箱',
`seqno` INT NOT NULL COMMENT '|顺序位|',
`maincontribution` VARCHAR (180) NOT NULL COMMENT '主要贡献',
PRIMARY KEY (
`id`
)) COMMENT = '成果贡献人';
CREATE TABLE `lab_discussion` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (180) NOT NULL COMMENT '研讨标题',
`vuser` BIGINT NOT NULL COMMENT '发起人,CATU,labuser',
`addtimes` BIGINT NOT NULL COMMENT '发起日期,DATE,Y-m-d',
`closetimes` BIGINT NOT NULL COMMENT '关闭日期,DATE,Y-m-d',
`interactioncnt` BIGINT NOT NULL COMMENT '互动数|',
`visitcnt` BIGINT NOT NULL COMMENT '访问量|',
`lasttimes` BIGINT NOT NULL COMMENT '最后活跃时间,DATE',
PRIMARY KEY (
`id`
)) COMMENT = '研讨';
CREATE TABLE `lab_discusstate` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`discussionid` BIGINT NOT NULL COMMENT '所属研讨,DB,lab_discussion',
`discuscommentid` BIGINT NOT NULL COMMENT '所属评论,DB,lab_discuscomment',
`dstate` INT NOT NULL COMMENT '表态,CATA,dstate',
`addtimes` BIGINT NOT NULL COMMENT '表态时间,DATE',
PRIMARY KEY (
`id`
)) COMMENT = '研讨表态';
CREATE TABLE `lab_discuscomment` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`discussionid` BIGINT NOT NULL COMMENT '所属研讨,DB,lab_discussion',
`upid` BIGINT NOT NULL COMMENT '所属评论,DB,lab_discuscomment',
`content` TEXT NOT NULL COMMENT ',评论内容,MD',
`addtimes` BIGINT NOT NULL COMMENT '评论日期,DATE',
`approvecnt` BIGINT NOT NULL COMMENT '赞成数|',
`opposecnt` BIGINT NOT NULL COMMENT '反对数|',
PRIMARY KEY (
`id`
)) COMMENT = '研讨评论';
CREATE TABLE `lab_gmeeting` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (180) NOT NULL COMMENT '标题',
`starttimes` BIGINT NOT NULL COMMENT '开始时间,DATE',
`plansec` INT NOT NULL COMMENT '预计用时,SEC',
`usesec` INT NOT NULL COMMENT '实际用时,SEC',
`maintopic` VARCHAR (250) NOT NULL COMMENT '主要议题',
`addr` VARCHAR (180) NOT NULL COMMENT '地址',
`vuser` BIGINT NOT NULL COMMENT '主持人,CATU,labuser',
`joincnt` INT NOT NULL COMMENT '与会人数,INT,人',
`addtimes` BIGINT NOT NULL COMMENT '发布时间,DATE',
PRIMARY KEY (
`id`
)) COMMENT = '组会';
CREATE TABLE `lab_gmeetmember` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`gmeetingid` BIGINT NOT NULL COMMENT '所属组会,DB,lab_gmeeting',
`vuser` BIGINT NOT NULL COMMENT '所属成员,CATU,labuser',
`gmeetingusrstatus` INT NOT NULL COMMENT '|状态|,CATA,gmeetingusrstatus',
`nexttimes` BIGINT NOT NULL COMMENT '下次通知日期,DATE,Y-m-d',
`gmeetingusrsign` INT NOT NULL COMMENT '签到,CATA,gmeetingusrsign',
PRIMARY KEY (
`id`
)) COMMENT = '组会成员';
CREATE TABLE `lab_experience` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (180) NOT NULL COMMENT '一句话概括',
`content` TEXT NOT NULL COMMENT '详情,BR',
`vfiles` VARCHAR (180) NOT NULL COMMENT '文档附件,IMG',
`addtimes` BIGINT NOT NULL COMMENT '发布日期,DATE,Y-m-d',
`vuser` BIGINT NOT NULL COMMENT '发布人,CATU,labuser',
PRIMARY KEY (
`id`
)) COMMENT = '经验积累';
CREATE TABLE `lab_experienvisit` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`experienceid` BIGINT NOT NULL COMMENT '所属经验,DB,lab_experience',
`vuser` BIGINT NOT NULL COMMENT '访问人,CATU,labuser',
`addtimes` BIGINT NOT NULL COMMENT '访问日期,DATE,Y-m-d',
PRIMARY KEY (
`id`
)) COMMENT = '访问记录';
CREATE TABLE `lab_fundproject` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (100) NOT NULL COMMENT '项目名称',
`totalmoney` BIGINT NOT NULL COMMENT '可用总经费|,CNY',
`closetime` BIGINT NOT NULL COMMENT '关闭时间,DATE,Y-m-d',
PRIMARY KEY (
`id`
)) COMMENT = '项目经费';
CREATE TABLE `lab_fundcate` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (100) NOT NULL COMMENT '分项名',
`descs` VARCHAR (180) NOT NULL COMMENT '解释说明,BR',
`vfile` VARCHAR (50) NOT NULL COMMENT '示例附件,DOWN',
PRIMARY KEY (
`id`
)) COMMENT = '分项分类';
CREATE TABLE `lab_funditem` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`fundprojectid` BIGINT NOT NULL COMMENT '所属项目经费,DB,lab_fundproject',
`fundcateid` BIGINT NOT NULL COMMENT '所属分项分类,DB,lab_fundcate',
`usablemoney` BIGINT NOT NULL COMMENT '可用经费|,CNY',
`memo` VARCHAR (180) NOT NULL COMMENT '备注',
PRIMARY KEY (
`id`
)) COMMENT = '项目分项经费';
CREATE TABLE `lab_fundexpense` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`vuser` BIGINT NOT NULL COMMENT '报销人,CATU,labuser',
`name` VARCHAR (180) NOT NULL COMMENT '事由',
`fundexpensestatus` INT NOT NULL COMMENT '|状态|,CATA,fundexpensestatus',
`totalamount` BIGINT NOT NULL COMMENT '总金额|,CNY',
`receiptcount` INT NOT NULL COMMENT '票据数量|,INT,张',
`fefiles` VARCHAR (180) NOT NULL COMMENT '电子票据附件,IMG',
`reason` VARCHAR (180) NOT NULL COMMENT '驳回理由',
`submittimes` BIGINT NOT NULL COMMENT '提交日期,DATE',
`financetimes` BIGINT NOT NULL COMMENT '财务日期,DATE',
`paymenttimes` BIGINT NOT NULL COMMENT '打款日期,DATE',
`actualamount` BIGINT NOT NULL COMMENT '实报金额|,CNY',
`assistantuser` BIGINT NOT NULL COMMENT '协助人,CATU,labuser',
PRIMARY KEY (
`id`
)) COMMENT = '经费报销';
CREATE TABLE `lab_fundexpendetail` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`fundexpenseid` BIGINT NOT NULL COMMENT '所属报销,DB,lab_fundexpense',
`funditemid` BIGINT NOT NULL COMMENT '所属分项经费,DB,lab_funditem',
`fedamount` BIGINT NOT NULL COMMENT '金额|,CNY',
`memo` VARCHAR (180) NOT NULL COMMENT '备注',
PRIMARY KEY (
`id`
)) COMMENT = '报销明细';
CREATE TABLE `lab_realasset` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构 ID,DB,lab_orgbase',
`name` VARCHAR (180) NOT NULL COMMENT '资产名称',
`sn` VARCHAR (50) NOT NULL COMMENT '资产编号',
`num` INT NOT NULL COMMENT '数量|,INT,个',
`pos` VARCHAR (180) NOT NULL COMMENT '位置',
`vuser` BIGINT NOT NULL COMMENT '管理人,CATU,labuser',
`addtimes` BIGINT NOT NULL COMMENT '加入日期,DATE,Y-m-d',
`lduser` VARCHAR (100) NOT NULL COMMENT '使用人',
`ldtimes` BIGINT NOT NULL COMMENT '使用时间,DATE',
`memo` VARCHAR (180) NOT NULL COMMENT '备注',
PRIMARY KEY (
`id`
)) COMMENT = '实验室实物资产';
CREATE TABLE `lab_webmain` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`templatepath` VARCHAR (180) NOT NULL COMMENT '模版路径',
`binddomain` VARCHAR (100) NOT NULL COMMENT '绑定独立域名',
`predomain` VARCHAR (50) NOT NULL COMMENT '三级域名',
`labintro` TEXT NOT NULL COMMENT ',实验室简介,MD',
`founder` TEXT NOT NULL COMMENT ',主任事迹,MD',
`uptimes` BIGINT NOT NULL COMMENT '更新时间,DATE',
PRIMARY KEY (
`id`
)) COMMENT = '官网模版';
CREATE TABLE `lab_webachievement` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`achievementid` BIGINT NOT NULL COMMENT '所属成果,DB,lab_achievement',
`keytag` VARCHAR (50) NOT NULL COMMENT '关键词标签',
`ispub` INT NOT NULL COMMENT '公开详情,BOOL',
`visitcnt` BIGINT NOT NULL COMMENT '访问量|',
`vuser` BIGINT NOT NULL COMMENT '添加人,CATU,labuser',
`addtimes` BIGINT NOT NULL COMMENT '添加时间,DATE,Y-m-d',
PRIMARY KEY (
`id`
)) COMMENT = '官网成果';
CREATE TABLE `lab_weblead` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`mobile` VARCHAR (50) NOT NULL COMMENT '手机号,MSK,****',
`name` VARCHAR (50) NOT NULL COMMENT '联系人',
`sourceurl` VARCHAR (180) NOT NULL COMMENT '来源页面,URL',
`demand` VARCHAR (180) NOT NULL COMMENT '需求',
`addtimes` BIGINT NOT NULL COMMENT '提交日期,DATE,Y-m-d',
`vuser` BIGINT NOT NULL COMMENT '对接人,CATU,labuser',
`contracttimes` BIGINT NOT NULL COMMENT '最后沟通时间,DATE',
`contractcontent` TEXT NOT NULL COMMENT '最后沟通记录,BR',
PRIMARY KEY (
`id`
)) COMMENT = '官网线索';
CREATE TABLE `lab_webmember` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`vuser` BIGINT NOT NULL COMMENT '所属成员,CATU,labuser',
`photo` VARCHAR (50) NOT NULL COMMENT '近照,IMG1',
`pintro` TEXT NOT NULL COMMENT ',个人介绍,MD',
`uptimes` BIGINT NOT NULL COMMENT '更新日期,DATE',
PRIMARY KEY (
`id`
)) COMMENT = '官网成员';
CREATE TABLE `lab_lang` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`lang` VARCHAR (50) NOT NULL COMMENT '语言代码,CATA,lang',
`tabname` VARCHAR (50) NOT NULL COMMENT '表名称',
`fieldname` VARCHAR (50) NOT NULL COMMENT '字段名',
`tabid` BIGINT NOT NULL COMMENT 'ID',
`trantxt` VARCHAR (250) NOT NULL COMMENT '翻译文本',
`langstatus` INT NOT NULL COMMENT '|状态|,CATA,langstatus',
PRIMARY KEY (
`id`
)) COMMENT = '多语言';
CREATE TABLE `lab_orgorder` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`orgsaleplanid` BIGINT NOT NULL COMMENT '销售方案,DB,lab_orgsaleplan',
`recvamount` BIGINT NOT NULL COMMENT '收款金额|,CNY',
`vuser` BIGINT NOT NULL COMMENT '操作人,CATU,labuser',
`addtimes` BIGINT NOT NULL COMMENT '创建时间,DATE',
`memo` VARCHAR (180) NOT NULL COMMENT '备注',
`invoicecate` VARCHAR (180) NOT NULL COMMENT '发票类目',
PRIMARY KEY (
`id`
)) COMMENT = '机构业务订单';
CREATE TABLE `lab_orgsaleplan` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR (100) NOT NULL COMMENT '方案名称',
`daycyc` INT NOT NULL COMMENT '递延时长,CYC',
`planprice` BIGINT NOT NULL COMMENT '标价|,CNY',
PRIMARY KEY (
`id`
)) COMMENT = '销售方案';
CREATE TABLE `lab_marriedori` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`laborgid` BIGINT NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` VARCHAR (100) NOT NULL COMMENT '干系人',
`onecap` VARCHAR (180) NOT NULL COMMENT '能力,BR',
`onedem` VARCHAR (180) NOT NULL COMMENT '需求,BR',
`uptimes` BIGINT NOT NULL COMMENT '更新日期,DATE,Y-m-d',
PRIMARY KEY (
`id`
)) COMMENT = '撮合元数据';
CREATE TABLE `lab_marriedchg` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`marriedoriid` BIGINT NOT NULL COMMENT '所属元数据,DB,lab_marriedori',
`mchan` INT NOT NULL COMMENT '信息渠道,CATA,mchan',
`chgdata` TEXT NOT NULL COMMENT ',变动数据',
`addtimes` BIGINT NOT NULL COMMENT '变动日期,DATE,Y-m-d',
`vuser` BIGINT NOT NULL COMMENT '变动人,CATU,labuser',
`adminuser` BIGINT NOT NULL COMMENT '监管人,CATU,labuser',
`mfen` INT NOT NULL COMMENT '打分|,INT,分',
PRIMARY KEY (
`id`
)) COMMENT = '元数据变动';
CREATE TABLE `lab_crmbase` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR (100) NOT NULL COMMENT '单位名称',
`crmsource` INT NOT NULL COMMENT '数据来源,CATA,crmsource',
`content` VARCHAR (250) NOT NULL COMMENT '干系数据,BR',
`crmlevel` INT NOT NULL COMMENT '标记,CATA,crmlevel',
`lat` DOUBLE NOT NULL COMMENT '地图位置',
`lng` DOUBLE NOT NULL COMMENT '地图位置,LOC,lat',
`followtimes` BIGINT NOT NULL COMMENT '最新跟进日期,DATE,Y-m-d',
`vuser` BIGINT NOT NULL COMMENT '销售人,CATU,labuser',
PRIMARY KEY (
`id`
)) COMMENT = '客户CRM';
CREATE TABLE `lab_crmfollow` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`crmid` BIGINT NOT NULL COMMENT '所属单位,DB,lab_crmbase',
`content` TEXT NOT NULL COMMENT '跟进内容,BR',
`addtimes` BIGINT NOT NULL COMMENT '跟进时间,DATE',
`vuser` BIGINT NOT NULL COMMENT '跟进人,CATU,labuser',
PRIMARY KEY (
`id`
)) COMMENT = '销售跟进';

52
lab_user.sql Normal file
View File

@ -0,0 +1,52 @@
/*
Navicat Premium Data Transfer
Source Server : ryx
Source Server Type : MariaDB
Source Server Version : 100510
Source Host : localhost:3307
Source Schema : c5_labsci
Target Server Type : MariaDB
Target Server Version : 100510
File Encoding : 65001
Date: 26/01/2026 15:46:45
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for lab_user
-- ----------------------------
DROP TABLE IF EXISTS `lab_user`;
CREATE TABLE `lab_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`laborgid` bigint(20) NOT NULL COMMENT '所属机构,DB,lab_orgbase',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名',
`usertitle` int(11) NOT NULL COMMENT '头衔,CATA,usertitle',
`education` int(11) NOT NULL COMMENT '学历,CATA,education',
`sn` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '编号',
`sex` int(11) NOT NULL COMMENT '性别,CATA,sex',
`addtimes` bigint(20) NOT NULL COMMENT '加入日期,DATE,Y-m-d',
`mobile` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号,MSK,****',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '信箱',
`password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',密码',
`stpstatus` int(11) NOT NULL COMMENT '|状态|,CATA,stpstatus',
`userlevel` int(11) NOT NULL COMMENT '|等级|,CATA,userlevel',
`totalpnt` bigint(20) NOT NULL COMMENT '总积分|,INT',
`dvotecnt` bigint(20) NOT NULL COMMENT '互动贡献|,INT,次',
`trytime` int(11) NOT NULL DEFAULT 0 COMMENT ',密码重试次数',
`logintimes` bigint(20) NOT NULL COMMENT '登录时间,DATE',
`sid` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT ',授权码',
`exptimes` bigint(20) NOT NULL COMMENT ',授权过期时间,DATE',
`ip` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '#登录IP,IP',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '实验室成员' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of lab_user
-- ----------------------------
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -42,7 +42,11 @@ function verifyuser($post = null) {
$auth = json_decode(encrypt($ciyauth, 'D', $_token['salt']), true);
if ($auth == null)
return null;
<<<<<<< HEAD
$csql = new \ciy\sql('ap_user'); //弃用redis集群
=======
$csql = new \ciy\sql('lab_user'); //弃用redis集群
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
$csql->where('id', $auth['id']);
$userrow = $db->getone($csql);
if (!is_array($userrow))
@ -53,6 +57,7 @@ function verifyuser($post = null) {
return null;
if ($userrow['exptimes'] < time() - $_token['expsec'])
return null;
<<<<<<< HEAD
if ($post && $userrow['upid'] == 0) {
$upid = $post->getint('upid');
if ($upid > 0) {
@ -63,12 +68,18 @@ function verifyuser($post = null) {
$db->update($csql, $updata);
}
}
=======
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
if ($userrow['exptimes'] > time())
return $userrow;
$exp = time() + $_token['swapsec'];
$sid = randstr(10);
$auth['_s'] = $sid;
<<<<<<< HEAD
if ($db->execute('update ap_user set exptimes=?,sid=? where id=?', array($exp, $sid, $auth['id'])) === false)
=======
if ($db->execute('update lab_user set exptimes=?,sid=? where id=?', array($exp, $sid, $auth['id'])) === false)
>>>>>>> 2b53f1cf47e1dea64c20044ab860c92bfd595c2a
return null;
$authstr = json_encode($auth, JSON_PARTIAL_OUTPUT_ON_ERROR);
$enauth = encrypt($authstr, 'E', $_token['salt']);

313
web/ambap/member.php Normal file
View File

@ -0,0 +1,313 @@
<?php
namespace web\ambap;
// 确保引入必要的工具类(根据实际项目路径调整)
require_once dirname(__FILE__) . '/../../ciy/db.php';
require_once dirname(__FILE__) . '/../../ciy/post.php';
require_once dirname(__FILE__) . '/../../ciy/sql.php';
class member {
// 接口入口:通过 act 参数路由到不同方法
public static function index() {
// 1. 解决跨域问题
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, X-Requested-With");
header("Content-Type: application/json; charset=utf-8");
// 处理 OPTIONS 预检请求
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit;
}
// 2. 安全获取 act 参数
$act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : '';
switch($act) {
case 'member.list':
self::json_list();
break;
case 'member.add':
self::json_add();
break;
case 'member.edit':
self::json_edit();
break;
case 'member.detail':
self::json_detail();
break;
case 'member.del':
self::json_del();
break;
case 'member.audit':
self::json_audit();
break;
default:
self::err('无效的接口动作:' . $act);
break;
}
}
// 1. 获取成员列表(适配当前 db.php 的 ciy\sql 语法)
public static function json_list() {
global $db;
$post = new \ciy\post();
$page = $post->getint('page', 1);
$pageSize = $post->getint('pageSize', 15);
$offset = ($page - 1) * $pageSize;
// 构建查询条件(通过 ciy\sql 的构造参数指定字段)
$csql = new \ciy\sql('lab_user', 'id, name, mobile, usertitle, stpstatus, sex, education, email, avatar, addtimes');
$csql->limit($offset, $pageSize); // 分页:偏移量、每页条数
$csql->order('addtimes DESC');
// 核心修改:使用 db.php 的 get 方法($rowcount=-1 自动查总数)
$rowcount = -1;
$list = $db->get($csql, $rowcount);
// 处理查询失败
if ($list === false) {
return self::err('获取列表失败:' . $db->error);
}
// 格式化返回数据
$retList = [];
foreach ($list as $item) {
$retList[] = [
'id' => intval($item['id']),
'name' => $item['name'] ?? '',
'mobile' => $item['mobile'] ?? '',
'usertitle' => intval($item['usertitle']),
'stpstatus' => intval($item['stpstatus']),
'sex' => intval($item['sex']),
'education' => intval($item['education'] ?? 50),
'email' => $item['email'] ?? '',
'avatar' => $item['avatar'] ?? '/static/avatar-default.png',
'addtimes' => intval($item['addtimes'])
];
}
echo json_encode([
'code' => 1,
'list' => $retList,
'total' => $rowcount,
'page' => $page,
'pageSize' => $pageSize
], JSON_UNESCAPED_UNICODE);
}
// 2. 新增成员(适配当前 db.php
public static function json_add() {
global $db;
$post = new \ciy\post();
// 获取表单数据
$name = trim($post->get('name', ''));
$mobile = trim($post->get('mobile', ''));
$usertitle = $post->getint('usertitle', 10);
$stpstatus = $post->getint('stpstatus', 30);
$sex = $post->getint('sex', 90);
$education = $post->getint('education', 50);
$email = trim($post->get('email', ''));
$password = trim($post->get('password', ''));
// 基础验证
if (empty($name)) return self::err('请输入姓名');
if (empty($mobile)) return self::err('请输入手机号');
if (!preg_match('/^1[3-9]\d{9}$/', $mobile)) return self::err('手机号格式错误');
if (empty($password)) return self::err('请设置密码');
if (strlen($password) < 6) return self::err('密码长度不少于6位');
// 检查手机号是否已注册
$csql = new \ciy\sql('lab_user', 'id');
$csql->where('mobile', $mobile);
$exist = $db->getone($csql);
if (is_array($exist)) return self::err('该手机号已注册:' . $mobile);
// 组装数据
$data = [
'name' => $name,
'mobile' => $mobile,
'usertitle' => $usertitle,
'stpstatus' => $stpstatus,
'sex' => $sex,
'education' => $education,
'email' => $email,
'password' => $password,
'userlevel' => 10,
'trytime' => 0,
'logintimes' => self::tostamp(),
'addtimes' => self::tostamp(),
'ip' => self::getip(),
'laborgid' => 1,
'sn' => 'LAB-' . date('Ymd') . '-' . rand(1000, 9999),
'totalpnt' => 0,
'dvotecnt' => 0,
'updatetime' => self::tostamp()
];
// 插入数据
$csql = new \ciy\sql('lab_user');
$insertId = $db->insert($csql, $data);
if ($insertId === false) {
return self::err('新增失败:' . $db->error);
}
echo json_encode([
'code' => 1,
'msg' => '新增成功',
'id' => $insertId
], JSON_UNESCAPED_UNICODE);
}
// 3. 编辑成员(适配当前 db.php
public static function json_edit() {
global $db;
$post = new \ciy\post();
$id = $post->getint('id');
$name = trim($post->get('name', ''));
$usertitle = $post->getint('usertitle', 10);
$stpstatus = $post->getint('stpstatus', 30);
$sex = $post->getint('sex', 90);
$education = $post->getint('education', 50);
$email = trim($post->get('email', ''));
// 参数验证
if (empty($id)) return self::err('参数错误缺少成员ID');
if (empty($name)) return self::err('请输入姓名');
// 组装更新数据
$data = [
'name' => $name,
'usertitle' => $usertitle,
'stpstatus' => $stpstatus,
'sex' => $sex,
'education' => $education,
'email' => $email,
'updatetime' => self::tostamp()
];
// 更新数据
$csql = new \ciy\sql('lab_user');
$csql->where('id', $id);
$result = $db->update($csql, $data);
if ($result === false) {
return self::err('修改失败:' . $db->error);
}
echo json_encode([
'code' => 1,
'msg' => '修改成功'
], JSON_UNESCAPED_UNICODE);
}
// 4. 获取成员详情(适配当前 db.php
public static function json_detail() {
global $db;
$post = new \ciy\post();
$id = $post->getint('id');
if (empty($id)) return self::err('参数错误缺少成员ID');
// 查询详情(通过 ciy\sql 构造参数指定字段)
$csql = new \ciy\sql('lab_user', 'id, name, mobile, usertitle, stpstatus, sex, education, email');
$csql->where('id', $id);
$item = $db->getone($csql);
if (!is_array($item)) return self::err('成员不存在或已删除');
// 格式化返回数据
$data = [
'id' => intval($item['id']),
'name' => $item['name'] ?? '',
'mobile' => $item['mobile'] ?? '',
'usertitle' => intval($item['usertitle']),
'stpstatus' => intval($item['stpstatus']),
'sex' => intval($item['sex']),
'education' => intval($item['education'] ?? 50),
'email' => $item['email'] ?? ''
];
echo json_encode([
'code' => 1,
'data' => $data
], JSON_UNESCAPED_UNICODE);
}
// 5. 删除成员(适配当前 db.php
public static function json_del() {
global $db;
$post = new \ciy\post();
$id = $post->getint('id');
if (empty($id)) return self::err('参数错误缺少成员ID');
// 物理删除
$csql = new \ciy\sql('lab_user');
$csql->where('id', $id);
$result = $db->delete($csql);
if ($result === false) {
return self::err('删除失败:' . $db->error);
}
echo json_encode([
'code' => 1,
'msg' => '删除成功'
], JSON_UNESCAPED_UNICODE);
}
// 6. 审核成员(适配当前 db.php
public static function json_audit() {
global $db;
$post = new \ciy\post();
$id = $post->getint('id');
$status = $post->getint('status');
if (empty($id)) return self::err('参数错误缺少成员ID');
if (!in_array($status, [10,20,30,40,50])) return self::err('无效的状态值');
$data = ['stpstatus' => $status];
$csql = new \ciy\sql('lab_user');
$csql->where('id', $id);
$result = $db->update($csql, $data);
if ($result === false) {
return self::err('审核失败:' . $db->error);
}
echo json_encode([
'code' => 1,
'msg' => '审核成功'
], JSON_UNESCAPED_UNICODE);
}
// 通用错误返回
private static function err($msg) {
echo json_encode([
'code' => 0,
'errmsg' => $msg
], JSON_UNESCAPED_UNICODE);
exit;
}
// 兼容tostamp函数
private static function tostamp() {
return isset($GLOBALS['tostamp']) ? $GLOBALS['tostamp']() : time() * 1000;
}
// 兼容getip函数
private static function getip() {
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
return $_SERVER['HTTP_X_REAL_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
return $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1';
}
}
}
// 执行入口
member::index();
?>

153
zc_cata.sql Normal file
View File

@ -0,0 +1,153 @@
/*
Navicat Premium Data Transfer
Source Server : ryx
Source Server Type : MariaDB
Source Server Version : 100510
Source Host : localhost:3307
Source Schema : c5_labsci
Target Server Type : MariaDB
Target Server Version : 100510
File Encoding : 65001
Date: 26/01/2026 16:22:50
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for zc_cata
-- ----------------------------
DROP TABLE IF EXISTS `zc_cata`;
CREATE TABLE `zc_cata` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`upid` int(11) NOT NULL COMMENT '上级,DB,zc_cata',
`csort` int(11) NOT NULL DEFAULT 10 COMMENT '排序',
`isuse` int(11) NOT NULL DEFAULT 1 COMMENT '|行为|,BOOL',
`cbid` int(11) NOT NULL DEFAULT 0 COMMENT '库,DB,zc_cata',
`codeid` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '',
`name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`clas` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '样式类',
`extdata` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '扩展值',
PRIMARY KEY (`id`) USING BTREE,
INDEX `cbid`(`cbid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12001749 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of zc_cata
-- ----------------------------
INSERT INTO `zc_cata` VALUES (1, 0, 0, 1, 0, '', '固定字典', '', '');
INSERT INTO `zc_cata` VALUES (2, 0, 0, 1, 0, '', '灵活字典', '', '');
INSERT INTO `zc_cata` VALUES (10, 1, 0, 1, 0, 'sex', '性别', '', 'zc_admin');
INSERT INTO `zc_cata` VALUES (11, 1, 0, 1, 0, 'stpstatus', '账号状态', '', 'zc_admin');
INSERT INTO `zc_cata` VALUES (12, 1, 0, 1, 0, 'auditstatus', '审核状态', '', 'zc_urole');
INSERT INTO `zc_cata` VALUES (13, 1, 0, 1, 0, 'autotaskstatus', '任务状态', '', 'zc_autotask');
INSERT INTO `zc_cata` VALUES (14, 2, 0, 1, 0, 'targettype', '子系统', '', 'zc_debug_user\nzc_online');
INSERT INTO `zc_cata` VALUES (18, 1, 0, 1, 0, 'cashstatus', '提现状态', '', 'ap_cash_out');
INSERT INTO `zc_cata` VALUES (19, 2, 0, 1, 0, 'cashtype', '收支分类', '', 'ap_cash_ie,ap_cash_oe');
INSERT INTO `zc_cata` VALUES (21, 2, 0, 1, 0, 'userlevel', '用户等级', '', 'ap_user');
INSERT INTO `zc_cata` VALUES (22, 1, 0, 1, 0, 'artsort', '文章排序', '', 'ap_art_post');
INSERT INTO `zc_cata` VALUES (23, 1, 0, 1, 0, 'artstatus', '文章状态', '', 'ap_art_post');
INSERT INTO `zc_cata` VALUES (24, 2, 0, 1, 0, 'certs', '认证范围', '', 'ap_user');
INSERT INTO `zc_cata` VALUES (100, 2, 0, 1, 0, 'aicapacity', 'AI能力', '', 'zc_ai_key');
INSERT INTO `zc_cata` VALUES (101, 1, 0, 1, 0, 'aidotype', 'AI执行方式', '', 'zc_ai_tsk_run');
INSERT INTO `zc_cata` VALUES (102, 1, 10, 1, 0, 'education', '学历', '', '');
INSERT INTO `zc_cata` VALUES (103, 0, 10, 1, 0, 'orderstatus', '订单状态', '', '');
INSERT INTO `zc_cata` VALUES (1000, 0, 10, 1, 10, '10', '', '', '');
INSERT INTO `zc_cata` VALUES (1001, 0, 20, 1, 10, '20', '', '', '');
INSERT INTO `zc_cata` VALUES (1002, 0, 90, 1, 10, '90', '其他', '', '');
INSERT INTO `zc_cata` VALUES (1010, 0, 8, 1, 11, '8', '被禁用', 'dag', '');
INSERT INTO `zc_cata` VALUES (1011, 0, 9, 1, 11, '9', '登录保护', 'warn', '');
INSERT INTO `zc_cata` VALUES (1012, 0, 10, 1, 11, '10', '正常', 'succ', '');
INSERT INTO `zc_cata` VALUES (1020, 0, 10, 2, 12, '10', '草稿', 'def', '');
INSERT INTO `zc_cata` VALUES (1021, 0, 20, 1, 12, '20', '未审核', 'man', '');
INSERT INTO `zc_cata` VALUES (1022, 0, 50, 1, 12, '50', '审核中', 'warn', '');
INSERT INTO `zc_cata` VALUES (1023, 0, 90, 1, 12, '90', '驳回', 'dag', '');
INSERT INTO `zc_cata` VALUES (1024, 0, 95, 1, 12, '95', '撤回', 'def', '');
INSERT INTO `zc_cata` VALUES (1025, 0, 100, 1, 12, '100', '通过', 'succ', '');
INSERT INTO `zc_cata` VALUES (1030, 0, 20, 1, 13, '20', '等待执行', 'succ', '');
INSERT INTO `zc_cata` VALUES (1031, 0, 30, 1, 13, '30', '执行中', 'warn', '');
INSERT INTO `zc_cata` VALUES (1039, 0, 90, 1, 13, '90', '禁止执行', 'dag', '');
INSERT INTO `zc_cata` VALUES (1040, 0, 10, 1, 14, '10', '总控', '', '');
INSERT INTO `zc_cata` VALUES (1041, 0, 20, 1, 14, '20', 'SaaS PC端', '', '');
INSERT INTO `zc_cata` VALUES (1042, 0, 21, 1, 14, '21', 'SaaS 移动端', '', '');
INSERT INTO `zc_cata` VALUES (1150, 0, 10, 1, 18, '10', '申请中', 'def', '');
INSERT INTO `zc_cata` VALUES (1151, 0, 20, 1, 18, '20', '已通过', 'warn', '');
INSERT INTO `zc_cata` VALUES (1152, 0, 21, 2, 18, '21', '微信操作中', 'warn', '');
INSERT INTO `zc_cata` VALUES (1153, 0, 30, 1, 18, '30', '已传发票', 'man', '');
INSERT INTO `zc_cata` VALUES (1154, 0, 50, 1, 18, '50', '待打款', 'def', '');
INSERT INTO `zc_cata` VALUES (1155, 0, 90, 1, 18, '90', '已拒绝', 'dag', '');
INSERT INTO `zc_cata` VALUES (1156, 0, 100, 1, 18, '100', '已完成', 'succ', '');
INSERT INTO `zc_cata` VALUES (1200, 0, 10, 1, 19, '10', '充值', '', '');
INSERT INTO `zc_cata` VALUES (1201, 0, 11, 1, 19, '11', '提现', '', '');
INSERT INTO `zc_cata` VALUES (1210, 0, 20, 1, 19, '20', '推荐奖', '', '');
INSERT INTO `zc_cata` VALUES (1211, 0, 21, 1, 19, '21', '带新奖', '', '');
INSERT INTO `zc_cata` VALUES (1212, 0, 22, 1, 19, '22', '领导奖', '', '');
INSERT INTO `zc_cata` VALUES (1550, 0, 1, 1, 21, '10', 'LV.1', '', '');
INSERT INTO `zc_cata` VALUES (1551, 0, 2, 1, 21, '20', 'LV.2', '', '');
INSERT INTO `zc_cata` VALUES (1600, 0, 0, 1, 22, '10', '劣后', '', '');
INSERT INTO `zc_cata` VALUES (1601, 0, 0, 1, 22, '20', '正常', '', '');
INSERT INTO `zc_cata` VALUES (1602, 0, 0, 1, 22, '30', '置顶', '', '');
INSERT INTO `zc_cata` VALUES (1603, 0, 0, 1, 22, '40', '总置顶', '', '');
INSERT INTO `zc_cata` VALUES (1650, 0, 0, 1, 23, '10', '草稿', 'def', '');
INSERT INTO `zc_cata` VALUES (1651, 0, 0, 1, 23, '20', '待审核', 'warn', '');
INSERT INTO `zc_cata` VALUES (1652, 0, 0, 1, 23, '90', '驳回', 'dag', '');
INSERT INTO `zc_cata` VALUES (1653, 0, 0, 1, 23, '100', '发布', 'succ', '');
INSERT INTO `zc_cata` VALUES (1700, 0, 10, 1, 24, 'a', '实名认证', '', '');
INSERT INTO `zc_cata` VALUES (1701, 0, 20, 1, 24, 'b', '付费会员', '', '');
INSERT INTO `zc_cata` VALUES (10100, 0, 1, 1, 100, 'text', '文本', '', '');
INSERT INTO `zc_cata` VALUES (10101, 0, 2, 1, 100, 'json', 'JSON', '', '');
INSERT INTO `zc_cata` VALUES (10105, 0, 5, 1, 100, 'fcall', '函数', '', '');
INSERT INTO `zc_cata` VALUES (10110, 0, 10, 1, 100, 'image', '理解图像', '', '');
INSERT INTO `zc_cata` VALUES (10115, 0, 15, 1, 100, 'video', '理解视频', '', '');
INSERT INTO `zc_cata` VALUES (10120, 0, 20, 1, 100, '3dmodel', '理解三维', '', '');
INSERT INTO `zc_cata` VALUES (10150, 0, 0, 1, 101, '10', '等待介入', '', '');
INSERT INTO `zc_cata` VALUES (10151, 0, 0, 1, 101, '30', '专家研判', '', '');
INSERT INTO `zc_cata` VALUES (10152, 0, 0, 1, 101, '20', '专家建议', '', '');
INSERT INTO `zc_cata` VALUES (10154, 0, 0, 1, 101, '100', 'AI不执行', '', '');
INSERT INTO `zc_cata` VALUES (10155, 0, 0, 1, 101, '110', 'AI自主执行', '', '');
INSERT INTO `zc_cata` VALUES (10156, 0, 0, 1, 101, '150', '直接执行', '', '');
INSERT INTO `zc_cata` VALUES (10157, 0, 0, 1, 101, '160', '改后执行', '', '');
INSERT INTO `zc_cata` VALUES (10159, 0, 0, 1, 101, '190', '人类拒绝', '', '');
INSERT INTO `zc_cata` VALUES (10160, 0, 0, 1, 101, '200', 'AI执行已阅', '', '');
INSERT INTO `zc_cata` VALUES (10161, 0, 0, 1, 101, '210', 'AI执行问题', '', '');
INSERT INTO `zc_cata` VALUES (10200, 0, 10, 1, 102, '10', '小学', '', '');
INSERT INTO `zc_cata` VALUES (10201, 0, 10, 1, 102, '20', '初中', '', '');
INSERT INTO `zc_cata` VALUES (10202, 0, 10, 1, 102, '30', '高中', '', '');
INSERT INTO `zc_cata` VALUES (10203, 0, 10, 1, 102, '40', '大专', '', '');
INSERT INTO `zc_cata` VALUES (10204, 0, 10, 1, 102, '50', '本科', '', '');
INSERT INTO `zc_cata` VALUES (10205, 0, 10, 1, 102, '60', '硕士', '', '');
INSERT INTO `zc_cata` VALUES (10206, 0, 10, 1, 102, '70', '博士', '', '');
INSERT INTO `zc_cata` VALUES (10250, 0, 10, 1, 103, '10', '等待指令', '', '');
INSERT INTO `zc_cata` VALUES (10251, 0, 10, 1, 103, '20', '队列中', '', '');
INSERT INTO `zc_cata` VALUES (10252, 0, 10, 1, 103, '30', '转账中', '', '');
INSERT INTO `zc_cata` VALUES (10253, 0, 10, 1, 103, '100', '成功', '', '');
INSERT INTO `zc_cata` VALUES (10254, 0, 10, 1, 103, '90', '失败', '', '');
INSERT INTO `zc_cata` VALUES (12001701, 2, 10, 1, 0, 'usertitle', '实验室成员头衔', '', 'lab_user.usertitle');
INSERT INTO `zc_cata` VALUES (12001702, 2, 20, 1, 0, 'sex', '成员性别', '', 'lab_user.sex');
INSERT INTO `zc_cata` VALUES (12001703, 2, 30, 1, 0, 'stpstatus', '实验室成员状态', '', 'lab_user.stpstatus');
INSERT INTO `zc_cata` VALUES (12001704, 2, 40, 1, 0, 'userlevel', '实验室成员等级', '', 'lab_user.userlevel');
INSERT INTO `zc_cata` VALUES (12001724, 0, 10, 1, 12001702, '10', '未知', 'weizhi', '');
INSERT INTO `zc_cata` VALUES (12001725, 0, 20, 1, 12001702, '20', '', 'man', '');
INSERT INTO `zc_cata` VALUES (12001726, 0, 30, 1, 12001702, '30', '', 'woman', '');
INSERT INTO `zc_cata` VALUES (12001729, 0, 10, 1, 12001703, '10', '负责人', 'man', '');
INSERT INTO `zc_cata` VALUES (12001730, 0, 20, 1, 12001703, '20', '科研秘书', 'man', '');
INSERT INTO `zc_cata` VALUES (12001731, 0, 30, 1, 12001703, '30', '在册成员', 'succ', '');
INSERT INTO `zc_cata` VALUES (12001732, 0, 40, 1, 12001703, '40', '历史成员', 'def', '');
INSERT INTO `zc_cata` VALUES (12001733, 0, 50, 1, 12001703, '50', '外部成员', 'warn', '');
INSERT INTO `zc_cata` VALUES (12001734, 0, 10, 1, 12001701, '10', '主任', 'man', '');
INSERT INTO `zc_cata` VALUES (12001735, 0, 20, 1, 12001701, '20', '副主任', 'man', '');
INSERT INTO `zc_cata` VALUES (12001736, 0, 30, 1, 12001701, '30', '顾问', '', '');
INSERT INTO `zc_cata` VALUES (12001737, 0, 40, 1, 12001701, '40', '名誉主任', '', '');
INSERT INTO `zc_cata` VALUES (12001738, 0, 50, 1, 12001701, '50', '教授', '', '');
INSERT INTO `zc_cata` VALUES (12001739, 0, 60, 1, 12001701, '60', '副教授', '', '');
INSERT INTO `zc_cata` VALUES (12001740, 0, 70, 1, 12001701, '70', '讲师', '', '');
INSERT INTO `zc_cata` VALUES (12001741, 0, 80, 1, 12001701, '80', '研究员', '', '');
INSERT INTO `zc_cata` VALUES (12001745, 0, 10, 1, 12001704, '10', '普通成员', '', '');
INSERT INTO `zc_cata` VALUES (12001746, 0, 20, 1, 12001704, '20', '核心成员', '', '');
INSERT INTO `zc_cata` VALUES (12001747, 0, 30, 1, 12001704, '30', '管理员', '', '');
INSERT INTO `zc_cata` VALUES (12001748, 0, 10, 1, 102, '0', '未知', '', '');
SET FOREIGN_KEY_CHECKS = 1;