feat: 门票组件封装

This commit is contained in:
duanshuwen
2025-07-15 16:48:32 +08:00
parent b31b04f2e2
commit 591287e757
40 changed files with 420 additions and 50 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

View File

@@ -0,0 +1,46 @@
<template>
<view class="form-wrapper">
<view class="form-header">
<image class="form-icon" src="./images/icon_minus.png"></image>
<text class="form-title">游客1</text>
</view>
<view class="form-item">
<text class="form-label"> </text>
<input class="form-input" v-model="name" placeholder="请输入姓名" />
</view>
<view class="form-item">
<text class="form-label">手机号</text>
<input
class="form-input"
v-model="phone"
placeholder="请输入手机号"
@blur="validatePhone"
/>
</view>
</view>
</template>
<script setup>
import { ref } from "vue";
// Local state
const name = ref("");
const phone = ref("");
const phoneError = ref("");
// Methods
const validatePhone = () => {
const phoneRegex = /^1[3-9]\d{9}$/;
if (!phone.value) {
phoneError.value = "手机号不能为空";
} else if (!phoneRegex.test(phone.value)) {
phoneError.value = "请输入正确的手机号";
} else {
phoneError.value = "";
}
};
</script>
<style scoped lang="scss">
@import "./styles/index.scss";
</style>

View File

@@ -0,0 +1,14 @@
## 表单组件
## 提示词:
使用 uniapp + vue3 组合式 api 开发微信小程序,要求如下:
1、参考图片高度还原交互设计完成组件封装
2、要求布局样式结构简洁明了class 命名请按照模块名称来命名,例如:.form-wrapper
3、可以使用 uniapp 内置的组件
4、姓名、手机号需要用户自己填写
5、验证手机号格式是否正确
## 备注
仅供学习、交流使用,请勿用于商业用途。

View File

