全国咨询热线:18720358503

一幅图分析FastAdmin中的报表目录的作用

类别:企业动态 发布时间:2021-04-12 浏览人次:

假如此篇章有帮助到你,热烈欢迎打赏主播适用FastAdmin

作用叙述

请依据照片上的数据数据库索引查询相匹配作用表明。

1.莱单名字和叙述

默认设置转化成的CRUD是沒有莱单名字和叙述显示信息的,假如必须显示信息则能够改动管理权限管理方法- 莱单标准,给相匹配莱单的加上上备注名称信息内容后就可以显示信息,适用HTML

2.TAB过虑选择项卡

在一键转化成CRUD时,假如表格中存有status字段名且为ENUM种类,则会转化成相对的TAB过虑选择项卡,假如必须转化成其他字段名的过虑选择项卡则能够在应用php think crud时应用--headingfilterfield=你的字段名名字来特定字段名

3.通用性检索

通用性检索的的內容是依据bootstrap-table配备的字段名columns决策的,3D渲染的內容及文件格式由FastAdmin全自动开展3D渲染,假如必须禁止使用或删掉某一选择项,能够在JS中配备operate:false来删掉通用性检索中的选择项。比如一般状况下大家的在JS中开展字段名的配备以下:

{field: createtime , title: __( Create Time )},

这儿默认设置是开启的通用性检索,对于通用性检索,有下列好多个常见的配备:

operate: = //用以查寻时的实际操作符,默认设置为=,为false表明禁止使用此字段名的通用性检索,适用!=、LIKE、NOT LIKE、 、 、 = =、FIND_IN_SET、IN、NOT IN、BETWEEN、NOT BETWEEN、RANGE、NOT RANGE、NULL、NOT NULL、false
searchList: //用以3D渲染目录的数据信息,适用的文件格式有JSON Array、JSON Object、$.getJSON、Function
addclass: //用以给input或select加上附加的class特性
type: //用以界定input文字框的种类,默认设置为text
data: //用以给input或select加上附加的特性

常见配备实例以下:

//時间区段检索
{field: createtime , title: __( Createtime ), operate: RANGE , addclass: datetimerange , formatter: Table.api.formatter.datetime},
//额度区段检索
{field: money , title: __( Money ), operate: RANGE },
//往下拉目录检索
{field: flag , title: __( Flag ), searchList: { hot : __( Flag hot ), index : __( Flag index ), recommend : __( mend )}, operate: FIND_IN_SET , formatter: Table.api.formatter.label},
//动态性往下拉目录检索
{field: type , title: __( Type ), searchList: $.getJSON( ajax/dynamicselect )},
//禁止使用通用性检索
{field: keywords , title: __( Keywords ), operate: false},

假如大家必须彻底自定大家的通用性检索栏,大家能够在配备bootstrap-table时界定searchFormTemplate选择项来彻底重新写过大家的通用性检索栏,实际请参照开发设计实例软件中的自定检索实例

4.专用工具栏按键

<主视图文档中随意改动或删掉相匹配的按键。请非常留意这好多个全自动转化成的按键都根据基有着的class特性来关联有关的恶性事件,比如加上按键有着btn-add这一class、架构所早已占有的class以下:

btn-add: 加上按键应用
btn-edit: 编写按键应用
btn-del: 删掉按键应用
btn-import: 导进按键应用
btn-more: 大量按键应用
btn-multi: 指实际操作应用
btn-disabled: 加上此class后则仅有在目录有选定数据信息时按键才能变为可让用

假如大家想点一下加上按键后默认设置全屏幕,则能够给加上按键再加data-area= [ 100% , 100% ] 就可以默认设置全屏幕

假如大家想自定按键并加上恶性事件,大家必须在主视图中加上相对的HTML编码,随后在相匹配的JS文档中加上按键的实行恶性事件,谨记不能在主视图中立即撰写JS或jQuery编码来关联恶性事件

5.动态性3D渲染统计分析信息内容

<主视图中加上

 a href= javascript:; >

随后在操纵器相匹配的JS中的index方式中加上下列的JS

