python学习
589
.idea/workspace.xml
generated
@@ -2,20 +2,22 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="d564f57a-9f96-4262-9481-cacdf2b8445c" name="Default" comment="python学习">
|
<list default="true" id="d564f57a-9f96-4262-9481-cacdf2b8445c" name="Default" comment="python学习">
|
||||||
<change afterPath="$PROJECT_DIR$/common/models/food/Food.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/common/libs/UploadService.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/common/models/food/FoodCat.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/common/libs/food/FoodService.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/common/models/food/FoodSaleChangeLog.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/common/models/Image.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/common/models/food/FoodStockChangeLog.py" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/web/controllers/upload/Upload.py" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/web/static/js/food/cat.js" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/web/static/upload/readme.md" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/web/static/js/food/cat_set.js" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/web/static/js/food/index.js" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/web/static/js/food/set.js" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/web/templates/common/tab_food.html" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/application.py" beforeDir="false" afterPath="$PROJECT_DIR$/application.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/common/libs/Helper.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/libs/Helper.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/common/libs/UrlManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/libs/UrlManager.py" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/config/base_setting.py" beforeDir="false" afterPath="$PROJECT_DIR$/config/base_setting.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/web/controllers/food/Food.py" beforeDir="false" afterPath="$PROJECT_DIR$/web/controllers/food/Food.py" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/web/controllers/food/Food.py" beforeDir="false" afterPath="$PROJECT_DIR$/web/controllers/food/Food.py" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/web/templates/food/cat.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/food/cat.html" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/web/static/js/common.js" beforeDir="false" afterPath="$PROJECT_DIR$/web/static/js/common.js" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/web/templates/food/cat_set.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/food/cat_set.html" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/web/templates/common/layout_main.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/common/layout_main.html" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/web/templates/food/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/food/index.html" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/web/templates/food/set.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/food/set.html" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/web/templates/food/set.html" beforeDir="false" afterPath="$PROJECT_DIR$/web/templates/food/set.html" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/www.py" beforeDir="false" afterPath="$PROJECT_DIR$/www.py" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@@ -26,93 +28,98 @@
|
|||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/web/static/js/member/index.js">
|
<entry file="file://$PROJECT_DIR$/web/templates/food/set.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="403">
|
<state relative-caret-position="203">
|
||||||
<caret line="22" column="17" lean-forward="true" selection-start-line="22" selection-start-column="17" selection-end-line="22" selection-end-column="17" />
|
<caret line="41" column="30" lean-forward="true" selection-start-line="41" selection-start-column="30" selection-end-line="41" selection-end-column="30" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/libs/Helper.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="112">
|
||||||
|
<caret line="110" column="22" selection-start-line="110" selection-start-column="22" selection-end-line="110" selection-end-column="22" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#59#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/food/info.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/food/index.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="372">
|
||||||
|
<caret line="12" column="11" lean-forward="true" selection-start-line="12" selection-start-column="11" selection-end-line="12" selection-end-column="11" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/js/food/set.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="-2082">
|
||||||
|
<caret line="53" column="13" lean-forward="true" selection-start-line="53" selection-start-column="13" selection-end-line="53" selection-end-column="13" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="true">
|
<file pinned="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/js/common.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="320">
|
||||||
|
<caret line="156" column="6" lean-forward="true" selection-start-line="156" selection-start-column="6" selection-end-line="156" selection-end-column="6" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/web/controllers/food/Food.py">
|
<entry file="file://$PROJECT_DIR$/web/controllers/food/Food.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="718">
|
<state relative-caret-position="31">
|
||||||
<caret line="98" column="25" lean-forward="true" selection-start-line="98" selection-start-column="25" selection-end-line="98" selection-end-column="25" />
|
<caret line="37" column="36" selection-start-line="37" selection-start-column="36" selection-end-line="37" selection-end-column="36" />
|
||||||
<folding>
|
|
||||||
<element signature="e#24#67#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/static/js/food/cat.js">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="341">
|
|
||||||
<caret line="11" lean-forward="true" selection-start-line="11" selection-end-line="11" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/food/cat.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-1962">
|
|
||||||
<caret line="1" column="19" lean-forward="true" selection-start-line="1" selection-start-column="19" selection-end-line="1" selection-end-column="19" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/common/tab_food.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor" />
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/food/set.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="301">
|
|
||||||
<caret line="88" selection-start-line="88" selection-end-line="88" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/food/cat_set.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="275">
|
|
||||||
<caret line="39" column="18" lean-forward="true" selection-start-line="39" selection-start-column="18" selection-end-line="39" selection-end-column="18" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/account/set.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="186">
|
|
||||||
<caret line="6" column="8" selection-start-line="6" selection-start-column="8" selection-end-line="6" selection-end-column="8" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file pinned="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/controllers/account/Account.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="496">
|
|
||||||
<caret line="22" column="2" selection-start-line="22" selection-start-column="2" selection-end-line="28" selection-end-column="5" />
|
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#24#76#0" expanded="true" />
|
<element signature="e#24#76#0" expanded="true" />
|
||||||
|
<element signature="e#552#3166#0" />
|
||||||
|
<element signature="e#2377#3215#0" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file pinned="false" current-in-tab="false">
|
<file pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/mina/pages/index/index.wxml">
|
<entry file="file://$PROJECT_DIR$/config/base_setting.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="589">
|
<state relative-caret-position="315">
|
||||||
<caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
|
<caret line="44" column="35" selection-start-line="44" selection-start-column="35" selection-end-line="44" selection-end-column="35" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/common/layout_main.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="374">
|
||||||
|
<caret line="109" column="6" selection-start-line="109" selection-start-column="6" selection-end-line="109" selection-end-column="6" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/libs/UploadService.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="186">
|
||||||
|
<caret line="15" column="29" lean-forward="true" selection-start-line="15" selection-start-column="29" selection-end-line="15" selection-end-column="29" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#66#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
@@ -147,6 +154,8 @@
|
|||||||
<find>sav</find>
|
<find>sav</find>
|
||||||
<find>save</find>
|
<find>save</find>
|
||||||
<find>wrap_cat_set</find>
|
<find>wrap_cat_set</find>
|
||||||
|
<find>img_k</find>
|
||||||
|
<find>upl</find>
|
||||||
</findStrings>
|
</findStrings>
|
||||||
<replaceStrings>
|
<replaceStrings>
|
||||||
<replace>ops_render</replace>
|
<replace>ops_render</replace>
|
||||||
@@ -158,40 +167,31 @@
|
|||||||
<component name="IdeDocumentHistory">
|
<component name="IdeDocumentHistory">
|
||||||
<option name="CHANGED_PATHS">
|
<option name="CHANGED_PATHS">
|
||||||
<list>
|
<list>
|
||||||
<option value="$PROJECT_DIR$/docs/mysql.md" />
|
|
||||||
<option value="$PROJECT_DIR$/readme.md" />
|
|
||||||
<option value="$PROJECT_DIR$/manager.py" />
|
<option value="$PROJECT_DIR$/manager.py" />
|
||||||
<option value="$PROJECT_DIR$/mina/project.config.json" />
|
<option value="$PROJECT_DIR$/mina/project.config.json" />
|
||||||
<option value="$PROJECT_DIR$/common/models/User.py" />
|
<option value="$PROJECT_DIR$/common/models/User.py" />
|
||||||
<option value="$PROJECT_DIR$/requirements.txt" />
|
<option value="$PROJECT_DIR$/requirements.txt" />
|
||||||
<option value="$PROJECT_DIR$/application.py" />
|
|
||||||
<option value="$PROJECT_DIR$/config/__init__.py" />
|
<option value="$PROJECT_DIR$/config/__init__.py" />
|
||||||
<option value="$PROJECT_DIR$/common/__init__.py" />
|
<option value="$PROJECT_DIR$/common/__init__.py" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/user/login.html" />
|
<option value="$PROJECT_DIR$/web/templates/user/login.html" />
|
||||||
<option value="$PROJECT_DIR$/web/static/js/common.js" />
|
|
||||||
<option value="$PROJECT_DIR$/web/static/js/user/login.js" />
|
<option value="$PROJECT_DIR$/web/static/js/user/login.js" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/common/layout_main.html" />
|
|
||||||
<option value="$PROJECT_DIR$/common/libs/user/Helper.py" />
|
<option value="$PROJECT_DIR$/common/libs/user/Helper.py" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/index.py" />
|
<option value="$PROJECT_DIR$/web/controllers/index.py" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/stat/Stat.py" />
|
<option value="$PROJECT_DIR$/web/controllers/stat/Stat.py" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/finance/Finance.py" />
|
<option value="$PROJECT_DIR$/web/controllers/finance/Finance.py" />
|
||||||
<option value="$PROJECT_DIR$/web/static/js/user/edit.js" />
|
<option value="$PROJECT_DIR$/web/static/js/user/edit.js" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/user/edit.html" />
|
<option value="$PROJECT_DIR$/web/templates/user/edit.html" />
|
||||||
<option value="$PROJECT_DIR$/common/libs/Helper.py" />
|
|
||||||
<option value="$PROJECT_DIR$/web/templates/account/index.html" />
|
<option value="$PROJECT_DIR$/web/templates/account/index.html" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/account/set.html" />
|
<option value="$PROJECT_DIR$/web/templates/account/set.html" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/user/User.py" />
|
<option value="$PROJECT_DIR$/web/controllers/user/User.py" />
|
||||||
<option value="$PROJECT_DIR$/web/static/js/account/index.js" />
|
<option value="$PROJECT_DIR$/web/static/js/account/index.js" />
|
||||||
<option value="$PROJECT_DIR$/common/libs/UrlManager.py" />
|
|
||||||
<option value="$PROJECT_DIR$/common/models/log/AppAccessLog.py" />
|
<option value="$PROJECT_DIR$/common/models/log/AppAccessLog.py" />
|
||||||
<option value="$PROJECT_DIR$/common/models/log/AppErrorLog.py" />
|
<option value="$PROJECT_DIR$/common/models/log/AppErrorLog.py" />
|
||||||
<option value="$PROJECT_DIR$/web/interceptors/AuthInterceptor.py" />
|
<option value="$PROJECT_DIR$/web/interceptors/AuthInterceptor.py" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/account/info.html" />
|
<option value="$PROJECT_DIR$/web/templates/account/info.html" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/account/Account.py" />
|
<option value="$PROJECT_DIR$/web/controllers/account/Account.py" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/api/__init__.py" />
|
<option value="$PROJECT_DIR$/web/controllers/api/__init__.py" />
|
||||||
<option value="$PROJECT_DIR$/www.py" />
|
|
||||||
<option value="$PROJECT_DIR$/config/local_setting.py" />
|
<option value="$PROJECT_DIR$/config/local_setting.py" />
|
||||||
<option value="$PROJECT_DIR$/config/base_setting.py" />
|
|
||||||
<option value="$PROJECT_DIR$/数据库文件/自动生成models.txt" />
|
<option value="$PROJECT_DIR$/数据库文件/自动生成models.txt" />
|
||||||
<option value="$PROJECT_DIR$/common/models/member/Oauth_member_bind.py" />
|
<option value="$PROJECT_DIR$/common/models/member/Oauth_member_bind.py" />
|
||||||
<option value="$PROJECT_DIR$/common/libs/member/MemberService.py" />
|
<option value="$PROJECT_DIR$/common/libs/member/MemberService.py" />
|
||||||
@@ -205,10 +205,19 @@
|
|||||||
<option value="$PROJECT_DIR$/web/templates/member/info.html" />
|
<option value="$PROJECT_DIR$/web/templates/member/info.html" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/member/Member.py" />
|
<option value="$PROJECT_DIR$/web/controllers/member/Member.py" />
|
||||||
<option value="$PROJECT_DIR$/web/static/js/member/index.js" />
|
<option value="$PROJECT_DIR$/web/static/js/member/index.js" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/food/set.html" />
|
|
||||||
<option value="$PROJECT_DIR$/web/templates/food/cat_set.html" />
|
<option value="$PROJECT_DIR$/web/templates/food/cat_set.html" />
|
||||||
<option value="$PROJECT_DIR$/web/templates/food/cat.html" />
|
<option value="$PROJECT_DIR$/web/templates/food/cat.html" />
|
||||||
|
<option value="$PROJECT_DIR$/www.py" />
|
||||||
|
<option value="$PROJECT_DIR$/common/libs/UrlManager.py" />
|
||||||
|
<option value="$PROJECT_DIR$/config/base_setting.py" />
|
||||||
|
<option value="$PROJECT_DIR$/web/static/js/common.js" />
|
||||||
|
<option value="$PROJECT_DIR$/web/static/js/food/set.js" />
|
||||||
|
<option value="$PROJECT_DIR$/web/templates/food/set.html" />
|
||||||
|
<option value="$PROJECT_DIR$/application.py" />
|
||||||
|
<option value="$PROJECT_DIR$/common/libs/Helper.py" />
|
||||||
<option value="$PROJECT_DIR$/web/controllers/food/Food.py" />
|
<option value="$PROJECT_DIR$/web/controllers/food/Food.py" />
|
||||||
|
<option value="$PROJECT_DIR$/web/templates/food/index.html" />
|
||||||
|
<option value="$PROJECT_DIR$/web/templates/common/layout_main.html" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -222,8 +231,8 @@
|
|||||||
<packageJsonPaths />
|
<packageJsonPaths />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectFrameBounds">
|
<component name="ProjectFrameBounds">
|
||||||
<option name="x" value="1008" />
|
<option name="x" value="1029" />
|
||||||
<option name="y" value="31" />
|
<option name="y" value="30" />
|
||||||
<option name="width" value="887" />
|
<option name="width" value="887" />
|
||||||
<option name="height" value="939" />
|
<option name="height" value="939" />
|
||||||
</component>
|
</component>
|
||||||
@@ -255,14 +264,14 @@
|
|||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
<item name="order" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="common" type="462c0819:PsiDirectoryNode" />
|
<item name="common" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="models" type="462c0819:PsiDirectoryNode" />
|
<item name="libs" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="food" type="462c0819:PsiDirectoryNode" />
|
||||||
</path>
|
</path>
|
||||||
<path>
|
<path>
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
<item name="order" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="common" type="462c0819:PsiDirectoryNode" />
|
<item name="common" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="models" type="462c0819:PsiDirectoryNode" />
|
<item name="models" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="food" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
</path>
|
||||||
<path>
|
<path>
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
||||||
@@ -280,34 +289,6 @@
|
|||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
<item name="web" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="controllers" type="462c0819:PsiDirectoryNode" />
|
<item name="controllers" type="462c0819:PsiDirectoryNode" />
|
||||||
</path>
|
</path>
|
||||||
<path>
|
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="controllers" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="account" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="controllers" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="api" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="controllers" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="food" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="controllers" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="member" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
<path>
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
<item name="order" type="462c0819:PsiDirectoryNode" />
|
||||||
@@ -321,22 +302,6 @@
|
|||||||
<item name="static" type="462c0819:PsiDirectoryNode" />
|
<item name="static" type="462c0819:PsiDirectoryNode" />
|
||||||
<item name="js" type="462c0819:PsiDirectoryNode" />
|
<item name="js" type="462c0819:PsiDirectoryNode" />
|
||||||
</path>
|
</path>
|
||||||
<path>
|
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="static" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="js" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="food" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="web" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="static" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="js" type="462c0819:PsiDirectoryNode" />
|
|
||||||
<item name="member" type="462c0819:PsiDirectoryNode" />
|
|
||||||
</path>
|
|
||||||
<path>
|
<path>
|
||||||
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
<item name="order" type="b2602c69:ProjectViewProjectNode" />
|
||||||
<item name="order" type="462c0819:PsiDirectoryNode" />
|
<item name="order" type="462c0819:PsiDirectoryNode" />
|
||||||
@@ -376,7 +341,7 @@
|
|||||||
<component name="PropertiesComponent">
|
<component name="PropertiesComponent">
|
||||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$/web/templates/common" />
|
<property name="last_opened_file_path" value="$PROJECT_DIR$/common/libs" />
|
||||||
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
|
||||||
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
|
||||||
<property name="options.lastSelected" value="com.jetbrains.python.configuration.PythonSdkConfigurable" />
|
<property name="options.lastSelected" value="com.jetbrains.python.configuration.PythonSdkConfigurable" />
|
||||||
@@ -387,11 +352,11 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="CopyFile.RECENT_KEYS">
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
<recent name="D:\order\web\templates\common" />
|
<recent name="D:\order\common\libs" />
|
||||||
<recent name="D:\order\web\static\js" />
|
<recent name="D:\order\web\static" />
|
||||||
<recent name="D:\order\common\models" />
|
<recent name="D:\order\common\models" />
|
||||||
<recent name="D:\order\web\static\js\member" />
|
<recent name="D:\order\web\controllers" />
|
||||||
<recent name="D:\order\common\libs\member" />
|
<recent name="D:\order\web\templates\common" />
|
||||||
</key>
|
</key>
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
<recent name="D:\order\common\libs" />
|
<recent name="D:\order\common\libs" />
|
||||||
@@ -521,7 +486,14 @@
|
|||||||
<option name="project" value="LOCAL" />
|
<option name="project" value="LOCAL" />
|
||||||
<updated>1564655284808</updated>
|
<updated>1564655284808</updated>
|
||||||
</task>
|
</task>
|
||||||
<option name="localTasksCounter" value="15" />
|
<task id="LOCAL-00015" summary="python学习">
|
||||||
|
<created>1564727948258</created>
|
||||||
|
<option name="number" value="00015" />
|
||||||
|
<option name="presentableId" value="LOCAL-00015" />
|
||||||
|
<option name="project" value="LOCAL" />
|
||||||
|
<updated>1564727948258</updated>
|
||||||
|
</task>
|
||||||
|
<option name="localTasksCounter" value="16" />
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TodoView">
|
<component name="TodoView">
|
||||||
@@ -534,9 +506,9 @@
|
|||||||
</todo-panel>
|
</todo-panel>
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="1008" y="31" width="887" height="939" extended-state="0" />
|
<frame x="1029" y="30" width="887" height="939" extended-state="0" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.27561837" />
|
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.26855123" />
|
||||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||||
<window_info id="Favorites" order="2" side_tool="true" />
|
<window_info id="Favorites" order="2" side_tool="true" />
|
||||||
<window_info id="Project Explorer" order="3" />
|
<window_info id="Project Explorer" order="3" />
|
||||||
@@ -551,7 +523,7 @@
|
|||||||
<window_info anchor="bottom" id="TODO" order="6" weight="0.32960895" />
|
<window_info anchor="bottom" id="TODO" order="6" weight="0.32960895" />
|
||||||
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
||||||
<window_info anchor="bottom" id="Database Changes" order="8" show_stripe_button="false" />
|
<window_info anchor="bottom" id="Database Changes" order="8" show_stripe_button="false" />
|
||||||
<window_info anchor="bottom" id="Terminal" order="9" visible="true" weight="0.27791563" />
|
<window_info active="true" anchor="bottom" id="Terminal" order="9" visible="true" weight="0.28163773" />
|
||||||
<window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
|
<window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
|
||||||
<window_info anchor="bottom" id="Version Control" order="11" />
|
<window_info anchor="bottom" id="Version Control" order="11" />
|
||||||
<window_info anchor="bottom" id="Python Console" order="12" />
|
<window_info anchor="bottom" id="Python Console" order="12" />
|
||||||
@@ -575,130 +547,6 @@
|
|||||||
<option name="LAST_COMMIT_MESSAGE" value="python学习" />
|
<option name="LAST_COMMIT_MESSAGE" value="python学习" />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
<component name="editorHistoryManager">
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/common/tab_user.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="279">
|
|
||||||
<caret line="9" column="21" lean-forward="true" selection-start-line="9" selection-start-column="21" selection-end-line="9" selection-end-column="21" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/controllers/user/User.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="899">
|
|
||||||
<caret line="41" lean-forward="true" selection-start-line="41" selection-end-line="41" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/static/js/account/index.js">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="1426">
|
|
||||||
<caret line="46" column="2" lean-forward="true" selection-start-line="46" selection-start-column="2" selection-end-line="46" selection-end-column="2" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/models/AppAccessLog.py" />
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/models/log/AppErrorLog.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="215">
|
|
||||||
<caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#16#78#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/interceptors/AuthInterceptor.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="558">
|
|
||||||
<caret line="26" column="21" selection-start-line="26" selection-start-column="15" selection-end-line="26" selection-end-column="27" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#24#51#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/models/log/AppAccessLog.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="310">
|
|
||||||
<caret line="12" column="14" selection-start-line="12" selection-start-column="4" selection-end-line="12" selection-end-column="14" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#16#90#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/account/info.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="1612">
|
|
||||||
<caret line="52" column="55" selection-start-line="52" selection-start-column="51" selection-end-line="52" selection-end-column="55" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/interceptors/ErrorInterceptor.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="186">
|
|
||||||
<caret line="8" column="21" selection-start-line="8" selection-start-column="21" selection-end-line="8" selection-end-column="21" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#24#52#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/error/error.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor" />
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/libs/UrlManager.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="465">
|
|
||||||
<caret line="16" column="22" selection-start-line="16" selection-start-column="22" selection-end-line="16" selection-end-column="22" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#24#35#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/libs/LogService.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="80">
|
|
||||||
<caret line="10" column="8" selection-start-line="10" selection-start-column="8" selection-end-line="10" selection-end-column="8" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#24#51#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/mina/project.config.json">
|
|
||||||
<provider selected="true" editor-type-id="text-editor" />
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/manager.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="248">
|
|
||||||
<caret line="10" selection-start-line="10" selection-end-line="10" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#24#59#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/controllers/api/__init__.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="62">
|
|
||||||
<caret line="2" column="22" selection-start-line="2" selection-start-column="22" selection-end-line="2" selection-end-column="22" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/www.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="651">
|
|
||||||
<caret line="21" column="41" lean-forward="true" selection-start-line="21" selection-start-column="41" selection-end-line="21" selection-end-column="41" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/mina/app.json">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-837" />
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/数据库文件/自动生成models.txt">
|
<entry file="file://$PROJECT_DIR$/数据库文件/自动生成models.txt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="31">
|
<state relative-caret-position="31">
|
||||||
@@ -716,13 +564,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/config/base_setting.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="279">
|
|
||||||
<caret line="9" column="19" selection-start-line="9" selection-start-column="19" selection-end-line="9" selection-end-column="19" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/mina/app.js">
|
<entry file="file://$PROJECT_DIR$/mina/app.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="2387">
|
<state relative-caret-position="2387">
|
||||||
@@ -754,23 +595,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/config/local_setting.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="248">
|
|
||||||
<caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/libs/Helper.py">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="185">
|
|
||||||
<caret line="6" column="4" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="4" />
|
|
||||||
<folding>
|
|
||||||
<element signature="e#24#59#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/member/comment.html">
|
<entry file="file://$PROJECT_DIR$/web/templates/member/comment.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-846" />
|
<state relative-caret-position="-846" />
|
||||||
@@ -859,13 +683,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/数据库文件/food.sql">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="-372">
|
|
||||||
<caret line="148" selection-start-line="148" selection-end-line="160" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/web/static/js/member/index.js">
|
<entry file="file://$PROJECT_DIR$/web/static/js/member/index.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="403">
|
<state relative-caret-position="403">
|
||||||
@@ -885,13 +702,6 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/food/set.html">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="301">
|
|
||||||
<caret line="88" selection-start-line="88" selection-end-line="88" />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/common/models/food/FoodCat.py">
|
<entry file="file://$PROJECT_DIR$/common/models/food/FoodCat.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="124">
|
<state relative-caret-position="124">
|
||||||
@@ -919,26 +729,175 @@
|
|||||||
<entry file="file://$PROJECT_DIR$/web/static/js/food/cat.js">
|
<entry file="file://$PROJECT_DIR$/web/static/js/food/cat.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="341">
|
<state relative-caret-position="341">
|
||||||
<caret line="11" lean-forward="true" selection-start-line="11" selection-end-line="11" />
|
<caret line="11" selection-start-line="11" selection-end-line="11" />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/web/templates/food/cat.html">
|
<entry file="file://$PROJECT_DIR$/web/templates/food/cat.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="-1962">
|
<state relative-caret-position="-1962">
|
||||||
<caret line="1" column="19" lean-forward="true" selection-start-line="1" selection-start-column="19" selection-end-line="1" selection-end-column="19" />
|
<caret line="1" column="19" selection-start-line="1" selection-start-column="19" selection-end-line="1" selection-end-column="19" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/www.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="463">
|
||||||
|
<caret line="32" column="61" selection-start-line="32" selection-start-column="61" selection-end-line="32" selection-end-column="61" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/models/Image.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/upload/readme.md">
|
||||||
|
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||||
|
<state split_layout="SPLIT">
|
||||||
|
<first_editor />
|
||||||
|
<second_editor />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/libs/UrlManager.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="527">
|
||||||
|
<caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#35#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/config/production_setting.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/config/local_setting.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="248">
|
||||||
|
<caret line="8" lean-forward="true" selection-start-line="8" selection-end-line="8" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/libs/UploadService.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="186">
|
||||||
|
<caret line="15" column="29" lean-forward="true" selection-start-line="15" selection-start-column="29" selection-end-line="15" selection-end-column="29" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#66#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/upload/20190802/57cf16593a3c4398a9503cb80c924da9.png">
|
||||||
|
<provider selected="true" editor-type-id="images" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/upload/20190802/a0704e7fdbf74dc3a98169a9602e22b8.png">
|
||||||
|
<provider selected="true" editor-type-id="images" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/upload/20190802/ea3743a978504fa0988fed9b2b3686a0.png">
|
||||||
|
<provider selected="true" editor-type-id="images" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/数据库文件/food.sql">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="186">
|
||||||
|
<caret line="171" lean-forward="true" selection-start-line="171" selection-end-line="171" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/controllers/upload/Upload.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="1364">
|
||||||
|
<caret line="44" lean-forward="true" selection-start-line="44" selection-end-line="44" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#67#0" expanded="true" />
|
||||||
|
<element signature="e#1609#2060#0" />
|
||||||
|
<element signature="e#2080#2657#0" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/js/food/set.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="-2082">
|
||||||
|
<caret line="53" column="13" lean-forward="true" selection-start-line="53" selection-start-column="13" selection-end-line="53" selection-end-column="13" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/libs/food/FoodService.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state>
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#54#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/food/info.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor" />
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/application.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="298">
|
||||||
|
<caret line="25" column="66" selection-start-line="25" selection-start-column="66" selection-end-line="25" selection-end-column="66" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/food/set.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="203">
|
||||||
|
<caret line="41" column="30" lean-forward="true" selection-start-line="41" selection-start-column="30" selection-end-line="41" selection-end-column="30" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/libs/Helper.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="112">
|
||||||
|
<caret line="110" column="22" selection-start-line="110" selection-start-column="22" selection-end-line="110" selection-end-column="22" />
|
||||||
|
<folding>
|
||||||
|
<element signature="e#24#59#0" expanded="true" />
|
||||||
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/web/controllers/food/Food.py">
|
<entry file="file://$PROJECT_DIR$/web/controllers/food/Food.py">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="718">
|
<state relative-caret-position="31">
|
||||||
<caret line="98" column="25" lean-forward="true" selection-start-line="98" selection-start-column="25" selection-end-line="98" selection-end-column="25" />
|
<caret line="37" column="36" selection-start-line="37" selection-start-column="36" selection-end-line="37" selection-end-column="36" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#24#67#0" expanded="true" />
|
<element signature="e#24#76#0" expanded="true" />
|
||||||
|
<element signature="e#552#3166#0" />
|
||||||
|
<element signature="e#2377#3215#0" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/food/index.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="372">
|
||||||
|
<caret line="12" column="11" lean-forward="true" selection-start-line="12" selection-start-column="11" selection-end-line="12" selection-end-column="11" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/config/base_setting.py">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="315">
|
||||||
|
<caret line="44" column="35" selection-start-line="44" selection-start-column="35" selection-end-line="44" selection-end-column="35" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/templates/common/layout_main.html">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="374">
|
||||||
|
<caret line="109" column="6" selection-start-line="109" selection-start-column="6" selection-end-line="109" selection-end-column="6" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/web/static/js/common.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="320">
|
||||||
|
<caret line="156" column="6" lean-forward="true" selection-start-line="156" selection-start-column="6" selection-end-line="156" selection-end-column="6" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
@@ -23,4 +23,5 @@ manager = Manager( app )
|
|||||||
from common.libs.UrlManager import UrlManager
|
from common.libs.UrlManager import UrlManager
|
||||||
app.add_template_global(UrlManager.buildStaticUrl, 'buildStaticUrl')
|
app.add_template_global(UrlManager.buildStaticUrl, 'buildStaticUrl')
|
||||||
app.add_template_global(UrlManager.buildUrl, 'buildUrl')
|
app.add_template_global(UrlManager.buildUrl, 'buildUrl')
|
||||||
|
app.add_template_global(UrlManager.buildImageUrl, 'buildImageUrl')
|
||||||
|
|
||||||
|
|||||||
@@ -65,3 +65,63 @@ def ops_render( template,context = {} ):
|
|||||||
def getCurrentDate( format = "%Y-%m-%d %H:%M:%S"):
|
def getCurrentDate( format = "%Y-%m-%d %H:%M:%S"):
|
||||||
#return datetime.datetime.now().strftime( format )
|
#return datetime.datetime.now().strftime( format )
|
||||||
return datetime.datetime.now()
|
return datetime.datetime.now()
|
||||||
|
|
||||||
|
'''
|
||||||
|
获取格式化的时间
|
||||||
|
'''
|
||||||
|
def getFormatDate( date = None ,format = "%Y-%m-%d %H:%M:%S" ):
|
||||||
|
if date is None:
|
||||||
|
date = datetime.datetime.now()
|
||||||
|
|
||||||
|
return date.strftime( format )
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
根据某个字段获取一个dic出来
|
||||||
|
'''
|
||||||
|
def getDictFilterField( db_model,select_filed,key_field,id_list ):
|
||||||
|
ret = {}
|
||||||
|
query = db_model.query
|
||||||
|
if id_list and len( id_list ) > 0:
|
||||||
|
query = query.filter( select_filed.in_( id_list ) )
|
||||||
|
|
||||||
|
list = query.all()
|
||||||
|
if not list:
|
||||||
|
return ret
|
||||||
|
for item in list:
|
||||||
|
if not hasattr( item,key_field ):
|
||||||
|
break
|
||||||
|
|
||||||
|
ret[ getattr( item,key_field ) ] = item
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def selectFilterObj( obj,field ):
|
||||||
|
ret = []
|
||||||
|
for item in obj:
|
||||||
|
if not hasattr(item, field ):
|
||||||
|
break
|
||||||
|
if getattr( item,field ) in ret:
|
||||||
|
continue
|
||||||
|
ret.append( getattr( item,field ) )
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
def getDictFilterField( db_model,select_filed,key_field,id_list ):
|
||||||
|
ret = {}
|
||||||
|
query = db_model.query
|
||||||
|
if id_list and len( id_list ) > 0:
|
||||||
|
query = query.filter( select_filed.in_( id_list ) )
|
||||||
|
|
||||||
|
list = query.all()
|
||||||
|
if not list:
|
||||||
|
return ret
|
||||||
|
for item in list:
|
||||||
|
if not hasattr( item,key_field ):
|
||||||
|
break
|
||||||
|
if getattr( item,key_field ) not in ret:
|
||||||
|
ret[getattr(item, key_field)] = []
|
||||||
|
|
||||||
|
ret[ getattr( item,key_field ) ].append(item )
|
||||||
|
return ret
|
||||||
41
common/libs/UploadService.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from werkzeug.utils import secure_filename
|
||||||
|
from application import app,db
|
||||||
|
from common.libs.Helper import getCurrentDate
|
||||||
|
import datetime
|
||||||
|
import os,stat,uuid
|
||||||
|
from common.models.Image import Image
|
||||||
|
class UploadService():
|
||||||
|
@staticmethod
|
||||||
|
def uploadByFile( file ):
|
||||||
|
config_upload = app.config['UPLOAD']
|
||||||
|
resp = { 'code':200,'msg':'操作成功~~','data':{} }
|
||||||
|
filename = secure_filename( file.filename )
|
||||||
|
ext = filename.rsplit(".",1)[1]
|
||||||
|
if ext not in config_upload['ext']:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "不允许的扩展类型文件"
|
||||||
|
return resp
|
||||||
|
|
||||||
|
|
||||||
|
root_path = app.root_path + config_upload['prefix_path']
|
||||||
|
#不使用getCurrentDate创建目录,为了保证其他写的可以用,这里改掉,服务器上好像对时间不兼容
|
||||||
|
file_dir = datetime.datetime.now().strftime("%Y%m%d")
|
||||||
|
save_dir = root_path + file_dir
|
||||||
|
if not os.path.exists( save_dir ):
|
||||||
|
os.mkdir( save_dir )
|
||||||
|
os.chmod( save_dir,stat.S_IRWXU | stat.S_IRGRP | stat.S_IRWXO )
|
||||||
|
|
||||||
|
file_name = str( uuid.uuid4() ).replace("-","") + "." + ext
|
||||||
|
file.save( "{0}/{1}".format( save_dir,file_name ) )
|
||||||
|
|
||||||
|
model_image = Image()
|
||||||
|
model_image.file_key = file_dir + "/" + file_name
|
||||||
|
model_image.created_time = getCurrentDate()
|
||||||
|
db.session.add( model_image)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
resp['data'] = {
|
||||||
|
'file_key': model_image.file_key
|
||||||
|
}
|
||||||
|
return resp
|
||||||
@@ -15,3 +15,9 @@ class UrlManager(object):
|
|||||||
ver = "%s" % (int(time.time())) if not release_version else release_version
|
ver = "%s" % (int(time.time())) if not release_version else release_version
|
||||||
path = "/static" + path + "?ver=" + ver
|
path = "/static" + path + "?ver=" + ver
|
||||||
return UrlManager.buildUrl( path )
|
return UrlManager.buildUrl( path )
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def buildImageUrl( path ):
|
||||||
|
app_config = app.config['APP']
|
||||||
|
url = app_config['domain'] + app.config['UPLOAD']['prefix_url'] + path
|
||||||
|
return url
|
||||||
28
common/libs/food/FoodService.py
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from application import app,db
|
||||||
|
from common.models.food.FoodStockChangeLog import FoodStockChangeLog
|
||||||
|
from common.models.food.Food import Food
|
||||||
|
from common.libs.Helper import getCurrentDate
|
||||||
|
class FoodService():
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def setStockChangeLog( food_id = 0,quantity = 0,note = '' ):
|
||||||
|
|
||||||
|
if food_id < 1:
|
||||||
|
return False
|
||||||
|
|
||||||
|
food_info = Food.query.filter_by( id = food_id ).first()
|
||||||
|
if not food_info:
|
||||||
|
return False
|
||||||
|
|
||||||
|
model_stock_change = FoodStockChangeLog()
|
||||||
|
model_stock_change.food_id = food_id
|
||||||
|
model_stock_change.unit = quantity
|
||||||
|
model_stock_change.total_stock = food_info.stock
|
||||||
|
model_stock_change.note = note
|
||||||
|
model_stock_change.created_time = getCurrentDate()
|
||||||
|
db.session.add(model_stock_change)
|
||||||
|
db.session.commit()
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
12
common/models/Image.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# coding: utf-8
|
||||||
|
from sqlalchemy import Column, DateTime, Integer, String
|
||||||
|
from sqlalchemy.schema import FetchedValue
|
||||||
|
|
||||||
|
from application import db
|
||||||
|
|
||||||
|
class Image(db.Model):
|
||||||
|
__tablename__ = 'images'
|
||||||
|
|
||||||
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
|
file_key = db.Column(db.String(60), nullable=False, server_default=db.FetchedValue())
|
||||||
|
created_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue())
|
||||||
@@ -34,3 +34,13 @@ MINA_APP = {
|
|||||||
'mch_id':'xxxxxxxxxxxx换自己的',
|
'mch_id':'xxxxxxxxxxxx换自己的',
|
||||||
'callback_url':'/api/order/callback'
|
'callback_url':'/api/order/callback'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UPLOAD = {
|
||||||
|
'ext':[ 'jpg','gif','bmp','jpeg','png' ],
|
||||||
|
'prefix_path':'/web/static/upload/',
|
||||||
|
'prefix_url':'/static/upload/'
|
||||||
|
}
|
||||||
|
|
||||||
|
APP = {
|
||||||
|
'domain':'http://127.0.0.1:9000'
|
||||||
|
}
|
||||||
@@ -1,24 +1,150 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from flask import Blueprint,request,jsonify
|
from flask import Blueprint,request,jsonify,redirect
|
||||||
|
from common.models.food.Food import Food
|
||||||
from common.libs.Helper import ops_render
|
from common.libs.Helper import ops_render
|
||||||
from common.models.food.FoodCat import FoodCat
|
from common.models.food.FoodCat import FoodCat
|
||||||
from application import app,db
|
from application import app,db
|
||||||
from common.libs.Helper import getCurrentDate
|
from common.libs.Helper import getCurrentDate,iPagination,getDictFilterField
|
||||||
|
from common.libs.food.FoodService import FoodService
|
||||||
|
from common.libs.UrlManager import UrlManager
|
||||||
|
from decimal import Decimal
|
||||||
|
from sqlalchemy import or_
|
||||||
route_food = Blueprint( 'food_page',__name__ )
|
route_food = Blueprint( 'food_page',__name__ )
|
||||||
|
|
||||||
@route_food.route( "/index" )
|
@route_food.route( "/index" )
|
||||||
def index():
|
def index():
|
||||||
return ops_render( "food/index.html" )
|
resp_data = {}
|
||||||
|
req = request.values
|
||||||
|
page = int(req['p']) if ('p' in req and req['p']) else 1
|
||||||
|
query = Food.query
|
||||||
|
if 'mix_kw' in req:
|
||||||
|
rule = or_(Food.name.ilike("%{0}%".format(req['mix_kw'])), Food.tags.ilike("%{0}%".format(req['mix_kw'])))
|
||||||
|
query = query.filter( rule )
|
||||||
|
|
||||||
|
if 'status' in req and int( req['status'] ) > -1 :
|
||||||
|
query = query.filter( Food.status == int( req['status'] ) )
|
||||||
|
|
||||||
|
if 'cat_id' in req and int( req['cat_id'] ) > 0 :
|
||||||
|
query = query.filter( Food.cat_id == int( req['cat_id'] ) )
|
||||||
|
|
||||||
|
page_params = {
|
||||||
|
'total':query.count(),
|
||||||
|
'page_size': app.config['PAGE_SIZE'],
|
||||||
|
'page':page,
|
||||||
|
'display':app.config['PAGE_DISPLAY'],
|
||||||
|
'url': request.full_path.replace("&p={}".format(page),"")
|
||||||
|
}
|
||||||
|
|
||||||
|
pages = iPagination( page_params )
|
||||||
|
offset = ( page - 1 ) * app.config['PAGE_SIZE']
|
||||||
|
list = query.order_by( Food.id.desc() ).offset( offset ).limit( app.config['PAGE_SIZE'] ).all()
|
||||||
|
|
||||||
|
cat_mapping = getDictFilterField( FoodCat,FoodCat.id,"id",[] )
|
||||||
|
resp_data['list'] = list
|
||||||
|
resp_data['pages'] = pages
|
||||||
|
resp_data['search_con'] = req
|
||||||
|
resp_data['status_mapping'] = app.config['STATUS_MAPPING']
|
||||||
|
resp_data['cat_mapping'] = cat_mapping
|
||||||
|
resp_data['current'] = 'index'
|
||||||
|
return ops_render( "food/index.html",resp_data )
|
||||||
|
|
||||||
|
|
||||||
@route_food.route( "/info" )
|
@route_food.route( "/info" )
|
||||||
def info():
|
def info():
|
||||||
return ops_render( "food/info.html" )
|
return ops_render( "food/info.html" )
|
||||||
|
|
||||||
|
|
||||||
@route_food.route( "/set" )
|
@route_food.route( "/set" ,methods = [ 'GET','POST'] )
|
||||||
def set():
|
def set():
|
||||||
return ops_render( "food/set.html" )
|
if request.method == "GET":
|
||||||
|
resp_data = {}
|
||||||
|
req = request.args
|
||||||
|
id = int(req.get('id', 0))
|
||||||
|
info = Food.query.filter_by(id=id).first()
|
||||||
|
if info and info.status != 1:
|
||||||
|
return redirect(UrlManager.buildUrl("/food/index"))
|
||||||
|
|
||||||
|
cat_list = FoodCat.query.all()
|
||||||
|
resp_data['info'] = info
|
||||||
|
resp_data['cat_list'] = cat_list
|
||||||
|
resp_data['current'] = 'index'
|
||||||
|
return ops_render("food/set.html", resp_data)
|
||||||
|
|
||||||
|
resp = {'code': 200, 'msg': '操作成功~~', 'data': {}}
|
||||||
|
req = request.values
|
||||||
|
id = int(req['id']) if 'id' in req and req['id'] else 0
|
||||||
|
cat_id = int(req['cat_id']) if 'cat_id' in req else 0
|
||||||
|
name = req['name'] if 'name' in req else ''
|
||||||
|
price = req['price'] if 'price' in req else ''
|
||||||
|
main_image = req['main_image'] if 'main_image' in req else ''
|
||||||
|
summary = req['summary'] if 'summary' in req else ''
|
||||||
|
stock = int(req['stock']) if 'stock' in req else ''
|
||||||
|
tags = req['tags'] if 'tags' in req else ''
|
||||||
|
|
||||||
|
if cat_id < 1:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请选择分类~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
if name is None or len(name) < 1:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请输入符合规范的名称~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
if not price or len( price ) < 1:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请输入符合规范的售卖价格~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
price = Decimal(price).quantize(Decimal('0.00'))
|
||||||
|
if price <= 0:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请输入符合规范的售卖价格~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
if main_image is None or len(main_image) < 3:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请上传封面图~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
if summary is None or len(summary) < 3:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请输入图书描述,并不能少于10个字符~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
if stock < 1:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请输入符合规范的库存量~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
if tags is None or len(tags) < 1:
|
||||||
|
resp['code'] = -1
|
||||||
|
resp['msg'] = "请输入标签,便于搜索~~"
|
||||||
|
return jsonify(resp)
|
||||||
|
food_info = Food.query.filter_by(id=id).first()
|
||||||
|
before_stock = 0
|
||||||
|
if food_info:
|
||||||
|
model_food = food_info
|
||||||
|
before_stock = model_food.stock
|
||||||
|
else:
|
||||||
|
model_food = Food()
|
||||||
|
model_food.status = 1
|
||||||
|
model_food.created_time = getCurrentDate()
|
||||||
|
|
||||||
|
model_food.cat_id = cat_id
|
||||||
|
model_food.name = name
|
||||||
|
model_food.price = price
|
||||||
|
model_food.main_image = main_image
|
||||||
|
model_food.summary = summary
|
||||||
|
model_food.stock = stock
|
||||||
|
model_food.tags = tags
|
||||||
|
model_food.updated_time = getCurrentDate()
|
||||||
|
|
||||||
|
db.session.add(model_food)
|
||||||
|
ret = db.session.commit()
|
||||||
|
|
||||||
|
FoodService.setStockChangeLog(model_food.id, int(stock) - int(before_stock), "后台修改")
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
|
||||||
@route_food.route( "/cat" )
|
@route_food.route( "/cat" )
|
||||||
|
|||||||
91
web/controllers/upload/Upload.py
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from flask import Blueprint,request,jsonify
|
||||||
|
from application import app
|
||||||
|
import re,json
|
||||||
|
from common.libs.UploadService import UploadService
|
||||||
|
from common.libs.UrlManager import UrlManager
|
||||||
|
from common.models.Image import Image
|
||||||
|
route_upload = Blueprint('upload_page', __name__)
|
||||||
|
|
||||||
|
'''
|
||||||
|
参考文章:https://segmentfault.com/a/1190000002429055
|
||||||
|
'''
|
||||||
|
|
||||||
|
@route_upload.route("/ueditor",methods = [ "GET","POST" ])
|
||||||
|
def ueditor():
|
||||||
|
|
||||||
|
req = request.values
|
||||||
|
action = req['action'] if 'action' in req else ''
|
||||||
|
|
||||||
|
if action == "config":
|
||||||
|
root_path = app.root_path
|
||||||
|
config_path = "{0}/web/static/plugins/ueditor/upload_config.json".format( root_path )
|
||||||
|
with open( config_path,encoding="utf-8" ) as fp:
|
||||||
|
try:
|
||||||
|
config_data = json.loads( re.sub( r'\/\*.*\*/' ,'',fp.read() ) )
|
||||||
|
except:
|
||||||
|
config_data = {}
|
||||||
|
return jsonify( config_data )
|
||||||
|
|
||||||
|
if action == "uploadimage":
|
||||||
|
return uploadImage()
|
||||||
|
|
||||||
|
if action == "listimage":
|
||||||
|
return listImage()
|
||||||
|
|
||||||
|
return "upload"
|
||||||
|
|
||||||
|
@route_upload.route("/pic",methods = [ "GET","POST" ])
|
||||||
|
def uploadPic():
|
||||||
|
file_target = request.files
|
||||||
|
upfile = file_target['pic'] if 'pic' in file_target else None
|
||||||
|
callback_target = 'window.parent.upload'
|
||||||
|
if upfile is None:
|
||||||
|
return "<script type='text/javascript'>{0}.error('{1}')</script>".format( callback_target,"上传失败" )
|
||||||
|
|
||||||
|
ret = UploadService.uploadByFile(upfile)
|
||||||
|
if ret['code'] != 200:
|
||||||
|
return "<script type='text/javascript'>{0}.error('{1}')</script>".format(callback_target, "上传失败:" + ret['msg'])
|
||||||
|
|
||||||
|
return "<script type='text/javascript'>{0}.success('{1}')</script>".format(callback_target,ret['data']['file_key'] )
|
||||||
|
|
||||||
|
def uploadImage():
|
||||||
|
resp = { 'state':'SUCCESS','url':'','title':'','original':'' }
|
||||||
|
file_target = request.files
|
||||||
|
upfile = file_target['upfile'] if 'upfile' in file_target else None
|
||||||
|
if upfile is None:
|
||||||
|
resp['state'] = "上传失败"
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
ret = UploadService.uploadByFile( upfile )
|
||||||
|
if ret['code'] != 200:
|
||||||
|
resp['state'] = "上传失败:" + ret['msg']
|
||||||
|
return jsonify(resp)
|
||||||
|
|
||||||
|
resp['url'] = UrlManager.buildImageUrl( ret['data']['file_key'] )
|
||||||
|
return jsonify( resp )
|
||||||
|
|
||||||
|
def listImage():
|
||||||
|
resp = { 'state':'SUCCESS','list':[],'start':0 ,'total':0 }
|
||||||
|
|
||||||
|
req = request.values
|
||||||
|
|
||||||
|
start = int( req['start']) if 'start' in req else 0
|
||||||
|
page_size = int( req['size']) if 'size' in req else 20
|
||||||
|
|
||||||
|
query = Image.query
|
||||||
|
if start > 0:
|
||||||
|
query = query.filter( Image.id < start )
|
||||||
|
|
||||||
|
list = query.order_by( Image.id.desc() ).limit( page_size ).all()
|
||||||
|
images = []
|
||||||
|
|
||||||
|
if list:
|
||||||
|
for item in list:
|
||||||
|
images.append( { 'url': UrlManager.buildImageUrl( item.file_key ) } )
|
||||||
|
start = item.id
|
||||||
|
resp['list'] = images
|
||||||
|
resp['start'] = start
|
||||||
|
resp['total'] = len( images )
|
||||||
|
return jsonify( resp )
|
||||||
|
|
||||||
@@ -150,7 +150,11 @@ var common_ops = {
|
|||||||
}
|
}
|
||||||
return url + _paramUrl;
|
return url + _paramUrl;
|
||||||
},
|
},
|
||||||
|
buildPicUrl:function( img_key ){
|
||||||
|
var domain = $(".hidden_layout_wrap input[name=domain]").val();
|
||||||
|
var prefix_url = $(".hidden_layout_wrap input[name=prefix_url]").val();
|
||||||
|
return domain + prefix_url + img_key;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$(document).ready( function() {
|
$(document).ready( function() {
|
||||||
|
|||||||
BIN
web/static/upload/20190802/1ed32d7ec80f4fee91b56065ebc6687f.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
web/static/upload/20190802/23fa0d93ffea4a1fadd6c924bc54da39.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
web/static/upload/20190802/245bc835a2514d0e9c1aaa12a5c8672e.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
web/static/upload/20190802/57cf16593a3c4398a9503cb80c924da9.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
web/static/upload/20190802/6d6d7c6f3af7493f9af856d6c65dd3d9.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
web/static/upload/20190802/80c3611a2d5541998e97bc3d9e282b36.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
web/static/upload/20190802/8b6113a5bfd1486f9756d99d0f6612ab.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
web/static/upload/20190802/92081b8b866d47959666cc6306a3ab64.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
web/static/upload/20190802/9d86635022eb430da950f1069665186f.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
web/static/upload/20190802/a0704e7fdbf74dc3a98169a9602e22b8.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
web/static/upload/20190802/ced439416a7d49b6a694dd0c44cf04f4.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
web/static/upload/20190802/ea3743a978504fa0988fed9b2b3686a0.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
web/static/upload/20190802/f732e82251b141a798f6225718b65639.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
1
web/static/upload/readme.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
上传目录upload
|
||||||
@@ -104,6 +104,10 @@
|
|||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="hidden hidden_layout_wrap">
|
||||||
|
<input name="domain" value="{{ config.APP.domain }}">
|
||||||
|
<input name="prefix_url" value="{{ config.UPLOAD.prefix_url }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
<script src="{{ buildStaticUrl('/plugins/jquery-2.1.1.js') }}"></script>
|
<script src="{{ buildStaticUrl('/plugins/jquery-2.1.1.js') }}"></script>
|
||||||
<script src="{{ buildStaticUrl('/bootstrap/bootstrap.min.js') }}"></script>
|
<script src="{{ buildStaticUrl('/bootstrap/bootstrap.min.js') }}"></script>
|
||||||
|
|||||||
@@ -1,19 +1,6 @@
|
|||||||
{% extends "common/layout_main.html" %}
|
{% extends "common/layout_main.html" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row border-bottom">
|
{% include "common/tab_food.html" %}
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="tab_title">
|
|
||||||
<ul class="nav nav-pills">
|
|
||||||
<li class="current">
|
|
||||||
<a href="{{ buildUrl('/food/index') }}">美食列表</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="{{ buildUrl('/food/cat') }}">分类列表</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-12">
|
<div class="col-lg-12">
|
||||||
<form class="form-inline wrap_search">
|
<form class="form-inline wrap_search">
|
||||||
@@ -21,19 +8,23 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<select name="status" class="form-control inline">
|
<select name="status" class="form-control inline">
|
||||||
<option value="-1">请选择状态</option>
|
<option value="-1">请选择状态</option>
|
||||||
<option value="1">正常</option>
|
{% for tmp_key in status_mapping %}
|
||||||
<option value="0">已删除</option>
|
<option value="{{ tmp_key }}" {% if tmp_key == search_con['status'] %} selected {% endif %}>{{ status_mapping[ tmp_key ] }}</option>
|
||||||
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<select name="cat_id" class="form-control inline">
|
<select name="cat_id" class="form-control inline">
|
||||||
<option value="0">请选择分类</option>
|
<option value="0">请选择分类</option>
|
||||||
<option value="1">111</option>
|
{% for tmp_key in cat_mapping %}
|
||||||
|
<option value="{{ tmp_key }}" {% if tmp_key|string == search_con['cat_id'] %} selected {% endif %} >{{ cat_mapping[ tmp_key].name }}</option>
|
||||||
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input type="text" name="mix_kw" placeholder="请输入关键字" class="form-control" value="">
|
<input type="text" name="mix_kw" placeholder="请输入关键字" class="form-control" value="{{ search_con['mix_kw'] }}">
|
||||||
|
<input type="hidden" name="p" value="{{ search_con['p'] }}">
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button type="button" class="btn btn-primary search">
|
<button type="button" class="btn btn-primary search">
|
||||||
<i class="fa fa-search"></i>搜索
|
<i class="fa fa-search"></i>搜索
|
||||||
@@ -64,35 +55,44 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{% if list %}
|
||||||
|
{% for item in list %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>小鸡炖蘑菇</td>
|
<td>{{ item.name }}</td>
|
||||||
<td>东北菜</td>
|
<td>{{ cat_mapping[ item.cat_id].name }}</td>
|
||||||
<td>0.02</td>
|
<td>{{ item.price }}</td>
|
||||||
<td>27</td>
|
<td>{{ item.stock }}</td>
|
||||||
<td>好吃</td>
|
<td>{{ item.tags }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ buildUrl('/food/info') }}">
|
<a href="{{ buildUrl('/food/info') }}?id={{ item.id }}">
|
||||||
<i class="fa fa-eye fa-lg"></i>
|
<i class="fa fa-eye fa-lg"></i>
|
||||||
</a>
|
</a>
|
||||||
<a class="m-l" href="{{ buildUrl('/food/set') }}">
|
{% if item.status == 1 %}
|
||||||
|
<a class="m-l" href="{{ buildUrl('/food/set') }}?id={{ item.id }}">
|
||||||
<i class="fa fa-edit fa-lg"></i>
|
<i class="fa fa-edit fa-lg"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="m-l remove" href="javascript:void(0);" data="3">
|
<a class="m-l remove" href="javascript:void(0);" data="{{ item.id }}">
|
||||||
<i class="fa fa-trash fa-lg"></i>
|
<i class="fa fa-trash fa-lg"></i>
|
||||||
</a>
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<a class="m-l recover" href="javascript:void(0);" data="{{ item.id }}">
|
||||||
|
<i class="fa fa-rotate-left fa-lg"></i>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<tr><td colspan="6">暂无数据~~</td></tr>
|
||||||
|
{% endif %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div class="row">
|
<!--分页代码已被封装到统一模板文件中-->
|
||||||
<div class="col-lg-12">
|
{% include 'common/pagenation.html' %}
|
||||||
<span class="pagination_count" style="line-height: 40px;">共1条记录 | 每页50条</span>
|
|
||||||
<ul class="pagination pagination-lg pull-right" style="margin: 0 0 ;">
|
|
||||||
<li class="active"><a href="javascript:void(0);">1</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% block js %}
|
||||||
|
<script src="{{ buildStaticUrl('/js/food/index.js') }}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|||||||
@@ -1,19 +1,6 @@
|
|||||||
{% extends "common/layout_main.html" %}
|
{% extends "common/layout_main.html" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row border-bottom">
|
{% include "common/tab_food.html" %}
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="tab_title">
|
|
||||||
<ul class="nav nav-pills">
|
|
||||||
<li class="current">
|
|
||||||
<a href="{{ buildUrl('/food/index') }}">美食列表</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="{{ buildUrl('/food/cat') }}">分类列表</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mg-t20 wrap_food_set" style="">
|
<div class="row mg-t20 wrap_food_set" style="">
|
||||||
<div class="col-lg-12" style="">
|
<div class="col-lg-12" style="">
|
||||||
<h2 class="text-center">设置</h2>
|
<h2 class="text-center">设置</h2>
|
||||||
@@ -24,7 +11,9 @@
|
|||||||
<select name="cat_id" class="form-control select2-hidden-accessible" tabindex="-1"
|
<select name="cat_id" class="form-control select2-hidden-accessible" tabindex="-1"
|
||||||
aria-hidden="true">
|
aria-hidden="true">
|
||||||
<option value="0">请选择分类</option>
|
<option value="0">请选择分类</option>
|
||||||
<option value="8">111</option>
|
{% for item in cat_list %}
|
||||||
|
<option value="{{ item.id }}" {% if item.id == info.cat_id %} selected {% endif %}>{{ item.name }}</option>
|
||||||
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -32,14 +21,14 @@
|
|||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-lg-2 control-label">名称:</label>
|
<label class="col-lg-2 control-label">名称:</label>
|
||||||
<div class="col-lg-10">
|
<div class="col-lg-10">
|
||||||
<input type="text" class="form-control" placeholder="请输入名称" name="name" value="">
|
<input type="text" class="form-control" placeholder="请输入名称" name="name" value="{{ info.name }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-lg-2 control-label">价格:</label>
|
<label class="col-lg-2 control-label">价格:</label>
|
||||||
<div class="col-lg-10">
|
<div class="col-lg-10">
|
||||||
<input type="text" class="form-control" placeholder="请输入售价" name="price" value="">
|
<input type="text" class="form-control" placeholder="请输入售价" name="price" value="{{ info.price }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
@@ -51,6 +40,12 @@
|
|||||||
<i class="fa fa-upload fa-2x"></i>
|
<i class="fa fa-upload fa-2x"></i>
|
||||||
<input type="file" name="pic" accept="image/png, image/jpeg, image/jpg,image/gif">
|
<input type="file" name="pic" accept="image/png, image/jpeg, image/jpg,image/gif">
|
||||||
</div>
|
</div>
|
||||||
|
{% if info and info.main_image %}
|
||||||
|
<span class="pic-each">
|
||||||
|
<img src="{{ buildImageUrl( info.main_image ) }}"/>
|
||||||
|
<span class="fa fa-times-circle del del_image" data="{{ info.main_image }}"></span>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -58,32 +53,50 @@
|
|||||||
<div class="form-group" style="">
|
<div class="form-group" style="">
|
||||||
<label class="col-lg-2 control-label">描述:</label>
|
<label class="col-lg-2 control-label">描述:</label>
|
||||||
<div class="col-lg-10">
|
<div class="col-lg-10">
|
||||||
<textarea id="editor" name="summary" style="height: 300px;"></textarea>
|
<textarea id="editor" name="summary" style="height: 300px;">{{ info.summary }}</textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-lg-2 control-label">库存:</label>
|
<label class="col-lg-2 control-label">库存:</label>
|
||||||
<div class="col-lg-2">
|
<div class="col-lg-2">
|
||||||
<input type="text" name="stock" class="form-control" value="1">
|
<input type="text" name="stock" class="form-control" value="{{ info.stock }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-lg-2 control-label">标签:</label>
|
<label class="col-lg-2 control-label">标签:</label>
|
||||||
<div class="col-lg-10">
|
<div class="col-lg-10">
|
||||||
<input type="text" class="form-control" name="tags" value="">
|
<input type="text" class="form-control" name="tags" value="{{ info.tags }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-lg-4 col-lg-offset-2">
|
<div class="col-lg-4 col-lg-offset-2">
|
||||||
<input type="hidden" name="id" value="0">
|
<input type="hidden" name="id" value="{{ info.id }}">
|
||||||
<button class="btn btn-w-m btn-outline btn-primary save">保存</button>
|
<button class="btn btn-w-m btn-outline btn-primary save">保存</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<iframe name="upload_file" class="hide"></iframe>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
{% block css %}
|
||||||
|
<link href="{{ buildStaticUrl( '/plugins/select2/select2.min.css' ) }}" rel="stylesheet">
|
||||||
|
<link href="{{ buildStaticUrl( '/plugins/tagsinput/jquery.tagsinput.min.css' ) }}" rel="stylesheet">
|
||||||
|
{% endblock %}
|
||||||
|
{% block js %}
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/ueditor/ueditor.config.js' ) }}"></script>
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/ueditor/ueditor.all.min.js' ) }}"></script>
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/ueditor/lang/zh-cn/zh-cn.js' ) }}"></script>
|
||||||
|
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/select2/select2.pinyin.js' ) }}"></script>
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/select2/zh-CN.js' ) }}"></script>
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/select2/pinyin.core.js' ) }}"></script>
|
||||||
|
|
||||||
|
<script src="{{ buildStaticUrl( '/plugins/tagsinput/jquery.tagsinput.min.js' ) }}"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="{{ buildStaticUrl( '/js/food/set.js' ) }}"></script>
|
||||||
|
{% endblock %}
|
||||||
2
www.py
@@ -20,6 +20,7 @@ from web.controllers.food.Food import route_food
|
|||||||
from web.controllers.member.Member import route_member
|
from web.controllers.member.Member import route_member
|
||||||
from web.controllers.stat.Stat import route_stat
|
from web.controllers.stat.Stat import route_stat
|
||||||
from web.controllers.api import route_api
|
from web.controllers.api import route_api
|
||||||
|
from web.controllers.upload.Upload import route_upload
|
||||||
app.register_blueprint( route_index,url_prefix = "/" )
|
app.register_blueprint( route_index,url_prefix = "/" )
|
||||||
app.register_blueprint( route_user,url_prefix = "/user" )
|
app.register_blueprint( route_user,url_prefix = "/user" )
|
||||||
app.register_blueprint( route_static,url_prefix = "/static" )
|
app.register_blueprint( route_static,url_prefix = "/static" )
|
||||||
@@ -29,3 +30,4 @@ app.register_blueprint(route_member,url_prefix="/member")
|
|||||||
app.register_blueprint(route_food,url_prefix="/food")
|
app.register_blueprint(route_food,url_prefix="/food")
|
||||||
app.register_blueprint(route_stat,url_prefix="/stat")
|
app.register_blueprint(route_stat,url_prefix="/stat")
|
||||||
app.register_blueprint( route_api,url_prefix = "/api" )
|
app.register_blueprint( route_api,url_prefix = "/api" )
|
||||||
|
app.register_blueprint( route_upload,url_prefix = "/upload" )
|
||||||
|
|||||||