@@ -0,0 +1,46 @@
.form-wrapper {
background-color: #fff;
border-radius: 8px;
overflow: hidden;
}
.form-header {
background-color: rgba(25, 144, 255, 0.06);
border: 1px solid #e5e8ef;
border-radius: 8px 8px 0 0;
display: flex;
align-items: center;
padding: 10px 12px;
}
.form-icon {
height: 16px;
width: 16px;
margin-right: 8px;
}
.form-title {
font-size: 16px;
color: #00a6ff;
}
.form-item {
display: flex;
align-items: center;
padding: 12px 24px 12px 16px;
}
.form-label {
font-size: 16px;
color: #86909c;
margin-right: 10px;
width: 50px;
}
.form-input {
flex: 1;
font-size: 16px;
color: #333;
border-bottom: 1px solid #ddd;
padding-bottom: 6px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -2,14 +2,14 @@
<view class="stepper-wrapper">
<image
class="stepper-btn stepper-btn-minus"
src="./images/icon_minus.webp"
src="./images/icon_minus.png"
mode="aspectFill"
@click="decrease"
></image>
<text class="stepper-text">{{ value }}</text>
<image
class="stepper-btn stepper-btn-plus"
src="./images/icon_plus.webp"
src="./images/icon_plus.png"
mode="aspectFill"
@click="increase"
></image>

View File

@@ -6,6 +6,7 @@
.stepper-btn {
width: 24px;
height: 24px;
border-radius: 50px;
cursor: pointer;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,29 @@
<template>
<view class="sum-wrapper">
<view class="sum-item">
<text class="sum-label">价格</text>
<text class="sum-value">¥{{ referencePrice }}</text>
</view>
<view class="sum-item">
<text class="sum-label">折扣优惠</text>
<text class="sum-discount">-¥{{ discount }}</text>
</view>
</view>
</template>
<script setup>
defineProps({
referencePrice: {
type: Number,
default: 0,
},
discount: {
type: Number,
default: 0,
},
});
</script>
<style scoped lang="scss">
@import "./styles/index.scss";
</style>

View File

@@ -0,0 +1,12 @@
## 价格组件
## 提示词:
使用 uniapp + vue3 组合式 api 开发微信小程序,要求如下:
1、参考图片高度还原交互设计完成组件封装
2、要求布局样式结构简洁明了class 命名请按照模块名称来命名,例如:.sum-wrapper
3、可以使用 uniapp 内置的组件
## 备注
仅供学习、交流使用,请勿用于商业用途。

View File

@@ -0,0 +1,26 @@
.sum-wrapper {
border-radius: 8px;
background-color: #fff;
}
.sum-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 13px 15px;
}
.sum-label {
font-size: 15px;
color: #333;
}
.sum-value {
font-size: 14px;
color: #999;
}
.sum-discount {
font-size: 14px;
color: #ff5722;
}

View File

@@ -1 +1 @@
{"version":3,"file":"assets.js","sources":["static/quick/quick_icon_bg.png","pages/order/images/back.png","static/logo.png","static/input_voice_icon.png","static/input_send_icon.png","E:/static/icons/clock.png","pages/order/components/GoodsInfo/images/icon_house.png","pages/order/components/NoticeInfo/images/icon_clock.png","pages/order/components/NoticeInfo/images/icon_card.png","pages/order/components/NoticeInfo/images/icon_arrow.png","static/hello_xiaomu_icon@2x.png","static/hello_logo_icon@2x.png","static/top_bg_icon.png","static/drawer_icon.png","static/wave_icon.png","static/test/mk_img_1.png","components/Stepper/images/icon_minus.webp","components/Stepper/images/icon_plus.webp"],"sourcesContent":["export default \"__VITE_ASSET__ff753b35__\"","export default \"__VITE_ASSET__6961004c__\"","export default \"__VITE_ASSET__46719607__\"","export default \"__VITE_ASSET__76f969d6__\"","export default \"__VITE_ASSET__e6bd7a29__\"","export default \"/static/icons/clock.png\"","export default \"__VITE_ASSET__8779a05f__\"","export default \"__VITE_ASSET__50bb3f13__\"","export default \"__VITE_ASSET__c038c52d__\"","export default \"__VITE_ASSET__228274ee__\"","export default \"__VITE_ASSET__2eba501c__\"","export default \"__VITE_ASSET__51733f19__\"","export default \"__VITE_ASSET__ead16fdc__\"","export default \"__VITE_ASSET__a9576f2b__\"","export default \"__VITE_ASSET__d889f8a8__\"","export default \"__VITE_ASSET__c4efe7df__\"","export default \"__VITE_ASSET__39163fc0__\"","export default \"__VITE_ASSET__1502ee7d__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"assets.js","sources":["static/quick/quick_icon_bg.png","pages/order/images/back.png","static/logo.png","static/input_voice_icon.png","static/input_send_icon.png","E:/static/icons/clock.png","pages/order/components/GoodsInfo/images/icon_house.png","pages/order/components/NoticeInfo/images/icon_clock.png","pages/order/components/NoticeInfo/images/icon_card.png","pages/order/components/NoticeInfo/images/icon_arrow.png","static/hello_xiaomu_icon@2x.png","static/hello_logo_icon@2x.png","static/top_bg_icon.png","static/drawer_icon.png","static/wave_icon.png","static/test/mk_img_1.png","components/Stepper/images/icon_minus.png","components/Stepper/images/icon_plus.png","components/FormCard/images/icon_minus.png"],"sourcesContent":["export default \"__VITE_ASSET__ff753b35__\"","export default \"__VITE_ASSET__6961004c__\"","export default \"__VITE_ASSET__46719607__\"","export default \"__VITE_ASSET__76f969d6__\"","export default \"__VITE_ASSET__e6bd7a29__\"","export default \"/static/icons/clock.png\"","export default \"__VITE_ASSET__8779a05f__\"","export default \"__VITE_ASSET__50bb3f13__\"","export default \"__VITE_ASSET__c038c52d__\"","export default \"__VITE_ASSET__228274ee__\"","export default \"__VITE_ASSET__2eba501c__\"","export default \"__VITE_ASSET__51733f19__\"","export default \"__VITE_ASSET__ead16fdc__\"","export default \"__VITE_ASSET__a9576f2b__\"","export default \"__VITE_ASSET__d889f8a8__\"","export default \"__VITE_ASSET__c4efe7df__\"","export default \"__VITE_ASSET__ce3e600b__\"","export default \"__VITE_ASSET__d8ff016f__\"","export default \"__VITE_ASSET__4a11986d__\""],"names":[],"mappings":";AAAA,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,eAAA;ACAf,MAAe,aAAA;ACAf,MAAe,aAAA;;;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":["components/FormCard/index.vue","E:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovWUdDaGF0Q1MvY29tcG9uZW50cy9Gb3JtQ2FyZC9pbmRleC52dWU"],"sourcesContent":["<template>\r\n <view class=\"form-wrapper\">\r\n <view class=\"form-header\">\r\n <image class=\"form-icon\" src=\"./images/icon_minus.png\"></image>\r\n <text class=\"form-title\">游客1</text>\r\n </view>\r\n <view class=\"form-item\">\r\n <text class=\"form-label\">姓 名</text>\r\n <input class=\"form-input\" v-model=\"name\" placeholder=\"请输入姓名\" />\r\n </view>\r\n <view class=\"form-item\">\r\n <text class=\"form-label\">手机号</text>\r\n <input\r\n class=\"form-input\"\r\n v-model=\"phone\"\r\n placeholder=\"请输入手机号\"\r\n @blur=\"validatePhone\"\r\n />\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from \"vue\";\r\n\r\n// Local state\r\nconst name = ref(\"\");\r\nconst phone = ref(\"\");\r\nconst phoneError = ref(\"\");\r\n\r\n// Methods\r\nconst validatePhone = () => {\r\n const phoneRegex = /^1[3-9]\\d{9}$/;\r\n if (!phone.value) {\r\n phoneError.value = \"手机号不能为空\";\r\n } else if (!phoneRegex.test(phone.value)) {\r\n phoneError.value = \"请输入正确的手机号\";\r\n } else {\r\n phoneError.value = \"\";\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@import \"./styles/index.scss\";\r\n</style>\r\n","import Component from 'D:/YGChatCS/components/FormCard/index.vue'\nwx.createComponent(Component)"],"names":["ref"],"mappings":";;;;;;AA0BA,UAAM,OAAOA,cAAAA,IAAI,EAAE;AACnB,UAAM,QAAQA,cAAAA,IAAI,EAAE;AACpB,UAAM,aAAaA,cAAAA,IAAI,EAAE;AAGzB,UAAM,gBAAgB,MAAM;AAC1B,YAAM,aAAa;AACnB,UAAI,CAAC,MAAM,OAAO;AAChB,mBAAW,QAAQ;AAAA,MACpB,WAAU,CAAC,WAAW,KAAK,MAAM,KAAK,GAAG;AACxC,mBAAW,QAAQ;AAAA,MACvB,OAAS;AACL,mBAAW,QAAQ;AAAA,MACpB;AAAA,IACH;;;;;;;;;;;;;;ACvCA,GAAG,gBAAgB,SAAS;"}

View File

@@ -1 +1 @@
{"version":3,"file":"index.js","sources":["components/Stepper/index.vue","E:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovWUdDaGF0Q1MvY29tcG9uZW50cy9TdGVwcGVyL2luZGV4LnZ1ZQ"],"sourcesContent":["<template>\r\n <view class=\"stepper-wrapper\">\r\n <image\r\n class=\"stepper-btn stepper-btn-minus\"\r\n src=\"./images/icon_minus.webp\"\r\n mode=\"aspectFill\"\r\n @click=\"decrease\"\r\n ></image>\r\n <text class=\"stepper-text\">{{ value }}</text>\r\n <image\r\n class=\"stepper-btn stepper-btn-plus\"\r\n src=\"./images/icon_plus.webp\"\r\n mode=\"aspectFill\"\r\n @click=\"increase\"\r\n ></image>\r\n </view>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, defineProps, defineEmits } from \"vue\";\r\n\r\n// Props\r\nconst props = defineProps({\r\n modelValue: {\r\n type: Number,\r\n default: 1,\r\n },\r\n min: {\r\n type: Number,\r\n default: 1,\r\n },\r\n max: {\r\n type: Number,\r\n default: 100,\r\n },\r\n});\r\n\r\n// Emit\r\nconst emit = defineEmits([\"update:modelValue\"]);\r\n\r\n// Local state\r\nconst value = ref(props.modelValue);\r\n\r\n// Methods\r\nconst decrease = () => {\r\n if (value.value === 1) return;\r\n\r\n if (value.value > props.min) {\r\n value.value--;\r\n emit(\"update:modelValue\", value.value);\r\n }\r\n};\r\n\r\nconst increase = () => {\r\n if (value.value < props.max) {\r\n value.value++;\r\n emit(\"update:modelValue\", value.value);\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@import \"./styles/index.scss\";\r\n</style>\r\n","import Component from 'D:/YGChatCS/components/Stepper/index.vue'\nwx.createComponent(Component)"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,UAAM,QAAQ;AAgBd,UAAM,OAAO;AAGb,UAAM,QAAQA,cAAG,IAAC,MAAM,UAAU;AAGlC,UAAM,WAAW,MAAM;AACrB,UAAI,MAAM,UAAU;AAAG;AAEvB,UAAI,MAAM,QAAQ,MAAM,KAAK;AAC3B,cAAM;AACN,aAAK,qBAAqB,MAAM,KAAK;AAAA,MACtC;AAAA,IACH;AAEA,UAAM,WAAW,MAAM;AACrB,UAAI,MAAM,QAAQ,MAAM,KAAK;AAC3B,cAAM;AACN,aAAK,qBAAqB,MAAM,KAAK;AAAA,MACtC;AAAA,IACH;;;;;;;;;;;;;ACzDA,GAAG,gBAAgB,SAAS;"}
{"version":3,"file":"index.js","sources":["components/Stepper/index.vue","E:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovWUdDaGF0Q1MvY29tcG9uZW50cy9TdGVwcGVyL2luZGV4LnZ1ZQ"],"sourcesContent":["<template>\r\n <view class=\"stepper-wrapper\">\r\n <image\r\n class=\"stepper-btn stepper-btn-minus\"\r\n src=\"./images/icon_minus.png\"\r\n mode=\"aspectFill\"\r\n @click=\"decrease\"\r\n ></image>\r\n <text class=\"stepper-text\">{{ value }}</text>\r\n <image\r\n class=\"stepper-btn stepper-btn-plus\"\r\n src=\"./images/icon_plus.png\"\r\n mode=\"aspectFill\"\r\n @click=\"increase\"\r\n ></image>\r\n </view>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref, defineProps, defineEmits } from \"vue\";\r\n\r\n// Props\r\nconst props = defineProps({\r\n modelValue: {\r\n type: Number,\r\n default: 1,\r\n },\r\n min: {\r\n type: Number,\r\n default: 1,\r\n },\r\n max: {\r\n type: Number,\r\n default: 100,\r\n },\r\n});\r\n\r\n// Emit\r\nconst emit = defineEmits([\"update:modelValue\"]);\r\n\r\n// Local state\r\nconst value = ref(props.modelValue);\r\n\r\n// Methods\r\nconst decrease = () => {\r\n if (value.value === 1) return;\r\n\r\n if (value.value > props.min) {\r\n value.value--;\r\n emit(\"update:modelValue\", value.value);\r\n }\r\n};\r\n\r\nconst increase = () => {\r\n if (value.value < props.max) {\r\n value.value++;\r\n emit(\"update:modelValue\", value.value);\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n@import \"./styles/index.scss\";\r\n</style>\r\n","import Component from 'D:/YGChatCS/components/Stepper/index.vue'\nwx.createComponent(Component)"],"names":["ref"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsBA,UAAM,QAAQ;AAgBd,UAAM,OAAO;AAGb,UAAM,QAAQA,cAAG,IAAC,MAAM,UAAU;AAGlC,UAAM,WAAW,MAAM;AACrB,UAAI,MAAM,UAAU;AAAG;AAEvB,UAAI,MAAM,QAAQ,MAAM,KAAK;AAC3B,cAAM;AACN,aAAK,qBAAqB,MAAM,KAAK;AAAA,MACtC;AAAA,IACH;AAEA,UAAM,WAAW,MAAM;AACrB,UAAI,MAAM,QAAQ,MAAM,KAAK;AAC3B,cAAM;AACN,aAAK,qBAAqB,MAAM,KAAK;AAAA,MACtC;AAAA,IACH;;;;;;;;;;;;;ACzDA,GAAG,gBAAgB,SAAS;"}

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":["E:/Program Files/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovWUdDaGF0Q1MvY29tcG9uZW50cy9TdW1DYXJkL2luZGV4LnZ1ZQ"],"sourcesContent":["import Component from 'D:/YGChatCS/components/SumCard/index.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,GAAG,gBAAgB,SAAS;"}

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -1,33 +1,35 @@
"use strict";
const _imports_0$a = "/static/quick/quick_icon_bg.png";
const _imports_0$9 = "/assets/back.6961004c.png";
const _imports_0$8 = "/static/logo.png";
const _imports_0$b = "/static/quick/quick_icon_bg.png";
const _imports_0$a = "/assets/back.6961004c.png";
const _imports_0$9 = "/static/logo.png";
const _imports_1$4 = "/static/input_voice_icon.png";
const _imports_2$1 = "/static/input_send_icon.png";
const _imports_0$7 = "/static/icons/clock.png";
const _imports_0$6 = "/assets/icon_house.8779a05f.png";
const _imports_0$5 = "/assets/icon_clock.50bb3f13.png";
const _imports_0$8 = "/static/icons/clock.png";
const _imports_0$7 = "/assets/icon_house.8779a05f.png";
const _imports_0$6 = "/assets/icon_clock.50bb3f13.png";
const _imports_1$3 = "/assets/icon_card.c038c52d.png";
const _imports_2 = "/assets/icon_arrow.228274ee.png";
const _imports_0$4 = "/static/hello_xiaomu_icon@2x.png";
const _imports_0$5 = "/static/hello_xiaomu_icon@2x.png";
const _imports_1$2 = "/static/hello_logo_icon@2x.png";
const _imports_0$3 = "/static/top_bg_icon.png";
const _imports_0$2 = "/static/drawer_icon.png";
const _imports_0$1 = "/static/wave_icon.png";
const _imports_0$4 = "/static/top_bg_icon.png";
const _imports_0$3 = "/static/drawer_icon.png";
const _imports_0$2 = "/static/wave_icon.png";
const _imports_1$1 = "/static/test/mk_img_1.png";
const _imports_0 = "/assets/icon_minus.39163fc0.webp";
const _imports_1 = "/assets/icon_plus.1502ee7d.webp";
exports._imports_0 = _imports_0$9;
exports._imports_0$1 = _imports_0$8;
exports._imports_0$10 = _imports_0;
exports._imports_0$2 = _imports_0$7;
exports._imports_0$3 = _imports_0$6;
exports._imports_0$4 = _imports_0$5;
exports._imports_0$5 = _imports_0$4;
exports._imports_0$6 = _imports_0$3;
exports._imports_0$7 = _imports_0$2;
exports._imports_0$8 = _imports_0$a;
exports._imports_0$9 = _imports_0$1;
const _imports_0$1 = "/assets/icon_minus.ce3e600b.png";
const _imports_1 = "/assets/icon_plus.d8ff016f.png";
const _imports_0 = "/assets/icon_minus.4a11986d.png";
exports._imports_0 = _imports_0$a;
exports._imports_0$1 = _imports_0$9;
exports._imports_0$10 = _imports_0$1;
exports._imports_0$11 = _imports_0;
exports._imports_0$2 = _imports_0$8;
exports._imports_0$3 = _imports_0$7;
exports._imports_0$4 = _imports_0$6;
exports._imports_0$5 = _imports_0$5;
exports._imports_0$6 = _imports_0$4;
exports._imports_0$7 = _imports_0$3;
exports._imports_0$8 = _imports_0$b;
exports._imports_0$9 = _imports_0$2;
exports._imports_1 = _imports_1$4;
exports._imports_1$1 = _imports_1$3;
exports._imports_1$2 = _imports_1$2;

View File

@@ -6963,7 +6963,7 @@ function isConsoleWritable() {
function initRuntimeSocketService() {
const hosts = "10.10.3.1,192.168.56.1,127.0.0.1";
const port = "8090";
const id = "mp-weixin_BW9LnK";
const id = "mp-weixin_V1fUyU";
const lazy = typeof swan !== "undefined";
let restoreError = lazy ? () => {
} : initOnError();

View File

@@ -0,0 +1,34 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const _sfc_main = {
__name: "index",
setup(__props) {
const name = common_vendor.ref("");
const phone = common_vendor.ref("");
const phoneError = common_vendor.ref("");
const validatePhone = () => {
const phoneRegex = /^1[3-9]\d{9}$/;
if (!phone.value) {
phoneError.value = "手机号不能为空";
} else if (!phoneRegex.test(phone.value)) {
phoneError.value = "请输入正确的手机号";
} else {
phoneError.value = "";
}
};
return (_ctx, _cache) => {
return {
a: common_assets._imports_0$11,
b: name.value,
c: common_vendor.o(($event) => name.value = $event.detail.value),
d: common_vendor.o(validatePhone),
e: phone.value,
f: common_vendor.o(($event) => phone.value = $event.detail.value)
};
};
}
};
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-5787c07e"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/FormCard/index.js.map

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="form-wrapper data-v-5787c07e"><view class="form-header data-v-5787c07e"><image class="form-icon data-v-5787c07e" src="{{a}}"></image><text class="form-title data-v-5787c07e">游客1</text></view><view class="form-item data-v-5787c07e"><text class="form-label data-v-5787c07e">姓 名</text><input class="form-input data-v-5787c07e" placeholder="请输入姓名" value="{{b}}" bindinput="{{c}}"/></view><view class="form-item data-v-5787c07e"><text class="form-label data-v-5787c07e">手机号</text><input class="form-input data-v-5787c07e" placeholder="请输入手机号" bindblur="{{d}}" value="{{e}}" bindinput="{{f}}"/></view></view>

View File

@@ -0,0 +1,65 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.form-wrapper.data-v-5787c07e {
background-color: #fff;
border-radius: 8px;
overflow: hidden;
}
.form-header.data-v-5787c07e {
background-color: rgba(25, 144, 255, 0.06);
border: 1px solid #e5e8ef;
border-radius: 8px 8px 0 0;
display: flex;
align-items: center;
padding: 10px 12px;
}
.form-icon.data-v-5787c07e {
height: 16px;
width: 16px;
margin-right: 8px;
}
.form-title.data-v-5787c07e {
font-size: 16px;
color: #00a6ff;
}
.form-item.data-v-5787c07e {
display: flex;
align-items: center;
padding: 12px 24px 12px 16px;
}
.form-label.data-v-5787c07e {
font-size: 16px;
color: #86909c;
margin-right: 10px;
width: 50px;
}
.form-input.data-v-5787c07e {
flex: 1;
font-size: 16px;
color: #333;
border-bottom: 1px solid #ddd;
padding-bottom: 6px;
}

View File

@@ -30,6 +30,7 @@
.stepper-btn.data-v-52e20cb2 {
width: 24px;
height: 24px;
border-radius: 50px;
cursor: pointer;
}
.stepper-btn-minus.data-v-52e20cb2 {

View File

@@ -0,0 +1,26 @@
"use strict";
const common_vendor = require("../../common/vendor.js");
const _sfc_main = {
__name: "index",
props: {
referencePrice: {
type: Number,
default: 0
},
discount: {
type: Number,
default: 0
}
},
setup(__props) {
return (_ctx, _cache) => {
return {
a: common_vendor.t(__props.referencePrice),
b: common_vendor.t(__props.discount)
};
};
}
};
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-5bb5a4e5"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/SumCard/index.js.map

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1 @@
<view class="sum-wrapper data-v-5bb5a4e5"><view class="sum-item data-v-5bb5a4e5"><text class="sum-label data-v-5bb5a4e5">价格</text><text class="sum-value data-v-5bb5a4e5">¥{{a}}</text></view><view class="sum-item data-v-5bb5a4e5"><text class="sum-label data-v-5bb5a4e5">折扣优惠</text><text class="sum-discount data-v-5bb5a4e5">-¥{{b}}</text></view></view>

View File

@@ -0,0 +1,47 @@
/**
* 这里是uni-app内置的常用样式变量
*
* uni-app 官方扩展插件及插件市场https://ext.dcloud.net.cn上很多三方插件均使用了这些样式变量
* 如果你是插件开发者建议你使用scss预处理并在插件代码中直接使用这些变量无需 import 这个文件方便用户通过搭积木的方式开发整体风格一致的App
*
*/
/**
* 如果你是App开发者插件使用者你可以通过修改这些变量来定制自己的插件主题实现自定义主题功能
*
* 如果你的项目同样使用了scss预处理你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
*/
/* 颜色变量 */
/* 行为相关颜色 */
/* 文字基本颜色 */
/* 背景颜色 */
/* 边框颜色 */
/* 尺寸变量 */
/* 文字尺寸 */
/* 图片尺寸 */
/* Border Radius */
/* 水平间距 */
/* 垂直间距 */
/* 透明度 */
/* 文章场景相关 */
.sum-wrapper.data-v-5bb5a4e5 {
border-radius: 8px;
background-color: #fff;
}
.sum-item.data-v-5bb5a4e5 {
display: flex;
justify-content: space-between;
align-items: center;
padding: 13px 15px;
}
.sum-label.data-v-5bb5a4e5 {
font-size: 15px;
color: #333;
}
.sum-value.data-v-5bb5a4e5 {
font-size: 14px;
color: #999;
}
.sum-discount.data-v-5bb5a4e5 {
font-size: 14px;
color: #ff5722;
}

View File

@@ -3,7 +3,7 @@ const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js");
const model_ChatModel = require("../../model/ChatModel.js");
if (!Math) {
(ChatTopBgImg + ChatTopNavBar + ChatTopBanner + OneFeelMK001 + ResponseIntro + ImageSwiper + Stepper + ResponseWrapper + ChatCardAI + ChatCardMine + ChatMoreTips + ChatQuickAccess)();
(ChatTopBgImg + ChatTopNavBar + ChatTopBanner + OneFeelMK001 + ResponseIntro + ImageSwiper + Stepper + SumCard + FormCard + ResponseWrapper + ChatCardAI + ChatCardMine + ChatMoreTips + ChatQuickAccess)();
}
const ChatTopBanner = () => "./ChatTopBanner.js";
const ChatTopBgImg = () => "./ChatTopBgImg.js";
@@ -17,6 +17,8 @@ const ResponseIntro = () => "../../components/ResponseIntro/index.js";
const ResponseWrapper = () => "../../components/ResponseWrapper/index.js";
const ImageSwiper = () => "../../components/ImageSwiper/index.js";
const Stepper = () => "../../components/Stepper/index.js";
const SumCard = () => "../../components/SumCard/index.js";
const FormCard = () => "../../components/FormCard/index.js";
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
__name: "ChatMainList",
emits: ["openDrawer"],
@@ -34,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
const emits = __emit;
const openDrawer = () => {
emits("openDrawer");
common_vendor.index.__f__("log", "at pages/chat/ChatMainList.vue:174", "=============打开抽屉");
common_vendor.index.__f__("log", "at pages/chat/ChatMainList.vue:178", "=============打开抽屉");
};
const handleReply = (text) => {
loadMessage(text);
@@ -100,7 +102,7 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
}
};
chatMsgList.value.push(newMsgAI);
common_vendor.index.__f__("log", "at pages/chat/ChatMainList.vue:258", "发送的新消息:", JSON.stringify(newMsg));
common_vendor.index.__f__("log", "at pages/chat/ChatMainList.vue:262", "发送的新消息:", JSON.stringify(newMsg));
};
const scrollToBottom = () => {
lastMsgId.value = `${chatMsgList.value[chatMsgList.value.length - 1].msgId}`;
@@ -113,7 +115,11 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
a: common_vendor.o(openDrawer),
b: statusBarHeight.value + "px",
c: navBgColor.value,
d: common_vendor.f(chatMsgList.value, (item, k0, i0) => {
d: common_vendor.p({
referencePrice: 700,
discount: 10
}),
e: common_vendor.f(chatMsgList.value, (item, k0, i0) => {
return common_vendor.e({
a: item.msgType === common_vendor.unref(model_ChatModel.MessageRole).AI
}, item.msgType === common_vendor.unref(model_ChatModel.MessageRole).AI ? common_vendor.e({
@@ -121,13 +127,13 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
}, item.msgContent && item.msgContent.type === common_vendor.unref(model_ChatModel.MessageType).IMAGE ? {
c: common_assets._imports_0$1
} : {}, {
d: "d7316ec5-11-" + i0 + "," + ("d7316ec5-10-" + i0),
e: "d7316ec5-10-" + i0,
d: "d7316ec5-13-" + i0 + "," + ("d7316ec5-12-" + i0),
e: "d7316ec5-12-" + i0,
f: common_vendor.p({
text: item.msg
})
}) : item.msgType === common_vendor.unref(model_ChatModel.MessageRole).ME ? {
h: "d7316ec5-12-" + i0,
h: "d7316ec5-14-" + i0,
i: common_vendor.p({
text: item.msg
})
@@ -139,19 +145,19 @@ const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
l: item.msgId
});
}),
e: lastMsgId.value,
f: lastMsgId.value,
g: common_vendor.o(handleReply),
g: lastMsgId.value,
h: common_vendor.o(handleReply),
i: common_assets._imports_1,
j: common_vendor.o(sendMessage),
k: common_vendor.o(handleNoHideKeyboard),
l: holdKeyboard.value,
m: inputMessage.value,
n: common_vendor.o(($event) => inputMessage.value = $event.detail.value),
o: common_assets._imports_2,
p: common_vendor.o(sendMessage),
q: common_vendor.o(handleTouchEnd)
i: common_vendor.o(handleReply),
j: common_assets._imports_1,
k: common_vendor.o(sendMessage),
l: common_vendor.o(handleNoHideKeyboard),
m: holdKeyboard.value,
n: inputMessage.value,
o: common_vendor.o(($event) => inputMessage.value = $event.detail.value),
p: common_assets._imports_2,
q: common_vendor.o(sendMessage),
r: common_vendor.o(handleTouchEnd)
};
};
}

View File

@@ -12,6 +12,8 @@
"response-intro": "../../components/ResponseIntro/index",
"response-wrapper": "../../components/ResponseWrapper/index",
"image-swiper": "../../components/ImageSwiper/index",
"stepper": "../../components/Stepper/index"
"stepper": "../../components/Stepper/index",
"sum-card": "../../components/SumCard/index",
"form-card": "../../components/FormCard/index"
}
}

View File

@@ -1 +1 @@
<view class="chat-container data-v-d7316ec5" bindtouchend="{{q}}"><chat-top-bg-img class="chat-container-bg data-v-d7316ec5" u-i="d7316ec5-0" bind:__l="__l"></chat-top-bg-img><view class="nav-bar-container data-v-d7316ec5" style="{{'padding-top:' + b + ';' + ('background-color:' + c)}}"><chat-top-nav-bar class="data-v-d7316ec5" bindopenDrawer="{{a}}" u-i="d7316ec5-1" bind:__l="__l"></chat-top-nav-bar></view><view class="chat-container-msg-list data-v-d7316ec5"><chat-top-banner class="chat-container-top-bannar data-v-d7316ec5" u-i="d7316ec5-2" bind:__l="__l"></chat-top-banner><scroll-view scroll-y scroll-into-view="{{f}}" scroll-with-animation="{{true}}" class="area-msg-list data-v-d7316ec5"><view class="data-v-d7316ec5" style="padding:6px 12px"><one-feel-m-k001 class="data-v-d7316ec5" u-i="d7316ec5-3" bind:__l="__l"></one-feel-m-k001></view><view class="data-v-d7316ec5" style="padding:6px 12px"><one-feel-m-k001 class="data-v-d7316ec5" u-i="d7316ec5-4" bind:__l="__l"></one-feel-m-k001></view><view class="data-v-d7316ec5" style="padding:6px 12px"><one-feel-m-k001 class="data-v-d7316ec5" u-i="d7316ec5-5" bind:__l="__l"></one-feel-m-k001></view><response-wrapper class="data-v-d7316ec5" u-s="{{['d']}}" u-i="d7316ec5-6" bind:__l="__l"><response-intro class="data-v-d7316ec5" u-i="d7316ec5-7,d7316ec5-6" bind:__l="__l"/><image-swiper class="data-v-d7316ec5" u-i="d7316ec5-8,d7316ec5-6" bind:__l="__l"/><stepper class="data-v-d7316ec5" u-i="d7316ec5-9,d7316ec5-6" bind:__l="__l"/></response-wrapper><view wx:for="{{d}}" wx:for-item="item" wx:key="k" class="area-msg-list-content data-v-d7316ec5" id="{{item.l}}"><block wx:if="{{item.a}}"><chat-card-a-i wx:if="{{item.f}}" u-s="{{['d']}}" class="message-item message-item-ai data-v-d7316ec5" u-i="{{item.e}}" bind:__l="__l" u-p="{{item.f}}"><image wx:if="{{item.b}}" class="data-v-d7316ec5" src="{{item.c}}" style="width:100px;height:100px"></image><one-feel-m-k001 class="data-v-d7316ec5" u-i="{{item.d}}" bind:__l="__l"></one-feel-m-k001></chat-card-a-i></block><block wx:elif="{{item.g}}"><chat-card-mine wx:if="{{item.i}}" class="message-item message-item-mine data-v-d7316ec5" u-i="{{item.h}}" bind:__l="__l" u-p="{{item.i}}"></chat-card-mine></block><block wx:else><text class="message-item message-item-other data-v-d7316ec5">{{item.j}}</text></block></view><view class="data-v-d7316ec5" id="{{e}}"></view></scroll-view><view class="footer-area data-v-d7316ec5"><chat-more-tips class="data-v-d7316ec5" bindreplySent="{{g}}" u-i="d7316ec5-13" bind:__l="__l"></chat-more-tips><chat-quick-access class="data-v-d7316ec5" bindreplySent="{{h}}" u-i="d7316ec5-14" bind:__l="__l"></chat-quick-access><view class="area-input data-v-d7316ec5"><view class="input-container-voice data-v-d7316ec5"><image class="data-v-d7316ec5" src="{{i}}"></image></view><block wx:if="{{r0}}"><textarea class="textarea data-v-d7316ec5" type="text" placeholder="快速订票,呼叫服务" cursor-spacing="65" confirm-type="done" bindconfirm="{{j}}" bindtouchend="{{k}}" confirm-hold="{{true}}" auto-height show-confirm-bar="{{false}}" hold-keyboard="{{l}}" maxlength="300" value="{{m}}" bindinput="{{n}}"/></block><view class="input-container-send data-v-d7316ec5" bindtap="{{p}}"><image class="data-v-d7316ec5" src="{{o}}"></image></view></view></view></view></view>
<view class="chat-container data-v-d7316ec5" bindtouchend="{{r}}"><chat-top-bg-img class="chat-container-bg data-v-d7316ec5" u-i="d7316ec5-0" bind:__l="__l"></chat-top-bg-img><view class="nav-bar-container data-v-d7316ec5" style="{{'padding-top:' + b + ';' + ('background-color:' + c)}}"><chat-top-nav-bar class="data-v-d7316ec5" bindopenDrawer="{{a}}" u-i="d7316ec5-1" bind:__l="__l"></chat-top-nav-bar></view><view class="chat-container-msg-list data-v-d7316ec5"><chat-top-banner class="chat-container-top-bannar data-v-d7316ec5" u-i="d7316ec5-2" bind:__l="__l"></chat-top-banner><scroll-view scroll-y scroll-into-view="{{g}}" scroll-with-animation="{{true}}" class="area-msg-list data-v-d7316ec5"><view class="data-v-d7316ec5" style="padding:6px 12px"><one-feel-m-k001 class="data-v-d7316ec5" u-i="d7316ec5-3" bind:__l="__l"></one-feel-m-k001></view><view class="data-v-d7316ec5" style="padding:6px 12px"><one-feel-m-k001 class="data-v-d7316ec5" u-i="d7316ec5-4" bind:__l="__l"></one-feel-m-k001></view><view class="data-v-d7316ec5" style="padding:6px 12px"><one-feel-m-k001 class="data-v-d7316ec5" u-i="d7316ec5-5" bind:__l="__l"></one-feel-m-k001></view><response-wrapper class="data-v-d7316ec5" u-s="{{['d']}}" u-i="d7316ec5-6" bind:__l="__l"><response-intro class="data-v-d7316ec5" u-i="d7316ec5-7,d7316ec5-6" bind:__l="__l"/><image-swiper class="data-v-d7316ec5" u-i="d7316ec5-8,d7316ec5-6" bind:__l="__l"/><stepper class="data-v-d7316ec5" u-i="d7316ec5-9,d7316ec5-6" bind:__l="__l"/><sum-card wx:if="{{d}}" class="data-v-d7316ec5" u-i="d7316ec5-10,d7316ec5-6" bind:__l="__l" u-p="{{d}}"/><form-card class="data-v-d7316ec5" u-i="d7316ec5-11,d7316ec5-6" bind:__l="__l"/></response-wrapper><view wx:for="{{e}}" wx:for-item="item" wx:key="k" class="area-msg-list-content data-v-d7316ec5" id="{{item.l}}"><block wx:if="{{item.a}}"><chat-card-a-i wx:if="{{item.f}}" u-s="{{['d']}}" class="message-item message-item-ai data-v-d7316ec5" u-i="{{item.e}}" bind:__l="__l" u-p="{{item.f}}"><image wx:if="{{item.b}}" class="data-v-d7316ec5" src="{{item.c}}" style="width:100px;height:100px"></image><one-feel-m-k001 class="data-v-d7316ec5" u-i="{{item.d}}" bind:__l="__l"></one-feel-m-k001></chat-card-a-i></block><block wx:elif="{{item.g}}"><chat-card-mine wx:if="{{item.i}}" class="message-item message-item-mine data-v-d7316ec5" u-i="{{item.h}}" bind:__l="__l" u-p="{{item.i}}"></chat-card-mine></block><block wx:else><text class="message-item message-item-other data-v-d7316ec5">{{item.j}}</text></block></view><view class="data-v-d7316ec5" id="{{f}}"></view></scroll-view><view class="footer-area data-v-d7316ec5"><chat-more-tips class="data-v-d7316ec5" bindreplySent="{{h}}" u-i="d7316ec5-15" bind:__l="__l"></chat-more-tips><chat-quick-access class="data-v-d7316ec5" bindreplySent="{{i}}" u-i="d7316ec5-16" bind:__l="__l"></chat-quick-access><view class="area-input data-v-d7316ec5"><view class="input-container-voice data-v-d7316ec5"><image class="data-v-d7316ec5" src="{{j}}"></image></view><block wx:if="{{r0}}"><textarea class="textarea data-v-d7316ec5" type="text" placeholder="快速订票,呼叫服务" cursor-spacing="65" confirm-type="done" bindconfirm="{{k}}" bindtouchend="{{l}}" confirm-hold="{{true}}" auto-height show-confirm-bar="{{false}}" hold-keyboard="{{m}}" maxlength="300" value="{{n}}" bindinput="{{o}}"/></block><view class="input-container-send data-v-d7316ec5" bindtap="{{q}}"><image class="data-v-d7316ec5" src="{{p}}"></image></view></view></view></view></view>

View File

@@ -2,6 +2,7 @@
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "YGChatCS",
"setting": {
"compileHotReLoad": true
"compileHotReLoad": true,
"urlCheck": false
}
}