This commit is contained in:
57
.idea/codeStyles/Project.xml
generated
Normal file
57
.idea/codeStyles/Project.xml
generated
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<HTMLCodeStyleSettings>
|
||||||
|
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
||||||
|
</HTMLCodeStyleSettings>
|
||||||
|
<JSCodeStyleSettings version="0">
|
||||||
|
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
||||||
|
<option name="USE_DOUBLE_QUOTES" value="false" />
|
||||||
|
<option name="FORCE_QUOTE_STYlE" value="true" />
|
||||||
|
<option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
|
||||||
|
<option name="SPACES_WITHIN_OBJECT_TYPE_BRACES" value="false" />
|
||||||
|
</JSCodeStyleSettings>
|
||||||
|
<TypeScriptCodeStyleSettings version="0">
|
||||||
|
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
||||||
|
<option name="USE_DOUBLE_QUOTES" value="false" />
|
||||||
|
<option name="FORCE_QUOTE_STYlE" value="true" />
|
||||||
|
<option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
|
||||||
|
<option name="SPACES_WITHIN_OBJECT_TYPE_BRACES" value="false" />
|
||||||
|
</TypeScriptCodeStyleSettings>
|
||||||
|
<VueCodeStyleSettings>
|
||||||
|
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
|
||||||
|
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
|
||||||
|
</VueCodeStyleSettings>
|
||||||
|
<codeStyleSettings language="HTML">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JavaScript">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="TypeScript">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Vue">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
6
.idea/git_toolbox_blame.xml
generated
Normal file
6
.idea/git_toolbox_blame.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GitToolBoxBlameSettings">
|
||||||
|
<option name="version" value="2" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
7
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
7
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
<inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
4
.idea/shelf/___.xml
generated
Normal file
4
.idea/shelf/___.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<changelist name="在变基之前未提交的更改_[更改]" date="1727095460566" recycled="true" deleted="true">
|
||||||
|
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/在变基之前未提交的更改_[更改]/shelved.patch" />
|
||||||
|
<option name="DESCRIPTION" value="在变基之前未提交的更改 [更改]" />
|
||||||
|
</changelist>
|
||||||
1457
.idea/shelf/在变基之前未提交的更改_[更改]/shelved.patch
generated
Normal file
1457
.idea/shelf/在变基之前未提交的更改_[更改]/shelved.patch
generated
Normal file
File diff suppressed because one or more lines are too long
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
187
.idea/workspace.xml
generated
Normal file
187
.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="AutoImportSettings">
|
||||||
|
<option name="autoReloadType" value="SELECTIVE" />
|
||||||
|
</component>
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="7ab9fc39-b8f5-4c75-8b68-06560187de80" name="更改" comment="">
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/components/Cart.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Cart.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/admin/add_order/add_menu/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/admin/add_order/add_menu/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/admin/order_manage/detail/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/admin/order_manage/detail/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/admin/order_manage/list/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/admin/order_manage/list/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/admin/verify/verify_list/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/admin/verify/verify_list/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/admin/withdrawal/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/admin/withdrawal/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/goods/pay/index.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/goods/pay/index.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/index/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/index/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/mer/mer_detail/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/mer/mer_detail/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/users/order_list/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/users/order_list/index.vue" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/pages/users/order_list_detail/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/users/order_list_detail/index.vue" afterDir="false" />
|
||||||
|
</list>
|
||||||
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
|
</component>
|
||||||
|
<component name="Git.Settings">
|
||||||
|
<favorite-branches>
|
||||||
|
<branch-storage>
|
||||||
|
<map>
|
||||||
|
<entry type="REMOTE">
|
||||||
|
<value>
|
||||||
|
<list>
|
||||||
|
<branch-info repo="$PROJECT_DIR$" source="origin/dev" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</branch-storage>
|
||||||
|
</favorite-branches>
|
||||||
|
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||||
|
<map>
|
||||||
|
<entry key="$PROJECT_DIR$" value="test" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
|
</component>
|
||||||
|
<component name="GitToolBoxStore">
|
||||||
|
<option name="recentBranches">
|
||||||
|
<RecentBranches>
|
||||||
|
<option name="branchesForRepo">
|
||||||
|
<list>
|
||||||
|
<RecentBranchesForRepo>
|
||||||
|
<option name="branches">
|
||||||
|
<list>
|
||||||
|
<RecentBranch>
|
||||||
|
<option name="branchName" value="dev" />
|
||||||
|
<option name="lastUsedInstant" value="1727095515" />
|
||||||
|
</RecentBranch>
|
||||||
|
<RecentBranch>
|
||||||
|
<option name="branchName" value="test" />
|
||||||
|
<option name="lastUsedInstant" value="1727095484" />
|
||||||
|
</RecentBranch>
|
||||||
|
<RecentBranch>
|
||||||
|
<option name="branchName" value="master" />
|
||||||
|
<option name="lastUsedInstant" value="1723461333" />
|
||||||
|
</RecentBranch>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="repositoryRootUrl" value="file://$PROJECT_DIR$" />
|
||||||
|
</RecentBranchesForRepo>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</RecentBranches>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectColorInfo">{
|
||||||
|
"associatedIndex": 3
|
||||||
|
}</component>
|
||||||
|
<component name="ProjectId" id="2kR3vxmlfQDhh9CxCzSETybymrq" />
|
||||||
|
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||||
|
<ConfirmationsSetting value="2" id="Add" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectViewState">
|
||||||
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
|
<option name="showLibraryContents" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PropertiesComponent">{
|
||||||
|
"keyToString": {
|
||||||
|
"ASKED_ADD_EXTERNAL_FILES": "true",
|
||||||
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
|
"git-widget-placeholder": "dev",
|
||||||
|
"last_opened_file_path": "E:/ProjectCode/jdt-user",
|
||||||
|
"node.js.detected.package.eslint": "true",
|
||||||
|
"node.js.detected.package.stylelint": "true",
|
||||||
|
"node.js.detected.package.tslint": "true",
|
||||||
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
|
"node.js.selected.package.stylelint": "E:\\ProjectCode\\jdt-user\\node_modules\\stylelint",
|
||||||
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
|
"nodejs_package_manager_path": "npm",
|
||||||
|
"npm.dev:weapp.executor": "Run",
|
||||||
|
"settings.editor.selected.configurable": "preferences.pluginManager",
|
||||||
|
"ts.external.directory.path": "E:\\ProjectCode\\jdt-user\\node_modules\\typescript\\lib",
|
||||||
|
"vue.rearranger.settings.migration": "true"
|
||||||
|
}
|
||||||
|
}</component>
|
||||||
|
<component name="RunManager">
|
||||||
|
<configuration default="true" type="ShConfigurationType">
|
||||||
|
<option name="SCRIPT_TEXT" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
|
||||||
|
<option name="SCRIPT_PATH" value="" />
|
||||||
|
<option name="SCRIPT_OPTIONS" value="" />
|
||||||
|
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
|
||||||
|
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
|
||||||
|
<option name="INTERPRETER_PATH" value="powershell.exe" />
|
||||||
|
<option name="INTERPRETER_OPTIONS" value="" />
|
||||||
|
<option name="EXECUTE_IN_TERMINAL" value="true" />
|
||||||
|
<option name="EXECUTE_SCRIPT_FILE" value="true" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
<configuration name="dev:weapp" type="js.build_tools.npm" nameIsGenerated="true">
|
||||||
|
<package-json value="$PROJECT_DIR$/package.json" />
|
||||||
|
<command value="run" />
|
||||||
|
<scripts>
|
||||||
|
<script value="dev:weapp" />
|
||||||
|
</scripts>
|
||||||
|
<node-interpreter value="project" />
|
||||||
|
<envs />
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
<component name="SharedIndexes">
|
||||||
|
<attachedChunks>
|
||||||
|
<set>
|
||||||
|
<option value="bundled-js-predefined-1d06a55b98c1-0b3e54e931b4-JavaScript-WS-241.19072.23" />
|
||||||
|
</set>
|
||||||
|
</attachedChunks>
|
||||||
|
</component>
|
||||||
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="默认任务">
|
||||||
|
<changelist id="7ab9fc39-b8f5-4c75-8b68-06560187de80" name="更改" comment="" />
|
||||||
|
<created>1723232795882</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1723232795882</updated>
|
||||||
|
<workItem from="1723232796811" duration="178000" />
|
||||||
|
<workItem from="1723459836239" duration="1590000" />
|
||||||
|
<workItem from="1723462530324" duration="3000" />
|
||||||
|
<workItem from="1724747502747" duration="686000" />
|
||||||
|
<workItem from="1724748201013" duration="1302000" />
|
||||||
|
<workItem from="1724749524151" duration="5000" />
|
||||||
|
<workItem from="1724992450724" duration="796000" />
|
||||||
|
<workItem from="1724993259676" duration="41000" />
|
||||||
|
<workItem from="1724993306937" duration="396000" />
|
||||||
|
<workItem from="1725359530794" duration="51000" />
|
||||||
|
<workItem from="1725359589345" duration="47000" />
|
||||||
|
<workItem from="1725359641218" duration="12030000" />
|
||||||
|
<workItem from="1727095306994" duration="898000" />
|
||||||
|
<workItem from="1727096222888" duration="57000" />
|
||||||
|
<workItem from="1727096286510" duration="23000" />
|
||||||
|
<workItem from="1727149833306" duration="64000" />
|
||||||
|
<workItem from="1727150105344" duration="642000" />
|
||||||
|
<workItem from="1727154905601" duration="284000" />
|
||||||
|
<workItem from="1727155681075" duration="125000" />
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
<option name="version" value="3" />
|
||||||
|
</component>
|
||||||
|
<component name="Vcs.Log.Tabs.Properties">
|
||||||
|
<option name="TAB_STATES">
|
||||||
|
<map>
|
||||||
|
<entry key="MAIN">
|
||||||
|
<value>
|
||||||
|
<State />
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="VcsManagerConfiguration">
|
||||||
|
<option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
96
components.d.ts
vendored
96
components.d.ts
vendored
@@ -1,57 +1,57 @@
|
|||||||
// generated by unplugin-vue-components
|
// generated by unplugin-vue-components
|
||||||
// We suggest you to commit this file into source control
|
// We suggest you to commit this file into source control
|
||||||
// Read more: https://github.com/vuejs/core/pull/3399
|
// Read more: https://github.com/vuejs/core/pull/3399
|
||||||
import '@vue/runtime-core'
|
import '@vue/runtime-core';
|
||||||
|
|
||||||
export {}
|
export {};
|
||||||
|
|
||||||
declare module '@vue/runtime-core' {
|
declare module '@vue/runtime-core' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
Auth: typeof import('./src/components/Auth.vue')['default']
|
Auth: typeof import('./src/components/Auth.vue')['default'];
|
||||||
Back: typeof import('./src/components/Back.vue')['default']
|
Back: typeof import('./src/components/Back.vue')['default'];
|
||||||
Cart: typeof import('./src/components/Cart.vue')['default']
|
Cart: typeof import('./src/components/Cart.vue')['default'];
|
||||||
MerList: typeof import('./src/components/MerList.vue')['default']
|
MerList: typeof import('./src/components/MerList.vue')['default'];
|
||||||
NutAvatar: typeof import('@nutui/nutui-taro')['Avatar']
|
NutAvatar: typeof import('@nutui/nutui-taro')['Avatar'];
|
||||||
NutBacktop: typeof import('@nutui/nutui-taro')['Backtop']
|
NutBacktop: typeof import('@nutui/nutui-taro')['Backtop'];
|
||||||
NutButton: typeof import('@nutui/nutui-taro')['Button']
|
NutButton: typeof import('@nutui/nutui-taro')['Button'];
|
||||||
NutCalendar: typeof import('@nutui/nutui-taro')['Calendar']
|
NutCalendar: typeof import('@nutui/nutui-taro')['Calendar'];
|
||||||
NutCell: typeof import('@nutui/nutui-taro')['Cell']
|
NutCell: typeof import('@nutui/nutui-taro')['Cell'];
|
||||||
NutCellGroup: typeof import('@nutui/nutui-taro')['CellGroup']
|
NutCellGroup: typeof import('@nutui/nutui-taro')['CellGroup'];
|
||||||
NutCheckbox: typeof import('@nutui/nutui-taro')['Checkbox']
|
NutCheckbox: typeof import('@nutui/nutui-taro')['Checkbox'];
|
||||||
NutCheckboxGroup: typeof import('@nutui/nutui-taro')['CheckboxGroup']
|
NutCheckboxGroup: typeof import('@nutui/nutui-taro')['CheckboxGroup'];
|
||||||
NutDialog: typeof import('@nutui/nutui-taro')['Dialog']
|
NutDialog: typeof import('@nutui/nutui-taro')['Dialog'];
|
||||||
NutEllipsis: typeof import('@nutui/nutui-taro')['Ellipsis']
|
NutEllipsis: typeof import('@nutui/nutui-taro')['Ellipsis'];
|
||||||
NutEmpty: typeof import('@nutui/nutui-taro')['Empty']
|
NutEmpty: typeof import('@nutui/nutui-taro')['Empty'];
|
||||||
NutForm: typeof import('@nutui/nutui-taro')['Form']
|
NutForm: typeof import('@nutui/nutui-taro')['Form'];
|
||||||
NutFormItem: typeof import('@nutui/nutui-taro')['FormItem']
|
NutFormItem: typeof import('@nutui/nutui-taro')['FormItem'];
|
||||||
NutGrid: typeof import('@nutui/nutui-taro')['Grid']
|
NutGrid: typeof import('@nutui/nutui-taro')['Grid'];
|
||||||
NutGridItem: typeof import('@nutui/nutui-taro')['GridItem']
|
NutGridItem: typeof import('@nutui/nutui-taro')['GridItem'];
|
||||||
NutImagePreview: typeof import('@nutui/nutui-taro')['ImagePreview']
|
NutImagePreview: typeof import('@nutui/nutui-taro')['ImagePreview'];
|
||||||
NutInput: typeof import('@nutui/nutui-taro')['Input']
|
NutInput: typeof import('@nutui/nutui-taro')['Input'];
|
||||||
NutInputNumber: typeof import('@nutui/nutui-taro')['InputNumber']
|
NutInputNumber: typeof import('@nutui/nutui-taro')['InputNumber'];
|
||||||
NutOverlay: typeof import('@nutui/nutui-taro')['Overlay']
|
NutOverlay: typeof import('@nutui/nutui-taro')['Overlay'];
|
||||||
NutPagination: typeof import('@nutui/nutui-taro')['Pagination']
|
NutPagination: typeof import('@nutui/nutui-taro')['Pagination'];
|
||||||
NutPicker: typeof import('@nutui/nutui-taro')['Picker']
|
NutPicker: typeof import('@nutui/nutui-taro')['Picker'];
|
||||||
NutPopover: typeof import('@nutui/nutui-taro')['Popover']
|
NutPopover: typeof import('@nutui/nutui-taro')['Popover'];
|
||||||
NutPopup: typeof import('@nutui/nutui-taro')['Popup']
|
NutPopup: typeof import('@nutui/nutui-taro')['Popup'];
|
||||||
NutPrice: typeof import('@nutui/nutui-taro')['Price']
|
NutPrice: typeof import('@nutui/nutui-taro')['Price'];
|
||||||
NutRadio: typeof import('@nutui/nutui-taro')['Radio']
|
NutRadio: typeof import('@nutui/nutui-taro')['Radio'];
|
||||||
NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup']
|
NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup'];
|
||||||
NutRate: typeof import('@nutui/nutui-taro')['Rate']
|
NutRate: typeof import('@nutui/nutui-taro')['Rate'];
|
||||||
NutSwiper: typeof import('@nutui/nutui-taro')['Swiper']
|
NutSwiper: typeof import('@nutui/nutui-taro')['Swiper'];
|
||||||
NutSwiperItem: typeof import('@nutui/nutui-taro')['SwiperItem']
|
NutSwiperItem: typeof import('@nutui/nutui-taro')['SwiperItem'];
|
||||||
NutSwitch: typeof import('@nutui/nutui-taro')['Switch']
|
NutSwitch: typeof import('@nutui/nutui-taro')['Switch'];
|
||||||
NutTable: typeof import('@nutui/nutui-taro')['Table']
|
NutTable: typeof import('@nutui/nutui-taro')['Table'];
|
||||||
NutTabPane: typeof import('@nutui/nutui-taro')['TabPane']
|
NutTabPane: typeof import('@nutui/nutui-taro')['TabPane'];
|
||||||
NutTabs: typeof import('@nutui/nutui-taro')['Tabs']
|
NutTabs: typeof import('@nutui/nutui-taro')['Tabs'];
|
||||||
NutTextarea: typeof import('@nutui/nutui-taro')['Textarea']
|
NutTextarea: typeof import('@nutui/nutui-taro')['Textarea'];
|
||||||
NutUploader: typeof import('@nutui/nutui-taro')['Uploader']
|
NutUploader: typeof import('@nutui/nutui-taro')['Uploader'];
|
||||||
Pay: typeof import('./src/components/Pay.vue')['default']
|
Pay: typeof import('./src/components/Pay.vue')['default'];
|
||||||
Popup: typeof import('./src/components/Popup.vue')['default']
|
Popup: typeof import('./src/components/Popup.vue')['default'];
|
||||||
RichEditor: typeof import('./src/components/RichEditor.vue')['default']
|
RichEditor: typeof import('./src/components/RichEditor.vue')['default'];
|
||||||
StoreList: typeof import('./src/components/StoreList.vue')['default']
|
StoreList: typeof import('./src/components/StoreList.vue')['default'];
|
||||||
Ucharts: typeof import('./src/components/Ucharts.vue')['default']
|
Ucharts: typeof import('./src/components/Ucharts.vue')['default'];
|
||||||
Upload: typeof import('./src/components/Upload.vue')['default']
|
Upload: typeof import('./src/components/Upload.vue')['default'];
|
||||||
UserModal: typeof import('./src/components/UserModal.vue')['default']
|
UserModal: typeof import('./src/components/UserModal.vue')['default'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.23.5",
|
"@babel/runtime": "^7.23.5",
|
||||||
"@nutui/icons-vue-taro": "^0.0.9",
|
"@nutui/icons-vue-taro": "^0.0.9",
|
||||||
"@nutui/nutui-taro": "^4.3.12",
|
"@nutui/nutui-taro": "^4.3.13",
|
||||||
"@qiun/vue-ucharts": "2.5.0-20230101",
|
"@qiun/vue-ucharts": "2.5.0-20230101",
|
||||||
"@tarojs/components": "3.6.34",
|
"@tarojs/components": "3.6.34",
|
||||||
"@tarojs/helper": "3.6.34",
|
"@tarojs/helper": "3.6.34",
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { addCart, getCart, clearCart } from '@/api/cart';
|
import {addCart, getCart, clearCart} from '@/api/cart';
|
||||||
import { Plus, Minus } from '@nutui/icons-vue-taro';
|
import {Plus, Minus} from '@nutui/icons-vue-taro';
|
||||||
import { createActiveOrder } from '@/api/goods';
|
import {createActiveOrder} from '@/api/goods';
|
||||||
import { createAfterOrder, getUserPoint } from '@/api/admin';
|
import {createAfterOrder, getUserPoint} from '@/api/admin';
|
||||||
import Pay from '@/components/Pay.vue';
|
import Pay from '@/components/Pay.vue';
|
||||||
|
|
||||||
interface CardList {
|
interface CardList {
|
||||||
@@ -201,7 +201,8 @@ defineExpose({
|
|||||||
<view class="container flex items-center">
|
<view class="container flex items-center">
|
||||||
<!-- <view>购物车数量: {{ cartInfo.count }}</view> -->
|
<!-- <view>购物车数量: {{ cartInfo.count }}</view> -->
|
||||||
<view class="cardImg">
|
<view class="cardImg">
|
||||||
<image src="http://p1.meituan.net/csc/929f447a96a44b09a09b2e0055433222717.png">
|
<image
|
||||||
|
src="http://p1.meituan.net/csc/929f447a96a44b09a09b2e0055433222717.png">
|
||||||
</image>
|
</image>
|
||||||
<view class="count-text" v-if="cartInfo.count > 0">
|
<view class="count-text" v-if="cartInfo.count > 0">
|
||||||
<text>{{ cartInfo.count }}</text>
|
<text>{{ cartInfo.count }}</text>
|
||||||
@@ -209,20 +210,30 @@ defineExpose({
|
|||||||
</view>
|
</view>
|
||||||
<view class="ml-1 text-[28px]">
|
<view class="ml-1 text-[28px]">
|
||||||
<text>总金额: {{ cartInfo.discount_price.toFixed(2) }}元</text>
|
<text>总金额: {{ cartInfo.discount_price.toFixed(2) }}元</text>
|
||||||
<text v-if="!IsPendingOrder">,积分抵扣: {{ cartInfo.discount_integral.toFixed(2) }}
|
<text v-if="!IsPendingOrder"
|
||||||
|
>,积分抵扣: {{ cartInfo.discount_integral.toFixed(2) }}
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="cartInfo.count > 0" class="payBtn" @click.stop="create_order">去结算
|
<view v-if="cartInfo.count > 0" class="payBtn" @click.stop="create_order"
|
||||||
|
>去结算
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 购物车弹窗 -->
|
<!-- 购物车弹窗 -->
|
||||||
<nut-popup :style="{ padding: '15px' }" round position="bottom" z-index="1" :catch-move="true"
|
<nut-popup
|
||||||
:safe-area-inset-bottom="true" v-model:visible="show">
|
:style="{padding: '15px'}"
|
||||||
|
round
|
||||||
|
position="bottom"
|
||||||
|
z-index="1"
|
||||||
|
:catch-move="true"
|
||||||
|
:safe-area-inset-bottom="true"
|
||||||
|
v-model:visible="show">
|
||||||
<view class="list-header">
|
<view class="list-header">
|
||||||
<view class="left" @click.stop="clear_cart">
|
<view class="left" @click.stop="clear_cart">
|
||||||
<!-- <Del2 color="#666666" /> -->
|
<!-- <Del2 color="#666666" /> -->
|
||||||
<image class="w-[20px] h-[20px]" src="http://p0.meituan.net/csc/db4d11fd744b69435c6ffdc6bfc868c5684.png" />
|
<image
|
||||||
|
class="w-[20px] h-[20px]"
|
||||||
|
src="http://p0.meituan.net/csc/db4d11fd744b69435c6ffdc6bfc868c5684.png" />
|
||||||
<text class="text-[20px]" style="color: #666666">清空购物车</text>
|
<text class="text-[20px]" style="color: #666666">清空购物车</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -235,11 +246,17 @@ defineExpose({
|
|||||||
|
|
||||||
<view class="price flex">
|
<view class="price flex">
|
||||||
<view>现金:{{ item.price }}</view>
|
<view>现金:{{ item.price }}</view>
|
||||||
<view v-if="item.discount_integral > 0" class="ml-2">积分:{{ item.discount_integral }}</view>
|
<view v-if="item.discount_integral > 0" class="ml-2"
|
||||||
|
>积分:{{ item.discount_integral }}</view
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<nut-input-number v-model="item.number" readonly :min="-1" @add="() => onAdd(item)"
|
<nut-input-number
|
||||||
|
v-model="item.number"
|
||||||
|
readonly
|
||||||
|
:min="-1"
|
||||||
|
@add="() => onAdd(item)"
|
||||||
@reduce="() => onReduce(item)">
|
@reduce="() => onReduce(item)">
|
||||||
<template #left-icon>
|
<template #left-icon>
|
||||||
<view class="btn" @click.stop="onReduce(item)">
|
<view class="btn" @click.stop="onReduce(item)">
|
||||||
@@ -257,7 +274,11 @@ defineExpose({
|
|||||||
<view style="height: 140px"></view>
|
<view style="height: 140px"></view>
|
||||||
</nut-popup>
|
</nut-popup>
|
||||||
<!-- 支付 -->
|
<!-- 支付 -->
|
||||||
<Pay :is-show-pay="isShowPay" v-model:jfInfo="orderData" @closePay="closePay" @successPay="closePay" />
|
<Pay
|
||||||
|
:is-show-pay="isShowPay"
|
||||||
|
v-model:jfInfo="orderData"
|
||||||
|
@closePay="closePay"
|
||||||
|
@successPay="closePay" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,19 @@
|
|||||||
<view>
|
<view>
|
||||||
<!-- 商品列表 -->
|
<!-- 商品列表 -->
|
||||||
<view class="good-class" v-if="class_list.length > 0">
|
<view class="good-class" v-if="class_list.length > 0">
|
||||||
<nut-tabs v-model="value" title-scroll size="large" direction="vertical" title-gutter="5" animated-time="0"
|
<nut-tabs
|
||||||
|
v-model="value"
|
||||||
|
title-scroll
|
||||||
|
size="large"
|
||||||
|
direction="vertical"
|
||||||
|
title-gutter="5"
|
||||||
|
animated-time="0"
|
||||||
name="tabName">
|
name="tabName">
|
||||||
<nut-tab-pane v-for="(itm, index) in good_list" :key="index" :title="itm.name" :pane-key="index">
|
<nut-tab-pane
|
||||||
|
v-for="(itm, index) in good_list"
|
||||||
|
:key="index"
|
||||||
|
:title="itm.name"
|
||||||
|
:pane-key="index">
|
||||||
<view v-if="itm.Goods.length > 0">
|
<view v-if="itm.Goods.length > 0">
|
||||||
<view class="list" v-for="(item, index) in itm.Goods" :key="index">
|
<view class="list" v-for="(item, index) in itm.Goods" :key="index">
|
||||||
<view class="item" @click.stop="toGoodDetails(item.gid, 1)">
|
<view class="item" @click.stop="toGoodDetails(item.gid, 1)">
|
||||||
@@ -23,7 +33,10 @@
|
|||||||
>
|
>
|
||||||
</view> -->
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
<nut-button size="mini" type="primary" @click.stop="add_cart(item)">
|
<nut-button
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
@click.stop="add_cart(item)">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<Cart2 />
|
<Cart2 />
|
||||||
</template>
|
</template>
|
||||||
@@ -40,16 +53,20 @@
|
|||||||
</view>
|
</view>
|
||||||
<nut-empty v-else description="该商家暂无商品"></nut-empty>
|
<nut-empty v-else description="该商家暂无商品"></nut-empty>
|
||||||
<!-- 购物车 -->
|
<!-- 购物车 -->
|
||||||
<cart ref="cartRef" :mer-info="mer_info" @update-cart="updateCartNum" :IsPendingOrder="true" />
|
<cart
|
||||||
|
ref="cartRef"
|
||||||
|
:mer-info="mer_info"
|
||||||
|
@update-cart="updateCartNum"
|
||||||
|
:IsPendingOrder="true" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { Ref, ref } from 'vue';
|
import {Ref, ref} from 'vue';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import Cart from '../../../../components/Cart.vue';
|
import Cart from '../../../../components/Cart.vue';
|
||||||
import { Cart2 } from '@nutui/icons-vue-taro';
|
import {Cart2} from '@nutui/icons-vue-taro';
|
||||||
import { getGoodList, getMerCategory } from '../../../../api/goods';
|
import {getGoodList, getMerCategory} from '../../../../api/goods';
|
||||||
|
|
||||||
interface goodList {
|
interface goodList {
|
||||||
ID: number;
|
ID: number;
|
||||||
|
|||||||
@@ -5,13 +5,19 @@
|
|||||||
<nut-cell>
|
<nut-cell>
|
||||||
<template #default>
|
<template #default>
|
||||||
<view class="center-box">
|
<view class="center-box">
|
||||||
<view class="top" v-for="(item, index) in info.OrderGoods" :key="index">
|
<view
|
||||||
|
class="top"
|
||||||
|
v-for="(item, index) in info.OrderGoods"
|
||||||
|
:key="index">
|
||||||
<image class="mr-10" :src="item.Goods?.cover" />
|
<image class="mr-10" :src="item.Goods?.cover" />
|
||||||
<view class="flex-1">
|
<view class="flex-1">
|
||||||
<view class="title">{{ item.Goods?.name }}</view>
|
<view class="title">{{ item.Goods?.name }}</view>
|
||||||
<view class="text-[#F83D3D] mt-5">
|
<view class="text-[#F83D3D] mt-5">
|
||||||
<view>{{ item.pay_price }}元
|
<view
|
||||||
<text v-if="item.pay_integral > 0">+{{ item.pay_integral }}积分</text>
|
>{{ item.pay_price }}元
|
||||||
|
<text v-if="item.pay_integral > 0"
|
||||||
|
>+{{ item.pay_integral }}积分</text
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -19,11 +25,15 @@
|
|||||||
<view>x{{ item.number }}</view>
|
<view>x{{ item.number }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex justify-between items-center mt-2 mb-2 text-[25px]">
|
<view
|
||||||
|
class="flex justify-between items-center mt-2 mb-2 text-[25px]">
|
||||||
<view class="text-[#9C9C9C]">{{ `共${info.count}件商品` }}</view>
|
<view class="text-[#9C9C9C]">{{ `共${info.count}件商品` }}</view>
|
||||||
<text class="text-[26px] flex-1 text-right">{{ info.status !== 0 ? '实' : '应' }}付款:
|
<text class="text-[26px] flex-1 text-right"
|
||||||
|
>{{ info.status !== 0 ? '实' : '应' }}付款:
|
||||||
{{ info.discount_price }} (元)
|
{{ info.discount_price }} (元)
|
||||||
<text v-if="info.exchange > 0">积分抵扣: {{ info.exchange }}</text>
|
<text v-if="info.exchange > 0"
|
||||||
|
>积分抵扣: {{ info.exchange }}</text
|
||||||
|
>
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -32,11 +42,14 @@
|
|||||||
</nut-cell-group>
|
</nut-cell-group>
|
||||||
<nut-cell-group>
|
<nut-cell-group>
|
||||||
<nut-cell title="订单号:" :desc="info.oid"></nut-cell>
|
<nut-cell title="订单号:" :desc="info.oid"></nut-cell>
|
||||||
<nut-cell title="订单状态:" :desc="info.status === 0
|
<nut-cell
|
||||||
? '待付款'
|
title="订单状态:"
|
||||||
: info.status === 1
|
:desc="
|
||||||
? '待使用'
|
info.status === 0
|
||||||
: info.status === 2
|
? '待付款'
|
||||||
|
: info.status === 1
|
||||||
|
? '待使用'
|
||||||
|
: info.status === 2
|
||||||
? '已使用'
|
? '已使用'
|
||||||
: '已失效'
|
: '已失效'
|
||||||
">
|
">
|
||||||
@@ -44,16 +57,25 @@
|
|||||||
<nut-cell title="下单用户:" :desc="info.User?.nickName"></nut-cell>
|
<nut-cell title="下单用户:" :desc="info.User?.nickName"></nut-cell>
|
||||||
<nut-cell title="用户手机号:" :desc="info.User?.phone"></nut-cell>
|
<nut-cell title="用户手机号:" :desc="info.User?.phone"></nut-cell>
|
||||||
<nut-cell title="下单时间:" :desc="info.add_time"></nut-cell>
|
<nut-cell title="下单时间:" :desc="info.add_time"></nut-cell>
|
||||||
<nut-cell v-if="info.status === 2" title="核销时间:" :desc="info.cancel_time"></nut-cell>
|
<nut-cell
|
||||||
<nut-cell v-if="info.status === 2" title="核销人员:" :desc="info.CancelUser?.nickName"></nut-cell>
|
v-if="info.status === 2"
|
||||||
<nut-cell v-if="info.status === 2" title="核销人手机号:" :desc="info.CancelUser?.phone"></nut-cell>
|
title="核销时间:"
|
||||||
|
:desc="info.cancel_time"></nut-cell>
|
||||||
|
<nut-cell
|
||||||
|
v-if="info.status === 2"
|
||||||
|
title="核销人员:"
|
||||||
|
:desc="info.CancelUser?.nickName"></nut-cell>
|
||||||
|
<nut-cell
|
||||||
|
v-if="info.status === 2"
|
||||||
|
title="核销人手机号:"
|
||||||
|
:desc="info.CancelUser?.phone"></nut-cell>
|
||||||
</nut-cell-group>
|
</nut-cell-group>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
|
|
||||||
const info = ref<any>({});
|
const info = ref<any>({});
|
||||||
|
|
||||||
|
|||||||
@@ -1,37 +1,52 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<view class="tabs-1">
|
<view class="tabs-1">
|
||||||
<view class="item" v-for="(item, index) in opt" :key="index" @click="tabChange(item.value)">
|
<view
|
||||||
<view :style="{
|
class="item"
|
||||||
color: item.value === tabVal ? '#333333' : '#9C9C9C',
|
v-for="(item, index) in opt"
|
||||||
}">{{ item.text }}</view>
|
:key="index"
|
||||||
<view class="line" :style="{
|
@click="tabChange(item.value)">
|
||||||
backgroundColor: item.value === tabVal ? '#FFD940' : '',
|
<view
|
||||||
}"></view>
|
:style="{
|
||||||
|
color: item.value === tabVal ? '#333333' : '#9C9C9C',
|
||||||
|
}"
|
||||||
|
>{{ item.text }}</view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="line"
|
||||||
|
:style="{
|
||||||
|
backgroundColor: item.value === tabVal ? '#FFD940' : '',
|
||||||
|
}"></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="dataList.length > 0">
|
<view v-if="dataList.length > 0">
|
||||||
<view class="order-card" v-for="(item, index) in dataList" :key="index" @click="toDetailPage(item)">
|
<view
|
||||||
|
class="order-card"
|
||||||
|
v-for="(item, index) in dataList"
|
||||||
|
:key="index"
|
||||||
|
@click="toDetailPage(item)">
|
||||||
<view class="top">
|
<view class="top">
|
||||||
<view class="text-[#9C9C9C] text-[25px]">订单号:{{ item.oid }}</view>
|
<view class="text-[#9C9C9C] text-[25px]">订单号:{{ item.oid }}</view>
|
||||||
<view :style="{
|
<view
|
||||||
color:
|
:style="{
|
||||||
item.status === 0
|
color:
|
||||||
? '#FF850A'
|
item.status === 0
|
||||||
: item.status === 1
|
? '#FF850A'
|
||||||
|
: item.status === 1
|
||||||
? '#F83D3D'
|
? '#F83D3D'
|
||||||
: item.status === 2
|
: item.status === 2
|
||||||
? '#333333'
|
? '#333333'
|
||||||
: '#9C9C9C',
|
: '#9C9C9C',
|
||||||
}">{{
|
}"
|
||||||
item.status === 0
|
>{{
|
||||||
? '待付款'
|
item.status === 0
|
||||||
: item.status === 1
|
? '待付款'
|
||||||
|
: item.status === 1
|
||||||
? '待使用'
|
? '待使用'
|
||||||
: item.status === 2
|
: item.status === 2
|
||||||
? '已使用'
|
? '已使用'
|
||||||
: '已失效'
|
: '已失效'
|
||||||
}}
|
}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
@@ -41,8 +56,11 @@
|
|||||||
<view class="flex-1">
|
<view class="flex-1">
|
||||||
<view class="title">{{ itm.Goods?.name }}</view>
|
<view class="title">{{ itm.Goods?.name }}</view>
|
||||||
<view class="text-[#F83D3D] mt-5">
|
<view class="text-[#F83D3D] mt-5">
|
||||||
<view>{{ itm.pay_price }}元
|
<view
|
||||||
<text v-if="itm.pay_integral > 0">+{{ itm.pay_integral }}积分</text>
|
>{{ itm.pay_price }}元
|
||||||
|
<text v-if="itm.pay_integral > 0"
|
||||||
|
>+{{ itm.pay_integral }}积分</text
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -51,9 +69,12 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex justify-between items-center mt-2 mb-2 text-[25px]" v-if="item.status !== 0">
|
<view
|
||||||
|
class="flex justify-between items-center mt-2 mb-2 text-[25px]"
|
||||||
|
v-if="item.status !== 0">
|
||||||
<text class="text-[#9C9C9C]">共{{ item.count }}件商品</text>
|
<text class="text-[#9C9C9C]">共{{ item.count }}件商品</text>
|
||||||
<text class="text-[26px] flex-1 text-right">{{ item.status !== 0 ? '实' : '应' }}付款:
|
<text class="text-[26px] flex-1 text-right"
|
||||||
|
>{{ item.status !== 0 ? '实' : '应' }}付款:
|
||||||
{{ item.discount_price }} (元)
|
{{ item.discount_price }} (元)
|
||||||
<text v-if="item.exchange > 0">积分抵扣: {{ item.exchange }}</text>
|
<text v-if="item.exchange > 0">积分抵扣: {{ item.exchange }}</text>
|
||||||
</text>
|
</text>
|
||||||
@@ -65,9 +86,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { getActiveOrderList } from '../../../../api/admin';
|
import {getActiveOrderList} from '../../../../api/admin';
|
||||||
|
|
||||||
const opt = ref([
|
const opt = ref([
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,22 +3,31 @@
|
|||||||
<view class="card">
|
<view class="card">
|
||||||
<view class="text-[#7A7A7A]">订单号:{{ goodInfo.oid }}</view>
|
<view class="text-[#7A7A7A]">订单号:{{ goodInfo.oid }}</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
<view class="container" v-for="(item, index) in goodInfo.OrderGoods" :key="index">
|
<view
|
||||||
|
class="container"
|
||||||
|
v-for="(item, index) in goodInfo.OrderGoods"
|
||||||
|
:key="index">
|
||||||
<image class="image" :src="item.Goods.cover"></image>
|
<image class="image" :src="item.Goods.cover"></image>
|
||||||
<view class="info">
|
<view class="info">
|
||||||
<view class="title">{{ item.Goods.name }}</view>
|
<view class="title">{{ item.Goods.name }}</view>
|
||||||
<view class="text-[#7A7A7A] text-[22px]">{{
|
<view class="text-[#7A7A7A] text-[22px]">{{
|
||||||
item.Goods.profile || '此商品暂无描述'
|
item.Goods.profile || '此商品暂无描述'
|
||||||
}}</view>
|
}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="text-[#9C9C9C]">x{{ item.number }}</view>
|
<view class="text-[#9C9C9C]">x{{ item.number }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
<view class="flex justify-between items-center mt-3 mb-2 text-[25px]" style="text-align: right">
|
<view
|
||||||
<text class="text-[#9C9C9C] text-left">共{{ goodInfo.count }}件商品</text>
|
class="flex justify-between items-center mt-3 mb-2 text-[25px]"
|
||||||
<text class="text-[26px] flex-1">实付款:
|
style="text-align: right">
|
||||||
{{ goodInfo.discount_price }} (元)
|
<text class="text-[#9C9C9C] text-left"
|
||||||
<text v-if="goodInfo.exchange > 0">积分抵扣: {{ goodInfo.exchange }}</text>
|
>共{{ goodInfo.count }}件商品</text
|
||||||
|
>
|
||||||
|
<text class="text-[26px] flex-1"
|
||||||
|
>实付款: {{ goodInfo.discount_price }} (元)
|
||||||
|
<text v-if="goodInfo.exchange > 0"
|
||||||
|
>积分抵扣: {{ goodInfo.exchange }}</text
|
||||||
|
>
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="line"></view> -->
|
<!-- <view class="line"></view> -->
|
||||||
@@ -30,22 +39,28 @@
|
|||||||
</view>
|
</view>
|
||||||
<nut-cell-group>
|
<nut-cell-group>
|
||||||
<nut-cell title="订单信息"></nut-cell>
|
<nut-cell title="订单信息"></nut-cell>
|
||||||
<nut-cell title="下单时间:" :desc="goodInfo.add_time?.slice(0, 19)"></nut-cell>
|
<nut-cell
|
||||||
|
title="下单时间:"
|
||||||
|
:desc="goodInfo.add_time?.slice(0, 19)"></nut-cell>
|
||||||
<nut-cell title="下单号码:" :desc="goodInfo.User?.phone"></nut-cell>
|
<nut-cell title="下单号码:" :desc="goodInfo.User?.phone"></nut-cell>
|
||||||
<nut-cell title="下单用户:" :desc="goodInfo.User?.nickName"></nut-cell>
|
<nut-cell title="下单用户:" :desc="goodInfo.User?.nickName"></nut-cell>
|
||||||
<nut-cell title="付款方式:" :desc="getPayType(goodInfo.pay_type)"></nut-cell>
|
<nut-cell
|
||||||
|
title="付款方式:"
|
||||||
|
:desc="getPayType(goodInfo.pay_type)"></nut-cell>
|
||||||
</nut-cell-group>
|
</nut-cell-group>
|
||||||
|
|
||||||
<view class="w-[90%] mt-[40px] m-auto">
|
<view class="w-[90%] mt-[40px] m-auto">
|
||||||
<nut-button type="primary" shape="square" block @click="subVerify">确定核销</nut-button>
|
<nut-button type="primary" shape="square" block @click="subVerify"
|
||||||
|
>确定核销</nut-button
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { getActiveVerifyList, activeOrderVerify } from '@/api/admin';
|
import {getActiveVerifyList, activeOrderVerify} from '@/api/admin';
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
|
|
||||||
const opt = ref<any>({});
|
const opt = ref<any>({});
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { getWithdrawList, addWithdraw } from '@/api/admin';
|
import {getWithdrawList, addWithdraw} from '@/api/admin';
|
||||||
|
|
||||||
const user_info = ref<any>({});
|
const user_info = ref<any>({});
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ const getData = async () => {
|
|||||||
|
|
||||||
const add = async () => {
|
const add = async () => {
|
||||||
try {
|
try {
|
||||||
formRef.value?.validate().then(async ({ valid }) => {
|
formRef.value?.validate().then(async ({valid}) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
const res = await addWithdraw({
|
const res = await addWithdraw({
|
||||||
Bid: user_info.value.data.bid,
|
Bid: user_info.value.data.bid,
|
||||||
@@ -162,9 +162,17 @@ Taro.useReachBottom(() => {
|
|||||||
</view>
|
</view>
|
||||||
<nut-form ref="formRef" :model-value="basicData" :rules="rules">
|
<nut-form ref="formRef" :model-value="basicData" :rules="rules">
|
||||||
<nut-form-item prop="num">
|
<nut-form-item prop="num">
|
||||||
<nut-input v-model="basicData.num" class="nut-input-text" placeholder="请输入提现余额" type="text">
|
<nut-input
|
||||||
|
v-model="basicData.num"
|
||||||
|
class="nut-input-text"
|
||||||
|
placeholder="请输入提现余额"
|
||||||
|
type="text">
|
||||||
<template #right>
|
<template #right>
|
||||||
<text class="text-[#EC4443] text-[26px]" @tap="basicData.num = row.toString()">全部</text>
|
<text
|
||||||
|
class="text-[#EC4443] text-[26px]"
|
||||||
|
@tap="basicData.num = row.toString()"
|
||||||
|
>全部</text
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</nut-input>
|
</nut-input>
|
||||||
</nut-form-item>
|
</nut-form-item>
|
||||||
@@ -181,41 +189,67 @@ Taro.useReachBottom(() => {
|
|||||||
<view class="item" v-for="(item, index) in data" :key="index">
|
<view class="item" v-for="(item, index) in data" :key="index">
|
||||||
<view class="flex justify-between items-center">
|
<view class="flex justify-between items-center">
|
||||||
<view class="text-[25px] text-[#9C9C9C]">到账金额</view>
|
<view class="text-[25px] text-[#9C9C9C]">到账金额</view>
|
||||||
<view class="text-[27px]" :class="item.status === 1
|
<view
|
||||||
? 'success'
|
class="text-[27px]"
|
||||||
: item.status === 1
|
:class="
|
||||||
? 'danger'
|
item.status === 1
|
||||||
: 'warning'
|
? 'success'
|
||||||
">{{
|
: item.status === 1
|
||||||
|
? 'danger'
|
||||||
|
: 'warning'
|
||||||
|
"
|
||||||
|
>{{
|
||||||
item.status === 1
|
item.status === 1
|
||||||
? '已打款'
|
? '已打款'
|
||||||
: item.status === 2
|
: item.status === 2
|
||||||
? '已拒绝'
|
? '已拒绝'
|
||||||
: '待审核'
|
: '待审核'
|
||||||
}}</view>
|
}}</view
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
<view class="mt-3 mb-3 text-[35px]">¥{{ item.number }}</view>
|
<view class="mt-3 mb-3 text-[35px]">¥{{ item.number }}</view>
|
||||||
<view class="text-[25px] mb-1">提现金额:{{ item.integral }}</view>
|
<view class="text-[25px] mb-1">提现金额:{{ item.integral }}</view>
|
||||||
<view class="text-[25px] mb-1">信息服务费:{{ item.commission }}</view>
|
<view class="text-[25px] mb-1"
|
||||||
<view class="text-[25px] mb-1">手续费:{{ item.commission_number }}%</view>
|
>信息服务费:{{ item.commission }}</view
|
||||||
|
>
|
||||||
|
<view class="text-[25px] mb-1"
|
||||||
|
>手续费:{{ item.commission_number }}%</view
|
||||||
|
>
|
||||||
<view class="text-[25px] mb-1">时间:{{ item.add_time }}</view>
|
<view class="text-[25px] mb-1">时间:{{ item.add_time }}</view>
|
||||||
<view v-if="item.status === 2" class="text-[25px] text-[#9C9C9C]">备注:</view>
|
<view v-if="item.status === 2" class="text-[25px] text-[#9C9C9C]"
|
||||||
<view v-if="item.status === 1" class="text-[23px] mt-2 text-[#df3526]" @click="openPreview(item)">点我查看回执单
|
>备注:</view
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
v-if="item.status === 1"
|
||||||
|
class="text-[23px] mt-2 text-[#df3526]"
|
||||||
|
@click="openPreview(item)"
|
||||||
|
>点我查看回执单
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<nut-empty v-else description="暂无提现记录"></nut-empty>
|
<nut-empty v-else description="暂无提现记录"></nut-empty>
|
||||||
<!-- 图片预览 -->
|
<!-- 图片预览 -->
|
||||||
<nut-image-preview :show="showPreview" :images="imgData" @close="closePreview" />
|
<nut-image-preview
|
||||||
|
:show="showPreview"
|
||||||
|
:images="imgData"
|
||||||
|
@close="closePreview" />
|
||||||
|
|
||||||
<nut-dialog title="提现疑问?" content="这是基础弹框。" ok-text="我已知晓" :no-cancel-btn="true" v-model:visible="visible1">
|
<nut-dialog
|
||||||
|
title="提现疑问?"
|
||||||
|
content="这是基础弹框。"
|
||||||
|
ok-text="我已知晓"
|
||||||
|
:no-cancel-btn="true"
|
||||||
|
v-model:visible="visible1">
|
||||||
<template #default>
|
<template #default>
|
||||||
<text>
|
<text>
|
||||||
积分和人民币兑换比例为
|
积分和人民币兑换比例为
|
||||||
<text class="text-[#F83D3D]">100:1</text>
|
<text class="text-[#F83D3D]">100:1</text>
|
||||||
平台收取<text class="text-[#F83D3D]">10%服务费</text>和<text class="text-[#F83D3D]">0.038%手续费</text>
|
平台收取<text class="text-[#F83D3D]">10%服务费</text>和<text
|
||||||
|
class="text-[#F83D3D]"
|
||||||
|
>0.038%手续费</text
|
||||||
|
>
|
||||||
</text>
|
</text>
|
||||||
</template>
|
</template>
|
||||||
</nut-dialog>
|
</nut-dialog>
|
||||||
|
|||||||
@@ -3,11 +3,16 @@
|
|||||||
<view v-if="list.length > 0">
|
<view v-if="list.length > 0">
|
||||||
<nut-cell-group v-for="(itm, idx) in list" :key="idx">
|
<nut-cell-group v-for="(itm, idx) in list" :key="idx">
|
||||||
<nut-cell>
|
<nut-cell>
|
||||||
<nut-checkbox v-model="itm.state.checkbox" :indeterminate="itm.state.indeterminate"
|
<nut-checkbox
|
||||||
@change="(val: boolean) => changeBoxAll(val, idx)">{{ itm.StoreName }}
|
v-model="itm.state.checkbox"
|
||||||
|
:indeterminate="itm.state.indeterminate"
|
||||||
|
@change="(val: boolean) => changeBoxAll(val, idx)"
|
||||||
|
>{{ itm.StoreName }}
|
||||||
</nut-checkbox>
|
</nut-checkbox>
|
||||||
</nut-cell>
|
</nut-cell>
|
||||||
<nut-checkbox-group v-model="itm.state.checkboxgroup" :ref="el => getGroup(el, idx)"
|
<nut-checkbox-group
|
||||||
|
v-model="itm.state.checkboxgroup"
|
||||||
|
:ref="el => getGroup(el, idx)"
|
||||||
@change="label => changeBox(label, itm)">
|
@change="label => changeBox(label, itm)">
|
||||||
<nut-cell v-for="(item, idx1) in itm.Goods" :key="idx1">
|
<nut-cell v-for="(item, idx1) in itm.Goods" :key="idx1">
|
||||||
<nut-checkbox :label="item.gid" style="width: 10%"></nut-checkbox>
|
<nut-checkbox :label="item.gid" style="width: 10%"></nut-checkbox>
|
||||||
@@ -15,15 +20,22 @@
|
|||||||
<view class="box-left">
|
<view class="box-left">
|
||||||
<img class="cover" :src="item.cover" alt="" />
|
<img class="cover" :src="item.cover" alt="" />
|
||||||
<view class="center">
|
<view class="center">
|
||||||
<view>{{ item.name }}</view>
|
<view class="line-clamp-2 text-[25px]">{{ item.name }}</view>
|
||||||
<view class="price">
|
<view class="price">
|
||||||
<view>{{ item.price }}元
|
<view
|
||||||
<text v-if="item.discount_integral > 0">+{{ item.discount_integral }}积分</text>
|
>{{ item.price }}元
|
||||||
|
<text v-if="item.discount_integral > 0"
|
||||||
|
>+{{ item.discount_integral }}积分</text
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<nut-input-number v-model="item.number" readonly :min="-1" @add.stop="() => onAdd(item)"
|
<nut-input-number
|
||||||
|
v-model="item.number"
|
||||||
|
readonly
|
||||||
|
:min="-1"
|
||||||
|
@add.stop="() => onAdd(item)"
|
||||||
@reduce.stop="() => onReduce(item)" />
|
@reduce.stop="() => onReduce(item)" />
|
||||||
</view>
|
</view>
|
||||||
</nut-cell>
|
</nut-cell>
|
||||||
@@ -32,7 +44,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<nut-empty v-else description="购物车暂无数据"></nut-empty>
|
<nut-empty v-else description="购物车暂无数据"></nut-empty>
|
||||||
<view>
|
<view>
|
||||||
<view style="height: 100rpx"></view>
|
<view style="height: 100px"></view>
|
||||||
</view>
|
</view>
|
||||||
<view class="bottom-box" v-if="list.length > 0">
|
<view class="bottom-box" v-if="list.length > 0">
|
||||||
<view class="left">
|
<view class="left">
|
||||||
@@ -42,26 +54,36 @@
|
|||||||
<view>
|
<view>
|
||||||
<view class="text-box">
|
<view class="text-box">
|
||||||
总金额:
|
总金额:
|
||||||
<nut-price v-model:price="localCount.price" size="normal" :need-symbol="false" />
|
<nut-price
|
||||||
|
v-model:price="localCount.price"
|
||||||
|
size="normal"
|
||||||
|
:need-symbol="false" />
|
||||||
</view>
|
</view>
|
||||||
<view class="text-box">
|
<view class="text-box">
|
||||||
总积分:
|
总积分:
|
||||||
<nut-price v-model:price="localCount.exchange" size="normal" :need-symbol="false" />
|
<nut-price
|
||||||
|
v-model:price="localCount.exchange"
|
||||||
|
size="normal"
|
||||||
|
:need-symbol="false" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<nut-button type="primary" @click="sub">去结算</nut-button>
|
<nut-button type="primary" @click="sub">去结算</nut-button>
|
||||||
</view>
|
</view>
|
||||||
<!-- 支付 -->
|
<!-- 支付 -->
|
||||||
<Pay :is-show-pay="isShowPay" :interval="true" v-model:jfInfo="orderData" @closePay="closePay" />
|
<Pay
|
||||||
|
:is-show-pay="isShowPay"
|
||||||
|
:interval="true"
|
||||||
|
v-model:jfInfo="orderData"
|
||||||
|
@closePay="closePay" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { nextTick, ref } from 'vue';
|
import {nextTick, ref} from 'vue';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { addCart, getAllCart } from '@/api/cart';
|
import {addCart, getAllCart} from '@/api/cart';
|
||||||
import { createActiveOrder } from '@/api/goods';
|
import {createActiveOrder} from '@/api/goods';
|
||||||
import Pay from '@/components/Pay.vue';
|
import Pay from '@/components/Pay.vue';
|
||||||
|
|
||||||
interface CardList {
|
interface CardList {
|
||||||
@@ -184,7 +206,7 @@ const sub = async () => {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const { data: res } = await createActiveOrder({
|
const {data: res} = await createActiveOrder({
|
||||||
Bid: arr.map((item: any) => item.StoreBid),
|
Bid: arr.map((item: any) => item.StoreBid),
|
||||||
});
|
});
|
||||||
if (res.oid) {
|
if (res.oid) {
|
||||||
@@ -293,16 +315,18 @@ const add_cart = async (item: CardList, num: number = 1) => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.cover {
|
.cover {
|
||||||
width: 130rpx;
|
width: 130px;
|
||||||
height: 130rpx;
|
height: 130px;
|
||||||
margin-right: 15rpx;
|
min-width: 130px;
|
||||||
border-radius: 20rpx;
|
min-height: 130px;
|
||||||
|
margin-right: 15px;
|
||||||
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.center {
|
.center {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-around;
|
justify-content: space-between;
|
||||||
|
|
||||||
.price {
|
.price {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -320,21 +344,21 @@ const add_cart = async (item: CardList, num: number = 1) => {
|
|||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100rpx;
|
height: 100px;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 20rpx;
|
padding: 0 20px;
|
||||||
box-shadow: 100rpx 104rpx 288rpx rgba(0, 0, 0, 0.01);
|
box-shadow: 100px 104px 288px rgba(0, 0, 0, 0.01);
|
||||||
border-top: 1rpx solid #f5f5f5;
|
border-top: 1px solid #f5f5f5;
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
.text-box {
|
.text-box {
|
||||||
margin-left: 10rpx;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<view class="card">
|
<view class="card">
|
||||||
<view class="flex items-center justify-between">
|
<view class="flex items-center justify-between">
|
||||||
<view class="flex items-center">
|
<view class="flex items-center">
|
||||||
<nut-price size="large" :price="goodInfo.number"></nut-price>
|
<nut-price size="large" :price="goodInfo.discount_price"></nut-price>
|
||||||
<nut-price
|
<nut-price
|
||||||
v-if="goodInfo.exchange"
|
v-if="goodInfo.exchange"
|
||||||
size="large"
|
size="large"
|
||||||
@@ -87,6 +87,7 @@ interface GoodInfo {
|
|||||||
profile?: string;
|
profile?: string;
|
||||||
price?: number;
|
price?: number;
|
||||||
cartNum?: number;
|
cartNum?: number;
|
||||||
|
discount_price?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const goodInfo = ref<GoodInfo>({});
|
const goodInfo = ref<GoodInfo>({});
|
||||||
@@ -311,6 +312,7 @@ page {
|
|||||||
height: 30px;
|
height: 30px;
|
||||||
background-color: #8f8f8f;
|
background-color: #8f8f8f;
|
||||||
}
|
}
|
||||||
|
|
||||||
.line1 {
|
.line1 {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
.order-card {
|
.order-card {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 20px auto;
|
margin: 10px auto;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
@@ -94,4 +94,4 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,40 +9,66 @@
|
|||||||
<!-- <nut-price position="after" symbol="积分" :price="b" size="large" />-->
|
<!-- <nut-price position="after" symbol="积分" :price="b" size="large" />-->
|
||||||
<!-- </view>-->
|
<!-- </view>-->
|
||||||
<!-- 商品信息 -->
|
<!-- 商品信息 -->
|
||||||
<view class="order-card">
|
<view class="w-full" v-for="(itm, idx) in orderData" :key="idx">
|
||||||
<view class="center mb-[20px]" v-for="(item, index) in orderData.OrderGoods" :key="index">
|
<view class="order-card">
|
||||||
<view class="top">
|
<view class="mb-[10px] text-[28px] text-[#9C9C9C]"
|
||||||
<image :src="item.Goods.cover" />
|
>{{ itm.Store.name }}
|
||||||
<view class="flex flex-col justify-between flex-1">
|
</view>
|
||||||
<view class="title">{{ item.Goods?.name }}</view>
|
<view
|
||||||
<view class="text-[#F83D3D] mt-5">
|
class="center mb-[20px]"
|
||||||
<view>¥{{ item.pay_price }}元
|
v-for="(item, index) in itm.OrderGoods"
|
||||||
<text v-if="item.pay_integral > 0">+{{ item.pay_integral }}积分</text>
|
:key="index">
|
||||||
|
<view class="top">
|
||||||
|
<image :src="item.Goods.cover" />
|
||||||
|
<view class="flex flex-col justify-between flex-1 h-[150px]">
|
||||||
|
<view class="title line-clamp-2 text-[25px]"
|
||||||
|
>{{ item.Goods?.name }}
|
||||||
|
</view>
|
||||||
|
<view class="text-[#F83D3D] mt-5">
|
||||||
|
<view
|
||||||
|
>¥{{ item.pay_price }}元
|
||||||
|
<text v-if="item.pay_integral > 0"
|
||||||
|
>+{{ item.pay_integral }}积分</text
|
||||||
|
>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="right">
|
||||||
<view class="right">
|
<view>x{{ item.number }}</view>
|
||||||
<view>x{{ item.number }}</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
<!-- <view class="line"></view> -->
|
|
||||||
<view class="flex justify-between items-center mt-2 mb-2 text-[25px]" style="text-align: right">
|
|
||||||
<text class="text-[#9C9C9C] text-[28px]">共{{ orderData.count }}件商品
|
|
||||||
</text>
|
|
||||||
<text class="text-[26px]">应付款: ¥{{ orderData.discount_price }}元
|
|
||||||
<text v-if="orderData.exchange > 0">
|
|
||||||
积分抵扣: {{ orderData.exchange }}</text>
|
|
||||||
</text>
|
|
||||||
<!-- <view class="line"></view> -->
|
<!-- <view class="line"></view> -->
|
||||||
|
<view
|
||||||
|
class="flex justify-between items-center mt-2 mb-2 text-[25px] text-right">
|
||||||
|
<text class="text-[#9C9C9C] text-[28px]"
|
||||||
|
>共{{ itm.count }}件商品
|
||||||
|
</text>
|
||||||
|
<text class="text-[26px]"
|
||||||
|
>应付款: ¥{{ itm.discount_price }}元
|
||||||
|
<text v-if="itm.exchange > 0"> 积分抵扣: {{ itm.exchange }}</text>
|
||||||
|
</text>
|
||||||
|
<!-- <view class="line"></view> -->
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- {{ payVal }} -->
|
<!-- {{ payVal }} -->
|
||||||
<nut-radio-group class="w-[95%]" v-model="payVal">
|
<nut-radio-group class="w-[95%]" v-model="payVal">
|
||||||
<nut-cell-group class="w-full">
|
<nut-cell-group class="w-full">
|
||||||
<nut-cell class="text-[#333333]" title="支付方式"></nut-cell>
|
<nut-cell class="text-[#333333]" title="支付方式"></nut-cell>
|
||||||
<nut-cell v-for="(item, index) in payList" :key="index" class="flex items-center" :title="item.name"
|
<nut-cell
|
||||||
:desc="item.number > 0 ? `可用积分:${item.number}` : item.name.includes('微信') ? '微信全额支付' : ''"
|
v-for="(item, index) in payList"
|
||||||
|
:key="index"
|
||||||
|
class="flex items-center"
|
||||||
|
:title="item.name"
|
||||||
|
:desc="
|
||||||
|
item.number > 0
|
||||||
|
? `可用积分:${item.number}`
|
||||||
|
: item.name.includes('微信')
|
||||||
|
? '微信全额支付'
|
||||||
|
: ''
|
||||||
|
"
|
||||||
@click="cellClick(item.ID)">
|
@click="cellClick(item.ID)">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<IconFont size="30" :name="item.icon" />
|
<IconFont size="30" :name="item.icon" />
|
||||||
@@ -53,8 +79,15 @@
|
|||||||
</nut-cell>
|
</nut-cell>
|
||||||
</nut-cell-group>
|
</nut-cell-group>
|
||||||
</nut-radio-group>
|
</nut-radio-group>
|
||||||
<view class="w-[90%] mt-[100px]">
|
<view class="w-[90%] mt-[30px]">
|
||||||
<nut-button shape="square" :loading="isLoading" type="primary" block @click="pay">确认支付
|
<nut-button
|
||||||
|
shape="square"
|
||||||
|
:loading="isLoading"
|
||||||
|
:disabled="isLoading"
|
||||||
|
type="primary"
|
||||||
|
block
|
||||||
|
@click="pay"
|
||||||
|
>确认支付
|
||||||
</nut-button>
|
</nut-button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -62,11 +95,10 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { IconFont } from '@nutui/icons-vue-taro';
|
import {IconFont} from '@nutui/icons-vue-taro';
|
||||||
import { onUnmounted, ref } from 'vue';
|
import {onUnmounted, ref} from 'vue';
|
||||||
import { getActiveOrderDetail, getPayList } from '@/api/goods';
|
import {getActiveOrderDetail, getPayList} from '@/api/goods';
|
||||||
import { getUserPoint } from '@/api/admin';
|
import {payOrder} from '@/api/order';
|
||||||
import { payOrder } from '@/api/order';
|
|
||||||
import * as dayjs from 'dayjs';
|
import * as dayjs from 'dayjs';
|
||||||
|
|
||||||
const payVal = ref();
|
const payVal = ref();
|
||||||
@@ -75,21 +107,21 @@ const t_id = ref();
|
|||||||
|
|
||||||
const tStr = ref('00:00');
|
const tStr = ref('00:00');
|
||||||
|
|
||||||
const orderData = ref<any>({});
|
const orderData = ref<any>([]);
|
||||||
|
|
||||||
const isLoading = ref(false);
|
const isLoading = ref(false);
|
||||||
|
|
||||||
const opt = ref<any>({});
|
const opt = ref<any>({});
|
||||||
|
|
||||||
Taro.useLoad(e => {
|
Taro.useLoad(e => {
|
||||||
const { oid, bid, OrderType } = e;
|
const {oid, bid, OrderType} = e;
|
||||||
opt.value = e;
|
opt.value = e;
|
||||||
get_pay_list();
|
get_pay_list();
|
||||||
getData(oid, bid, OrderType);
|
getData(oid, bid, OrderType);
|
||||||
});
|
});
|
||||||
|
|
||||||
const a = ref(0);
|
// const a = ref(0);
|
||||||
const b = ref(0);
|
// const b = ref(0);
|
||||||
|
|
||||||
const payList = ref<any>([]);
|
const payList = ref<any>([]);
|
||||||
|
|
||||||
@@ -100,11 +132,11 @@ const get_pay_list = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getData = async (oid: string, bid: string, OrderType: number) => {
|
const getData = async (oid: string, bid: string, OrderType: number) => {
|
||||||
const user_info = Taro.getStorageSync('userInfo');
|
// const user_info = Taro.getStorageSync('userInfo');
|
||||||
const data = await getUserPoint({
|
// const data = await getUserPoint({
|
||||||
phone: user_info.data.phone,
|
// phone: user_info.data.phone,
|
||||||
bid,
|
// bid,
|
||||||
});
|
// });
|
||||||
|
|
||||||
const res = await getActiveOrderDetail({
|
const res = await getActiveOrderDetail({
|
||||||
oid,
|
oid,
|
||||||
@@ -114,41 +146,43 @@ const getData = async (oid: string, bid: string, OrderType: number) => {
|
|||||||
// let a = 0;
|
// let a = 0;
|
||||||
// let b = 0;
|
// let b = 0;
|
||||||
|
|
||||||
orderData.value = {
|
// orderData.value = {
|
||||||
...res.data.data[0],
|
// ...res.data.data[0],
|
||||||
...data.data,
|
// ...data.data,
|
||||||
};
|
// };
|
||||||
|
|
||||||
a.value = 0;
|
orderData.value = res.data.data || [];
|
||||||
b.value = 0;
|
|
||||||
|
|
||||||
res.data.data.forEach(item => {
|
// console.log(orderData.value)
|
||||||
a.value += item.price;
|
|
||||||
b.value += item.discount_integral;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!orderData.value.oid)
|
// a.value = 0;
|
||||||
|
// b.value = 0;
|
||||||
|
|
||||||
|
// res.data.data.forEach(item => {
|
||||||
|
// a.value += item.price;
|
||||||
|
// b.value += item.discount_integral;
|
||||||
|
// });
|
||||||
|
|
||||||
|
if (!orderData.value.length)
|
||||||
return Taro.showToast({
|
return Taro.showToast({
|
||||||
title: '未获取到订单信息~',
|
title: '未获取到订单信息~',
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
});
|
});
|
||||||
countdownTime();
|
// countdownTime();
|
||||||
};
|
};
|
||||||
|
|
||||||
const pay = async () => {
|
const pay = async () => {
|
||||||
try {
|
try {
|
||||||
|
if (isLoading.value) return;
|
||||||
isLoading.value = true;
|
isLoading.value = true;
|
||||||
if (!payVal.value)
|
if (!payVal.value)
|
||||||
return Taro.showToast({ title: '请选择支付方式', icon: 'none' });
|
return Taro.showToast({title: '请选择支付方式', icon: 'none'});
|
||||||
|
|
||||||
await confirmPay();
|
await confirmPay();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
title: error.msg,
|
title: error.msg,
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
});
|
});
|
||||||
} finally {
|
|
||||||
isLoading.value = false;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -170,6 +204,7 @@ const confirmPay = async () => {
|
|||||||
title: '支付成功',
|
title: '支付成功',
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
});
|
});
|
||||||
|
isLoading.value = false;
|
||||||
},
|
},
|
||||||
fail: function () {
|
fail: function () {
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
@@ -183,15 +218,16 @@ const confirmPay = async () => {
|
|||||||
url: `/pages/users/order_list/index?type=0`,
|
url: `/pages/users/order_list/index?type=0`,
|
||||||
});
|
});
|
||||||
}, 2000);
|
}, 2000);
|
||||||
|
// isLoading.value = false;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
isLoading.value = false;
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
isLoading.value = false;
|
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
title: err.msg,
|
title: err.msg,
|
||||||
icon: 'none',
|
icon: 'none',
|
||||||
});
|
});
|
||||||
|
} finally {
|
||||||
|
// isLoading.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<view :style="{ marginTop: BarHeight + 'px' }"></view>
|
<view :style="{marginTop: BarHeight + 'px'}"></view>
|
||||||
<view class="local">
|
<view class="local">
|
||||||
<view class="iconfont icon-dizhi" style="font-size: 20px"></view>
|
<view class="iconfont icon-dizhi" style="font-size: 20px"></view>
|
||||||
<text class="text-[28px]">{{ address }}</text>
|
<text class="text-[28px]">{{ address }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="search">
|
<view class="search">
|
||||||
<view class="iconfont icon-sousuo" style="color: #8f8f8f; margin-right: 8px"></view>
|
<view
|
||||||
|
class="iconfont icon-sousuo"
|
||||||
|
style="color: #8f8f8f; margin-right: 8px"></view>
|
||||||
<input placeholder="请输入商家名称搜索" v-model="searchVal" />
|
<input placeholder="请输入商家名称搜索" v-model="searchVal" />
|
||||||
<view class="search-btn" @click="clickSearch">搜索</view>
|
<view class="search-btn" @click="clickSearch">搜索</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -14,18 +16,36 @@
|
|||||||
<view class="title"></view>
|
<view class="title"></view>
|
||||||
<navigator class="jf-btn" hover-class="none"></navigator>
|
<navigator class="jf-btn" hover-class="none"></navigator>
|
||||||
<view class="footer">
|
<view class="footer">
|
||||||
<navigator hover-class="none" class="btn-1" url="/pages/fastBuy/index?type=1"></navigator>
|
<navigator
|
||||||
<navigator hover-class="none" openType="switchTab" url="/pages/game/gamehome/index" class="btn-2"></navigator>
|
hover-class="none"
|
||||||
<navigator hover-class="none" class="btn-3" url="/pages/fastBuy/index?type=2"></navigator>
|
class="btn-1"
|
||||||
|
url="/pages/fastBuy/index?type=1"></navigator>
|
||||||
|
<navigator
|
||||||
|
hover-class="none"
|
||||||
|
openType="switchTab"
|
||||||
|
url="/pages/game/gamehome/index"
|
||||||
|
class="btn-2"></navigator>
|
||||||
|
<navigator
|
||||||
|
hover-class="none"
|
||||||
|
class="btn-3"
|
||||||
|
url="/pages/fastBuy/index?type=2"></navigator>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="navigation">
|
<view class="navigation">
|
||||||
<view class="item" v-for="(item, index) in navigationList" :key="index" @click="toPage(item)">
|
<view
|
||||||
|
class="item"
|
||||||
|
v-for="(item, index) in navigationList"
|
||||||
|
:key="index"
|
||||||
|
@click="toPage(item)">
|
||||||
<image class="icon" :src="item.icon" />
|
<image class="icon" :src="item.icon" />
|
||||||
<view class="text">{{ item.name }}</view>
|
<view class="text">{{ item.name }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<navigator class="ad" url="/pages/marketing/yq/index" open-type="navigate" hover-class="none">
|
<navigator
|
||||||
|
class="ad"
|
||||||
|
url="/pages/marketing/yq/index"
|
||||||
|
open-type="navigate"
|
||||||
|
hover-class="none">
|
||||||
</navigator>
|
</navigator>
|
||||||
<MerList :get-user-location="getUserLocal" />
|
<MerList :get-user-location="getUserLocal" />
|
||||||
<Popup :imgArr="imgList" />
|
<Popup :imgArr="imgList" />
|
||||||
@@ -34,8 +54,8 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
import { getHomeList } from '@/api/home';
|
import {getHomeList} from '@/api/home';
|
||||||
import MerList from '@/components/MerList.vue';
|
import MerList from '@/components/MerList.vue';
|
||||||
import Popup from '@/components/Popup.vue';
|
import Popup from '@/components/Popup.vue';
|
||||||
|
|
||||||
@@ -52,9 +72,7 @@ interface navigationType {
|
|||||||
|
|
||||||
const navigationList = ref<Array<navigationType>>([]);
|
const navigationList = ref<Array<navigationType>>([]);
|
||||||
|
|
||||||
const imgList = ref([
|
const imgList = ref([require('../../static/popTip.png')]);
|
||||||
require('../../static/popTip.png'),
|
|
||||||
]);
|
|
||||||
|
|
||||||
Taro.useShareAppMessage(() => ({
|
Taro.useShareAppMessage(() => ({
|
||||||
title: '捷兑通',
|
title: '捷兑通',
|
||||||
@@ -156,11 +174,11 @@ const getNavLists = async () => {
|
|||||||
const toPage = item => {
|
const toPage = item => {
|
||||||
item.type !== 1
|
item.type !== 1
|
||||||
? Taro.navigateTo({
|
? Taro.navigateTo({
|
||||||
url: `/pages/search/index?id=${item.ID}&name=${item.name}`,
|
url: `/pages/search/index?id=${item.ID}&name=${item.name}`,
|
||||||
})
|
})
|
||||||
: Taro.navigateTo({
|
: Taro.navigateTo({
|
||||||
url: item.url as string,
|
url: item.url as string,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,56 +1,85 @@
|
|||||||
<template>
|
<template>
|
||||||
<view>
|
<view>
|
||||||
<view class="head-wrapper" :style="{ top: BarHeight + 'px' }">
|
<view class="head-wrapper" :style="{top: BarHeight + 'px'}">
|
||||||
<view class="head-menu">
|
<view class="head-menu">
|
||||||
<Left class="iconfont" @click="returns" />
|
<Left class="iconfont" @click="returns" />
|
||||||
<Home class="iconfont" @click="goHome" />
|
<Home class="iconfont" @click="goHome" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 幻灯片 -->
|
<!-- 幻灯片 -->
|
||||||
<nut-swiper :init-page="0" :pagination-visible="false" pagination-color="red" auto-play="3000">
|
<nut-swiper
|
||||||
|
:init-page="0"
|
||||||
|
:pagination-visible="false"
|
||||||
|
pagination-color="red"
|
||||||
|
auto-play="3000">
|
||||||
<nut-swiper-item v-for="(itm, idx) in swiperList" :key="idx">
|
<nut-swiper-item v-for="(itm, idx) in swiperList" :key="idx">
|
||||||
<img style="width: 100%; height: 100%" :src="itm" :alt="idx.toString()" />
|
<img
|
||||||
|
style="width: 100%; height: 100%"
|
||||||
|
:src="itm"
|
||||||
|
:alt="idx.toString()" />
|
||||||
</nut-swiper-item>
|
</nut-swiper-item>
|
||||||
</nut-swiper>
|
</nut-swiper>
|
||||||
<!-- 商家信息 -->
|
<!-- 商家信息 -->
|
||||||
<view class="infoBox">
|
<view class="infoBox">
|
||||||
<view class="title text-[#333333]">{{ mer_info.name }}</view>
|
<view class="title text-[#333333]">{{ mer_info.name }}</view>
|
||||||
<view class="flex items-center justify-between mt-3">
|
<view class="flex items-center justify-between mt-3">
|
||||||
<nut-rate spacing="1" active-color="rgba(252, 207, 10, 1)" v-model="mer_info.rate" />
|
<nut-rate
|
||||||
|
spacing="1"
|
||||||
|
active-color="rgba(252, 207, 10, 1)"
|
||||||
|
v-model="mer_info.rate" />
|
||||||
<view class="text-[#9E9E9E] text-[25px]">销量:10000</view>
|
<view class="text-[#9E9E9E] text-[25px]">销量:10000</view>
|
||||||
<view class="text-[#9E9E9E] text-[25px]">营业时间:{{ mer_info.week_start }}-{{ mer_info.week_end }}
|
<view class="text-[#9E9E9E] text-[25px]"
|
||||||
|
>营业时间:{{ mer_info.week_start }}-{{ mer_info.week_end }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
<view class="bom">
|
<view class="bom">
|
||||||
<view class="iconfont icon-dizhi text-[#C4C4C4]" style="width: 15px; height: 15px; margin-right: 15px"></view>
|
<view
|
||||||
|
class="iconfont icon-dizhi text-[#C4C4C4]"
|
||||||
|
style="width: 15px; height: 15px; margin-right: 15px"></view>
|
||||||
<view class="left">
|
<view class="left">
|
||||||
<view>{{ mer_info.address || '暂无商家地址' }}</view>
|
<view>{{ mer_info.address || '暂无商家地址' }}</view>
|
||||||
<view class="sub mt-1">距离您{{
|
<view class="sub mt-1"
|
||||||
calculateDistance(
|
>距离您{{
|
||||||
userLocalNum.t,
|
calculateDistance(
|
||||||
userLocalNum.l,
|
userLocalNum.t,
|
||||||
Number(mer_info.lat),
|
userLocalNum.l,
|
||||||
Number(mer_info.lon),
|
Number(mer_info.lat),
|
||||||
)
|
Number(mer_info.lon),
|
||||||
}}
|
)
|
||||||
|
}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<view @click="clickMap">
|
<view @click="clickMap">
|
||||||
<image class="w-[50px] h-[50px]" src="http://p1.meituan.net/csc/92ee8512c90527169b44e07fd11d250d924.png" />
|
<image
|
||||||
|
class="w-[50px] h-[50px]"
|
||||||
|
src="http://p1.meituan.net/csc/92ee8512c90527169b44e07fd11d250d924.png" />
|
||||||
</view>
|
</view>
|
||||||
<view @click="clickPhone">
|
<view @click="clickPhone">
|
||||||
<image class="w-[50px] h-[50px]" src="http://p0.meituan.net/csc/ab0493b124a6bb858bf82a2340767c0d919.png" />
|
<image
|
||||||
|
class="w-[50px] h-[50px]"
|
||||||
|
src="http://p0.meituan.net/csc/ab0493b124a6bb858bf82a2340767c0d919.png" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- 商品列表 -->
|
<!-- 商品列表 -->
|
||||||
<view class="good-class" v-if="class_list.length > 0">
|
<view class="good-class" v-if="class_list.length > 0">
|
||||||
<nut-tabs v-model="value" title-scroll size="large" direction="vertical" title-gutter="5" animated-time="0"
|
<nut-tabs
|
||||||
type="" name="tabName">
|
v-model="value"
|
||||||
<nut-tab-pane v-for="(itm, index) in good_list" :key="index" :title="itm.name" :pane-key="index">
|
title-scroll
|
||||||
|
size="large"
|
||||||
|
direction="vertical"
|
||||||
|
title-gutter="5"
|
||||||
|
animated-time="0"
|
||||||
|
type=""
|
||||||
|
name="tabName">
|
||||||
|
<nut-tab-pane
|
||||||
|
v-for="(itm, index) in good_list"
|
||||||
|
:key="index"
|
||||||
|
:title="itm.name"
|
||||||
|
:pane-key="index">
|
||||||
<view v-if="itm.Goods.length > 0">
|
<view v-if="itm.Goods.length > 0">
|
||||||
<view class="list" v-for="(item, index) in itm.Goods" :key="index">
|
<view class="list" v-for="(item, index) in itm.Goods" :key="index">
|
||||||
<view class="item" @click.stop="toGoodDetails(item.gid, 1)">
|
<view class="item" @click.stop="toGoodDetails(item.gid, 1)">
|
||||||
@@ -59,18 +88,25 @@
|
|||||||
<view class="name">{{ item.name }}</view>
|
<view class="name">{{ item.name }}</view>
|
||||||
<view class="bom">
|
<view class="bom">
|
||||||
<view class="price">
|
<view class="price">
|
||||||
<text style="font-size: 15px">{{ item.discount_price }}元
|
<text style="font-size: 15px"
|
||||||
<text style="font-size: 15px" v-if="item.exchange">+{{ item.exchange }}积分
|
>{{ item.discount_price }}元
|
||||||
|
<text style="font-size: 15px" v-if="item.exchange"
|
||||||
|
>+{{ item.exchange }}积分
|
||||||
</text>
|
</text>
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="bom">
|
<view class="bom">
|
||||||
<view>
|
<view>
|
||||||
<view class="stock text-[25px]">剩余:{{ item.stock }}</view>
|
<view class="stock text-[25px]"
|
||||||
|
>剩余:{{ item.stock }}</view
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex items-center justify-between">
|
<view class="flex items-center justify-between">
|
||||||
<view v-if="item.cartNum > 0" class="btn" @click.stop="add_cart(item, 1)">
|
<view
|
||||||
|
v-if="item.cartNum > 0"
|
||||||
|
class="btn"
|
||||||
|
@click.stop="add_cart(item, 1)">
|
||||||
<Minus />
|
<Minus />
|
||||||
</view>
|
</view>
|
||||||
<view v-if="item.cartNum > 0" style="margin: 0 10px">
|
<view v-if="item.cartNum > 0" style="margin: 0 10px">
|
||||||
@@ -98,10 +134,10 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { Left, Home, Plus, Minus } from '@nutui/icons-vue-taro';
|
import {Left, Home, Plus, Minus} from '@nutui/icons-vue-taro';
|
||||||
import { Ref, ref } from 'vue';
|
import {Ref, ref} from 'vue';
|
||||||
import { calculateDistance } from '@/utils';
|
import {calculateDistance} from '@/utils';
|
||||||
import { getGoodList, getMerCategory, getMerDetail } from '@/api/goods';
|
import {getGoodList, getMerCategory, getMerDetail} from '@/api/goods';
|
||||||
import Cart from '@/components/Cart.vue';
|
import Cart from '@/components/Cart.vue';
|
||||||
|
|
||||||
const statusBarHeight = Taro.getSystemInfoSync()?.statusBarHeight;
|
const statusBarHeight = Taro.getSystemInfoSync()?.statusBarHeight;
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
import {ref} from 'vue';
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import Pay from '@/components/Pay.vue';
|
import Pay from '@/components/Pay.vue';
|
||||||
import { getActiveOrderList, deleteActiveOrder } from '@/api/goods';
|
import {getActiveOrderList, deleteActiveOrder} from '@/api/goods';
|
||||||
import { getOrderStatistics } from '@/api/order';
|
import {getOrderStatistics} from '@/api/order';
|
||||||
import UQRCode from 'uqrcodejs';
|
import UQRCode from 'uqrcodejs';
|
||||||
|
|
||||||
const tabValue = ref(0);
|
const tabValue = ref(0);
|
||||||
@@ -162,7 +162,7 @@ const toDetail = (item: any) => {
|
|||||||
|
|
||||||
const delOrder = async (oid: string) => {
|
const delOrder = async (oid: string) => {
|
||||||
try {
|
try {
|
||||||
await deleteActiveOrder({ oid });
|
await deleteActiveOrder({oid});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
title: error.msg,
|
title: error.msg,
|
||||||
@@ -237,37 +237,49 @@ const closed = () => {
|
|||||||
<image src="../static/user/order_list_top.png" />
|
<image src="../static/user/order_list_top.png" />
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="tabs-box">
|
<view class="tabs-box">
|
||||||
<view v-for="item in tabsList" :key="item.value" @click="tabChange(item.value)">
|
<view
|
||||||
<view class="text" :style="{
|
v-for="item in tabsList"
|
||||||
color: tabValue === item.value ? '#000' : '#9C9C9C',
|
:key="item.value"
|
||||||
}">{{ item.title }}
|
@click="tabChange(item.value)">
|
||||||
|
<view
|
||||||
|
class="text"
|
||||||
|
:style="{
|
||||||
|
color: tabValue === item.value ? '#000' : '#9C9C9C',
|
||||||
|
}"
|
||||||
|
>{{ item.title }}
|
||||||
</view>
|
</view>
|
||||||
<!-- <view>{{ item.num }}</view> -->
|
<!-- <view>{{ item.num }}</view> -->
|
||||||
<view class="line" :class="{ lineColor: item.value === tabValue }"></view>
|
<view class="line" :class="{lineColor: item.value === tabValue}"></view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-if="orderList.length > 0">
|
<view v-if="orderList.length > 0">
|
||||||
<view class="order-card" v-for="(item, index) in orderList" :key="index" @click="toDetail(item)">
|
<view
|
||||||
|
class="order-card"
|
||||||
|
v-for="(item, index) in orderList"
|
||||||
|
:key="index"
|
||||||
|
@click="toDetail(item)">
|
||||||
<view class="top">
|
<view class="top">
|
||||||
<view class="text-[#9C9C9C] text-[28px]">订单号:{{ item.oid }}</view>
|
<view class="text-[#9C9C9C] text-[28px]">订单号:{{ item.oid }}</view>
|
||||||
<view :style="{
|
<view
|
||||||
color:
|
:style="{
|
||||||
item.status === 0
|
color:
|
||||||
? '#FF850A'
|
item.status === 0
|
||||||
: item.status === 1
|
? '#FF850A'
|
||||||
|
: item.status === 1
|
||||||
? '#F83D3D'
|
? '#F83D3D'
|
||||||
: item.status === 2
|
: item.status === 2
|
||||||
? '#333333'
|
? '#333333'
|
||||||
: '#9C9C9C',
|
: '#9C9C9C',
|
||||||
}">{{
|
}"
|
||||||
item.status === 0
|
>{{
|
||||||
? '待付款'
|
item.status === 0
|
||||||
: item.status === 1
|
? '待付款'
|
||||||
|
: item.status === 1
|
||||||
? '待使用'
|
? '待使用'
|
||||||
: item.status === 2
|
: item.status === 2
|
||||||
? '已使用'
|
? '已使用'
|
||||||
: '已失效'
|
: '已失效'
|
||||||
}}
|
}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
@@ -277,8 +289,11 @@ const closed = () => {
|
|||||||
<view class="flex flex-col justify-between flex-1">
|
<view class="flex flex-col justify-between flex-1">
|
||||||
<view class="title">{{ itm.Goods?.name }}</view>
|
<view class="title">{{ itm.Goods?.name }}</view>
|
||||||
<view class="text-[#F83D3D] mt-5">
|
<view class="text-[#F83D3D] mt-5">
|
||||||
<view>{{ itm.Goods.discount_price }}元
|
<view
|
||||||
<text v-if="itm.Goods.exchange > 0">+{{ itm.Goods.exchange }}积分</text>
|
>{{ itm.Goods.discount_price }}元
|
||||||
|
<text v-if="itm.Goods.exchange > 0"
|
||||||
|
>+{{ itm.Goods.exchange }}积分</text
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -288,18 +303,28 @@ const closed = () => {
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="line"></view> -->
|
<!-- <view class="line"></view> -->
|
||||||
<view class="flex justify-between items-center mt-2 mb-2 text-[25px]" v-if="item.status !== 0"
|
<view
|
||||||
|
class="flex justify-between items-center mt-2 mb-2 text-[25px]"
|
||||||
|
v-if="item.status !== 0"
|
||||||
style="text-align: right">
|
style="text-align: right">
|
||||||
<text class="text-[#9C9C9C] text-[28px]">共{{ item.count }}件商品
|
<text class="text-[#9C9C9C] text-[28px]"
|
||||||
|
>共{{ item.count }}件商品
|
||||||
</text>
|
</text>
|
||||||
<text class="text-[26px]">{{ item.status !== 0 ? '实' : '应' }}付款:
|
<text class="text-[26px]"
|
||||||
|
>{{ item.status !== 0 ? '实' : '应' }}付款:
|
||||||
{{ item.discount_price }} (元)
|
{{ item.discount_price }} (元)
|
||||||
<text v-if="item.exchange > 0">积分抵扣: {{ item.exchange }}</text>
|
<text v-if="item.exchange > 0">积分抵扣: {{ item.exchange }}</text>
|
||||||
</text>
|
</text>
|
||||||
<!-- <view class="line"></view> -->
|
<!-- <view class="line"></view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="btn">
|
<view class="btn">
|
||||||
<nut-button v-if="item.status === 0" plain size="mini" type="primary" @click.stop="delOrder(item.oid)">取消订单
|
<nut-button
|
||||||
|
v-if="item.status === 0"
|
||||||
|
plain
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
@click.stop="delOrder(item.oid)"
|
||||||
|
>取消订单
|
||||||
</nut-button>
|
</nut-button>
|
||||||
<!-- <nut-button
|
<!-- <nut-button
|
||||||
style="margin-left: 5px"
|
style="margin-left: 5px"
|
||||||
@@ -308,29 +333,55 @@ const closed = () => {
|
|||||||
@click="toDetail(item)"
|
@click="toDetail(item)"
|
||||||
>查看详情
|
>查看详情
|
||||||
</nut-button> -->
|
</nut-button> -->
|
||||||
<nut-button style="margin-left: 5px" size="mini" type="primary" v-if="item.status === 0"
|
<nut-button
|
||||||
@click.stop="openPay(item)">立即付款
|
style="margin-left: 5px"
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
v-if="item.status === 0"
|
||||||
|
@click.stop="openPay(item)"
|
||||||
|
>立即付款
|
||||||
</nut-button>
|
</nut-button>
|
||||||
<nut-button style="margin-left: 5px" size="mini" type="primary" v-if="item.status === 1"
|
<nut-button
|
||||||
@click.stop="openCode(item)">出示核销码
|
style="margin-left: 5px"
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
v-if="item.status === 1"
|
||||||
|
@click.stop="openCode(item)"
|
||||||
|
>出示核销码
|
||||||
</nut-button>
|
</nut-button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<nut-empty v-else description="暂无订单"></nut-empty>
|
<nut-empty v-else description="暂无订单"></nut-empty>
|
||||||
<!-- 核销码弹窗 -->
|
<!-- 核销码弹窗 -->
|
||||||
<nut-popup v-model:visible="isShowCode" position="center" style="padding: 20px; border-radius: 15px"
|
<nut-popup
|
||||||
:maskClosable="true" safe-area-inset-bottom @click-overlay="closed" @closed="closed">
|
v-model:visible="isShowCode"
|
||||||
|
position="center"
|
||||||
|
style="padding: 20px; border-radius: 15px"
|
||||||
|
:maskClosable="true"
|
||||||
|
safe-area-inset-bottom
|
||||||
|
@click-overlay="closed"
|
||||||
|
@closed="closed">
|
||||||
<view class="code-box">
|
<view class="code-box">
|
||||||
<view>核销码</view>
|
<view>核销码</view>
|
||||||
<!-- <image class="qrcode" :src="url"></image> -->
|
<!-- <image class="qrcode" :src="url"></image> -->
|
||||||
<!-- <view class="qrcode"> -->
|
<!-- <view class="qrcode"> -->
|
||||||
<canvas ref="qrcode" id="qrcode" style="width: 200px; height: 200px" canvas-id="qrcode"></canvas>
|
<canvas
|
||||||
|
ref="qrcode"
|
||||||
|
id="qrcode"
|
||||||
|
style="width: 200px; height: 200px"
|
||||||
|
canvas-id="qrcode"></canvas>
|
||||||
<!-- </view> -->
|
<!-- </view> -->
|
||||||
</view>
|
</view>
|
||||||
</nut-popup>
|
</nut-popup>
|
||||||
<pay :isShowPay="isShowPay" :interval="false" :jfInfo="jfInfo" :OrderType="2" @errPay="errPay"
|
<pay
|
||||||
@successPay="successPay" @closePay="closePay" />
|
:isShowPay="isShowPay"
|
||||||
|
:interval="false"
|
||||||
|
:jfInfo="jfInfo"
|
||||||
|
:OrderType="2"
|
||||||
|
@errPay="errPay"
|
||||||
|
@successPay="successPay"
|
||||||
|
@closePay="closePay" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,8 @@
|
|||||||
<view class="font-bold">订单待使用</view>
|
<view class="font-bold">订单待使用</view>
|
||||||
<IconFont name="rect-right" size="15" color="#333333"></IconFont>
|
<IconFont name="rect-right" size="15" color="#333333"></IconFont>
|
||||||
</view>
|
</view>
|
||||||
<view class="text-[#9C9C9C] text-[20px]">订单剩余
|
<view class="text-[#9C9C9C] text-[20px]"
|
||||||
|
>订单剩余
|
||||||
<text class="text-[#FF0000]">{{ timeStr }} </text>
|
<text class="text-[#FF0000]">{{ timeStr }} </text>
|
||||||
过期,请尽快核销!
|
过期,请尽快核销!
|
||||||
</view>
|
</view>
|
||||||
@@ -49,27 +50,37 @@
|
|||||||
</view>
|
</view>
|
||||||
<!-- 商家信息 -->
|
<!-- 商家信息 -->
|
||||||
<view class="mer-info">
|
<view class="mer-info">
|
||||||
<image class="w-[150px] h-[150px] rounded-lg mr-2" :src="goodInfo.Store?.head_photo" />
|
<image
|
||||||
|
class="w-[150px] h-[150px] rounded-lg mr-2"
|
||||||
|
:src="goodInfo.Store?.head_photo" />
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<view class="text-[#333333]">{{ goodInfo.Store?.name }}</view>
|
<view class="text-[#333333]">{{ goodInfo.Store?.name }}</view>
|
||||||
<view class="flex mt-2 items-center text-[#999999] text-[23px] text-ellipsis line-clamp-3">
|
<view
|
||||||
<view style="font-size: 15px" class="iconfont icon-dizhi text-[#C4C4C4]"></view>
|
class="flex mt-2 items-center text-[#999999] text-[23px] text-ellipsis line-clamp-3">
|
||||||
|
<view
|
||||||
|
style="font-size: 15px"
|
||||||
|
class="iconfont icon-dizhi text-[#C4C4C4]"></view>
|
||||||
<view>{{ goodInfo.Store?.address }}</view>
|
<view>{{ goodInfo.Store?.address }}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="w-full flex items-center justify-between mt-1">
|
<view class="w-full flex items-center justify-between mt-1">
|
||||||
<view class="ml-3 text-[23px] text-[#999999]">距离您{{
|
<view class="ml-3 text-[23px] text-[#999999]"
|
||||||
calculateDistance(
|
>距离您{{
|
||||||
userLocalNum.t,
|
calculateDistance(
|
||||||
userLocalNum.l,
|
userLocalNum.t,
|
||||||
Number(goodInfo.Store?.lat),
|
userLocalNum.l,
|
||||||
Number(goodInfo.Store?.lon),
|
Number(goodInfo.Store?.lat),
|
||||||
)
|
Number(goodInfo.Store?.lon),
|
||||||
}}
|
)
|
||||||
|
}}
|
||||||
</view>
|
</view>
|
||||||
<view class="flex items-center">
|
<view class="flex items-center">
|
||||||
<image @tap="toPhone()" class="w-[50px] h-[50px]"
|
<image
|
||||||
|
@tap="toPhone()"
|
||||||
|
class="w-[50px] h-[50px]"
|
||||||
src="http://p0.meituan.net/csc/ab0493b124a6bb858bf82a2340767c0d919.png" />
|
src="http://p0.meituan.net/csc/ab0493b124a6bb858bf82a2340767c0d919.png" />
|
||||||
<image @tap="toAdder()" class="w-[50px] h-[50px] ml-2"
|
<image
|
||||||
|
@tap="toAdder()"
|
||||||
|
class="w-[50px] h-[50px] ml-2"
|
||||||
src="http://p1.meituan.net/csc/92ee8512c90527169b44e07fd11d250d924.png" />
|
src="http://p1.meituan.net/csc/92ee8512c90527169b44e07fd11d250d924.png" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -81,13 +92,19 @@
|
|||||||
<nut-cell>
|
<nut-cell>
|
||||||
<template #default>
|
<template #default>
|
||||||
<view class="center-box">
|
<view class="center-box">
|
||||||
<view class="top" v-for="(item, index) in goodInfo.OrderGoods" :key="index">
|
<view
|
||||||
|
class="top"
|
||||||
|
v-for="(item, index) in goodInfo.OrderGoods"
|
||||||
|
:key="index">
|
||||||
<image :src="item.Goods?.cover" />
|
<image :src="item.Goods?.cover" />
|
||||||
<view class="flex flex-col justify-between flex-1">
|
<view class="flex flex-col justify-between flex-1">
|
||||||
<view class="title">{{ item.Goods?.name }}</view>
|
<view class="title">{{ item.Goods?.name }}</view>
|
||||||
<view class="text-[#F83D3D] mt-5">
|
<view class="text-[#F83D3D] mt-5">
|
||||||
<view>{{ item.Goods.discount_price }}元
|
<view
|
||||||
<text v-if="item.Goods.exchange > 0">+{{ item.Goods.exchange }}积分</text>
|
>{{ item.Goods.discount_price }}元
|
||||||
|
<text v-if="item.Goods.exchange > 0"
|
||||||
|
>+{{ item.Goods.exchange }}积分</text
|
||||||
|
>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -95,12 +112,17 @@
|
|||||||
<view>x{{ item.number }}</view>
|
<view>x{{ item.number }}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="flex justify-between items-center mt-2 mb-2 text-[25px]">
|
<view
|
||||||
<view class="text-[#9C9C9C]">{{ `共${goodInfo.count}件商品` }}
|
class="flex justify-between items-center mt-2 mb-2 text-[25px]">
|
||||||
|
<view class="text-[#9C9C9C]"
|
||||||
|
>{{ `共${goodInfo.count}件商品` }}
|
||||||
</view>
|
</view>
|
||||||
<text class="text-[26px]">{{ goodInfo.status !== 0 ? '实' : '应' }}付款:
|
<text class="text-[26px]"
|
||||||
|
>{{ goodInfo.status !== 0 ? '实' : '应' }}付款:
|
||||||
{{ goodInfo.discount_price }} (元)
|
{{ goodInfo.discount_price }} (元)
|
||||||
<text v-if="goodInfo.exchange > 0">积分抵扣: {{ goodInfo.exchange }}</text>
|
<text v-if="goodInfo.exchange > 0"
|
||||||
|
>积分抵扣: {{ goodInfo.exchange }}</text
|
||||||
|
>
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -109,27 +131,44 @@
|
|||||||
</nut-cell-group>
|
</nut-cell-group>
|
||||||
<nut-cell-group>
|
<nut-cell-group>
|
||||||
<nut-cell title="订单号:" :desc="goodInfo.oid"></nut-cell>
|
<nut-cell title="订单号:" :desc="goodInfo.oid"></nut-cell>
|
||||||
<nut-cell title="下单时间:" :desc="goodInfo.add_time?.slice(0, 19)"></nut-cell>
|
<nut-cell
|
||||||
|
title="下单时间:"
|
||||||
|
:desc="goodInfo.add_time?.slice(0, 19)"></nut-cell>
|
||||||
<!-- <nut-cell
|
<!-- <nut-cell
|
||||||
v-if="goodInfo.expires !== 0"
|
v-if="goodInfo.expires !== 0"
|
||||||
title="订单过期时间:"
|
title="订单过期时间:"
|
||||||
:desc="
|
:desc="
|
||||||
dayjs.unix(goodInfo.expires).format('YYYY-MM-DD HH:mm:ss')
|
dayjs.unix(goodInfo.expires).format('YYYY-MM-DD HH:mm:ss')
|
||||||
"></nut-cell> -->
|
"></nut-cell> -->
|
||||||
<nut-cell title="订单状态:" :desc="goodInfo.status === 0
|
<nut-cell
|
||||||
? '待付款'
|
title="订单状态:"
|
||||||
: goodInfo.status === 1
|
:desc="
|
||||||
? '待使用'
|
goodInfo.status === 0
|
||||||
: goodInfo.status === 2
|
? '待付款'
|
||||||
|
: goodInfo.status === 1
|
||||||
|
? '待使用'
|
||||||
|
: goodInfo.status === 2
|
||||||
? '已使用'
|
? '已使用'
|
||||||
: '已失效'
|
: '已失效'
|
||||||
"></nut-cell>
|
"></nut-cell>
|
||||||
</nut-cell-group>
|
</nut-cell-group>
|
||||||
|
|
||||||
<view class="mt-[30px] m-auto">
|
<view class="mt-[30px] m-auto">
|
||||||
<nut-button v-if="goodInfo.status === 0" shape="square" type="primary" block @click="openPay()">继续付款
|
<nut-button
|
||||||
|
v-if="goodInfo.status === 0"
|
||||||
|
shape="square"
|
||||||
|
type="primary"
|
||||||
|
block
|
||||||
|
@click="openPay()"
|
||||||
|
>继续付款
|
||||||
</nut-button>
|
</nut-button>
|
||||||
<nut-button v-if="goodInfo.status === 1" shape="square" type="primary" block @click="openCode()">出示核销码
|
<nut-button
|
||||||
|
v-if="goodInfo.status === 1"
|
||||||
|
shape="square"
|
||||||
|
type="primary"
|
||||||
|
block
|
||||||
|
@click="openCode()"
|
||||||
|
>出示核销码
|
||||||
</nut-button>
|
</nut-button>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@@ -160,30 +199,46 @@
|
|||||||
</view> -->
|
</view> -->
|
||||||
|
|
||||||
<!-- 核销码弹窗 -->
|
<!-- 核销码弹窗 -->
|
||||||
<nut-popup v-model:visible="isShowCode" position="center" style="padding: 20px; border-radius: 15px"
|
<nut-popup
|
||||||
:maskClosable="true" safe-area-inset-bottom @click-overlay="closed" @closed="closed">
|
v-model:visible="isShowCode"
|
||||||
|
position="center"
|
||||||
|
style="padding: 20px; border-radius: 15px"
|
||||||
|
:maskClosable="true"
|
||||||
|
safe-area-inset-bottom
|
||||||
|
@click-overlay="closed"
|
||||||
|
@closed="closed">
|
||||||
<view class="code-box">
|
<view class="code-box">
|
||||||
<view>核销码</view>
|
<view>核销码</view>
|
||||||
<!-- <image class="qrcode" :src="url"></image> -->
|
<!-- <image class="qrcode" :src="url"></image> -->
|
||||||
<!-- <view class="qrcode"> -->
|
<!-- <view class="qrcode"> -->
|
||||||
<canvas ref="qrcode" id="qrcode" style="width: 200px; height: 200px" canvas-id="qrcode"></canvas>
|
<canvas
|
||||||
|
ref="qrcode"
|
||||||
|
id="qrcode"
|
||||||
|
style="width: 200px; height: 200px"
|
||||||
|
canvas-id="qrcode"></canvas>
|
||||||
<!-- </view> -->
|
<!-- </view> -->
|
||||||
</view>
|
</view>
|
||||||
</nut-popup>
|
</nut-popup>
|
||||||
<pay :isShowPay="isShowPay" :interval="false" :jfInfo="jfInfo" :OrderType="2" @errPay="errPay"
|
<pay
|
||||||
@successPay="successPay" @closePay="closePay" />
|
:isShowPay="isShowPay"
|
||||||
|
:interval="false"
|
||||||
|
:jfInfo="jfInfo"
|
||||||
|
:OrderType="2"
|
||||||
|
@errPay="errPay"
|
||||||
|
@successPay="successPay"
|
||||||
|
@closePay="closePay" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Taro from '@tarojs/taro';
|
import Taro from '@tarojs/taro';
|
||||||
import { onUnmounted, ref } from 'vue';
|
import {onUnmounted, ref} from 'vue';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import duration from 'dayjs/plugin/duration';
|
import duration from 'dayjs/plugin/duration';
|
||||||
import Pay from '@/components/Pay.vue';
|
import Pay from '@/components/Pay.vue';
|
||||||
import { calculateDistance } from '@/utils';
|
import {calculateDistance} from '@/utils';
|
||||||
import { IconFont } from '@nutui/icons-vue-taro';
|
import {IconFont} from '@nutui/icons-vue-taro';
|
||||||
import { getActiveOrderDetail } from '@/api/goods';
|
import {getActiveOrderDetail} from '@/api/goods';
|
||||||
import UQRCode from 'uqrcodejs';
|
import UQRCode from 'uqrcodejs';
|
||||||
|
|
||||||
dayjs.extend(duration);
|
dayjs.extend(duration);
|
||||||
|
|||||||
@@ -83,3 +83,29 @@ export function showTips(msg: string) {
|
|||||||
icon: 'none',
|
icon: 'none',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 防抖函数
|
||||||
|
export function debounce(fn: Function, delay: number = 500) {
|
||||||
|
let timer: any = null;
|
||||||
|
return function (...args: any[]) {
|
||||||
|
if (timer) {
|
||||||
|
clearTimeout(timer);
|
||||||
|
}
|
||||||
|
timer = setTimeout(() => {
|
||||||
|
fn.apply(this, args);
|
||||||
|
}, delay);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// 节流函数
|
||||||
|
export function throttle(fn: Function, delay: number) {
|
||||||
|
let timer: any = null;
|
||||||
|
return function (...args: any[]) {
|
||||||
|
if (!timer) {
|
||||||
|
timer = setTimeout(() => {
|
||||||
|
fn.apply(this, args);
|
||||||
|
timer = null;
|
||||||
|
}, delay);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user