🎉初版支持自动推送
This commit is contained in:
commit
d61a40e7c0
|
@ -0,0 +1,138 @@
|
|||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 Eigeen
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,138 @@
|
|||
from .config import Config
|
||||
from .page_parser import PageParser
|
||||
from .db import CachedNotice
|
||||
from .notice import Notice
|
||||
import os
|
||||
from pathlib import Path
|
||||
import aiohttp
|
||||
from nonebot_plugin_apscheduler import scheduler
|
||||
import nonebot
|
||||
from nonebot import on_command, require
|
||||
from nonebot.log import logger
|
||||
from nonebot.rule import Rule
|
||||
from nonebot.adapters.onebot.v11.adapter import Message, MessageSegment
|
||||
from nonebot.adapters.onebot.v11 import Message, MessageSegment, Bot, MessageEvent
|
||||
from nonebot.matcher import Matcher
|
||||
from nonebot.params import CommandArg
|
||||
|
||||
require("nonebot_plugin_apscheduler")
|
||||
|
||||
|
||||
notice_pusher = on_command("csust_notice_pusher", rule=Rule(), priority=5)
|
||||
PACKAGE_PATH = os.path.dirname(os.path.abspath(__file__))
|
||||
DATA_PATH = Path().absolute() / "data" / "notice_pusher"
|
||||
DB_PATH = DATA_PATH / "cache.db"
|
||||
GLOBAL_CFG = nonebot.get_driver().config
|
||||
CFG = Config.parse_obj(GLOBAL_CFG.dict())
|
||||
|
||||
XGDT_URL = 'https://www.csust.edu.cn/gjxy/xgdt.htm'
|
||||
XFZX_URL = 'https://www.csust.edu.cn/gjxy/xxyfzzx.htm'
|
||||
URL_PREFIX = 'https://www.csust.edu.cn/gjxy/'
|
||||
HEADERS = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50',
|
||||
}
|
||||
|
||||
logger.info('加载数据库文件: ' + str(DB_PATH))
|
||||
db = CachedNotice(DB_PATH)
|
||||
|
||||
|
||||
async def check_and_push():
|
||||
msg = await auto_check()
|
||||
await push_all(msg)
|
||||
|
||||
|
||||
async def auto_check() -> list[str]:
|
||||
msgs = []
|
||||
xgdt_notices = await get_notices(XGDT_URL)
|
||||
xfzx_notices = await get_notices(XFZX_URL)
|
||||
xgdt_updates = []
|
||||
xfzx_updates = []
|
||||
|
||||
# 学工动态
|
||||
for i, n in enumerate(xgdt_notices):
|
||||
if db.is_notice_exists(n.id):
|
||||
continue
|
||||
full_url = URL_PREFIX + n.url
|
||||
msg = f'{i+1}. \n标题:{n.title}\n内容预览:{n.content_preview[:40]}\n链接:{full_url}\n\n'
|
||||
xgdt_updates.append(msg)
|
||||
db.add_notice(Notice(*n.get_properties()))
|
||||
logger.info("学工动态更新: " + msg)
|
||||
# 学发中心
|
||||
for i, n in enumerate(xfzx_notices):
|
||||
if db.is_notice_exists(n.id):
|
||||
continue
|
||||
full_url = URL_PREFIX + n.url
|
||||
msg = f'{i+1}. \n标题:{n.title}\n内容预览:{n.content_preview[:40]}\n链接:{full_url}\n\n'
|
||||
xfzx_updates.append(msg)
|
||||
db.add_notice(Notice(*n.get_properties()))
|
||||
logger.info("学发中心更新: " + msg)
|
||||
|
||||
if xgdt_updates:
|
||||
msgs.append('学工动态更新:\n')
|
||||
msgs += xgdt_updates
|
||||
|
||||
if xfzx_updates:
|
||||
msgs.append('学发中心更新:\n')
|
||||
msgs += xfzx_updates
|
||||
|
||||
return msgs
|
||||
|
||||
|
||||
async def get_notices(url: str):
|
||||
page_content = await get_page(url)
|
||||
if not page_content:
|
||||
return
|
||||
|
||||
parser = PageParser(page_content)
|
||||
notices = parser.get_notices()
|
||||
|
||||
return notices
|
||||
|
||||
|
||||
async def get_page(url: str) -> str:
|
||||
"""获取页面
|
||||
|
||||
Raises:
|
||||
IOError: 页面获取失败
|
||||
"""
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url=url, headers=HEADERS) as res:
|
||||
if res.status != 200:
|
||||
raise IOError('页面获取失败: Code ' + res.status)
|
||||
return await res.text()
|
||||
|
||||
|
||||
async def push_all(msg: str):
|
||||
for gid in CFG.notice_pusher_enable:
|
||||
await push_to_group(gid, msg)
|
||||
|
||||
|
||||
async def push_to_group(groupid: int, msg: str):
|
||||
bot = nonebot.get_bot()
|
||||
await bot.send_group_msg(group_id=groupid, message=Message(msg))
|
||||
|
||||
|
||||
async def push_error_to_admins(user_id: list[int], msg: str):
|
||||
bot = nonebot.get_bot()
|
||||
for u in user_id:
|
||||
await bot.send_private_msg(user_id=user_id, message=Message(msg))
|
||||
|
||||
scheduler.add_job(
|
||||
check_and_push,
|
||||
'cron',
|
||||
hour=9,
|
||||
minute=0,
|
||||
second=0,
|
||||
id='check_notice_and_push'
|
||||
)
|
||||
|
||||
|
||||
@notice_pusher.handle()
|
||||
async def handle_pusher(matcher: Matcher, event: MessageEvent, arg: Message = CommandArg()):
|
||||
try:
|
||||
msg = await auto_check()
|
||||
except IOError as e:
|
||||
await push_error_to_admins(GLOBAL_CFG.superusers, str(e))
|
||||
return
|
||||
|
||||
await matcher.finish(msg)
|
|
@ -0,0 +1,6 @@
|
|||
from typing import List
|
||||
from pydantic import BaseModel, Extra
|
||||
|
||||
|
||||
class Config(BaseModel, extra=Extra.ignore):
|
||||
notice_pusher_enable: List = []
|
|
@ -0,0 +1,69 @@
|
|||
import sqlite3
|
||||
import os
|
||||
from .notice import Notice
|
||||
from typing import Any
|
||||
from nonebot.log import logger
|
||||
|
||||
|
||||
class CachedNotice(object):
|
||||
def __init__(self, db_path: str) -> None:
|
||||
self.engine = None
|
||||
self.db_path = db_path
|
||||
self.connect()
|
||||
self.init_table()
|
||||
|
||||
def __del__(self):
|
||||
self.engine.close()
|
||||
|
||||
def connect(self):
|
||||
self.engine = sqlite3.connect(self.db_path)
|
||||
|
||||
def init_table(self):
|
||||
cur = self.engine.cursor()
|
||||
cur.execute("""CREATE TABLE IF NOT EXISTS notices (
|
||||
id BIGINT PRIMARY KEY,
|
||||
url TEXT NOT NULL DEFAULT '',
|
||||
title TEXT NOT NULL DEFAULT '',
|
||||
content_preview TEXT NOT NULL DEFAULT '',
|
||||
publish_date DATE NOT NULL DEFAULT '',
|
||||
content TEXT NOT NULL DEFAULT '',
|
||||
source TEXT NOT NULL DEFAULT ''
|
||||
);""")
|
||||
self.engine.commit()
|
||||
cur.close()
|
||||
|
||||
def get_notice_by_id(self, id: int) -> Notice:
|
||||
cur = self.engine.cursor()
|
||||
cur.execute(
|
||||
f"""SELECT id, url, title, content_preview, publish_date, content, source FROM notices WHERE id = {id}""")
|
||||
data = cur.fetchone()
|
||||
cur.close()
|
||||
|
||||
if data:
|
||||
return Notice(*data)
|
||||
else:
|
||||
return None
|
||||
|
||||
def is_notice_exists(self, notice_id: int) -> bool:
|
||||
res = self.get_notice_by_id(notice_id)
|
||||
if res:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def add_notice(self, data: Notice):
|
||||
if self.is_notice_exists(data.id):
|
||||
return
|
||||
|
||||
cur = self.engine.cursor()
|
||||
sql = """INSERT INTO notices (id, url, title, content_preview, publish_date, content, source)
|
||||
VALUES ({}, '{}', '{}', '{}', '{}', '{}', '{}');""".format(*map(quote_escape, data.get_properties()))
|
||||
cur.execute(sql)
|
||||
self.engine.commit()
|
||||
cur.close()
|
||||
|
||||
|
||||
def quote_escape(x: str | Any):
|
||||
if isinstance(x, str):
|
||||
x = x.replace("'", "''")
|
||||
return x
|
|
@ -0,0 +1,58 @@
|
|||
def main(pstr: str, defaults: dict):
|
||||
properties = pstr.rsplit(',')
|
||||
result = ''
|
||||
|
||||
arg_init_head = """ def __init__(self, {}):\n"""
|
||||
arg_init_line = """ self.__{0} = {0}\n"""
|
||||
noarg_init_head = """ def __init__(self):\n"""
|
||||
noarg_init_line = """ self.__{0} = {1}\n"""
|
||||
getter = """ @property
|
||||
def {0}(self):
|
||||
return self.__{0}
|
||||
"""
|
||||
setter = """ @{0}.setter
|
||||
def {0}(self, value):
|
||||
if value == None:
|
||||
self.__{0} = ''
|
||||
self.__{0} = value
|
||||
"""
|
||||
|
||||
# 有参构造器
|
||||
result += arg_init_head.format(', '.join(properties))
|
||||
for p in properties:
|
||||
result += arg_init_line.format(p)
|
||||
|
||||
# 无参构造器
|
||||
result += '\n'
|
||||
result += noarg_init_head
|
||||
for p in properties:
|
||||
if p in defaults:
|
||||
default = str(defaults[p])
|
||||
else:
|
||||
default = "''"
|
||||
result += noarg_init_line.format(p, default)
|
||||
|
||||
# property
|
||||
for p in properties:
|
||||
result += '\n'
|
||||
result += getter.format(p)
|
||||
result += '\n'
|
||||
result += setter.format(p)
|
||||
|
||||
# get_properties()
|
||||
result += '\n'
|
||||
result += ' def get_properties(self) -> list:\n'
|
||||
_ret = list(map(lambda x: 'self.' + x, properties))
|
||||
_ret = ', '.join(_ret)
|
||||
result += ' return {}'.format(_ret)
|
||||
|
||||
# tostring()
|
||||
|
||||
|
||||
print(result)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
properties = 'id,url,title,content_review,publish_date,content,source'
|
||||
defaults = {'publish_date': None, 'id': 0}
|
||||
main(properties, defaults)
|
|
@ -0,0 +1,90 @@
|
|||
from datetime import date, datetime
|
||||
from typing import Any
|
||||
|
||||
|
||||
class Notice(object):
|
||||
"""通知实体类
|
||||
"""
|
||||
|
||||
def __init__(self, id=0, url='', title='', content_preview='', publish_date: date=None, content='', source=''):
|
||||
self.__id = id
|
||||
self.__url = url
|
||||
self.__title = title
|
||||
self.__content_preview = content_preview
|
||||
self.publish_date = publish_date
|
||||
self.__content = content
|
||||
self.__source = source
|
||||
|
||||
@property
|
||||
def id(self):
|
||||
return self.__id
|
||||
|
||||
@id.setter
|
||||
def id(self, value):
|
||||
if value == None:
|
||||
self.__id = 0
|
||||
self.__id = value
|
||||
|
||||
@property
|
||||
def url(self):
|
||||
return self.__url
|
||||
|
||||
@url.setter
|
||||
def url(self, value):
|
||||
if value == None:
|
||||
self.__url = ''
|
||||
self.__url = value
|
||||
|
||||
@property
|
||||
def title(self):
|
||||
return self.__title
|
||||
|
||||
@title.setter
|
||||
def title(self, value):
|
||||
if value == None:
|
||||
self.__title = ''
|
||||
self.__title = value
|
||||
|
||||
@property
|
||||
def content_preview(self):
|
||||
return self.__content_preview
|
||||
|
||||
@content_preview.setter
|
||||
def content_preview(self, value):
|
||||
if value == None:
|
||||
value = ''
|
||||
self.__content_preview = value
|
||||
|
||||
@property
|
||||
def publish_date(self):
|
||||
return self.__publish_date.strftime("%Y-%m-%d")
|
||||
|
||||
@publish_date.setter
|
||||
def publish_date(self, value: date):
|
||||
if isinstance(value, str):
|
||||
dt = datetime.strptime(value, '%Y-%m-%d')
|
||||
value = dt.date()
|
||||
self.__publish_date = value
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
return self.__content
|
||||
|
||||
@content.setter
|
||||
def content(self, value):
|
||||
if value == None:
|
||||
self.__content = ''
|
||||
self.__content = value
|
||||
|
||||
@property
|
||||
def source(self):
|
||||
return self.__source
|
||||
|
||||
@source.setter
|
||||
def source(self, value):
|
||||
if value == None:
|
||||
self.__source = ''
|
||||
self.__source = value
|
||||
|
||||
def get_properties(self) -> list:
|
||||
return self.id, self.url, self.title, self.content_preview, self.publish_date, self.content, self.source
|
|
@ -0,0 +1,66 @@
|
|||
from lxml import etree
|
||||
import re
|
||||
from datetime import date
|
||||
try:
|
||||
import ujson as json
|
||||
except:
|
||||
import json
|
||||
|
||||
try:
|
||||
from .notice import Notice
|
||||
except ImportError:
|
||||
from notice import Notice
|
||||
|
||||
|
||||
class PageParser(object):
|
||||
"""解析器类
|
||||
"""
|
||||
REG = re.compile(r'info/\d+/(\d+).htm', re.S)
|
||||
|
||||
def __init__(self, page: str) -> None:
|
||||
self._page_content = page
|
||||
self._notices = []
|
||||
self._parse()
|
||||
|
||||
def _parse(self):
|
||||
"""解析页面
|
||||
"""
|
||||
root = etree.HTML(self._page_content)
|
||||
elements = root.xpath("//ul[@class='secList pageList']/li")
|
||||
for e in elements:
|
||||
notice = Notice()
|
||||
notice.title = e.xpath("div[@class='r']//a/text()")[0]
|
||||
url = str(e.xpath("div[@class='r']//a/@href")[0])
|
||||
notice.url = url
|
||||
notice.id = self._get_id(url)
|
||||
content_review = e.xpath(
|
||||
"div[@class='r']/div[@class='intro']/text()")[0]
|
||||
content_review = content_review.replace('\\n', '').strip()
|
||||
notice.content_preview = content_review
|
||||
year, month = e.xpath("div[@class='l']/text()")[0].split('-')
|
||||
day = e.xpath("div[@class='l']/span/text()")[0]
|
||||
notice.publish_date = date(
|
||||
year=int(year), month=int(month), day=int(day))
|
||||
self._notices.append(notice)
|
||||
|
||||
def _get_id(self, url: str) -> int:
|
||||
res = self.REG.findall(url)[0]
|
||||
return int(res)
|
||||
|
||||
def get_notices(self) -> list[Notice]:
|
||||
return self._notices
|
||||
|
||||
# def _parse_date(self, date_str: str) -> date:
|
||||
# pass
|
||||
|
||||
# def test(self):
|
||||
# root = etree.HTML(self._page_content)
|
||||
# elements = root.xpath("//ul[@class='secList pageList']/li")
|
||||
# e = elements[0]
|
||||
# print(type(e.xpath("div[@class='r']//a/@href")[0]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
with open('sample.html', encoding='utf-8') as fp:
|
||||
parser = PageParser(fp.read())
|
||||
parser.test()
|
|
@ -0,0 +1,648 @@
|
|||
<!DOCTYPE html
|
||||
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>学工动态-国际工学院</title>
|
||||
<META Name="keywords" Content="国际工学院,学工动态" />
|
||||
|
||||
|
||||
<meta name="description" content="长沙理工大学·国际学院" />
|
||||
<meta http-equiv="pragma" content="no-cache">
|
||||
<meta http-equiv="cache-control" content="no-cache">
|
||||
<link href="dfiles/3935/pub/gjxy/images/gjxycss.jpg.css" type="text/css" rel="stylesheet">
|
||||
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
||||
<script src="dfiles/3935/pub/gjxy/images/jquery.min.js">
|
||||
|
||||
</script>
|
||||
<!-- Custom Theme files -->
|
||||
<!-- for bootstrap working -->
|
||||
<script type="text/javascript" src="dfiles/3935/pub/gjxy/images/bootstrap.js">
|
||||
|
||||
</script>
|
||||
<!-- //for bootstrap working -->
|
||||
<script src="dfiles/3935/pub/gjxy/images/responsiveslides.min.js">
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="dfiles/3935/pub/gjxy/images/move-top.js">
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="dfiles/3935/pub/gjxy/images/easing.js">
|
||||
|
||||
</script>
|
||||
<!--/script-->
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
jQuery(document).ready(function ($) {
|
||||
$(".scroll").click(function (event) {
|
||||
event.preventDefault();
|
||||
$('html,body').animate({ scrollTop: $(this.hash).offset().top }, 900);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript" src="dfiles/3935/pub/gjxy/images/menujs.js">
|
||||
|
||||
</script>
|
||||
<!--Announced by Visual SiteBuilder 9-->
|
||||
<link rel="stylesheet" type="text/css" href="_sitegray/_sitegray_d.css" />
|
||||
<script language="javascript" src="_sitegray/_sitegray.js"></script>
|
||||
<!-- CustomerNO:7765626265723230747a475452545742000200014751 -->
|
||||
<link rel="stylesheet" type="text/css" href="lby.vsb.css" />
|
||||
<script type="text/javascript" src="/system/resource/js/counter.js"></script>
|
||||
<script type="text/javascript">_jsq_(1285, '/lby.jsp', -1, 1390296022)</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- header-section-starts-here -->
|
||||
<div class="header" id="movetop">
|
||||
<div class="container">
|
||||
<div class="header-top">
|
||||
<div class="logo left"><a href="sy.htm" target=""><img src="dfiles/3935/pub/gjxy/images/logo.png"></a>
|
||||
</div>
|
||||
<div class="social right"><a href="http://www.csust.edu.cn/gjjlc/index.htm" target="_blank">国际交流处</a>|<a
|
||||
href="mailto:lxskq2011@163.com">学院信箱</a>|<a href="ywbwz/Home.htm" target="">ENGLISH</a></div>
|
||||
<div class="search right">
|
||||
<script type="text/javascript">
|
||||
function _nl_ys_check() {
|
||||
|
||||
var keyword = document.getElementById('showkeycode129384').value;
|
||||
if (keyword == null || keyword == "") {
|
||||
alert("请输入你要检索的内容!");
|
||||
return false;
|
||||
}
|
||||
if (window.toFF == 1) {
|
||||
document.getElementById("lucenenewssearchkey129384").value = Simplized(keyword);
|
||||
} else {
|
||||
document.getElementById("lucenenewssearchkey129384").value = keyword;
|
||||
}
|
||||
var base64 = new Base64();
|
||||
document.getElementById("lucenenewssearchkey129384").value = base64.encode(document.getElementById("lucenenewssearchkey129384").value);
|
||||
new VsbFormFunc().disableAutoEnable(document.getElementById("showkeycode129384"));
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
<form action="copy_1_copy_3_lby.jsp?wbtreeid=1285" method="post" id="au0a" name="au0a"
|
||||
onsubmit="return _nl_ys_check()"><input type="hidden" id="lucenenewssearchkey129384"
|
||||
name="lucenenewssearchkey" value=""><input type="hidden" id="_lucenesearchtype129384"
|
||||
name="_lucenesearchtype" value="1"><input type="hidden" id="searchScope129384"
|
||||
name="searchScope" value="0">
|
||||
<input name="showkeycode" id="showkeycode129384" class="search_text" value="Search..."
|
||||
onFocus="if(value==defaultValue){value='';this.style.color='#999'}"
|
||||
onBlur="if(!value){value=defaultValue;this.style.color='#999'}"><input type="submit"
|
||||
class="search_bnt" value="" />
|
||||
</form>
|
||||
<script language="javascript" src="/system/resource/js/base64.js"></script>
|
||||
<script language="javascript" src="/system/resource/js/formfunc.js"></script>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<!-- navigation -->
|
||||
<div class="navigation">
|
||||
<ul class="nav menu">
|
||||
<li class="menu_1"><a href="index.htm">学院首页</a>
|
||||
</li>
|
||||
<li class="menu_2"><a href="xygk.htm">学院概况</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="xygk/xyjj.htm">学院简介</a></dt>
|
||||
<dt><a href="xygk/xrld.htm">现任领导</a></dt>
|
||||
<dt><a href="xygk/jgsz.htm">机构设置</a></dt>
|
||||
<dt><a href="xygk/lxwm.htm">联系我们</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
<li class="menu_3"><a href="hzbx.htm">合作办学</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="hzbx/tmgczy.htm">土木工程专业</a></dt>
|
||||
<dt><a href="hzbx/dqgcjqzdhzy.htm">电气工程及其自动化专业</a></dt>
|
||||
<dt><a href="hzbx/jxsjzzjqzdh.htm">机械设计制造及其自动化</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
<li class="menu_4"><a href="jgbgz.htm">教改班工作</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="jgbgz/bjjj.htm">班级简介</a></dt>
|
||||
<dt><a href="jgbgz/gzzd.htm">规章制度</a></dt>
|
||||
<dt><a href="jgbgz/xxdt.htm">学习动态</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
<li class="menu_5"><a href="xsgz.htm">学生工作</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="xsgz/xsdj.htm">学生党建</a></dt>
|
||||
<dt><a href="xsgz/xfjs.htm">学风建设</a></dt>
|
||||
<dt><a href="xsgz/rcgl.htm">日常管理</a></dt>
|
||||
<dt><a href="xsgz/txgz.htm">团学工作</a></dt>
|
||||
<dt><a href="xsgz/xljk.htm">心理健康</a></dt>
|
||||
<dt><a href="xsgz/zsjy.htm">招生就业</a></dt>
|
||||
<dt><a href="xsgz/rybd.htm">荣誉榜单</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
<li class="menu_6"><a href="lxsjy.htm">留学生教育</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="lxsjy/gzzd.htm">规章制度</a></dt>
|
||||
<dt><a href="lxsjy/zsgz.htm">招生工作</a></dt>
|
||||
<dt><a href="lxsjy/jypy.htm">教育培养</a></dt>
|
||||
<dt><a href="lxsjy/xysh.htm">校园生活</a></dt>
|
||||
<dt><a href="lxsjy/xshd.htm">学生活动</a></dt>
|
||||
<dt><a href="lxsjy/xytd.htm">校友天地</a></dt>
|
||||
<dt><a href="lxsjy/mtjj.htm">媒体聚焦</a></dt>
|
||||
<dt><a href="lxsjy/HSKkdgz.htm">HSK考点工作</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
<li class="menu_7"><a href="dqgz.htm">党群工作</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="dqgz/zzjg.htm">组织机构</a></dt>
|
||||
<dt><a href="dqgz/gzzd.htm">规章制度</a></dt>
|
||||
<dt><a href="dqgz/djdt.htm">党建动态</a></dt>
|
||||
<dt><a href="dqgz/dsxxjyzt.htm">党史学习教育专题</a></dt>
|
||||
<dt><a href="dqgz/dyfc.htm">党员风采</a></dt>
|
||||
<dt><a href="dqgz/ghgz.htm">工会工作</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
<li class="menu_8"><a href="pxyjs.htm">培训与竞赛</a>
|
||||
<dl class="subnav">
|
||||
<dt><a href="pxyjs/gzzd.htm">规章制度</a></dt>
|
||||
<dt><a href="pxyjs/xkjs.htm">学科竞赛</a></dt>
|
||||
<dt><a href="pxyjs/czkt.htm">成长课堂</a></dt>
|
||||
<dt><a href="pxyjs/swpx.htm">涉外培训</a></dt>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<!-- //navigation -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- header-section-ends-here -->
|
||||
<div class="slider">
|
||||
<ul class="rslides" id="slider1">
|
||||
<li><img src="dfiles/3935/pub/gjxy/images/show_pho1.jpg"></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="content">
|
||||
<!-- Our-staff-starts -->
|
||||
<div class="show">
|
||||
<div class="container">
|
||||
<div class="show-head text-center">
|
||||
<header>
|
||||
<h3>
|
||||
|
||||
|
||||
|
||||
学工动态</h3>
|
||||
</header>
|
||||
</div>
|
||||
<div class="show-grids">
|
||||
<div class="col-md-3 pl30 left">
|
||||
<ul class="menu_list"></ul>
|
||||
</div>
|
||||
<div class="col-md-5 pr30 right">
|
||||
<div class="show_title">
|
||||
<h3>
|
||||
|
||||
|
||||
|
||||
学工动态</h3>
|
||||
</div>
|
||||
<div class="tit-content">
|
||||
|
||||
<script language="javascript" src="/system/resource/js/centerCutImg.js"></script>
|
||||
<script language="javascript" src="/system/resource/js/dynclicks.js"></script>
|
||||
<script language="javascript" src="/system/resource/js/ajax.js"></script>
|
||||
<ul class="secList pageList">
|
||||
<li id="line_u5_0">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5152.htm"
|
||||
title="国际工学院学生党支部开展2022年度组织生活会">国际工学院学生党支部开展2022年度组织生活会</a></dt>
|
||||
<div class="intro">
|
||||
近日,国际工学院各学生党支部在新能源大楼一栋陆续开展2022年度组织生活会。会议由各党支部书记主持,国际工学院党总支书记王学成,院长吴迪龙,副书记兼副院长乔法光,党总支委员...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>21</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_1">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5146.htm"
|
||||
title="总分第二!我院土木教改1901班获校2022年度“示范班集体”!">总分第二!我院土木教改1901班获校2022年度“示范班集体”!</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
为进一步加强班风、学风和校风建设,发挥典型示范引领作用,3月14日下午,我校2022年“示范班集体”决选在云塘校区图书馆报告厅举行。其中,我院土木教改1901班以总分第二的优秀成...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>15</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_2">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5141.htm"
|
||||
title="春暖花开,奋斗当时--国际工学院召开毕(就)业工作推进会">春暖花开,奋斗当时--国际工学院召开毕(就)业工作推进会</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
3月14日下午,国际工学院在新能源大楼1栋416会议室召开2023届毕(就)业工作推进会暨毕业年级班主任大会。院党总支书记王学成,副书记兼副院长乔法光,学工办、教务办以及2023届毕业生...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>15</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_3">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5128.htm"
|
||||
title="留学生争当“洋雷锋” ——国际工学院、交通学院联合开展青马工程暨“书写新时代雷锋故事”主题分享会">留学生争当“洋雷锋”
|
||||
——国际工学院、交通学院联合开展青马...</a></dt>
|
||||
<div class="intro">
|
||||
为了纪念毛泽东等老一辈革命家为雷锋同志题词60周年,3月6日,交通学院、国际工学院在文科楼A200联合开展青马工程暨“书写新时代雷锋故事”主题分享会。206名青年学子齐聚一堂,共话...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>06</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_4">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5123.htm"
|
||||
title="“书写新时代雷锋故事”——国际学子走进社区话雷锋学雷锋">“书写新时代雷锋故事”——国际学子走进社区话雷锋学雷锋</a></dt>
|
||||
<div class="intro">
|
||||
三月春风暖人心,雷锋精神代代传。3月3日,长沙理工大学国际工学院学生党员代表,携手学院来华留学生代表,深入长沙市天心区暮云街道卢浮社区,开展中外青年学生进社区学雷锋志愿服务...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>06</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_5">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5115.htm"
|
||||
title="“书写新时代雷锋故事”——国际工学院学生党员“朋辈小课堂”助力学业帮扶">“书写新时代雷锋故事”——国际工学院学生党员“朋辈小课堂...</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
为提升学业帮扶实效,国际工学院的学生党员们在新学期开学第一周主动开设“朋辈小课堂”,开展系列朋辈学业帮扶活动,帮助学习困难同学完成学业。本次党员“朋辈小课堂”分8个场次开...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>04</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_6">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5114.htm"
|
||||
title="“职”等你来,如沐春风--国际工学院举办就业指导讲座">“职”等你来,如沐春风--国际工学院举办就业指导讲座</a></dt>
|
||||
<div class="intro">
|
||||
为帮助毕业生把握春季招聘黄金期,3月3日晚,国际工学院在新能源大楼1栋402报告厅举办了2023届毕业生就业指导专题讲座。讲座邀请了中铁建电气化局四公司人力资源部曾妮作为主讲嘉宾,...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>04</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_7">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5126.htm"
|
||||
title="春风浩荡满目新,扬帆奋进正当时——国际工学院召开2022级新学期班级学生干部大会">春风浩荡满目新,扬帆奋进正当时——国际工学院召开2022级新...</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
3月3日中午,国际工学院2022级新学期班级学生干部大会在云塘校区新能源大楼1栋4楼会议室召开。学院党总支副书记兼副院长乔法光、2022级全体辅导员和班级学生干部参会。本次会议由年...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>04</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_8">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5109.htm"
|
||||
title="“规范停车,文明出行”——国际工学院开展校内学雷锋志愿服务">“规范停车,文明出行”——国际工学院开展校内学雷锋志愿服务</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
为弘扬践行雷锋精神,纪念毛泽东等老一辈革命家为雷锋同志题词60周年,用实际行动书写新时代雷锋故事,3月1日中午,长沙理工大学国际工学院开展了“书写新时代雷锋故事——规范停车,...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-03<br /><span>01</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_9">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5082.htm"
|
||||
title="“启航新征程,青春正当时”——国际工学院领导老师走访学生宿舍">“启航新征程,青春正当时”——国际工学院领导老师走访学生宿舍</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
新学期伊始,为更好地了解学生学习生活情况,2月21日下午,国际工学院党总支书记王学成、院长吴迪龙、副书记兼副院长乔法光,以及学工办、留工办全体辅导员深入学生宿舍,看望返校学生...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-02<br /><span>22</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_10">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5064.htm"
|
||||
title="国际工学院召开2023年春季学期第一次主题班会">国际工学院召开2023年春季学期第一次主题班会</a></dt>
|
||||
<div class="intro">
|
||||
2023年2月19日晚,国际工学院组织召开“启航新征程,青春正当时”为主题的新学期第一次班会。学院辅导员、各班班主任、全体学生分班级参加此次班会,班会由各班班长主持。首先,各班...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-02<br /><span>20</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
<li id="line_u5_11">
|
||||
<div class="r">
|
||||
<dt><a href="info/1285/5050.htm"
|
||||
title="国际工学院成功举办2023年心理健康教育讲座暨心理健康教育队伍培训">国际工学院成功举办2023年心理健康教育讲座暨心理健康教育队...</a>
|
||||
</dt>
|
||||
<div class="intro">
|
||||
---自己的心理咨询师--大学生自我成长和心理调适2月13日晚,国际工学院成功举办“做自己的心理咨询师--大学生自我成长和心理调适”心理讲座暨心理健康教育队伍培训,本次讲座由教育部...
|
||||
</div>
|
||||
</div>
|
||||
<div class="l">2023-02<br /><span>18</span></div>
|
||||
<div class="clearfix"></div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
<div class="pageChanger"><INPUT TYPE="hidden" NAME="actiontype" VALUE=""><input
|
||||
type="hidden" name="_scode_" value="1679471134155"><input type="hidden"
|
||||
name="urltype" value="tree.TreeTempUrl"><input type="hidden" name="wbtreeid"
|
||||
value="1285"><input type="hidden" name="outFlag" value="false">
|
||||
<style type="text/css">
|
||||
.headStyle14mtowhg3z,
|
||||
.headStyle14mtowhg3z td,
|
||||
.headStyle14mtowhg3z div {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
color: #000000;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.defaultButtonStyle {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
height: 20px;
|
||||
color: #000000;
|
||||
BORDER: #AFD5F5 1px solid;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#BDDBF7);
|
||||
CURSOR: pointer;
|
||||
line-height: 14px;
|
||||
background: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#BDDBF7));
|
||||
background: -moz-linear-gradient(top, #ffffff, #BDDBF7);
|
||||
background: -ms-linear-gradient(top, #ffffff 0%, #bddbf7 100%);
|
||||
}
|
||||
|
||||
.defaultinputStyle {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
height: 20px;
|
||||
border: 1px solid #AFD5F5;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.colHeader {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z a,
|
||||
.pageList .this-page {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
display: inline-block;
|
||||
height: 14px;
|
||||
padding: 2px 4px;
|
||||
border: solid 1px #AFD5F5;
|
||||
background: #fff;
|
||||
text-decoration: none;
|
||||
MARGIN-RIGHT: 1px;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z a:visited {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .PrevDisabled {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
display: inline-block;
|
||||
height: 14px;
|
||||
margin-right: 3px;
|
||||
padding: 2px 4px;
|
||||
background: #fff;
|
||||
color: #ccc;
|
||||
border: solid 1px #AFD5F5;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .SelectList {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .Prev {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
margin-right: 3px;
|
||||
padding: 2px 4px;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .break {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
border: none;
|
||||
text-decoration: none;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .NextDisabled {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
display: inline-block;
|
||||
height: 14px;
|
||||
margin-left: 2px;
|
||||
padding: 2px 4px;
|
||||
background: #fff;
|
||||
color: #ccc;
|
||||
border: solid 1px #AFD5F5;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .Next {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
margin-left: 2px;
|
||||
padding: 2px 4px;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z .this-page {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
display: inline-block;
|
||||
height: 14px;
|
||||
padding: 2px 4px;
|
||||
border: solid 1px #AFD5F5;
|
||||
background: #E1F0FD;
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
MARGIN-RIGHT: 1px;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z a:hover {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
color: black;
|
||||
background: #EFF7FE;
|
||||
border-color: #AFD5F5;
|
||||
text-decoration: none;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z a:link {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
line-height: 14px;
|
||||
}
|
||||
|
||||
.headStyle14mtowhg3z a:active {
|
||||
font-size: 12px;
|
||||
font-family: 宋体;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
background: #EFF7FE;
|
||||
line-height: 14px;
|
||||
}
|
||||
</style>
|
||||
<script language="javascript" src="/system/resource/js/gotopage.js"></script>
|
||||
<script
|
||||
type="text/javascript">function a130649_gopage_fun() { _simple_list_gotopage_fun(29, 'a130649GOPAGE', 2) }</script>
|
||||
<table cellspacing="0" cellpadding="0" border="0">
|
||||
<TR>
|
||||
<td colspan="0">
|
||||
<table cellspacing="0" class="headStyle14mtowhg3z" width="100%"
|
||||
cellpadding="1">
|
||||
<tr valign="middle">
|
||||
<TD nowrap align="left" width="1%" id="fanye130649">
|
||||
共344条 1/29 </td>
|
||||
<td nowrap align="left">
|
||||
<div><span class="PrevDisabled">首页</span><span
|
||||
class="PrevDisabled">上页</span><a href="xgdt/28.htm"
|
||||
class="Next">下页</a><a href="xgdt/1.htm"
|
||||
class="Next">尾页</a> <input align="absmiddle"
|
||||
type="button" class="defaultButtonStyle"
|
||||
id="gotopagebut" name="a130649Find" value="转到"
|
||||
onclick="javascript:a130649_gopage_fun()"><INPUT
|
||||
size="2" align="absmiddle" class="defaultInputStyle"
|
||||
NAME="a130649GOPAGE" id="a130649GOPAGE" VALUE=""
|
||||
style="margin-left:1px;margin-right:1px">页</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</table>
|
||||
</div>
|
||||
<script>_showDynClickBatch(['dynclicks_u5_5152', 'dynclicks_u5_5146', 'dynclicks_u5_5141', 'dynclicks_u5_5128', 'dynclicks_u5_5123', 'dynclicks_u5_5115', 'dynclicks_u5_5114', 'dynclicks_u5_5126', 'dynclicks_u5_5109', 'dynclicks_u5_5082', 'dynclicks_u5_5064', 'dynclicks_u5_5050'], [5152, 5146, 5141, 5128, 5123, 5115, 5114, 5126, 5109, 5082, 5064, 5050], "wbnews", 1390296022)</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- //Our-staff-ends -->
|
||||
<div class="footer">
|
||||
<div class="footer-top">
|
||||
<div class="container">
|
||||
<div class="col-md-4 left">
|
||||
<ul class="links">
|
||||
<script language="javascript" src="/system/resource/js/openlink.js"></script>
|
||||
<li><a target="_blank" href="http://www.csust.edu.cn/gjjlc/index.htm" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14711)">· 国际交流处</a></li>
|
||||
<li><a target="_blank" href="http://www.csust.edu.cn/wgyxy/index.htm" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14712)">· 外国语学院</a></li>
|
||||
<li><a target="_blank" href="http://www.csust.edu.cn/xsgzb/index.htm" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14715)">· 学生工作部</a></li>
|
||||
<li><a target="_blank" href="http://www.csust.edu.cn/xtw/index.htm" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14716)">· 校团委</a></li>
|
||||
</ul>
|
||||
<ul class="links">
|
||||
<li><a target="_blank" href="http://www.hanban.edu.cn/" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14718)">· 孔子学院总部/国家汉办</a></li>
|
||||
<li><a target="_blank" href="http://www.csc.edu.cn/" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14721)">· 国家留学网</a></li>
|
||||
<li><a target="_blank" href="http://www.jsj.edu.cn/" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14722)">· 中外合作办学监管网</a></li>
|
||||
<li><a target="_blank" href="http://www.chinesetest.cn/index.do" title=""
|
||||
onclick="_addDynClicks("wburl", 1390296022, 14726)">· 汉语考试服务网</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-4-1 left bor-l footer-contact">
|
||||
<ul>
|
||||
<li class="ico_add">地址:湖南省长沙市(雨花区)万家丽南路2段960号</li>
|
||||
<li class="ico_tel">电话:(+86)731-85256019</li>
|
||||
<li class="ico_fax">传真:0731-85256019</li>
|
||||
<li class="ico_mail">邮箱:cslggjxy@csust.edu.cn</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-4-2 right bor-l"><img src="dfiles/3935/pub/gjxy/images/foot_QR.gif" /></div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<div class="container">
|
||||
<div class="copyrights">
|
||||
<p>CopyRight © 2015-2018 All Right
|
||||
Reserved 长沙理工大学国际工学院版权所有
|
||||
<script>
|
||||
var _hmt = _hmt || [];
|
||||
(function () {
|
||||
var hm = document.createElement("script");
|
||||
hm.src = "https://hm.baidu.com/hm.js?e2588c00e9bdc9fbd21b8da77023546c";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(hm, s);
|
||||
})();
|
||||
</script>
|
||||
</p>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
$(document).ready(function () {
|
||||
/*
|
||||
var defaults = {
|
||||
containerID: 'toTop', // fading element id
|
||||
containerHoverID: 'toTopHover', // fading element hover id
|
||||
scrollSpeed: 1200,
|
||||
easingType: 'linear'
|
||||
};
|
||||
*/
|
||||
$().UItoTop({ easingType: 'easeOutQuart' });
|
||||
});
|
||||
</script>
|
||||
<a href="#to-top" id="toTop" style="display: block;"> <span id="toTopHover" style="opacity: 1;"> </span></a>
|
||||
<script type="text/javascript" src="dfiles/3935/pub/gjxy/images/gjxyuumq10.js">
|
||||
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
|
||||
|
||||
function setShare(title, url) {
|
||||
var div = document.createElement('div');
|
||||
div.innerHTML = '<a href="' + url + '"></a>';
|
||||
jiathis_config.title = title;
|
||||
jiathis_config.url = div.firstChild.href;
|
||||
div = null;
|
||||
}
|
||||
var jiathis_config = {}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue