您填写的表单已经提交成功。
9 |├── .gitignore
├── LICENSE
├── README.md
├── api
├── .editorconfig
├── .gitignore
├── .htaccess
├── application
│ ├── .htaccess
│ ├── cache
│ │ ├── .htaccess
│ │ └── index.html
│ ├── config
│ │ ├── autoload.php
│ │ ├── config.php
│ │ ├── constants.php
│ │ ├── database.php
│ │ ├── doctypes.php
│ │ ├── foreign_chars.php
│ │ ├── hooks.php
│ │ ├── index.html
│ │ ├── memcached.php
│ │ ├── migration.php
│ │ ├── mimes.php
│ │ ├── profiler.php
│ │ ├── routes.php
│ │ ├── smileys.php
│ │ └── user_agents.php
│ ├── controllers
│ │ ├── Admin.php
│ │ ├── Naire.php
│ │ ├── User.php
│ │ └── index.html
│ ├── core
│ │ └── index.html
│ ├── helpers
│ │ ├── index.html
│ │ └── jwt_helper.php
│ ├── hooks
│ │ └── index.html
│ ├── index.html
│ ├── language
│ │ ├── english
│ │ │ └── index.html
│ │ └── index.html
│ ├── libraries
│ │ ├── JWT.php
│ │ ├── PHPExcel.php
│ │ ├── PHPExcel
│ │ │ ├── Autoloader.php
│ │ │ ├── CachedObjectStorage
│ │ │ │ ├── APC.php
│ │ │ │ ├── CacheBase.php
│ │ │ │ ├── DiscISAM.php
│ │ │ │ ├── ICache.php
│ │ │ │ ├── Igbinary.php
│ │ │ │ ├── Memcache.php
│ │ │ │ ├── Memory.php
│ │ │ │ ├── MemoryGZip.php
│ │ │ │ ├── MemorySerialized.php
│ │ │ │ ├── PHPTemp.php
│ │ │ │ ├── SQLite.php
│ │ │ │ ├── SQLite3.php
│ │ │ │ └── Wincache.php
│ │ │ ├── CachedObjectStorageFactory.php
│ │ │ ├── CalcEngine
│ │ │ │ ├── CyclicReferenceStack.php
│ │ │ │ └── Logger.php
│ │ │ ├── Calculation.php
│ │ │ ├── Calculation
│ │ │ │ ├── Database.php
│ │ │ │ ├── DateTime.php
│ │ │ │ ├── Engineering.php
│ │ │ │ ├── Exception.php
│ │ │ │ ├── ExceptionHandler.php
│ │ │ │ ├── Financial.php
│ │ │ │ ├── FormulaParser.php
│ │ │ │ ├── FormulaToken.php
│ │ │ │ ├── Function.php
│ │ │ │ ├── Functions.php
│ │ │ │ ├── Logical.php
│ │ │ │ ├── LookupRef.php
│ │ │ │ ├── MathTrig.php
│ │ │ │ ├── Statistical.php
│ │ │ │ ├── TextData.php
│ │ │ │ ├── Token
│ │ │ │ │ └── Stack.php
│ │ │ │ └── functionlist.txt
│ │ │ ├── Cell.php
│ │ │ ├── Cell
│ │ │ │ ├── AdvancedValueBinder.php
│ │ │ │ ├── DataType.php
│ │ │ │ ├── DataValidation.php
│ │ │ │ ├── DefaultValueBinder.php
│ │ │ │ ├── Hyperlink.php
│ │ │ │ └── IValueBinder.php
│ │ │ ├── Chart.php
│ │ │ ├── Chart
│ │ │ │ ├── Axis.php
│ │ │ │ ├── DataSeries.php
│ │ │ │ ├── DataSeriesValues.php
│ │ │ │ ├── Exception.php
│ │ │ │ ├── GridLines.php
│ │ │ │ ├── Layout.php
│ │ │ │ ├── Legend.php
│ │ │ │ ├── PlotArea.php
│ │ │ │ ├── Properties.php
│ │ │ │ ├── Renderer
│ │ │ │ │ ├── PHP Charting Libraries.txt
│ │ │ │ │ └── jpgraph.php
│ │ │ │ └── Title.php
│ │ │ ├── Comment.php
│ │ │ ├── DocumentProperties.php
│ │ │ ├── DocumentSecurity.php
│ │ │ ├── Exception.php
│ │ │ ├── HashTable.php
│ │ │ ├── Helper
│ │ │ │ └── HTML.php
│ │ │ ├── IComparable.php
│ │ │ ├── IOFactory.php
│ │ │ ├── NamedRange.php
│ │ │ ├── Reader
│ │ │ │ ├── Abstract.php
│ │ │ │ ├── CSV.php
│ │ │ │ ├── DefaultReadFilter.php
│ │ │ │ ├── Excel2003XML.php
│ │ │ │ ├── Excel2007.php
│ │ │ │ ├── Excel2007
│ │ │ │ │ ├── Chart.php
│ │ │ │ │ └── Theme.php
│ │ │ │ ├── Excel5.php
│ │ │ │ ├── Excel5
│ │ │ │ │ ├── Color.php
│ │ │ │ │ ├── Color
│ │ │ │ │ │ ├── BIFF5.php
│ │ │ │ │ │ ├── BIFF8.php
│ │ │ │ │ │ └── BuiltIn.php
│ │ │ │ │ ├── ErrorCode.php
│ │ │ │ │ ├── Escher.php
│ │ │ │ │ ├── MD5.php
│ │ │ │ │ ├── RC4.php
│ │ │ │ │ └── Style
│ │ │ │ │ │ ├── Border.php
│ │ │ │ │ │ └── FillPattern.php
│ │ │ │ ├── Exception.php
│ │ │ │ ├── Gnumeric.php
│ │ │ │ ├── HTML.php
│ │ │ │ ├── IReadFilter.php
│ │ │ │ ├── IReader.php
│ │ │ │ ├── OOCalc.php
│ │ │ │ └── SYLK.php
│ │ │ ├── ReferenceHelper.php
│ │ │ ├── RichText.php
│ │ │ ├── RichText
│ │ │ │ ├── ITextElement.php
│ │ │ │ ├── Run.php
│ │ │ │ └── TextElement.php
│ │ │ ├── Settings.php
│ │ │ ├── Shared
│ │ │ │ ├── CodePage.php
│ │ │ │ ├── Date.php
│ │ │ │ ├── Drawing.php
│ │ │ │ ├── Escher.php
│ │ │ │ ├── Escher
│ │ │ │ │ ├── DgContainer.php
│ │ │ │ │ ├── DgContainer
│ │ │ │ │ │ ├── SpgrContainer.php
│ │ │ │ │ │ └── SpgrContainer
│ │ │ │ │ │ │ └── SpContainer.php
│ │ │ │ │ ├── DggContainer.php
│ │ │ │ │ └── DggContainer
│ │ │ │ │ │ ├── BstoreContainer.php
│ │ │ │ │ │ └── BstoreContainer
│ │ │ │ │ │ ├── BSE.php
│ │ │ │ │ │ └── BSE
│ │ │ │ │ │ └── Blip.php
│ │ │ │ ├── Excel5.php
│ │ │ │ ├── File.php
│ │ │ │ ├── Font.php
│ │ │ │ ├── JAMA
│ │ │ │ │ ├── CHANGELOG.TXT
│ │ │ │ │ ├── CholeskyDecomposition.php
│ │ │ │ │ ├── EigenvalueDecomposition.php
│ │ │ │ │ ├── LUDecomposition.php
│ │ │ │ │ ├── Matrix.php
│ │ │ │ │ ├── QRDecomposition.php
│ │ │ │ │ ├── SingularValueDecomposition.php
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── Error.php
│ │ │ │ │ │ └── Maths.php
│ │ │ │ ├── OLE.php
│ │ │ │ ├── OLE
│ │ │ │ │ ├── ChainedBlockStream.php
│ │ │ │ │ ├── PPS.php
│ │ │ │ │ └── PPS
│ │ │ │ │ │ ├── File.php
│ │ │ │ │ │ └── Root.php
│ │ │ │ ├── OLERead.php
│ │ │ │ ├── PCLZip
│ │ │ │ │ ├── gnu-lgpl.txt
│ │ │ │ │ ├── pclzip.lib.php
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── PasswordHasher.php
│ │ │ │ ├── String.php
│ │ │ │ ├── TimeZone.php
│ │ │ │ ├── XMLWriter.php
│ │ │ │ ├── ZipArchive.php
│ │ │ │ ├── ZipStreamWrapper.php
│ │ │ │ └── trend
│ │ │ │ │ ├── bestFitClass.php
│ │ │ │ │ ├── exponentialBestFitClass.php
│ │ │ │ │ ├── linearBestFitClass.php
│ │ │ │ │ ├── logarithmicBestFitClass.php
│ │ │ │ │ ├── polynomialBestFitClass.php
│ │ │ │ │ ├── powerBestFitClass.php
│ │ │ │ │ └── trendClass.php
│ │ │ ├── Style.php
│ │ │ ├── Style
│ │ │ │ ├── Alignment.php
│ │ │ │ ├── Border.php
│ │ │ │ ├── Borders.php
│ │ │ │ ├── Color.php
│ │ │ │ ├── Conditional.php
│ │ │ │ ├── Fill.php
│ │ │ │ ├── Font.php
│ │ │ │ ├── NumberFormat.php
│ │ │ │ ├── Protection.php
│ │ │ │ └── Supervisor.php
│ │ │ ├── Worksheet.php
│ │ │ ├── Worksheet
│ │ │ │ ├── AutoFilter.php
│ │ │ │ ├── AutoFilter
│ │ │ │ │ ├── Column.php
│ │ │ │ │ └── Column
│ │ │ │ │ │ └── Rule.php
│ │ │ │ ├── BaseDrawing.php
│ │ │ │ ├── CellIterator.php
│ │ │ │ ├── Column.php
│ │ │ │ ├── ColumnCellIterator.php
│ │ │ │ ├── ColumnDimension.php
│ │ │ │ ├── ColumnIterator.php
│ │ │ │ ├── Dimension.php
│ │ │ │ ├── Drawing.php
│ │ │ │ ├── Drawing
│ │ │ │ │ └── Shadow.php
│ │ │ │ ├── HeaderFooter.php
│ │ │ │ ├── HeaderFooterDrawing.php
│ │ │ │ ├── MemoryDrawing.php
│ │ │ │ ├── PageMargins.php
│ │ │ │ ├── PageSetup.php
│ │ │ │ ├── Protection.php
│ │ │ │ ├── Row.php
│ │ │ │ ├── RowCellIterator.php
│ │ │ │ ├── RowDimension.php
│ │ │ │ ├── RowIterator.php
│ │ │ │ └── SheetView.php
│ │ │ ├── WorksheetIterator.php
│ │ │ ├── Writer
│ │ │ │ ├── Abstract.php
│ │ │ │ ├── CSV.php
│ │ │ │ ├── Excel2007.php
│ │ │ │ ├── Excel2007
│ │ │ │ │ ├── Chart.php
│ │ │ │ │ ├── Comments.php
│ │ │ │ │ ├── ContentTypes.php
│ │ │ │ │ ├── DocProps.php
│ │ │ │ │ ├── Drawing.php
│ │ │ │ │ ├── Rels.php
│ │ │ │ │ ├── RelsRibbon.php
│ │ │ │ │ ├── RelsVBA.php
│ │ │ │ │ ├── StringTable.php
│ │ │ │ │ ├── Style.php
│ │ │ │ │ ├── Theme.php
│ │ │ │ │ ├── Workbook.php
│ │ │ │ │ ├── Worksheet.php
│ │ │ │ │ └── WriterPart.php
│ │ │ │ ├── Excel5.php
│ │ │ │ ├── Excel5
│ │ │ │ │ ├── BIFFwriter.php
│ │ │ │ │ ├── Escher.php
│ │ │ │ │ ├── Font.php
│ │ │ │ │ ├── Parser.php
│ │ │ │ │ ├── Workbook.php
│ │ │ │ │ ├── Worksheet.php
│ │ │ │ │ └── Xf.php
│ │ │ │ ├── Exception.php
│ │ │ │ ├── HTML.php
│ │ │ │ ├── IWriter.php
│ │ │ │ ├── OpenDocument.php
│ │ │ │ ├── OpenDocument
│ │ │ │ │ ├── Cell
│ │ │ │ │ │ └── Comment.php
│ │ │ │ │ ├── Content.php
│ │ │ │ │ ├── Meta.php
│ │ │ │ │ ├── MetaInf.php
│ │ │ │ │ ├── Mimetype.php
│ │ │ │ │ ├── Settings.php
│ │ │ │ │ ├── Styles.php
│ │ │ │ │ ├── Thumbnails.php
│ │ │ │ │ └── WriterPart.php
│ │ │ │ ├── PDF.php
│ │ │ │ └── PDF
│ │ │ │ │ ├── Core.php
│ │ │ │ │ ├── DomPDF.php
│ │ │ │ │ ├── mPDF.php
│ │ │ │ │ └── tcPDF.php
│ │ │ └── locale
│ │ │ │ ├── bg
│ │ │ │ └── config
│ │ │ │ ├── cs
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── da
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── de
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── en
│ │ │ │ └── uk
│ │ │ │ │ └── config
│ │ │ │ ├── es
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── fi
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── fr
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── hu
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── it
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── nl
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── no
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── pl
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── pt
│ │ │ │ ├── br
│ │ │ │ │ ├── config
│ │ │ │ │ └── functions
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── ru
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ ├── sv
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ │ │ └── tr
│ │ │ │ ├── config
│ │ │ │ └── functions
│ │ └── index.html
│ ├── logs
│ │ └── index.html
│ ├── models
│ │ ├── Admin_model.php
│ │ ├── Naire_model.php
│ │ ├── User_model.php
│ │ └── index.html
│ ├── third_party
│ │ └── index.html
│ └── views
│ │ ├── errors
│ │ ├── cli
│ │ │ ├── error_404.php
│ │ │ ├── error_db.php
│ │ │ ├── error_exception.php
│ │ │ ├── error_general.php
│ │ │ ├── error_php.php
│ │ │ └── index.html
│ │ ├── html
│ │ │ ├── error_404.php
│ │ │ ├── error_db.php
│ │ │ ├── error_exception.php
│ │ │ ├── error_general.php
│ │ │ ├── error_php.php
│ │ │ └── index.html
│ │ └── index.html
│ │ ├── index.html
│ │ └── welcome_message.php
├── composer.json
├── contributing.md
├── database.sql
├── index.php
├── license.txt
├── readme.rst
└── system
│ ├── .htaccess
│ ├── core
│ ├── Benchmark.php
│ ├── CodeIgniter.php
│ ├── Common.php
│ ├── Config.php
│ ├── Controller.php
│ ├── Exceptions.php
│ ├── Hooks.php
│ ├── Input.php
│ ├── Lang.php
│ ├── Loader.php
│ ├── Log.php
│ ├── Model.php
│ ├── Output.php
│ ├── Router.php
│ ├── Security.php
│ ├── URI.php
│ ├── Utf8.php
│ ├── compat
│ │ ├── hash.php
│ │ ├── index.html
│ │ ├── mbstring.php
│ │ ├── password.php
│ │ └── standard.php
│ └── index.html
│ ├── database
│ ├── DB.php
│ ├── DB_cache.php
│ ├── DB_driver.php
│ ├── DB_forge.php
│ ├── DB_query_builder.php
│ ├── DB_result.php
│ ├── DB_utility.php
│ ├── drivers
│ │ ├── cubrid
│ │ │ ├── cubrid_driver.php
│ │ │ ├── cubrid_forge.php
│ │ │ ├── cubrid_result.php
│ │ │ ├── cubrid_utility.php
│ │ │ └── index.html
│ │ ├── ibase
│ │ │ ├── ibase_driver.php
│ │ │ ├── ibase_forge.php
│ │ │ ├── ibase_result.php
│ │ │ ├── ibase_utility.php
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── mssql
│ │ │ ├── index.html
│ │ │ ├── mssql_driver.php
│ │ │ ├── mssql_forge.php
│ │ │ ├── mssql_result.php
│ │ │ └── mssql_utility.php
│ │ ├── mysql
│ │ │ ├── index.html
│ │ │ ├── mysql_driver.php
│ │ │ ├── mysql_forge.php
│ │ │ ├── mysql_result.php
│ │ │ └── mysql_utility.php
│ │ ├── mysqli
│ │ │ ├── index.html
│ │ │ ├── mysqli_driver.php
│ │ │ ├── mysqli_forge.php
│ │ │ ├── mysqli_result.php
│ │ │ └── mysqli_utility.php
│ │ ├── oci8
│ │ │ ├── index.html
│ │ │ ├── oci8_driver.php
│ │ │ ├── oci8_forge.php
│ │ │ ├── oci8_result.php
│ │ │ └── oci8_utility.php
│ │ ├── odbc
│ │ │ ├── index.html
│ │ │ ├── odbc_driver.php
│ │ │ ├── odbc_forge.php
│ │ │ ├── odbc_result.php
│ │ │ └── odbc_utility.php
│ │ ├── pdo
│ │ │ ├── index.html
│ │ │ ├── pdo_driver.php
│ │ │ ├── pdo_forge.php
│ │ │ ├── pdo_result.php
│ │ │ ├── pdo_utility.php
│ │ │ └── subdrivers
│ │ │ │ ├── index.html
│ │ │ │ ├── pdo_4d_driver.php
│ │ │ │ ├── pdo_4d_forge.php
│ │ │ │ ├── pdo_cubrid_driver.php
│ │ │ │ ├── pdo_cubrid_forge.php
│ │ │ │ ├── pdo_dblib_driver.php
│ │ │ │ ├── pdo_dblib_forge.php
│ │ │ │ ├── pdo_firebird_driver.php
│ │ │ │ ├── pdo_firebird_forge.php
│ │ │ │ ├── pdo_ibm_driver.php
│ │ │ │ ├── pdo_ibm_forge.php
│ │ │ │ ├── pdo_informix_driver.php
│ │ │ │ ├── pdo_informix_forge.php
│ │ │ │ ├── pdo_mysql_driver.php
│ │ │ │ ├── pdo_mysql_forge.php
│ │ │ │ ├── pdo_oci_driver.php
│ │ │ │ ├── pdo_oci_forge.php
│ │ │ │ ├── pdo_odbc_driver.php
│ │ │ │ ├── pdo_odbc_forge.php
│ │ │ │ ├── pdo_pgsql_driver.php
│ │ │ │ ├── pdo_pgsql_forge.php
│ │ │ │ ├── pdo_sqlite_driver.php
│ │ │ │ ├── pdo_sqlite_forge.php
│ │ │ │ ├── pdo_sqlsrv_driver.php
│ │ │ │ └── pdo_sqlsrv_forge.php
│ │ ├── postgre
│ │ │ ├── index.html
│ │ │ ├── postgre_driver.php
│ │ │ ├── postgre_forge.php
│ │ │ ├── postgre_result.php
│ │ │ └── postgre_utility.php
│ │ ├── sqlite
│ │ │ ├── index.html
│ │ │ ├── sqlite_driver.php
│ │ │ ├── sqlite_forge.php
│ │ │ ├── sqlite_result.php
│ │ │ └── sqlite_utility.php
│ │ ├── sqlite3
│ │ │ ├── index.html
│ │ │ ├── sqlite3_driver.php
│ │ │ ├── sqlite3_forge.php
│ │ │ ├── sqlite3_result.php
│ │ │ └── sqlite3_utility.php
│ │ └── sqlsrv
│ │ │ ├── index.html
│ │ │ ├── sqlsrv_driver.php
│ │ │ ├── sqlsrv_forge.php
│ │ │ ├── sqlsrv_result.php
│ │ │ └── sqlsrv_utility.php
│ └── index.html
│ ├── fonts
│ ├── index.html
│ └── texb.ttf
│ ├── helpers
│ ├── array_helper.php
│ ├── captcha_helper.php
│ ├── cookie_helper.php
│ ├── date_helper.php
│ ├── directory_helper.php
│ ├── download_helper.php
│ ├── email_helper.php
│ ├── file_helper.php
│ ├── form_helper.php
│ ├── html_helper.php
│ ├── index.html
│ ├── inflector_helper.php
│ ├── language_helper.php
│ ├── number_helper.php
│ ├── path_helper.php
│ ├── security_helper.php
│ ├── smiley_helper.php
│ ├── string_helper.php
│ ├── text_helper.php
│ ├── typography_helper.php
│ ├── url_helper.php
│ └── xml_helper.php
│ ├── index.html
│ ├── language
│ ├── english
│ │ ├── calendar_lang.php
│ │ ├── date_lang.php
│ │ ├── db_lang.php
│ │ ├── email_lang.php
│ │ ├── form_validation_lang.php
│ │ ├── ftp_lang.php
│ │ ├── imglib_lang.php
│ │ ├── index.html
│ │ ├── migration_lang.php
│ │ ├── number_lang.php
│ │ ├── pagination_lang.php
│ │ ├── profiler_lang.php
│ │ ├── unit_test_lang.php
│ │ └── upload_lang.php
│ └── index.html
│ └── libraries
│ ├── Cache
│ ├── Cache.php
│ ├── drivers
│ │ ├── Cache_apc.php
│ │ ├── Cache_dummy.php
│ │ ├── Cache_file.php
│ │ ├── Cache_memcached.php
│ │ ├── Cache_redis.php
│ │ ├── Cache_wincache.php
│ │ └── index.html
│ └── index.html
│ ├── Calendar.php
│ ├── Cart.php
│ ├── Driver.php
│ ├── Email.php
│ ├── Encrypt.php
│ ├── Encryption.php
│ ├── Form_validation.php
│ ├── Ftp.php
│ ├── Image_lib.php
│ ├── Javascript.php
│ ├── Javascript
│ ├── Jquery.php
│ └── index.html
│ ├── Migration.php
│ ├── Pagination.php
│ ├── Parser.php
│ ├── Profiler.php
│ ├── Session
│ ├── Session.php
│ ├── SessionHandlerInterface.php
│ ├── Session_driver.php
│ ├── drivers
│ │ ├── Session_database_driver.php
│ │ ├── Session_files_driver.php
│ │ ├── Session_memcached_driver.php
│ │ ├── Session_redis_driver.php
│ │ └── index.html
│ └── index.html
│ ├── Table.php
│ ├── Trackback.php
│ ├── Typography.php
│ ├── Unit_test.php
│ ├── Upload.php
│ ├── User_agent.php
│ ├── Xmlrpc.php
│ ├── Xmlrpcs.php
│ ├── Zip.php
│ └── index.html
├── front-end
├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── build
│ ├── build.js
│ ├── check-versions.js
│ ├── dev-client.js
│ ├── dev-server.js
│ ├── utils.js
│ ├── vue-loader.conf.js
│ ├── webpack.base.conf.js
│ ├── webpack.dev.conf.js
│ └── webpack.prod.conf.js
├── config
│ ├── dev.env.js
│ ├── index.js
│ └── prod.env.js
├── data.json
├── index.html
├── package-lock.json
├── package.json
├── src
│ ├── App.vue
│ ├── api
│ │ ├── index.js
│ │ └── resource.js
│ ├── assets
│ │ ├── logo.png
│ │ └── 未标题-1.psd
│ ├── common
│ │ └── js
│ │ │ └── utils.js
│ ├── components
│ │ └── common
│ │ │ └── questionList
│ │ │ └── questionList.vue
│ ├── config
│ │ └── index.js
│ ├── main.js
│ ├── router
│ │ └── index.js
│ ├── store
│ │ ├── actions.js
│ │ ├── getters.js
│ │ ├── index.js
│ │ ├── mutation-types.js
│ │ └── mutations.js
│ └── views
│ │ ├── admin
│ │ └── changePwd.vue
│ │ ├── common
│ │ ├── complete
│ │ │ └── complete.vue
│ │ └── error
│ │ │ └── error.vue
│ │ ├── edit
│ │ └── edit.vue
│ │ ├── layout
│ │ └── layout.vue
│ │ ├── list
│ │ └── list.vue
│ │ ├── login
│ │ └── login.vue
│ │ ├── statis
│ │ ├── cross-analysis.vue
│ │ ├── result.vue
│ │ ├── source-data.vue
│ │ └── statis.vue
│ │ ├── user
│ │ └── user.vue
│ │ └── view
│ │ └── view.vue
└── static
│ ├── .gitkeep
│ └── favicon.ico
└── 批量导入模板.xls
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .DS_Store
3 | node_modules/
4 | dist/
5 | npm-debug.log*
6 | yarn-debug.log*
7 | yarn-error.log*
8 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 WangYingjie
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-questionnaire
2 |
3 | 注意:
4 |
5 | 本项目已暂停维护,取而代之的是 TypeScript 版本的微型问卷调查系统,[点击查看](https://github.com/52admln/ts-vue-questionnaire)。
6 |
7 |
8 | > 简易问卷系统,目前功能正在逐步完善中...
9 |
10 | > 由于本系统用于校内学生,所以在提交问卷时需要先查看用户的有效性(参与问卷调查的人员是可控的),如不需要此功能,可以自行修改代码。
11 |
12 | ## 功能
13 | 1. 创建问卷、删除问卷、预览问卷、编辑问卷截止时间
14 | 2. 问卷结果统计,样本数据查看,已填写问卷用户查看
15 | 3. 使用 Excel 批量导入用户、批量删除用户,单个添加、修改、搜索、删除用户
16 | 4. 问卷调查页面适配移动端
17 | 5. 问卷单题目交叉分析
18 |
19 | ## TODO
20 | 1. 编辑问卷(未发布状态)
21 | 2. 查看问题选项所选人员信息(姓名、班级)
22 | 3. 修改用户已填写的选项
23 |
24 | ## 前端部署说明
25 |
26 | 前端文件存放于 `/front-end/ ` 文件夹下
27 |
28 | ``` bash
29 | # 安装依赖
30 | npm install
31 |
32 | # 服务热重载地址:localhost:8080
33 | npm run dev
34 |
35 | # 线上部署编译
36 | npm run build
37 |
38 | ```
39 |
40 | ## 前台配置
41 | ### proxyTable
42 |
43 | 如果遇到访问接口出现
44 |
45 | > Error occured while trying to proxy to: localhost:8080/api/admin/test`
46 |
47 | 可以参照下面方法解决:
48 |
49 | 如将 `/api` 文件夹放在了 PHP 环境中的 `vue-questionnaire` 文件夹中,且访问地址为:`http://localhost:8888/vue-questionnaire/api` ,那么可以根据我的配置来使用了。
50 |
51 | 同时也可以根据本地PHP环境的访问地址来修改 `/config/index.js` 中 `proxyTabel` 相关配置。
52 |
53 | ### API接口请求地址
54 |
55 | 修改 `/src/config/index.js` 中的 `baseURL`
56 |
57 | ## 后台配置
58 | 数据库文件: `api/database.sql`,使用前请先导入。
59 |
60 | CI框架数据库连接配置信息请先设置。
61 |
62 | ## 打赏
63 | 如果我的付出能够帮助到你,我也乐于接受你的帮助,小小的赞赏是我们持续进步的动力。
64 |
65 | 昵称 | 金额
66 | ---|---
67 | [Little Mo](https://github.com/one-mo) | ¥50.00
68 | [mike](https://github.com/zhezhe168) | ¥1600.00
69 | [stepven8](https://github.com/stepven8) | ¥50.00
70 | 飞 | ¥50.00
71 |
72 |
73 |
--------------------------------------------------------------------------------
/api/.editorconfig:
--------------------------------------------------------------------------------
1 | # top-most EditorConfig file
2 | root = true
3 |
4 | # Unix-style newlines with a newline ending every file
5 | [*]
6 | end_of_line = lf
7 | insert_final_newline = true
8 |
9 | # Matches multiple files with brace expansion notation
10 | # Set default charset
11 | [*]
12 | charset = utf-8
13 |
14 | # Tab indentation (no size specified)
15 | indent_style = tab
16 |
--------------------------------------------------------------------------------
/api/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | application/cache/*
4 | !application/cache/index.html
5 | !application/cache/.htaccess
6 |
7 | application/logs/*
8 | !application/logs/index.html
9 | !application/logs/.htaccess
10 |
11 | composer.lock
12 |
13 | user_guide_src/build/*
14 | user_guide_src/cilexer/build/*
15 | user_guide_src/cilexer/dist/*
16 | user_guide_src/cilexer/pycilexer.egg-info/*
17 | /vendor/
18 |
19 | # IDE Files
20 | #-------------------------
21 | /nbproject/
22 | .idea/*
23 |
24 | ## Sublime Text cache files
25 | *.tmlanguage.cache
26 | *.tmPreferences.cache
27 | *.stTheme.cache
28 | *.sublime-workspace
29 | *.sublime-project
30 |
--------------------------------------------------------------------------------
/api/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 | RewriteCond %{REQUEST_FILENAME} !-f
3 | RewriteCond %{REQUEST_FILENAME} !-d
4 | RewriteRule ^(.*)$ index.php/$1 [L]
5 | # 用于修复丢失 Authorization header 头信息的问题
6 | RewriteCond %{HTTP:Authorization} ^(.*)
7 | RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
8 |
--------------------------------------------------------------------------------
/api/application/.htaccess:
--------------------------------------------------------------------------------
1 |
Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/config/doctypes.php: -------------------------------------------------------------------------------- 1 | '', 6 | 'xhtml1-strict' => '', 7 | 'xhtml1-trans' => '', 8 | 'xhtml1-frame' => '', 9 | 'xhtml-basic11' => '', 10 | 'html5' => '', 11 | 'html4-strict' => '', 12 | 'html4-trans' => '', 13 | 'html4-frame' => '', 14 | 'mathml1' => '', 15 | 'mathml2' => '', 16 | 'svg10' => '', 17 | 'svg11' => '', 18 | 'svg11-basic' => '', 19 | 'svg11-tiny' => '', 20 | 'xhtml-math-svg-xh' => '', 21 | 'xhtml-math-svg-sh' => '', 22 | 'xhtml-rdfa-1' => '', 23 | 'xhtml-rdfa-2' => '' 24 | ); 25 | -------------------------------------------------------------------------------- /api/application/config/hooks.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/config/memcached.php: -------------------------------------------------------------------------------- 1 | array( 15 | 'hostname' => '127.0.0.1', 16 | 'port' => '11211', 17 | 'weight' => '1', 18 | ), 19 | ); 20 | -------------------------------------------------------------------------------- /api/application/config/profiler.php: -------------------------------------------------------------------------------- 1 | my_controller/index 50 | | my-controller/my-method -> my_controller/my_method 51 | */ 52 | $route['default_controller'] = 'welcome'; 53 | $route['404_override'] = ''; 54 | $route['translate_uri_dashes'] = FALSE; 55 | -------------------------------------------------------------------------------- /api/application/controllers/Admin.php: -------------------------------------------------------------------------------- 1 | load->model('admin_model'); 8 | $userid = $this->admin_model->login(); 9 | 10 | if ($userid != false) { 11 | $token = jwt_helper::create($userid); 12 | $error = 0; 13 | echo json_encode(array('err' => $error, "token" => $token)); 14 | } else { 15 | $error = 1; 16 | echo json_encode(array('err' => $error, "message" => "登录失败")); 17 | } 18 | } 19 | 20 | public function changepwd() 21 | { 22 | $this->load->model('admin_model'); 23 | $header = $this->input->get_request_header('Authorization', TRUE); 24 | list($token) = sscanf($header, 'token %s'); 25 | if ($header != '' && jwt_helper::validate($token)) { 26 | $userid = jwt_helper::decode($token)->userId; 27 | $result = $this->admin_model->changePwd($userid); 28 | echo json_encode($result); 29 | } else { 30 | show_error("Permission denied", 401, "Please check your token."); 31 | } 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /api/application/controllers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/helpers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/helpers/jwt_helper.php: -------------------------------------------------------------------------------- 1 | load->library('JWT'); 14 | $token = $CI->jwt->encode(array( 15 | 'consumerKey' => self::CONSUMER_KEY, 16 | 'userId' => $userid, 17 | 'issuedAt' => date(DATE_ISO8601, strtotime("now")), 18 | 'ttl' => self::CONSUMER_TTL 19 | ), self::CONSUMER_SECRET); 20 | return $token; 21 | } 22 | 23 | // 验证 token 有效性 24 | public static function validate($token) 25 | { 26 | $CI =& get_instance(); 27 | $CI->load->library('JWT'); 28 | try { 29 | $decodeToken = $CI->jwt->decode($token, self::CONSUMER_SECRET); 30 | // token 有效期验证 31 | $ttl_time = strtotime($decodeToken->issuedAt); 32 | $now_time = strtotime(date(DATE_ISO8601, strtotime("now"))); 33 | if(($now_time - $ttl_time) > $decodeToken->ttl) { 34 | throw new Exception('Expired'); 35 | } else { 36 | return true; 37 | } 38 | } catch (Exception $e) { 39 | return false; 40 | } 41 | 42 | } 43 | 44 | // 解码 token 45 | public static function decode($token) 46 | { 47 | $CI =& get_instance(); 48 | $CI->load->library('JWT'); 49 | try { 50 | $decodeToken = $CI->jwt->decode($token, self::CONSUMER_SECRET); 51 | return $decodeToken; 52 | } catch (Exception $e) { 53 | return false; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /api/application/hooks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/language/english/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/language/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/CalcEngine/CyclicReferenceStack.php: -------------------------------------------------------------------------------- 1 | stack); 45 | } 46 | 47 | /** 48 | * Push a new entry onto the stack 49 | * 50 | * @param mixed $value 51 | */ 52 | public function push($value) 53 | { 54 | $this->stack[$value] = $value; 55 | } 56 | 57 | /** 58 | * Pop the last entry from the stack 59 | * 60 | * @return mixed 61 | */ 62 | public function pop() 63 | { 64 | return array_pop($this->stack); 65 | } 66 | 67 | /** 68 | * Test to see if a specified entry exists on the stack 69 | * 70 | * @param mixed $value The value to test 71 | */ 72 | public function onStack($value) 73 | { 74 | return isset($this->stack[$value]); 75 | } 76 | 77 | /** 78 | * Clear the stack 79 | */ 80 | public function clear() 81 | { 82 | $this->stack = array(); 83 | } 84 | 85 | /** 86 | * Return an array of all entries on the stack 87 | * 88 | * @return mixed[] 89 | */ 90 | public function showStack() 91 | { 92 | return $this->stack; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Calculation/Exception.php: -------------------------------------------------------------------------------- 1 | line = $line; 43 | $e->file = $file; 44 | throw $e; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Calculation/ExceptionHandler.php: -------------------------------------------------------------------------------- 1 | line = $line; 43 | $e->file = $file; 44 | throw $e; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Chart/Renderer/PHP Charting Libraries.txt: -------------------------------------------------------------------------------- 1 | ChartDirector 2 | http://www.advsofteng.com/cdphp.html 3 | 4 | GraPHPite 5 | http://graphpite.sourceforge.net/ 6 | 7 | JpGraph 8 | http://www.aditus.nu/jpgraph/ 9 | 10 | LibChart 11 | http://naku.dohcrew.com/libchart/pages/introduction/ 12 | 13 | pChart 14 | http://pchart.sourceforge.net/ 15 | 16 | TeeChart 17 | http://www.steema.com/products/teechart/overview.html 18 | 19 | PHPGraphLib 20 | http://www.ebrueggeman.com/phpgraphlib -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Chart/Title.php: -------------------------------------------------------------------------------- 1 | caption = $caption; 51 | $this->layout = $layout; 52 | } 53 | 54 | /** 55 | * Get caption 56 | * 57 | * @return string 58 | */ 59 | public function getCaption() 60 | { 61 | return $this->caption; 62 | } 63 | 64 | /** 65 | * Set caption 66 | * 67 | * @param string $caption 68 | * @return PHPExcel_Chart_Title 69 | */ 70 | public function setCaption($caption = null) 71 | { 72 | $this->caption = $caption; 73 | 74 | return $this; 75 | } 76 | 77 | /** 78 | * Get Layout 79 | * 80 | * @return PHPExcel_Chart_Layout 81 | */ 82 | public function getLayout() 83 | { 84 | return $this->layout; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Exception.php: -------------------------------------------------------------------------------- 1 | line = $line; 51 | $e->file = $file; 52 | throw $e; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/IComparable.php: -------------------------------------------------------------------------------- 1 | 'FF0000') 11 | */ 12 | public static function map($color, $palette, $version) 13 | { 14 | if ($color <= 0x07 || $color >= 0x40) { 15 | // special built-in color 16 | return PHPExcel_Reader_Excel5_Color_BuiltIn::lookup($color); 17 | } elseif (isset($palette) && isset($palette[$color - 8])) { 18 | // palette color, color index 0x08 maps to pallete index 0 19 | return $palette[$color - 8]; 20 | } else { 21 | // default color table 22 | if ($version == PHPExcel_Reader_Excel5::XLS_BIFF8) { 23 | return PHPExcel_Reader_Excel5_Color_BIFF8::lookup($color); 24 | } else { 25 | // BIFF5 26 | return PHPExcel_Reader_Excel5_Color_BIFF5::lookup($color); 27 | } 28 | } 29 | 30 | return $color; 31 | } 32 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Excel5/Color/BIFF5.php: -------------------------------------------------------------------------------- 1 | '000000', 7 | 0x09 => 'FFFFFF', 8 | 0x0A => 'FF0000', 9 | 0x0B => '00FF00', 10 | 0x0C => '0000FF', 11 | 0x0D => 'FFFF00', 12 | 0x0E => 'FF00FF', 13 | 0x0F => '00FFFF', 14 | 0x10 => '800000', 15 | 0x11 => '008000', 16 | 0x12 => '000080', 17 | 0x13 => '808000', 18 | 0x14 => '800080', 19 | 0x15 => '008080', 20 | 0x16 => 'C0C0C0', 21 | 0x17 => '808080', 22 | 0x18 => '8080FF', 23 | 0x19 => '802060', 24 | 0x1A => 'FFFFC0', 25 | 0x1B => 'A0E0F0', 26 | 0x1C => '600080', 27 | 0x1D => 'FF8080', 28 | 0x1E => '0080C0', 29 | 0x1F => 'C0C0FF', 30 | 0x20 => '000080', 31 | 0x21 => 'FF00FF', 32 | 0x22 => 'FFFF00', 33 | 0x23 => '00FFFF', 34 | 0x24 => '800080', 35 | 0x25 => '800000', 36 | 0x26 => '008080', 37 | 0x27 => '0000FF', 38 | 0x28 => '00CFFF', 39 | 0x29 => '69FFFF', 40 | 0x2A => 'E0FFE0', 41 | 0x2B => 'FFFF80', 42 | 0x2C => 'A6CAF0', 43 | 0x2D => 'DD9CB3', 44 | 0x2E => 'B38FEE', 45 | 0x2F => 'E3E3E3', 46 | 0x30 => '2A6FF9', 47 | 0x31 => '3FB8CD', 48 | 0x32 => '488436', 49 | 0x33 => '958C41', 50 | 0x34 => '8E5E42', 51 | 0x35 => 'A0627A', 52 | 0x36 => '624FAC', 53 | 0x37 => '969696', 54 | 0x38 => '1D2FBE', 55 | 0x39 => '286676', 56 | 0x3A => '004500', 57 | 0x3B => '453E01', 58 | 0x3C => '6A2813', 59 | 0x3D => '85396A', 60 | 0x3E => '4A3285', 61 | 0x3F => '424242', 62 | ); 63 | 64 | /** 65 | * Map color array from BIFF5 built-in color index 66 | * 67 | * @param int $color 68 | * @return array 69 | */ 70 | public static function lookup($color) 71 | { 72 | if (isset(self::$map[$color])) { 73 | return array('rgb' => self::$map[$color]); 74 | } 75 | return array('rgb' => '000000'); 76 | } 77 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Excel5/Color/BIFF8.php: -------------------------------------------------------------------------------- 1 | '000000', 7 | 0x09 => 'FFFFFF', 8 | 0x0A => 'FF0000', 9 | 0x0B => '00FF00', 10 | 0x0C => '0000FF', 11 | 0x0D => 'FFFF00', 12 | 0x0E => 'FF00FF', 13 | 0x0F => '00FFFF', 14 | 0x10 => '800000', 15 | 0x11 => '008000', 16 | 0x12 => '000080', 17 | 0x13 => '808000', 18 | 0x14 => '800080', 19 | 0x15 => '008080', 20 | 0x16 => 'C0C0C0', 21 | 0x17 => '808080', 22 | 0x18 => '9999FF', 23 | 0x19 => '993366', 24 | 0x1A => 'FFFFCC', 25 | 0x1B => 'CCFFFF', 26 | 0x1C => '660066', 27 | 0x1D => 'FF8080', 28 | 0x1E => '0066CC', 29 | 0x1F => 'CCCCFF', 30 | 0x20 => '000080', 31 | 0x21 => 'FF00FF', 32 | 0x22 => 'FFFF00', 33 | 0x23 => '00FFFF', 34 | 0x24 => '800080', 35 | 0x25 => '800000', 36 | 0x26 => '008080', 37 | 0x27 => '0000FF', 38 | 0x28 => '00CCFF', 39 | 0x29 => 'CCFFFF', 40 | 0x2A => 'CCFFCC', 41 | 0x2B => 'FFFF99', 42 | 0x2C => '99CCFF', 43 | 0x2D => 'FF99CC', 44 | 0x2E => 'CC99FF', 45 | 0x2F => 'FFCC99', 46 | 0x30 => '3366FF', 47 | 0x31 => '33CCCC', 48 | 0x32 => '99CC00', 49 | 0x33 => 'FFCC00', 50 | 0x34 => 'FF9900', 51 | 0x35 => 'FF6600', 52 | 0x36 => '666699', 53 | 0x37 => '969696', 54 | 0x38 => '003366', 55 | 0x39 => '339966', 56 | 0x3A => '003300', 57 | 0x3B => '333300', 58 | 0x3C => '993300', 59 | 0x3D => '993366', 60 | 0x3E => '333399', 61 | 0x3F => '333333', 62 | ); 63 | 64 | /** 65 | * Map color array from BIFF8 built-in color index 66 | * 67 | * @param int $color 68 | * @return array 69 | */ 70 | public static function lookup($color) 71 | { 72 | if (isset(self::$map[$color])) { 73 | return array('rgb' => self::$map[$color]); 74 | } 75 | return array('rgb' => '000000'); 76 | } 77 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Excel5/Color/BuiltIn.php: -------------------------------------------------------------------------------- 1 | '000000', 7 | 0x01 => 'FFFFFF', 8 | 0x02 => 'FF0000', 9 | 0x03 => '00FF00', 10 | 0x04 => '0000FF', 11 | 0x05 => 'FFFF00', 12 | 0x06 => 'FF00FF', 13 | 0x07 => '00FFFF', 14 | 0x40 => '000000', // system window text color 15 | 0x41 => 'FFFFFF', // system window background color 16 | ); 17 | 18 | /** 19 | * Map built-in color to RGB value 20 | * 21 | * @param int $color Indexed color 22 | * @return array 23 | */ 24 | public static function lookup($color) 25 | { 26 | if (isset(self::$map[$color])) { 27 | return array('rgb' => self::$map[$color]); 28 | } 29 | return array('rgb' => '000000'); 30 | } 31 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Excel5/ErrorCode.php: -------------------------------------------------------------------------------- 1 | '#NULL!', 7 | 0x07 => '#DIV/0!', 8 | 0x0F => '#VALUE!', 9 | 0x17 => '#REF!', 10 | 0x1D => '#NAME?', 11 | 0x24 => '#NUM!', 12 | 0x2A => '#N/A', 13 | ); 14 | 15 | /** 16 | * Map error code, e.g. '#N/A' 17 | * 18 | * @param int $code 19 | * @return string 20 | */ 21 | public static function lookup($code) 22 | { 23 | if (isset(self::$map[$code])) { 24 | return self::$map[$code]; 25 | } 26 | return false; 27 | } 28 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Excel5/Style/Border.php: -------------------------------------------------------------------------------- 1 | PHPExcel_Style_Border::BORDER_NONE, 7 | 0x01 => PHPExcel_Style_Border::BORDER_THIN, 8 | 0x02 => PHPExcel_Style_Border::BORDER_MEDIUM, 9 | 0x03 => PHPExcel_Style_Border::BORDER_DASHED, 10 | 0x04 => PHPExcel_Style_Border::BORDER_DOTTED, 11 | 0x05 => PHPExcel_Style_Border::BORDER_THICK, 12 | 0x06 => PHPExcel_Style_Border::BORDER_DOUBLE, 13 | 0x07 => PHPExcel_Style_Border::BORDER_HAIR, 14 | 0x08 => PHPExcel_Style_Border::BORDER_MEDIUMDASHED, 15 | 0x09 => PHPExcel_Style_Border::BORDER_DASHDOT, 16 | 0x0A => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT, 17 | 0x0B => PHPExcel_Style_Border::BORDER_DASHDOTDOT, 18 | 0x0C => PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT, 19 | 0x0D => PHPExcel_Style_Border::BORDER_SLANTDASHDOT, 20 | ); 21 | 22 | /** 23 | * Map border style 24 | * OpenOffice documentation: 2.5.11 25 | * 26 | * @param int $index 27 | * @return string 28 | */ 29 | public static function lookup($index) 30 | { 31 | if (isset(self::$map[$index])) { 32 | return self::$map[$index]; 33 | } 34 | return PHPExcel_Style_Border::BORDER_NONE; 35 | } 36 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Excel5/Style/FillPattern.php: -------------------------------------------------------------------------------- 1 | PHPExcel_Style_Fill::FILL_NONE, 7 | 0x01 => PHPExcel_Style_Fill::FILL_SOLID, 8 | 0x02 => PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY, 9 | 0x03 => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY, 10 | 0x04 => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY, 11 | 0x05 => PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL, 12 | 0x06 => PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL, 13 | 0x07 => PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN, 14 | 0x08 => PHPExcel_Style_Fill::FILL_PATTERN_DARKUP, 15 | 0x09 => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID, 16 | 0x0A => PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS, 17 | 0x0B => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL, 18 | 0x0C => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL, 19 | 0x0D => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN, 20 | 0x0E => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP, 21 | 0x0F => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID, 22 | 0x10 => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS, 23 | 0x11 => PHPExcel_Style_Fill::FILL_PATTERN_GRAY125, 24 | 0x12 => PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625, 25 | ); 26 | 27 | /** 28 | * Get fill pattern from index 29 | * OpenOffice documentation: 2.5.12 30 | * 31 | * @param int $index 32 | * @return string 33 | */ 34 | public static function lookup($index) 35 | { 36 | if (isset(self::$map[$index])) { 37 | return self::$map[$index]; 38 | } 39 | return PHPExcel_Style_Fill::FILL_NONE; 40 | } 41 | } -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/Exception.php: -------------------------------------------------------------------------------- 1 | line = $line; 43 | $e->file = $file; 44 | throw $e; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Reader/IReadFilter.php: -------------------------------------------------------------------------------- 1 | dggContainer; 52 | } 53 | 54 | /** 55 | * Set Drawing Group Container 56 | * 57 | * @param PHPExcel_Shared_Escher_DggContainer $dggContainer 58 | */ 59 | public function setDggContainer($dggContainer) 60 | { 61 | return $this->dggContainer = $dggContainer; 62 | } 63 | 64 | /** 65 | * Get Drawing Container 66 | * 67 | * @return PHPExcel_Shared_Escher_DgContainer 68 | */ 69 | public function getDgContainer() 70 | { 71 | return $this->dgContainer; 72 | } 73 | 74 | /** 75 | * Set Drawing Container 76 | * 77 | * @param PHPExcel_Shared_Escher_DgContainer $dgContainer 78 | */ 79 | public function setDgContainer($dgContainer) 80 | { 81 | return $this->dgContainer = $dgContainer; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Shared/Escher/DgContainer.php: -------------------------------------------------------------------------------- 1 | dgId; 49 | } 50 | 51 | public function setDgId($value) 52 | { 53 | $this->dgId = $value; 54 | } 55 | 56 | public function getLastSpId() 57 | { 58 | return $this->lastSpId; 59 | } 60 | 61 | public function setLastSpId($value) 62 | { 63 | $this->lastSpId = $value; 64 | } 65 | 66 | public function getSpgrContainer() 67 | { 68 | return $this->spgrContainer; 69 | } 70 | 71 | public function setSpgrContainer($spgrContainer) 72 | { 73 | return $this->spgrContainer = $spgrContainer; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Shared/Escher/DggContainer/BstoreContainer.php: -------------------------------------------------------------------------------- 1 | BSECollection[] = $BSE; 45 | $BSE->setParent($this); 46 | } 47 | 48 | /** 49 | * Get the collection of BLIP Store Entries 50 | * 51 | * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE[] 52 | */ 53 | public function getBSECollection() 54 | { 55 | return $this->BSECollection; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Shared/Escher/DggContainer/BstoreContainer/BSE/Blip.php: -------------------------------------------------------------------------------- 1 | data; 52 | } 53 | 54 | /** 55 | * Set the raw image data 56 | * 57 | * @param string 58 | */ 59 | public function setData($data) 60 | { 61 | $this->data = $data; 62 | } 63 | 64 | /** 65 | * Set parent BSE 66 | * 67 | * @param PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent 68 | */ 69 | public function setParent($parent) 70 | { 71 | $this->parent = $parent; 72 | } 73 | 74 | /** 75 | * Get parent BSE 76 | * 77 | * @return PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE $parent 78 | */ 79 | public function getParent() 80 | { 81 | return $this->parent; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Shared/JAMA/CHANGELOG.TXT: -------------------------------------------------------------------------------- 1 | Mar 1, 2005 11:15 AST by PM 2 | 3 | + For consistency, renamed Math.php to Maths.java, utils to util, 4 | tests to test, docs to doc - 5 | 6 | + Removed conditional logic from top of Matrix class. 7 | 8 | + Switched to using hypo function in Maths.php for all php-hypot calls. 9 | NOTE TO SELF: Need to make sure that all decompositions have been 10 | switched over to using the bundled hypo. 11 | 12 | Feb 25, 2005 at 10:00 AST by PM 13 | 14 | + Recommend using simpler Error.php instead of JAMA_Error.php but 15 | can be persuaded otherwise. 16 | 17 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Shared/JAMA/utils/Maths.php: -------------------------------------------------------------------------------- 1 | abs($b)) { 17 | $r = $b / $a; 18 | $r = abs($a) * sqrt(1 + $r * $r); 19 | } elseif ($b != 0) { 20 | $r = $a / $b; 21 | $r = abs($b) * sqrt(1 + $r * $r); 22 | } else { 23 | $r = 0.0; 24 | } 25 | return $r; 26 | } // function hypo() 27 | 28 | 29 | /** 30 | * Mike Bommarito's version. 31 | * Compute n-dimensional hyotheneuse. 32 | * 33 | function hypot() { 34 | $s = 0; 35 | foreach (func_get_args() as $d) { 36 | if (is_numeric($d)) { 37 | $s += pow($d, 2); 38 | } else { 39 | throw new PHPExcel_Calculation_Exception(JAMAError(ARGUMENT_TYPE_EXCEPTION)); 40 | } 41 | } 42 | return sqrt($s); 43 | } 44 | */ 45 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Shared/PasswordHasher.php: -------------------------------------------------------------------------------- 1 | . 44 | * 45 | * @param string $pPassword Password to hash 46 | * @return string Hashed password 47 | */ 48 | public static function hashPassword($pPassword = '') 49 | { 50 | $password = 0x0000; 51 | $charPos = 1; // char position 52 | 53 | // split the plain text password in its component characters 54 | $chars = preg_split('//', $pPassword, -1, PREG_SPLIT_NO_EMPTY); 55 | foreach ($chars as $char) { 56 | $value = ord($char) << $charPos++; // shifted ASCII value 57 | $rotated_bits = $value >> 15; // rotated bits beyond bit 15 58 | $value &= 0x7fff; // first 15 bits 59 | $password ^= ($value | $rotated_bits); 60 | } 61 | 62 | $password ^= strlen($pPassword); 63 | $password ^= 0xCE4B; 64 | 65 | return(strtoupper(dechex($password))); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Worksheet/CellIterator.php: -------------------------------------------------------------------------------- 1 | subject); 57 | } 58 | 59 | /** 60 | * Get loop only existing cells 61 | * 62 | * @return boolean 63 | */ 64 | public function getIterateOnlyExistingCells() 65 | { 66 | return $this->onlyExistingCells; 67 | } 68 | 69 | /** 70 | * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary 71 | * 72 | * @throws PHPExcel_Exception 73 | */ 74 | abstract protected function adjustForExistingOnlyRange(); 75 | 76 | /** 77 | * Set the iterator to loop only existing cells 78 | * 79 | * @param boolean $value 80 | * @throws PHPExcel_Exception 81 | */ 82 | public function setIterateOnlyExistingCells($value = true) 83 | { 84 | $this->onlyExistingCells = (boolean) $value; 85 | 86 | $this->adjustForExistingOnlyRange(); 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Worksheet/Row.php: -------------------------------------------------------------------------------- 1 | parent = $parent; 54 | $this->rowIndex = $rowIndex; 55 | } 56 | 57 | /** 58 | * Destructor 59 | */ 60 | public function __destruct() 61 | { 62 | unset($this->parent); 63 | } 64 | 65 | /** 66 | * Get row index 67 | * 68 | * @return int 69 | */ 70 | public function getRowIndex() 71 | { 72 | return $this->rowIndex; 73 | } 74 | 75 | /** 76 | * Get cell iterator 77 | * 78 | * @param string $startColumn The column address at which to start iterating 79 | * @param string $endColumn Optionally, the column address at which to stop iterating 80 | * @return PHPExcel_Worksheet_CellIterator 81 | */ 82 | public function getCellIterator($startColumn = 'A', $endColumn = null) 83 | { 84 | return new PHPExcel_Worksheet_RowCellIterator($this->parent, $this->rowIndex, $startColumn, $endColumn); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Writer/Excel2007/RelsVBA.php: -------------------------------------------------------------------------------- 1 | getParentWriter()->getUseDiskCaching()) { 42 | $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); 43 | } else { 44 | $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY); 45 | } 46 | 47 | // XML header 48 | $objWriter->startDocument('1.0', 'UTF-8', 'yes'); 49 | 50 | // Relationships 51 | $objWriter->startElement('Relationships'); 52 | $objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/package/2006/relationships'); 53 | $objWriter->startElement('Relationship'); 54 | $objWriter->writeAttribute('Id', 'rId1'); 55 | $objWriter->writeAttribute('Type', 'http://schemas.microsoft.com/office/2006/relationships/vbaProjectSignature'); 56 | $objWriter->writeAttribute('Target', 'vbaProjectSignature.bin'); 57 | $objWriter->endElement(); 58 | $objWriter->endElement(); 59 | 60 | return $objWriter->getData(); 61 | 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Writer/Excel2007/WriterPart.php: -------------------------------------------------------------------------------- 1 | parentWriter = $pWriter; 46 | } 47 | 48 | /** 49 | * Get parent IWriter object 50 | * 51 | * @return PHPExcel_Writer_IWriter 52 | * @throws PHPExcel_Writer_Exception 53 | */ 54 | public function getParentWriter() 55 | { 56 | if (!is_null($this->parentWriter)) { 57 | return $this->parentWriter; 58 | } else { 59 | throw new PHPExcel_Writer_Exception("No parent PHPExcel_Writer_IWriter assigned."); 60 | } 61 | } 62 | 63 | /** 64 | * Set parent IWriter object 65 | * 66 | * @param PHPExcel_Writer_IWriter $pWriter 67 | * @throws PHPExcel_Writer_Exception 68 | */ 69 | public function __construct(PHPExcel_Writer_IWriter $pWriter = null) 70 | { 71 | if (!is_null($pWriter)) { 72 | $this->parentWriter = $pWriter; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Writer/Exception.php: -------------------------------------------------------------------------------- 1 | line = $line; 43 | $e->file = $file; 44 | throw $e; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /api/application/libraries/PHPExcel/Writer/IWriter.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/logs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/models/Admin_model.php: -------------------------------------------------------------------------------- 1 | load->database(); 11 | } 12 | 13 | // 登录 14 | public function login() 15 | { 16 | // $data = json_decode($this->input->raw_input_stream); 17 | $username = $this->input->post_get('username', TRUE); 18 | // $username = $data->username; 19 | $password = $this->input->post_get('password', TRUE); 20 | // $password = $data->password; 21 | $where_array = array('a_username' => $username, 'a_password' => sha1($password)); 22 | $query = $this->db->get_where('admin', $where_array); 23 | // 用户名密码正确后,生成token,返回给前台 24 | if ($query->num_rows() > 0) { 25 | return $query->first_row()->a_id; 26 | } else { 27 | return false; 28 | } 29 | } 30 | 31 | // 修改管理员密码 32 | public function changePwd($userid) 33 | { 34 | $oldpwd = json_decode($this->input->raw_input_stream, true)['oldpwd']; 35 | $newpwd = json_decode($this->input->raw_input_stream, true)['newpwd']; 36 | $where_array = array('a_id' => $userid, 'a_password' => sha1($oldpwd)); 37 | $query = $this->db->get_where('admin', $where_array); 38 | if (!$query) { 39 | $error = 1; // ERROR 40 | } else { 41 | $error = 0; // OK 42 | } 43 | // 如果返回结果大于0 , 则继续执行修改密码 44 | if ($query->num_rows() == 0) { 45 | return array('err' => $error, "data" => '原密码错误,请重试'); 46 | } 47 | 48 | $data = array( 49 | 'a_password' => sha1($newpwd) 50 | ); 51 | $this->db->where('a_id', $userid); 52 | $this->db->update('admin', $data); 53 | $result = $this->db->affected_rows(); 54 | return array('err' => $error, "data" => $result); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /api/application/models/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/third_party/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/views/errors/cli/error_404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | An uncaught Exception was encountered 4 | 5 | Type: 6 | Message: 7 | Filename: getFile(), "\n"; ?> 8 | Line Number: getLine(); ?> 9 | 10 | 11 | 12 | Backtrace: 13 | getTrace() as $error): ?> 14 | 15 | File: 16 | Line: 17 | Function: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /api/application/views/errors/cli/error_general.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | A PHP Error was encountered 4 | 5 | Severity: 6 | Message: 7 | Filename: 8 | Line Number: 9 | 10 | 11 | 12 | Backtrace: 13 | 14 | 15 | File: 16 | Line: 17 | Function: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /api/application/views/errors/cli/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/views/errors/html/error_404.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 |Type:
10 |Message:
11 |Filename: getFile(); ?>
12 |Line Number: getLine(); ?>
13 | 14 | 15 | 16 |Backtrace:
17 | getTrace() as $error): ?> 18 | 19 | 20 | 21 |
22 | File:
23 | Line:
24 | Function:
25 |
Severity:
10 |Message:
11 |Filename:
12 |Line Number:
13 | 14 | 15 | 16 |Backtrace:
17 | 18 | 19 | 20 | 21 |
22 | File:
23 | Line:
24 | Function:
25 |
Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/views/errors/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/application/views/welcome_message.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 |The page you are looking at is being generated dynamically by CodeIgniter.
75 | 76 |If you would like to edit this page you'll find it located at:
77 |application/views/welcome_message.php
78 |
79 | The corresponding controller for this page is found at:
80 |application/controllers/Welcome.php
81 |
82 | If you are exploring CodeIgniter for the very first time, you should start by reading the User Guide.
83 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/cubrid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/ibase/ibase_utility.php: -------------------------------------------------------------------------------- 1 | db->hostname, $this->db->username, $this->db->password)) 58 | { 59 | $res = ibase_backup($service, $this->db->database, $filename.'.fbk'); 60 | 61 | // Close the service connection 62 | ibase_service_detach($service); 63 | return $res; 64 | } 65 | 66 | return FALSE; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /api/system/database/drivers/ibase/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/mssql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/mssql/mssql_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /api/system/database/drivers/mysql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/mysqli/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/oci8/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/oci8/oci8_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /api/system/database/drivers/odbc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/odbc/odbc_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /api/system/database/drivers/pdo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/pdo/pdo_forge.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /api/system/database/drivers/pdo/subdrivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/pdo/subdrivers/pdo_odbc_forge.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/sqlite/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/sqlite/sqlite_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /api/system/database/drivers/sqlite3/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/drivers/sqlite3/sqlite3_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /api/system/database/drivers/sqlsrv/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/database/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/fonts/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/fonts/texb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52admln/vue-questionnaire/859a96ecf4268154c349b9f2d11efe3d8937229e/api/system/fonts/texb.ttf -------------------------------------------------------------------------------- /api/system/helpers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/language/english/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/language/english/migration_lang.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/libraries/Cache/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/libraries/Cache/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/libraries/Javascript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/libraries/Session/SessionHandlerInterface.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/libraries/Session/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /api/system/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /front-end/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime", "syntax-dynamic-import"], 7 | "comments": false, 8 | "env": { 9 | "test": { 10 | "presets": ["env", "stage-2"], 11 | "plugins": [ "istanbul" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /front-end/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /front-end/.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /front-end/.eslintrc.js: -------------------------------------------------------------------------------- 1 | // http://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | }, 12 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 13 | extends: 'standard', 14 | // required to lint *.vue files 15 | plugins: [ 16 | 'html' 17 | ], 18 | // add your custom rules here 19 | 'rules': { 20 | // allow paren-less arrow functions 21 | 'arrow-parens': 0, 22 | // allow async-await 23 | 'generator-star-spacing': 0, 24 | // allow debugger during development 25 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /front-end/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | node_modules/ 4 | dist/ 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | -------------------------------------------------------------------------------- /front-end/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /front-end/build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | console.log(chalk.cyan(' Build complete.\n')) 30 | console.log(chalk.yellow( 31 | ' Tip: built files are meant to be served over an HTTP server.\n' + 32 | ' Opening index.html over file:// won\'t work.\n' 33 | )) 34 | }) 35 | }) 36 | -------------------------------------------------------------------------------- /front-end/build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /front-end/build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /front-end/build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = require('./webpack.dev.conf') 14 | 15 | // default port where dev server listens for incoming traffic 16 | var port = process.env.PORT || config.dev.port 17 | // automatically open browser, if not set will be false 18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 19 | // Define HTTP proxies to your custom API backend 20 | // https://github.com/chimurai/http-proxy-middleware 21 | var proxyTable = config.dev.proxyTable 22 | 23 | var app = express() 24 | var compiler = webpack(webpackConfig) 25 | 26 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 27 | publicPath: webpackConfig.output.publicPath, 28 | quiet: true 29 | }) 30 | 31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 32 | log: () => {} 33 | }) 34 | // force page reload when html-webpack-plugin template changes 35 | compiler.plugin('compilation', function (compilation) { 36 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 37 | hotMiddleware.publish({ action: 'reload' }) 38 | cb() 39 | }) 40 | }) 41 | 42 | // proxy api requests 43 | Object.keys(proxyTable).forEach(function (context) { 44 | var options = proxyTable[context] 45 | if (typeof options === 'string') { 46 | options = { target: options } 47 | } 48 | app.use(proxyMiddleware(options.filter || context, options)) 49 | }) 50 | 51 | // handle fallback for HTML5 history API 52 | app.use(require('connect-history-api-fallback')()) 53 | 54 | // serve webpack bundle output 55 | app.use(devMiddleware) 56 | 57 | // enable hot-reload and state-preserving 58 | // compilation error display 59 | app.use(hotMiddleware) 60 | 61 | // serve pure static assets 62 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 63 | app.use(staticPath, express.static('./static')) 64 | 65 | var uri = 'http://localhost:' + port 66 | 67 | var _resolve 68 | var readyPromise = new Promise(resolve => { 69 | _resolve = resolve 70 | }) 71 | 72 | console.log('> Starting dev server...') 73 | devMiddleware.waitUntilValid(() => { 74 | console.log('> Listening at ' + uri + '\n') 75 | // when env is testing, don't need open it 76 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 77 | opn(uri) 78 | } 79 | _resolve() 80 | }) 81 | 82 | var server = app.listen(port) 83 | 84 | module.exports = { 85 | ready: readyPromise, 86 | close: () => { 87 | server.close() 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /front-end/build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | 15 | var cssLoader = { 16 | loader: 'css-loader', 17 | options: { 18 | minimize: process.env.NODE_ENV === 'production', 19 | sourceMap: options.sourceMap 20 | } 21 | } 22 | 23 | // generate loader string to be used with extract text plugin 24 | function generateLoaders (loader, loaderOptions) { 25 | var loaders = [cssLoader] 26 | if (loader) { 27 | loaders.push({ 28 | loader: loader + '-loader', 29 | options: Object.assign({}, loaderOptions, { 30 | sourceMap: options.sourceMap 31 | }) 32 | }) 33 | } 34 | 35 | // Extract CSS when that option is specified 36 | // (which is the case during production build) 37 | if (options.extract) { 38 | return ExtractTextPlugin.extract({ 39 | use: loaders, 40 | fallback: 'vue-style-loader' 41 | }) 42 | } else { 43 | return ['vue-style-loader'].concat(loaders) 44 | } 45 | } 46 | 47 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 48 | return { 49 | css: generateLoaders(), 50 | postcss: generateLoaders(), 51 | less: generateLoaders('less'), 52 | sass: generateLoaders('sass', { indentedSyntax: true }), 53 | scss: generateLoaders('sass'), 54 | stylus: generateLoaders('stylus'), 55 | styl: generateLoaders('stylus') 56 | } 57 | } 58 | 59 | // Generate loaders for standalone style files (outside of .vue) 60 | exports.styleLoaders = function (options) { 61 | var output = [] 62 | var loaders = exports.cssLoaders(options) 63 | for (var extension in loaders) { 64 | var loader = loaders[extension] 65 | output.push({ 66 | test: new RegExp('\\.' + extension + '$'), 67 | use: loader 68 | }) 69 | } 70 | return output 71 | } 72 | -------------------------------------------------------------------------------- /front-end/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }) 12 | } 13 | -------------------------------------------------------------------------------- /front-end/build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./vue-loader.conf') 5 | 6 | function resolve (dir) { 7 | return path.join(__dirname, '..', dir) 8 | } 9 | 10 | module.exports = { 11 | entry: { 12 | app: './src/main.js' 13 | }, 14 | output: { 15 | path: config.build.assetsRoot, 16 | filename: '[name].js', 17 | publicPath: process.env.NODE_ENV === 'production' 18 | ? config.build.assetsPublicPath 19 | : config.dev.assetsPublicPath 20 | }, 21 | resolve: { 22 | extensions: ['.js', '.vue', '.json'], 23 | alias: { 24 | 'vue$': 'vue/dist/vue.esm.js', 25 | '@': resolve('src') 26 | } 27 | }, 28 | module: { 29 | rules: [ 30 | { 31 | test: /\.(js|vue)$/, 32 | loader: 'eslint-loader', 33 | enforce: 'pre', 34 | include: [resolve('src'), resolve('test')], 35 | options: { 36 | formatter: require('eslint-friendly-formatter') 37 | } 38 | }, 39 | { 40 | test: /\.vue$/, 41 | loader: 'vue-loader', 42 | options: vueLoaderConfig 43 | }, 44 | { 45 | test: /\.js$/, 46 | loader: 'babel-loader', 47 | include: [resolve('src'), resolve('test')] 48 | }, 49 | { 50 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 51 | loader: 'url-loader', 52 | options: { 53 | limit: 10000, 54 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 55 | } 56 | }, 57 | { 58 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 59 | loader: 'url-loader', 60 | options: { 61 | limit: 10000, 62 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 63 | } 64 | } 65 | ] 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /front-end/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin() 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /front-end/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /front-end/config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: false, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: true, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | dev: { 25 | env: require('./dev.env'), 26 | port: 9090, 27 | autoOpenBrowser: false, 28 | assetsSubDirectory: 'static', 29 | assetsPublicPath: '/', 30 | // 解决跨域问题 31 | proxyTable: { 32 | '/api': { 33 | target: 'http://localhost:8888/vue-questionnaire/', 34 | changeOrigin: true, 35 | pathRewrite: { 36 | '^/api': '/api' 37 | } 38 | } 39 | }, 40 | // CSS Sourcemaps off by default because relative paths are "buggy" 41 | // with this option, according to the CSS-Loader README 42 | // (https://github.com/webpack/css-loader#sourcemaps) 43 | // In our experience, they generally work as expected, 44 | // just be aware of this issue when enabling this option. 45 | cssSourceMap: false 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /front-end/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /front-end/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "topic": [ 4 | { 5 | "question": "问题1", 6 | "order": 1, 7 | "q_id": 1, 8 | "isRequired": true, 9 | "type": "单选", 10 | "selectContent": "选项4", 11 | "additional": "附加说明1", 12 | "options": [ 13 | { 14 | "content": "选项1", 15 | "o_id": 1, 16 | "isAddition": true 17 | }, 18 | { 19 | "content": "选项1", 20 | "o_id": 2, 21 | "isAddition": false 22 | } 23 | ] 24 | }, 25 | { 26 | "question": "多选问题2", 27 | "order": 2, 28 | "q_id": 2, 29 | "isRequired": true, 30 | "type": "多选", 31 | "selectMultipleContent": [ 32 | "选项1", 33 | "选项2" 34 | ], 35 | "options": [ 36 | { 37 | "content": "选项1", 38 | "o_id": 3, 39 | "isAddition": false 40 | }, 41 | { 42 | "content": "选项1", 43 | "o_id": 4, 44 | "isAddition": false 45 | } 46 | ] 47 | }, 48 | { 49 | "question": "文本题3", 50 | "order": 3, 51 | "q_id": 3, 52 | "isRequired": true, 53 | "type": "文本", 54 | "selectContent": "测试内容" 55 | } 56 | ] 57 | } 58 | ] 59 | -------------------------------------------------------------------------------- /front-end/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |您填写的表单已经提交成功。
9 |无法找到该页面,请检查链接是否正确。
9 |3秒后将跳转至首页。
10 |