//当报表数据信息载入进行时
table.on( ess.bs.table , function (e, data) {
 //这儿能够获得从服务端获得的JSON数据信息
 console.log(data);
 //这儿大家手动式设定底端的值
 $( #money ).text(data.extend.money);
 $( #price ).text(data.extend.price);
});

留意尽量将这一段编码加上在var table = $( #table 以后

在其中data.extend.money和data.extend.price便是大家在服务端动态性回到的数据信息,以下

$result = array( total = $total, rows = $list, extend = [ money = 1024, price = 888]);
return json($result);

根据之上配备就可以动态性显示信息服务端回到的附加数据信息

6.迅速检索

迅速检索在输入重要词时将即时从服务端检索数据信息,假如你的数据信息表数据信息很大,提议关掉此作用,关掉的方式是应用search:false,次之迅速检索默认设置总是检索主键id这一字段名,假如你必须检索其他字段名,则必须在服务端你的操纵器中界定$searchFields这一值,以下

protected $searchFields = id,name,title 

那样在迅速检索时可能检索id,name,title这三个字段名。

假如必须改动默认设置文字框的placeholder,能够在报表原始化前界定

$.fn.bootstrapTable.locales[Table.defaults.locale][ formatSearch ] = function(){return 自定placeholder文字 };

7.访问方式、显示信息掩藏列、导出来、通用性检索

访问方式能够转换卡牌主视图和报表主视图二种方式,假如不用此作用,能够设定showToggle: false

显示信息掩藏列能够迅速转换字段名列的显示信息和掩藏,假如不用此作用,能够设定showColumns: false,假如要想报表中的字段名列默认设置掩藏能够设定字段名特性visible: false就可以默认设置掩藏

导出来按键默认设置将导出来全部表的全部行,假如必须仅导出来当今分页查询的数据信息,必须设定exportDataType: basic ,假如想导出来选定的行,则能够设定为exportDataType: selected ,假如不用此作用,能够设定showExport: false

通用性检索指报表上边的检索,通用性检索的表格默认设置是掩藏的,假如必须默认设置显示信息,必须设定searchFormVisible: true,monSearch: false。假如要想操纵字段名列不参照检索则能够设定字段名列特性为operate: false就可以。

8.字段名配备

<中是沒有一切字段名配备的,一般大家的配备以下:

columns: [
 {checkbox: true},
 {field: id , title: __( Id )},
 {field: admin_id , title: __( Admin_id )},
 {field: category.name , title: __( 归类名字 ), formatter:Table.api.formatter.search},
 {field: category_id , title: __( Category_id ), visible: false},
 {field: flag , title: __( Flag ), searchList: { hot : __( Flag hot ), index : __( Flag index ), recommend : __( mend )}, operate: FIND_IN_SET , formatter: Table.api.formatter.label},
 {field: genderdata , title: __( Genderdata ), searchList: { male : __( Genderdata male ), female : __( Genderdata female )}, formatter: Table.api.formatter.normal},
 {field: title , title: __( Title )},
 {field: image , title: __( Image ), formatter: Table.api.formatter.image},
 {field: images , title: __( Images ), formatter: Table.api.formatter.images},
 {field: createtime , title: __( Createtime ), operate: RANGE , addclass: datetimerange , formatter: Table.api.formatter.datetime},
 {field: updatetime , title: __( Updatetime ), operate: RANGE , addclass: datetimerange , formatter: Table.api.formatter.datetime, visible: false},
 {field: weigh , title: __( Weigh ), operate: false, visible: false},
 {field: switch , title: __( Switch ), searchList: { 1 : __( Yes ), 0 : __( No )}, formatter: Table.api.formatter.toggle},
 {field: status , title: __( Status ), searchList: { normal : __( Normal ), hidden : __( Hidden )}, formatter: Table.api.formatter.status},
]

字段名配备的主要参数有

checkbox:true, //是不是为先列勾选框
field: name //字段名名字,假如开启了关系查寻这儿可使用别称,例如:category.name,一定要注意服务端回到的字段名逐一相匹配,假如应用了一个不会有的字段名,将不容易3D渲染一切数据信息
title: 名字 //字段名题目,显示信息于头顶部的题目
operate: = //通用性检索的实际操作符,详细上边通用性检索详细介绍
visible:false //字段名是不是由此可见,为false时将默认设置不能见
formatter:Table.api.formatter.search //文件格式化显示信息的內容,FastAdmin內部界定了很多通用性的文件格式化方式
events: //界定原素响应的恶性事件
searchList: //界定通用性检索往下拉目录的数据信息
addclass: //通用性检索文字框或往下拉目录的附加class
type: //通用性检索文字框的种类
data: //通用性检索文字框或往下拉目录的附加特性
buttons: //配备的按键组

FastAdmin封裝了很多常见的formatter方式,大家能够迅速的启用就可以。

 `Table.api.formatter.icon` 迅速将字段名3D渲染成一个按键,仅适用Fontawesome按键
 `Table.api.formatter.image` 迅速将字段名3D渲染成照片展现的方式
 `Table.api.formatter.images` 迅速将字段名3D渲染成图组片展现的方式,字段名数据信息要以`,`开展隔开
 `Table.api.formatter.status` 迅速将字段名3D渲染成情况,默认设置`normal/hidden/deleted/locked`这四个情况
 `Table.api.formatter.url` 迅速将字段名3D渲染成URL框
 `Table.api.formatter.search` 迅速将字段名3D渲染成可检索的连接,点一下后将实行检索
 `Table.api.formatter.addtabs` 迅速将字段名3D渲染成可加上到选择项卡的连接,点一下后将把连接加上到选择项卡
 `Table.api.formatter.flag` 迅速将字段名3D渲染成标示,仅适用`index/mend/new`这四种标示
 `Table.api.formatter.label` 迅速将字段名3D渲染Label标识
 `Table.api.formatter.datetime` 迅速時间戳数据信息3D渲染成时间時间数据信息
 `Table.api.formatter.operate` 实际操作栏固定不动按键
 `Table.api.formatter.buttons` 迅速转化成好几个按键
 `Table.api.formatter.toggle` 迅速转化成转换按键

9.勾选框

假如大家必须不用勾选框则清除{checkbox: true}就可以

10.归类名字(关系检索出归类表的名字)

这儿显示信息的归类名字是依据归类表关系查寻出去的結果,假如大家开启关系查寻,大家务必在当今操纵器中设定特性protected $relationSearch = true;,同时大家的index方式也必须重新写过,请参照正下方的详细编码中PHP一部分。假如大家开启了关系查寻,当2个表格中的字段名有矛盾时,大家务必在字段名里加上别称。请参照正下方的详细编码中JS一部分。

11.标示

大家可使用formatter:Table.api.formatter.flag来3D渲染标示字段名,默认设置会将数据信息库的值3D渲染下列几类色调

{index: success , hot: warning , recommend: danger , new : info }

假如大家必须拓展附加的色调,则可使用

custom:{aaa: info , bbb: danger }

那样当数值aaa时候显示信息为深蓝色,bbb时显示信息为鲜红色

12.照片和照片组

大家可使用

formatter:Table.api.formatter.image
formatter:Table.api.formatter.images

之上二种方法来3D渲染照片或照片组

一定要注意假如是照片组的状况下,数据信息值应当是以,开展隔开的

13.电源开关

大家可使用formatter:Table.api.formatter.toggle来转化成电源开关部件

默认设置状况下是依据数据信息库值1和0来表明开和关

大家能够根据附加的配备和界定开和关,例如

yes: open , no: close 

则这时会依据数据信息库值是open還是close来展现电源开关,

电源开关在点一下的情况下默认设置是只容许改动数据信息库的status字段名的,假如大家电源开关并不是status字段名,大家必须在服务端相匹配的操纵器中界定protected $multiFields= id,name,swith ,好几个字段名以,开展隔开

14.情况3D渲染

大家可使用formatter:Table.api.formatter.status来3D渲染情况

默认设置依据下列值开展情况的色调3D渲染

{normal: success , hidden: gray , deleted: danger , locked: info }

假如大家情况有附加的值,大家可使用custom来开展拓展显示信息的色调,以下

custom: {rejected: danger , agreed: success }

情况3D渲染显示信息的文字是依据searchList配备的值开展3D渲染的

15.自定按键

按键组的作用是依据第八项中的Table.api.formatter.buttons开展转化成的,编码以下

 field: buttons ,
 width: 120px ,
 title: __( 按键组 ),
 table: table,
 events: Table.api.events.operate,
 buttons: [
 name: detail ,
 text: __( 弹出来对话框开启 ),
 title: __( 弹出来对话框开启 ),
 classname: btn btn-xs btn-primary btn-dialog ,
 icon: fa fa-list ,
 url: example/bootstraptable/detail ,
 callback: function (data) {
 Layer.alert( 接受到回传数据信息: + JSON.stringify(data), {title: 回传数据信息 });
 visible: function (row) {
 //回到true时按键显示信息,回到false掩藏
 return true;
 name: ajax ,
 text: __( 推送Ajax ),
 title: __( 推送Ajax ),
 classname: btn btn-xs ess btn-magic btn-ajax ,
 icon: fa fa-magic ,
 url: example/bootstraptable/detail ,
 confirm: 确定推送 ,
 success: function (data, ret) {
 Layer.alert(ret.msg + ,回到数据信息: + JSON.stringify(data));
 //假如必须阻拦取得成功提醒,则务必应用return false;
 //return false;
 error: function (data, ret) {
 console.log(data, ret);
 Layer.alert(ret.msg);
 return false;
 name: addtabs ,
 text: __( 新选择项卡中开启 ),
 title: __( 新选择项卡中开启 ),
 classname: btn btn-xs btn-warning btn-addtabs ,
 icon: fa fa-folder-o ,
 url: example/bootstraptable/detail 
 formatter: Table.api.formatter.buttons
}

按键配备适用的主要参数有:

name 按键唯一标志,在其中add/edit/del/dragsort早已被占有,假如应用将遮盖相对的按键配备。假如必须按键按键显示信息,大家能够在HTML主视图文档的table加上data-buttons-标志来依据管理权限操纵显示信息

text 按键的文字內容,假如不用显示信息文字可忽视,适用function和string种类

title 电脑鼠标移上来的题目或弹出窗口/选择项显示信息的题目,适用function和string种类

icon 按键的标志,请应用font-awesome标志库,例如 fa fa-home

classname 按键的class, 在其中classname中的btn-dialog、btn-ajax、btn-addtabs、btn-click,FastAdmin早已为这好多个固定不动的Class申请注册了恶性事件,因此能够立即应用,假如要想完成其他作用,必须自身手动式撰写编码关联恶性事件才可让用。

url 按键的连接/Ajax恶性事件恳求的URL/弹出窗口连接/选择项卡连接,立即function和string种类,此连接会全自动在连接后加上ids/{ids},{ids}为当行主键ID,假如必须传送其他字段名值,请在URL中应用{字段名名}占位性病变就可以

refresh 全自动更新,只对于btn-ajax恶性事件

confirm 确定框提醒文本,配备之后在确定实际操作再实行相匹配的恶性事件,只对于btn-ajax/btn-dialog/btn-addtabs恶性事件

error 恶性事件不成功的回调函数,只对于btn-ajax恶性事件

callback 弹出窗口回传的回调函数,只对于btn-dialog恶性事件,必须在相匹配开启的网页页面中应用Fast.api.close(data);开展回传数据信息

hidden 是不是掩藏按键,按键默认设置显示信息,适用function和bool种类

visible 是不是显示信息按键,按键默认设置显示信息,适用function和bool种类

disable 是不是禁止使用按键,按键默认设置禁不住用,适用function和bool种类

click 当classname包括btn-click时的点一下回调函数恶性事件

extend 按键拓展信息内容,能够随意订制按键的主要参数,例如大家想在新页面中开启连接,则配备extend: target= _blank 就可以

dropdown 往下拉目录排序的名字,当好几个按键必须显示信息为一级时,该数值显示信息的文本

16.实际操作

实际操作地区默认设置是排列、编写、删掉这三个按键,此作用也是依据第八项中Table.api.formatter.operate来完成的。排列按键只在表格中存有weigh字段名时才会出現,编写按键和删掉按键会依据管理方法员所有着的管理权限开展按需显示信息。假如大家必须重新写过编写(排列、删掉)按键的有关特性,则可使用buttons而定义编写(排列、删掉)的有关特性。次之Table.api.formatter.operate也适用buttons特性来配备好几个其他按键,如实例图上的

假如期待禁止使用编写、删掉按键,能够根据改动主视图中报表的特性置为空就可以。

 table id= table >

17.分页查询信息内容

分页查询信息内容显示信息的文本能够根据在报表原始化前界定

$.fn.bootstrapTable.locales[Table.defaults.locale][ formatSearch ] = function (pageFrom, pageTo, totalRows) {
 return 显示信息第 + pageFrom + 到第 + pageTo + 条纪录,一共 + totalRows + 条纪录 
};

分页查询尺寸或分页查询尺寸选择项能够在报表原始化时传到下列主要参数开展配备

pageSize: 10,
pageList: [10, 25, 50, All ],

18.换页信息内容

换页信息内容会依据服务端回到的数据信息行数全自动开展3D渲染,假如回到的行数不满意足分页查询标准时,该项不是会显示信息的

详细编码

PHP编码

 ?php
namespace app\admin\controller;
mon\controller\Backend;
 * 检测管理方法
 * @icon fa fa-circle-o
 * @remark 此目录是根据php think crud -t test一键转化成的对于数据信息表的查询、加上、编写、删掉、大批量改动等作用,只需在设计方案表时合乎FastAdmin有关字段名名字、备注名称规定,就可以转化成有关的表格部件
class Test extends Backend
 protected $model = null;
 protected $relationSearch = true;
 public function _initialize()
 parent::_initialize();
 $this- model = model( Test 
 * 查询
 public function index()
 if ($this- request- isAjax())
 list($where, $sort, $order, $offset, $limit) = $this- buildparams();
 $total = $this- model
 - with( category )
 - where($where)
 - order($sort, $order)
 - count();
 $list = $this- model
 - with( category )
 - where($where)
 - order($sort, $order)
 - limit($offset, $limit)
 - select();
 $result = array( total = $total, rows = $list, extend = [ money = 1024, price = 888]);
 return json($result);
 return $this- view- fetch();
}

JS编码:

define([ jquery , bootstrap , backend , table , form ], function ($, undefined, Backend, Table, Form) {
 var Controller = {
 index: function () {
 // 原始化报表主要参数配备
 Table.api.init({
 extend: {
 index_url: test/index ,
 add_url: test/add ,
 edit_url: test/edit ,
 del_url: test/del ,
 multi_url: test/multi ,
 table: test ,
 var table = $( #table 
 //当报表数据信息载入进行时
 table.on( ess.bs.table , function (e, data) {
 //这儿能够获得从服务端获得的JSON数据信息
 console.log(data);
 //这儿大家手动式设定底端的值
 $( #money ).text(data.extend.money);
 $( #price ).text(data.extend.price);
 // 原始化报表
 table.bootstrapTable({
 url: $.fn.bootstrapTable.defaults.extend.index_url,
 pk: id ,
 sortName: weigh ,
 columns: [
 {checkbox: true},
 {field: id , title: __( Id )},
 {field: admin_id , title: __( Admin_id )},
 {field: category.name , title: __( 归类名字 ), formatter:Table.api.formatter.search},
 {field: category_id , title: __( Category_id ), visible: false},
 {field: flag , title: __( Flag ), searchList: { hot : __( Flag hot ), index : __( Flag index ), recommend : __( mend )}, operate: FIND_IN_SET , formatter: Table.api.formatter.label},
 {field: genderdata , title: __( Genderdata ), searchList: { male : __( Genderdata male ), female : __( Genderdata female )}, formatter: Table.api.formatter.normal},
 {field: title , title: __( Title )},
 {field: image , title: __( Image ), formatter: Table.api.formatter.image},
 {field: images , title: __( Images ), formatter: Table.api.formatter.images},
 {field: createtime , title: __( Createtime ), operate: RANGE , addclass: datetimerange , formatter: Table.api.formatter.datetime},
 {field: updatetime , title: __( Updatetime ), operate: RANGE , addclass: datetimerange , formatter: Table.api.formatter.datetime, visible: false},
 {field: weigh , title: __( Weigh ), operate: false, visible: false},
 {field: switch , title: __( Switch ), searchList: { 1 : __( Yes ), 0 : __( No )}, formatter: Table.api.formatter.toggle},
 {field: status , title: __( Status ), searchList: { normal : __( Normal ), hidden : __( Hidden )}, formatter: Table.api.formatter.status},
 field: buttons ,
 width: 120px ,
 title: __( 按键组 ),
 table: table,
 events: Table.api.events.operate,
 buttons: [
 name: detail ,
 text: __( 弹出来对话框开启 ),
 title: __( 弹出来对话框开启 ),
 classname: btn btn-xs btn-primary btn-dialog ,
 icon: fa fa-list ,
 url: example/bootstraptable/detail ,
 callback: function (data) {
 Layer.alert( 接受到回传数据信息: + JSON.stringify(data), {title: 回传数据信息 });
 visible: function (row) {
 //回到true时按键显示信息,回到false掩藏
 return true;
 name: ajax ,
 text: __( 推送Ajax ),
 title: __( 推送Ajax ),
 classname: btn btn-xs ess btn-magic btn-ajax ,
 icon: fa fa-magic ,
 url: example/bootstraptable/detail ,
 confirm: 确定推送 ,
 success: function (data, ret) {
 Layer.alert(ret.msg + ,回到数据信息: + JSON.stringify(data));
 //假如必须阻拦取得成功提醒,则务必应用return false;
 //return false;
 error: function (data, ret) {
 console.log(data, ret);
 Layer.alert(ret.msg);
 return false;
 name: addtabs ,
 text: __( 新选择项卡中开启 ),
 title: __( 新选择项卡中开启 ),
 classname: btn btn-xs btn-warning btn-addtabs ,
 icon: fa fa-folder-o ,
 url: example/bootstraptable/detail 
 formatter: Table.api.formatter.buttons
 field: operate , title: __( Operate ), table: table, events: Table.api.events.operate,
 buttons: [
 name: detail ,
 title: __( 
 classname: btn btn-xs btn-primary btn-dialog ,
 icon: fa fa-list ,
 url: test/detail ,
 callback: function (data) {
 Layer.alert( 接受到回传数据信息: + JSON.stringify(data), {title: 回传数据信息 });
 formatter: Table.api.formatter.operate
 // 关联TAB恶性事件
 $( .panel-heading a[data-toggle= tab ] ).on( shown.bs.tab , function (e) {
 var field = $(this).closest( ul ).data( field 
 var value = $(this).data( value 
 var options = table.bootstrapTable( getOptions 
 options.pageNumber = 1;
 options.queryParams = function (params) {
 var filter = {};
 if (value !== ) {
 filter[field] = value;
 params.filter = JSON.stringify(filter);
 return params;
 table.bootstrapTable( refresh , {});
 return false;
 // 为报表关联恶性事件
 Table.api.bindevent(table);
 add: function () {
 Controller.api.bindevent();
 edit: function () {
 Controller.api.bindevent();
 api: {
 bindevent: function () {
 Form.api.bindevent($( form[role=form] ));
 return Controller;
});

HTML编码:

 div > 

(資源库 )

Tag标识:ThinkPHP

推荐阅读

一幅图分析FastAdmin中的报表目录的作用

假如此篇章有帮助到你,热烈欢迎打赏主播适用FastAdmin作用叙述请依据照片上的数据数据库索引查询相匹配作用表明。1.莱单名字和叙述默认设置转化成的CRUD是沒有莱单名字和叙述显示...

2021-04-12
java小程序-百度搜索索引擎下拉词搜索更利于网站

在百度搜索检索框键入一个字或词,检索模块从每日数以亿计的浏览量检索词中,剖析提炼出出检索量极大的百度词条,转化成检索模块强烈推荐词,百度搜索检索模块会智能化輸出与...

2021-04-12
浦东企业网站建设公司-重庆营销网站

推动业务流程转换,创建知名品牌危害力营销推广型企业网站建设是创建在公司网站的基本上,不管在互连在网上营销推广实际商品,還是招商合作加盟代理,公司都可以以根据基本建...

2021-04-12
网站的浏览来源于单一如何办

网站的拜会由来满是广告宣传实行买回来的词,假如哪天不投放广告实行了,就沒有拜会量,我不会想太借助检索模块广告宣传实行。 网站拜会由来分析 检索模块广告宣传实行,您的公...

2021-04-12
企业网站建设的关键点你都了解什么

万里之提毁于蚁巢,一切事儿也不能忽略关键点。企业网站建设都不列外,通常许多关键点层面的难题将会会造成网站中后期的实际效果成功与失败。因而网站建设的全过程中,尽量顾...

2021-04-12
H5网站好不太好-上海万户助力国鸿氢能网络改版

上海市长征泵阀团体位于于上海市国际性轿车城安亭镇黄渡工业生产产业园区的上海市长征泵阀(团体)比较有限企业是一家历史时间久远以... 安徽省省委万家互联网为安徽省省委办公室...

2021-04-12
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信