完成图表统计功能
This commit is contained in:
parent
ecedca2952
commit
1a1b201064
|
|
@ -2,15 +2,12 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="003b7c19-25d9-476a-8425-57fc330161a6" name="Default Changelist" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/RemindController.php" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/WasteController.php" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/resources/views/admin/remind/index.blade.php" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/resources/views/admin/waste/index.blade.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectDesignController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectDesignController.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" beforeDir="false" afterPath="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/views/admin/project/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/project/index.blade.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/resources/views/admin/remind/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/admin/remind/index.blade.php" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/routes/admin.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/admin.php" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
|
|
@ -23,7 +20,21 @@
|
|||
<pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300" />
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/remind/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="314">
|
||||
<caret line="59" column="44" selection-start-line="59" selection-start-column="44" selection-end-line="59" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
|
|
@ -44,6 +55,10 @@
|
|||
<find>Merch</find>
|
||||
<find>merchant</find>
|
||||
<find>Merchant</find>
|
||||
<find>options</find>
|
||||
<find>LAY-index-heapcol</find>
|
||||
<find>堆积柱状图</find>
|
||||
<find>直接</find>
|
||||
</findStrings>
|
||||
<replaceStrings>
|
||||
<replace>department</replace>
|
||||
|
|
@ -52,8 +67,8 @@
|
|||
</replaceStrings>
|
||||
<dirStrings>
|
||||
<dir>D:\wnmp\www\freeswitch-gui-laravel\vendor\mews\captcha</dir>
|
||||
<dir>D:\wnmp\www\freeswitch-gui-laravel\public</dir>
|
||||
<dir>D:\wnmp\www\freeswitch-gui-laravel\resources\views\admin\project_design</dir>
|
||||
<dir>D:\wnmp\www\freeswitch-gui-laravel\public</dir>
|
||||
</dirStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
|
|
@ -62,13 +77,6 @@
|
|||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/department/_form.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/department/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/DepartmentController.php" />
|
||||
<option value="$PROJECT_DIR$/database/migrations/2014_10_12_000000_create_users_table.php" />
|
||||
<option value="$PROJECT_DIR$/app/Models/User.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/UserController.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/user/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/user/create.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/user/edit.blade.php" />
|
||||
<option value="$PROJECT_DIR$/database/migrations/2019_11_14_110733_project.php" />
|
||||
|
|
@ -104,15 +112,22 @@
|
|||
<option value="$PROJECT_DIR$/routes/api.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectController.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectDesignController.php" />
|
||||
<option value="$PROJECT_DIR$/storage/logs/laravel.log" />
|
||||
<option value="$PROJECT_DIR$/routes/admin.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/remind/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/WasteController.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/RemindController.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/waste/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/project/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/app/Models/Cdr.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php" />
|
||||
<option value="$PROJECT_DIR$/database/migrations/2019_11_20_165744_cdr.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/cdr/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/MenuTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/database/seeds/UserTableSeeder.php" />
|
||||
<option value="$PROJECT_DIR$/../index.php" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/index/index.blade.php" />
|
||||
<option value="$PROJECT_DIR$/routes/admin.php" />
|
||||
<option value="$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php" />
|
||||
<option value="$PROJECT_DIR$/storage/logs/laravel.log" />
|
||||
<option value="$PROJECT_DIR$/resources/views/admin/remind/index.blade.php" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
@ -244,6 +259,7 @@
|
|||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
|
|
@ -251,11 +267,41 @@
|
|||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="app" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="views" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="views" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="admin" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="freeswitch-gui-laravel" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="freeswitch-gui-laravel" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="views" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="admin" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="remind" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
|
|
@ -266,11 +312,11 @@
|
|||
</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Controllers\Admin" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\resources\views\admin" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Controllers\Admin" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\database\migrations" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Controllers" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app" />
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Requests\Admin\Project" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="D:\wnmp\www\freeswitch-gui-laravel\app\Http\Requests\Admin\Sip" />
|
||||
|
|
@ -324,7 +370,9 @@
|
|||
<workItem from="1588902619159" duration="186000" />
|
||||
<workItem from="1588903291343" duration="1434000" />
|
||||
<workItem from="1588907621373" duration="635000" />
|
||||
<workItem from="1588915745995" duration="2835000" />
|
||||
<workItem from="1588915745995" duration="6718000" />
|
||||
<workItem from="1588936852248" duration="3654000" />
|
||||
<workItem from="1588986695085" duration="5949000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="完善系统管理">
|
||||
<created>1588737340771</created>
|
||||
|
|
@ -354,16 +402,24 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1588904691526</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="5" />
|
||||
<task id="LOCAL-00005" summary="添加公海库功能">
|
||||
<created>1588926100307</created>
|
||||
<option name="number" value="00005" />
|
||||
<option name="presentableId" value="LOCAL-00005" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1588926100307</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="6" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="96076000" />
|
||||
<option name="totallyTimeSpent" value="109562000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.20895523" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21321961" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
|
|
@ -384,7 +440,7 @@
|
|||
<window_info anchor="right" id="Database" order="3" />
|
||||
</layout>
|
||||
<layout-to-restore>
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2457356" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21321961" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
|
|
@ -396,8 +452,8 @@
|
|||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Database Changes" order="8" />
|
||||
<window_info anchor="bottom" id="Version Control" order="9" />
|
||||
<window_info anchor="bottom" id="Terminal" order="10" weight="0.6243032" />
|
||||
<window_info anchor="bottom" id="Version Control" order="9" weight="0.32998884" />
|
||||
<window_info anchor="bottom" id="Terminal" order="10" weight="0.38127092" />
|
||||
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" weight="0.32998884" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
|
|
@ -412,152 +468,10 @@
|
|||
<MESSAGE value="完善系统管理" />
|
||||
<MESSAGE value="做到crm的部门管理了" />
|
||||
<MESSAGE value="完成客户管理" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="完成客户管理" />
|
||||
<MESSAGE value="添加公海库功能" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="添加公海库功能" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Requests/Admin/User/ChangePasswordRequest.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="546">
|
||||
<caret line="36" column="5" lean-forward="true" selection-start-line="33" selection-start-column="4" selection-end-line="36" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="e#48#91#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/user/_js.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="512">
|
||||
<caret line="16" column="10" lean-forward="true" selection-start-line="5" selection-start-column="8" selection-end-line="16" selection-end-column="10" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/database/seeds/UserSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-9504" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/database/seeds/HomeSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="96">
|
||||
<caret line="90" column="22" lean-forward="true" selection-start-line="66" selection-start-column="20" selection-end-line="90" selection-end-column="22" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project/_btn.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="128">
|
||||
<caret line="4" column="27" selection-start-line="4" selection-start-column="27" selection-end-line="4" selection-end-column="27" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project/_form.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="128">
|
||||
<caret line="4" column="31" selection-start-line="4" selection-start-column="31" selection-end-line="4" selection-end-column="31" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project_design/create.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="15" selection-start-column="10" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/config/freeswitch.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="106" column="6" lean-forward="true" selection-start-line="98" selection-start-column="4" selection-end-line="106" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/config/freeswitch.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="770">
|
||||
<caret line="75" column="6" selection-start-line="75" selection-start-column="6" selection-end-line="75" selection-end-column="6" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project_design/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<caret column="15" selection-start-column="15" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project/create.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="736">
|
||||
<caret line="101" column="19" selection-start-line="101" selection-start-column="19" selection-end-line="101" selection-end-column="19" />
|
||||
<folding>
|
||||
<element signature="e#1812#1832#0#HTML" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project/edit.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="610">
|
||||
<caret line="105" column="19" selection-start-line="105" selection-start-column="19" selection-end-line="105" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/composer.json">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="154">
|
||||
<caret line="15" column="26" selection-start-line="15" selection-start-column="9" selection-end-line="15" selection-end-column="26" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Exports/ProjectExport.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="13" column="10" lean-forward="true" selection-start-line="13" selection-start-column="10" selection-end-line="13" selection-end-column="10" />
|
||||
<folding>
|
||||
<element signature="e#31#72#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Requests/Admin/Project/ProjectDesignRequest.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1026">
|
||||
<caret line="38" column="5" selection-start-line="38" selection-start-column="5" selection-end-line="38" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="e#51#94#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/config/filesystems.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1826">
|
||||
<caret line="60" column="10" lean-forward="true" selection-start-line="57" selection-start-column="8" selection-end-line="60" selection-end-column="10" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/config/filesystems.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="640">
|
||||
<caret line="69" column="42" selection-start-line="69" selection-start-column="42" selection-end-line="69" selection-end-column="42" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/ApiController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="288">
|
||||
<caret line="9" column="19" lean-forward="true" selection-start-line="9" selection-start-column="19" selection-end-line="9" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Models/Node.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="672">
|
||||
<caret line="21" column="5" selection-start-line="21" selection-start-column="5" selection-end-line="21" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Models/Node.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="224">
|
||||
|
|
@ -667,16 +581,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="556">
|
||||
<caret line="41" column="29" selection-start-line="41" selection-start-column="29" selection-end-line="41" selection-end-column="29" />
|
||||
<folding>
|
||||
<element signature="e#46#76#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/project_design/edit.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="448">
|
||||
|
|
@ -698,9 +602,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/storage/logs/laravel.log">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectDesignController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="538">
|
||||
|
|
@ -715,13 +616,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/routes/web.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="416">
|
||||
<caret line="154" column="7" lean-forward="true" selection-start-line="148" selection-start-column="4" selection-end-line="154" selection-end-column="7" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/WasteController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="544">
|
||||
|
|
@ -732,49 +626,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/MenuTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="164">
|
||||
<caret line="189" column="54" selection-start-line="189" selection-start-column="54" selection-end-line="189" selection-end-column="54" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/UserTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="418">
|
||||
<caret line="228" column="45" selection-start-line="228" selection-start-column="39" selection-end-line="228" selection-end-column="45" />
|
||||
<folding>
|
||||
<element signature="e#1267#3670#1#PHP" />
|
||||
<element signature="e#1396#2117#1#PHP" />
|
||||
<element signature="e#2139#2679#1#PHP" />
|
||||
<element signature="e#2701#3173#1#PHP" />
|
||||
<element signature="e#3195#3637#1#PHP" />
|
||||
<element signature="e#3684#6221#1#PHP" />
|
||||
<element signature="e#3787#6207#1#PHP" />
|
||||
<element signature="e#6235#8387#1#PHP" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/routes/admin.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="578">
|
||||
<caret line="350" column="33" selection-start-line="350" selection-start-column="28" selection-end-line="350" selection-end-column="33" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/remind/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="160">
|
||||
<caret line="26" column="50" lean-forward="true" selection-start-line="26" selection-start-column="50" selection-end-line="26" selection-end-column="50" />
|
||||
<folding>
|
||||
<element signature="e#1122#1155#0#HTML" expanded="true" />
|
||||
<element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/waste/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="160">
|
||||
|
|
@ -796,5 +647,191 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/database/migrations/2019_11_20_165744_cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="384">
|
||||
<caret line="23" column="71" lean-forward="true" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/database/seeds/HomeSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-256">
|
||||
<caret line="100" column="47" lean-forward="true" selection-start-line="100" selection-start-column="47" selection-end-line="100" selection-end-column="47" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Models/Cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="288">
|
||||
<caret line="9" column="32" selection-start-line="9" selection-start-column="32" selection-end-line="9" selection-end-column="32" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Models/Cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="128">
|
||||
<caret line="4" column="14" lean-forward="true" selection-start-line="4" selection-start-column="14" selection-end-line="4" selection-end-column="14" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/CdrController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1472">
|
||||
<caret line="46" column="10" selection-start-line="46" selection-start-column="10" selection-end-line="46" selection-end-column="10" />
|
||||
<folding>
|
||||
<element signature="e#47#66#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/ProjectController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="556">
|
||||
<caret line="65" column="14" lean-forward="true" selection-start-line="56" selection-start-column="12" selection-end-line="65" selection-end-column="14" />
|
||||
<folding>
|
||||
<element signature="e#46#76#0#PHP" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/migrations/2019_11_20_165744_cdr.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="352">
|
||||
<caret line="25" column="72" lean-forward="true" selection-start-line="25" selection-start-column="72" selection-end-line="25" selection-end-column="72" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/cdr/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="610">
|
||||
<caret line="74" column="16" selection-start-line="74" selection-start-column="16" selection-end-line="74" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="n#style#0;n#div#0;n#!!top" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/routes/web.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="608">
|
||||
<caret line="190" column="3" lean-forward="true" selection-start-line="166" selection-end-line="190" selection-end-column="3" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/UserTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="324">
|
||||
<caret line="255" column="41" lean-forward="true" selection-start-line="255" selection-start-column="41" selection-end-line="255" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="e#1267#3670#1#PHP" />
|
||||
<element signature="e#1396#2117#1#PHP" />
|
||||
<element signature="e#2139#2679#1#PHP" />
|
||||
<element signature="e#2701#3173#1#PHP" />
|
||||
<element signature="e#3195#3637#1#PHP" />
|
||||
<element signature="e#3684#6221#1#PHP" />
|
||||
<element signature="e#3787#6207#1#PHP" />
|
||||
<element signature="e#6235#8387#1#PHP" />
|
||||
<element signature="e#8505#11676#1#PHP" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/database/seeds/MenuTableSeeder.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="480">
|
||||
<caret line="208" column="53" selection-start-line="208" selection-start-column="53" selection-end-line="208" selection-end-column="53" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/lib/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/lib/admin.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/lib/view.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/public/static/admin/layuiadmin/modules/console.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/public/static/admin/layuiadmin/modules/common.js">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/Desktop/layuiadmin-template/views/senior/echarts/map.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-1854" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/layuiadmin/modules/senior.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-8320">
|
||||
<caret line="267" column="16" lean-forward="true" selection-start-line="267" selection-start-column="16" selection-end-line="267" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="e#1979#99755#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Http/Controllers/Home/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="320">
|
||||
<caret line="11" column="5" lean-forward="true" selection-start-line="11" selection-start-column="5" selection-end-line="11" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../freeswitch-gui-laravel - 副本/app/Http/Controllers/Admin/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="276">
|
||||
<caret line="32" column="54" selection-start-line="32" selection-start-column="54" selection-end-line="32" selection-end-column="54" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../index.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="352">
|
||||
<caret line="11" column="20" selection-start-line="11" selection-start-column="20" selection-end-line="11" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/routes/admin.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="556">
|
||||
<caret line="28" column="15" selection-start-line="28" selection-start-column="15" selection-end-line="28" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/storage/logs/laravel.log">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Admin/IndexController.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="482">
|
||||
<caret line="65" column="15" selection-start-line="65" selection-start-column="15" selection-end-line="65" selection-end-column="15" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/index/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1556">
|
||||
<caret line="233" column="41" selection-start-line="233" selection-start-column="41" selection-end-line="233" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="e#10111#11140#0#HTML" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/resources/views/admin/remind/index.blade.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="314">
|
||||
<caret line="59" column="44" selection-start-line="59" selection-start-column="44" selection-end-line="59" selection-end-column="44" />
|
||||
<folding>
|
||||
<element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
|
||||
<element signature="n#style#0;n#span#0;n#!!top" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Models\Cdr;
|
||||
use App\Models\Sip;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class CdrController extends Controller
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
return view('admin.cdr.index');
|
||||
}
|
||||
|
||||
public function data(Request $request)
|
||||
{
|
||||
$query = Cdr::query();
|
||||
$search = $request->all(['src','dst','start_at_start','start_at_end']);
|
||||
if ($search['src']){
|
||||
$query = $query->where('src',$search['src']);
|
||||
}
|
||||
if ($search['dst']){
|
||||
$query = $query->where('dst',$search['dst']);
|
||||
}
|
||||
if ($search['start_at_start'] && !$search['start_at_end']){
|
||||
$query = $query->where('aleg_start_at','>=',$search['start_at_start']);
|
||||
}else if (!$search['start_at_start'] && $search['start_at_end']){
|
||||
$query = $query->where('aleg_start_at','<=',$search['start_at_end']);
|
||||
}else if ($search['start_at_start'] && $search['start_at_end']){
|
||||
$query = $query->whereBetween('aleg_start_at',[$search['start_at_start'],$search['start_at_end']]);
|
||||
}
|
||||
$user = $request->user();
|
||||
$res = $query->where(function ($query) use($user) {
|
||||
if ($user->hasPermissionTo('data.cdr.list_all')) {
|
||||
# code...
|
||||
}elseif ($user->hasPermissionTo('data.cdr.list_department')) {
|
||||
$user_ids = User::where('department_id',$user->department_id)->pluck('id')->toArray();
|
||||
return $query->whereIn('user_id',$user_ids);
|
||||
}else{
|
||||
return $query->where('user_id',$user->id);
|
||||
}
|
||||
})->orderByDesc('id')->paginate($request->get('limit', 30));
|
||||
$data = [
|
||||
'code' => 0,
|
||||
'msg' => '正在请求中...',
|
||||
'count' => $res->total(),
|
||||
'data' => $res->items(),
|
||||
];
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 播放录音
|
||||
* @param $uuid
|
||||
* @return array
|
||||
*/
|
||||
public function play($uuid)
|
||||
{
|
||||
$cdr = Cdr::where('uuid',$uuid)->first();
|
||||
if ($cdr==null){
|
||||
return ['code'=>'1','msg'=>'通话记录不存在'];
|
||||
}
|
||||
if (empty($cdr->record_file)){
|
||||
return ['code'=>'1','msg'=>'未找到录音文件'];
|
||||
}
|
||||
return ['code'=>0,'msg'=>'请求成功','data'=>$cdr->record_file];
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载录音
|
||||
* @param $uuid
|
||||
* @return \Illuminate\Http\RedirectResponse|\Symfony\Component\HttpFoundation\BinaryFileResponse
|
||||
*/
|
||||
public function download($uuid)
|
||||
{
|
||||
$cdr = Cdr::where('uuid',$uuid)->first();
|
||||
if ($cdr==null){
|
||||
return back()->withErrors(['error'=>'通话记录不存在']);
|
||||
}
|
||||
if (!file_exists($cdr->record_file)){
|
||||
return back()->withErrors(['error'=>'未找到录音文件']);
|
||||
}
|
||||
return response()->download($cdr->record_file,$uuid.".wav");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -3,7 +3,13 @@
|
|||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cdr;
|
||||
use App\Models\Department;
|
||||
use App\Models\Project;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Response;
|
||||
use Illuminate\Support\Facades\View;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
|
|
@ -17,6 +23,48 @@ class IndexController extends Controller
|
|||
|
||||
public function index()
|
||||
{
|
||||
return View::make('admin.index.index');
|
||||
//部门数量
|
||||
$departmentCount = Department::count();
|
||||
//用户数量
|
||||
$userCount = User::where('id','!=',config('freeswitch.user_root_id'))->count();
|
||||
//总客户数
|
||||
$projectCount = Project::count();
|
||||
//公海客户数
|
||||
$wasteCount = Project::onlyTrashed()->count();
|
||||
return View::make('admin.index.index',compact('departmentCount','userCount','projectCount','wasteCount'));
|
||||
}
|
||||
|
||||
public function chart()
|
||||
{
|
||||
$data = [
|
||||
'months' => [],
|
||||
'calls' => [],
|
||||
'success' => [],
|
||||
];
|
||||
for ($m=1;$m<=12;$m++){
|
||||
$data['year_month'][$m] = [
|
||||
'start' => mktime(0,0,0,$m,1,date('Y')),
|
||||
'end' => mktime(0,0,0,$m+1,1,date('Y')),
|
||||
];
|
||||
$data['months'][] = $m.'月';
|
||||
$data['calls'][$m] = 0;
|
||||
$data['success'][$m] = 0;
|
||||
}
|
||||
Cdr::whereYear('aleg_start_at', date('Y'))
|
||||
->orderBy('id')
|
||||
->chunk(1000, function ($result) use(&$data){
|
||||
foreach ($result as $item) {
|
||||
foreach ($data['year_month'] as $key=>$time){
|
||||
if (strtotime($item->aleg_start_at)>=$time['start'] && strtotime($item->aleg_start_at)<$time['end']){
|
||||
$data['calls'][$key] += 1;
|
||||
if ($item->billsec>0){
|
||||
$data['success'][$key] += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
return Response::json(['code'=>0,'msg'=>'请求成功','data'=>$data]);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Cdr extends Model
|
||||
{
|
||||
protected $table = 'cdr';
|
||||
protected $guarded = ['id'];
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class Cdr extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('cdr', function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->unsignedBigInteger('user_id')->nullable()->comment('用户ID');
|
||||
$table->string('uuid')->nullable()->comment('通话唯一标识');
|
||||
$table->string('aleg_uuid')->nullable()->comment('aleg唯一标识');
|
||||
$table->string('bleg_uuid')->nullable()->comment('bleg唯一标识');
|
||||
$table->tinyInteger('direction')->default(1)->comment('1呼出,2呼入');
|
||||
$table->string('src')->nullable()->comment('主叫号码');
|
||||
$table->string('dst')->nullable()->comment('主叫号码');
|
||||
$table->integer('duration')->default(0)->comment('A通话时长(秒)');
|
||||
$table->integer('billsec')->default(0)->comment('B通话时长(秒)');
|
||||
$table->dateTime('aleg_start_at')->nullable()->comment('主叫开始时间');
|
||||
$table->dateTime('aleg_answer_at')->nullable()->comment('主叫应答时间');
|
||||
$table->dateTime('aleg_end_at')->nullable()->comment('主叫结束时间');
|
||||
$table->dateTime('bleg_start_at')->nullable()->comment('被叫开始时间');
|
||||
$table->dateTime('bleg_answer_at')->nullable()->comment('被叫应答时间');
|
||||
$table->dateTime('bleg_end_at')->nullable()->comment('被叫结束时间');
|
||||
$table->string('record_file')->nullable()->comment('通话录音地址');
|
||||
$table->string('user_data')->nullable()->comment('扩展数据,json格式');
|
||||
$table->timestamps();
|
||||
});
|
||||
\DB::statement("ALTER TABLE `cdr` comment '通话记录表'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('cdr');
|
||||
}
|
||||
}
|
||||
|
|
@ -135,7 +135,7 @@ class MenuTableSeeder extends Seeder
|
|||
]
|
||||
],
|
||||
[
|
||||
'name' => '客户管理',
|
||||
'name' => 'CRM管理',
|
||||
'route' => null,
|
||||
'url' => null,
|
||||
'icon' => 'layui-icon-android',
|
||||
|
|
@ -193,6 +193,26 @@ class MenuTableSeeder extends Seeder
|
|||
],
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => '数据监控',
|
||||
'route' => null,
|
||||
'url' => null,
|
||||
'icon' => 'layui-icon-slider',
|
||||
'type' => 2,
|
||||
'sort' => 2,
|
||||
'permission_name' => 'data',
|
||||
'child' => [
|
||||
[
|
||||
'name' => '通话记录',
|
||||
'route' => 'admin.cdr',
|
||||
'url' => null,
|
||||
'icon' => 'layui-icon-service',
|
||||
'type' => 1,
|
||||
'permission_name' => 'data.cdr',
|
||||
],
|
||||
|
||||
]
|
||||
],
|
||||
];
|
||||
$permissions = \App\Models\Permission::pluck('id','name')->toArray();
|
||||
foreach ($datas as $k1 => $d1){
|
||||
|
|
|
|||
|
|
@ -234,6 +234,23 @@ class UserTableSeeder extends Seeder
|
|||
],
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => 'data',
|
||||
'display_name' => '数据监控',
|
||||
'child' => [
|
||||
[
|
||||
'name' => 'data.cdr',
|
||||
'display_name' => '通话记录',
|
||||
'child' => [
|
||||
['name' => 'data.cdr.play', 'display_name' => '播放'],
|
||||
['name' => 'data.cdr.download', 'display_name' => '下载'],
|
||||
['name' => 'data.cdr.list_all', 'display_name' => '查看所有记录'],
|
||||
['name' => 'data.cdr.list_department', 'display_name' => '查看部门记录'],
|
||||
]
|
||||
],
|
||||
|
||||
]
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($permissions as $pem1) {
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,113 @@
|
|||
@extends('admin.base')
|
||||
|
||||
@section('content')
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header layuiadmin-card-header-auto">
|
||||
<form class="layui-form">
|
||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="*" >搜索</button>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">主叫号码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="src" class="layui-input" placeholder="主叫号码">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">被叫号码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="dst" class="layui-input" placeholder="被叫号码">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label for="" class="layui-form-label">呼叫时间</label>
|
||||
<div class="layui-input-inline" style="width: 160px">
|
||||
<input type="text" name="start_stamp_start" id="start_at_start" class="layui-input" placeholder="开始时间">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">-</div>
|
||||
<div class="layui-input-inline" style="width: 160px">
|
||||
<input type="text" name="start_stamp_end" id="start_at_end" class="layui-input" placeholder="结束时间">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<table id="dataTable" lay-filter="dataTable"></table>
|
||||
<script type="text/html" id="options">
|
||||
<div class="layui-btn-group">
|
||||
<a class="layui-btn layui-btn-sm" lay-event="play">播放</a>
|
||||
<a class="layui-btn layui-btn-sm" lay-event="download">下载</a>
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
layui.use(['layer','table','form','laydate'],function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var laydate = layui.laydate;
|
||||
//用户表格初始化
|
||||
var dataTable = table.render({
|
||||
elem: '#dataTable'
|
||||
,height: 500
|
||||
,url: "{{ route('admin.cdr.data') }}" //数据接口
|
||||
,page: true //开启分页
|
||||
,cols: [[ //表头
|
||||
//{checkbox: true,fixed: true}
|
||||
{field: 'id', title: 'ID', sort: true,width:80,fixed:'left'}
|
||||
,{field: 'caller_id_number', title: '主叫号码',style:'color:green'}
|
||||
,{field: 'destination_number', title: '被叫号码',style:'color:#2F4056'}
|
||||
,{field: 'aleg_start_at', title: '呼叫时间', sort: true}
|
||||
,{field: 'billsec', title: '通话时长(秒)', sort: true, style:'color: green'}
|
||||
,{width: 220, align:'center', toolbar: '#options', title:'操作',fixed:'right'}
|
||||
]]
|
||||
});
|
||||
|
||||
//监听工具条
|
||||
table.on('tool(dataTable)', function(obj){ //注:tool是工具条事件名,dataTable是table原始容器的属性 lay-filter="对应的值"
|
||||
var data = obj.data //获得当前行数据
|
||||
,layEvent = obj.event; //获得 lay-event 对应的值
|
||||
if (layEvent === 'play'){
|
||||
var index = layer.load()
|
||||
$.get('/admin/cdr/'+data.uuid+'/play',function (res) {
|
||||
layer.close(index);
|
||||
if (res.code==0){
|
||||
var _html = '<div style="padding:20px;">';
|
||||
_html += '<audio controls="controls" autoplay src="'+res.data+'"></audio>';
|
||||
_html += '</div>';
|
||||
layer.open({
|
||||
title : '播放录音',
|
||||
type : 1,
|
||||
area : ['360px','auto'],
|
||||
content : _html
|
||||
})
|
||||
}else {
|
||||
layer.msg(res.msg,{icon:5})
|
||||
}
|
||||
})
|
||||
} else if (layEvent === 'download'){
|
||||
location.href = '/admin/cdr/'+data.uuid+'/download';
|
||||
}
|
||||
});
|
||||
|
||||
//时间选择
|
||||
laydate.render({type: 'datetime', elem: '#start_stamp_start'});
|
||||
laydate.render({type: 'datetime', elem: '#start_stamp_end'});
|
||||
|
||||
//监听搜索提交
|
||||
form.on('submit(*)', function(data){
|
||||
dataTable.reload({
|
||||
where: data.field,
|
||||
page: {curr:1}
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
@section('content')
|
||||
<div class="layui-row layui-col-space15">
|
||||
{{--<div class="layui-col-md12">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md4">
|
||||
<div class="layui-card">
|
||||
|
|
@ -24,15 +24,15 @@
|
|||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a lay-href="{{route('admin.merchant')}}">
|
||||
<a lay-href="{{route('admin.department')}}">
|
||||
<i class="layui-icon layui-icon-template-1"></i>
|
||||
<cite>商户管理</cite>
|
||||
<cite>部门管理</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
<a lay-href="{{route('admin.member')}}">
|
||||
<a lay-href="{{route('admin.node')}}">
|
||||
<i class="layui-icon layui-icon-chat"></i>
|
||||
<cite>员工管理</cite>
|
||||
<cite>节点管理</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs3">
|
||||
|
|
@ -74,26 +74,26 @@
|
|||
<ul class="layui-row layui-col-space10">
|
||||
<li class="layui-col-xs6">
|
||||
<a class="layadmin-backlog-body">
|
||||
<h3>商户数量</h3>
|
||||
<p><cite>{{$merchantNum}}</cite></p>
|
||||
<h3>部门数量</h3>
|
||||
<p><cite>{{$departmentCount}}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs6">
|
||||
<a class="layadmin-backlog-body">
|
||||
<h3>员工数量</h3>
|
||||
<p><cite>{{$memberNum}}</cite></p>
|
||||
<h3>用户数量</h3>
|
||||
<p><cite>{{$userCount}}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs6">
|
||||
<a class="layadmin-backlog-body">
|
||||
<h3>网关数量</h3>
|
||||
<p><cite>{{$gatewayNum}}</cite></p>
|
||||
<h3>总客户数</h3>
|
||||
<p><cite>{{$projectCount}}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-col-xs6">
|
||||
<a class="layadmin-backlog-body">
|
||||
<h3>分机数量</h3>
|
||||
<p><cite>{{$sipNum}}</cite></p>
|
||||
<h3>公海客户数量</h3>
|
||||
<p><cite>{{$wasteCount}}</cite></p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -139,66 +139,106 @@
|
|||
</div>
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">呼叫统计</div>
|
||||
<div class="layui-card-body layui-text">
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col align="center"><col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<td rowspan="2"><b>商户</b></td>
|
||||
<td rowspan="2"><b>分机</b></td>
|
||||
<td align="center" colspan="3"><b>当日</b></td>
|
||||
<td align="center" colspan="3"><b>本周</b></td>
|
||||
<td align="center" colspan="3"><b>本月</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center">呼出</td>
|
||||
<td align="center">接通</td>
|
||||
<td align="center">接通率</td>
|
||||
<td align="center">呼出</td>
|
||||
<td align="center">接通</td>
|
||||
<td align="center">接通率</td>
|
||||
<td align="center">呼出</td>
|
||||
<td align="center">接通</td>
|
||||
<td align="center">接通率</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($datas as $data)
|
||||
@foreach($data->sips as $sip)
|
||||
<tr>
|
||||
@if($loop->first)
|
||||
<td rowspan="{{count($data->sips)}}">{{$data->info->company_name}}</td>
|
||||
@endif
|
||||
<td>{{$sip->username}}</td>
|
||||
<td align="center" style="color: red">{{$sip->todayCalls}}</td>
|
||||
<td align="center" style="color: green">{{$sip->todaySuccessCalls}}</td>
|
||||
<td align="center" style="color: #0000FF">{{$sip->todayRateCalls}}%</td>
|
||||
<td align="center" style="color: red">{{$sip->weekCalls}}</td>
|
||||
<td align="center" style="color: green">{{$sip->weekSuccessCalls}}</td>
|
||||
<td align="center" style="color: #0000FF">{{$sip->weekRateCalls}}%</td>
|
||||
<td align="center" style="color: red">{{$sip->monthCalls}}</td>
|
||||
<td align="center" style="color: green">{{$sip->monthSuccessCalls}}</td>
|
||||
<td align="center" style="color: #0000FF">{{$sip->monthRateCalls}}%</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@empty
|
||||
<tr><td colspan="11" align="center">暂无数据</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="layui-card-header">最近15天数据</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row layui-col-space30">
|
||||
<div class="layui-col-md6">
|
||||
<div id="calls" style="height: 400px"></div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div id="projects" style="height: 400px"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>--}}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('script')
|
||||
<script>
|
||||
layui.use(['index', 'sample']);
|
||||
layui.extend({
|
||||
echarts: 'lib/extend/echarts' ,
|
||||
echartsTheme: 'lib/extend/echartsTheme' ,
|
||||
}).use(['layer','table','form','echarts','echartsTheme'],function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var echarts = layui.echarts;
|
||||
var echartsTheme = layui.echartsTheme;
|
||||
var myechart1 = echarts.init(document.getElementById('calls'), echartsTheme);
|
||||
$.post("{{route('admin.remind.count')}}", {}, function (res) {
|
||||
if (res.code == 0) {
|
||||
var legend = [];
|
||||
var series = [];
|
||||
$.each(res.data, function (index, elem) {
|
||||
legend.push(index);
|
||||
series.push({
|
||||
value: elem,
|
||||
name: index
|
||||
})
|
||||
});
|
||||
myechart1.setOption({
|
||||
title: {text: "各节点客户分布", x: "center", textStyle: {fontSize: 14}},
|
||||
tooltip: {trigger: "item", formatter: "{a} <br/>{b} : {c} ({d}%)"},
|
||||
legend: {orient: "vertical", x: "left", data: legend},
|
||||
series: [{
|
||||
name: "客户数",
|
||||
type: "pie",
|
||||
radius: "55%",
|
||||
center: ["50%", "50%"],
|
||||
data: series
|
||||
}]
|
||||
});
|
||||
}
|
||||
});
|
||||
window.onresize = myechart1.resize;
|
||||
|
||||
var myechart2 = echarts.init(document.getElementById('projects'), echartsTheme);
|
||||
$.post("{{route('admin.index.chart')}}", {}, function (res) {
|
||||
if (res.code == 0) {
|
||||
var months = [];
|
||||
var calls = [];
|
||||
var success = [];
|
||||
$.each(res.data.months, function (index, elem) {
|
||||
months.push(elem);
|
||||
});
|
||||
$.each(res.data.calls, function (index, elem) {
|
||||
calls.push(elem);
|
||||
});
|
||||
$.each(res.data.success, function (index, elem) {
|
||||
success.push(elem);
|
||||
});
|
||||
myechart2.setOption({
|
||||
title: {text: "本年度总呼叫量和接通量", subtext: ""},
|
||||
tooltip: {trigger: "axis"},
|
||||
legend: {data: ["总呼叫量", "接通量"]},
|
||||
calculable: !0,
|
||||
xAxis: [{
|
||||
type: "category",
|
||||
data: months
|
||||
}],
|
||||
yAxis: [{type: "value"}],
|
||||
series: [{
|
||||
name: "总呼叫量",
|
||||
type: "bar",
|
||||
data: calls,
|
||||
markPoint: {data: [{type: "max", name: "最大值"}, {type: "min", name: "最小值"}]},
|
||||
markLine: {data: [{type: "average", name: "平均值"}]}
|
||||
}, {
|
||||
name: "接通量",
|
||||
type: "bar",
|
||||
data: success,
|
||||
markPoint: {data: [{type: "max", name: "最大值"}, {type: "min", name: "最小值"}]},
|
||||
markLine: {data: [{type: "average", name: "平均值"}]}
|
||||
}]
|
||||
});
|
||||
}
|
||||
});
|
||||
window.onresize = myechart2.resize;
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
})
|
||||
})
|
||||
myechart.setOption({
|
||||
title: {text: "各节点项目分布情况", x: "center", textStyle: {fontSize: 14}},
|
||||
title: {text: "各节点客户分布情况", x: "center", textStyle: {fontSize: 14}},
|
||||
tooltip: {trigger: "item", formatter: "{a} <br/>{b} : {c} ({d}%)"},
|
||||
legend: {orient: "vertical", x: "left", data: legend},
|
||||
series: [{
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'auth'],funct
|
|||
Route::get('/','IndexController@layout')->name('admin.layout');
|
||||
//后台首页
|
||||
Route::get('/index','IndexController@index')->name('admin.index');
|
||||
//后台首页图表统计
|
||||
Route::post('/index/chart','IndexController@chart')->name('admin.index.chart');
|
||||
});
|
||||
|
||||
/*
|
||||
|
|
@ -351,5 +353,24 @@ Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>['auth','perm
|
|||
Route::post('remind/count','RemindController@count')->name('admin.remind.count')->middleware('permission:crm.remind.count');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| 数据监控模块
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>['auth','permission:data']],function (){
|
||||
|
||||
//通话记录
|
||||
Route::group([],function (){
|
||||
Route::get('cdr','CdrController@index')->name('admin.cdr')->middleware('permission:data.cdr');
|
||||
Route::get('cdr/data','CdrController@data')->name('admin.cdr.data')->middleware('permission:data.cdr');
|
||||
//播放
|
||||
Route::get('cdr/{uuid}/play','CdrController@play')->name('admin.cdr.play')->middleware('permission:data.cdr.play');
|
||||
//下载
|
||||
Route::get('cdr/{uuid}/download','CdrController@download')->name('admin.cdr.download')->middleware('permission:data.cdr.download');
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Reference in New Issue