123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- <template>
- <!-- #ifdef APP -->
- <scroll-view style="flex: 1;">
- <!-- #endif -->
- <view>
- <page-head :title="title"></page-head>
- <view class="uni-list">
- <radio-group @change="radioChange">
- <radio class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value"
- :class="index < items.length - 1 ? 'uni-list-cell-line': ''" :value="item.value" :checked="index === current">
- {{item.name}}
- </radio>
- </radio-group>
- </view>
- <view class="uni-list">
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">自定义 titleColor</view>
- <switch :checked="titleColorCustom" @change="titleColorChange" />
- </view>
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">自定义 itemColor</view>
- <switch :checked="itemColorCustom" @change="itemColorChange" />
- </view>
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">超长文本和空文本 item</view>
- <switch :checked="itemContentLarge" @change="itemContentLargeChange" />
- </view>
- <!-- #ifndef MP -->
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">超过6个 item</view>
- <switch :checked="itemNumLargeSelect" @change="itemNumLargeChange" />
- </view>
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">自定义 cancelText</view>
- <switch :checked="cancelTextCustom" @change="cancelTextChange" />
- </view>
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">自定义 cancelColor</view>
- <switch :checked="cancelColorCustom" @change="cancelColorChange" />
- </view>
- <view class="uni-list-cell uni-list-cell-pd">
- <view class="uni-list-cell-db">自定义 backgroundColor</view>
- <switch :checked="backgroundColorCustom" @change="backgroundColorChange" />
- </view>
- <!-- #endif -->
- </view>
- <view class="uni-padding-wrap">
- <view class="uni-btn-v">
- <button class="uni-btn-v" type="default" @tap="showActionSheet" id="btn-action-sheet-show">弹出actionSheet</button>
- <button class="uni-btn-v uni-btn" type="default" @tap="showActionSheetAndShowAgainInCallback" id="btn-action-sheet-show">showActionSheet 并在回调中再次 showActionSheet</button>
- </view>
- </view>
- </view>
- <!-- #ifdef APP -->
- </scroll-view>
- <!-- #endif -->
- </template>
- <script lang="uts">
- import { state, setLifeCycleNum } from '@/store/index.uts'
- type ItemType = {
- value : string,
- name : string,
- }
- export default {
- data() {
- return {
- title: 'action-sheet',
- titleColorCustom: false,
- itemColorCustom: false,
- itemContentLarge: false,
- itemNumLargeSelect: false,
- cancelTextCustom: false,
- cancelColorCustom: false,
- backgroundColorCustom: false,
- showErrorToast: true,
- items: [{
- value: '标题',
- name: '有标题'
- },
- {
- value: '',
- name: '无标题'
- },
- {
- value: '超长标题测试内容,测试超过显示最大范围之后的样式-超长标题测试内容,测试超过显示最大范围之后的样式',
- name: '超长标题'
- }
- ] as ItemType[],
- current: 0,
- // #ifdef APP
- originTheme: null as string | null,
- // #endif
- }
- },
- onLoad() {
- uni.showActionSheet({
- title: "onLoad 调用示例,请手动取消",
- itemList: ['item1', 'item2'],
- fail: (res) => {
- // 自动化测试
- setLifeCycleNum(state.lifeCycleNum + 1)
- console.log('onLoad showActionSheet fail', res)
- },
- complete: (res) => {
- // 自动化测试
- setLifeCycleNum(state.lifeCycleNum + 1)
- console.log('onLoad showActionSheet complete', res)
- }
- })
- // #ifdef APP
- this.originTheme = uni.getSystemInfoSync().appTheme
- // #endif
- },
- methods: {
- //自动化测试例专用
- // #ifdef APP
- setThemeAuto() {
- uni.setAppTheme({
- theme: 'auto'
- })
- },
- resetTheme() {
- const originTheme = this.originTheme
- if(originTheme != null){
- uni.setAppTheme({
- theme: originTheme
- })
- }
- },
- // #endif
- radioChange(e : UniRadioGroupChangeEvent) {
- for (let i = 0; i < this.items.length; i++) {
- if (this.items[i].value === e.detail.value) {
- this.current = i;
- break;
- }
- }
- },
- titleColorChange(e : UniSwitchChangeEvent) {
- this.titleColorCustom = e.detail.value
- },
- itemContentLargeChange: function (e : UniSwitchChangeEvent) {
- this.itemContentLarge = e.detail.value
- },
- itemColorChange: function (e : UniSwitchChangeEvent) {
- this.itemColorCustom = e.detail.value
- },
- itemNumLargeChange: function (e : UniSwitchChangeEvent) {
- this.itemNumLargeSelect = e.detail.value
- },
- cancelTextChange: function (e : UniSwitchChangeEvent) {
- this.cancelTextCustom = e.detail.value
- },
- cancelColorChange: function (e : UniSwitchChangeEvent) {
- this.cancelColorCustom = e.detail.value
- },
- backgroundColorChange: function (e : UniSwitchChangeEvent) {
- this.backgroundColorCustom = e.detail.value
- },
- showActionSheet() {
- const options: ShowActionSheetOptions = {
- title: this.items[this.current].value,
- itemList: ['item1', 'item2', 'item3', 'item4'],
- success: (res) => {
- console.log(res.tapIndex);
- uni.showToast({
- title: "点击了第" + res.tapIndex + "个选项",
- icon: "none"
- })
- },
- fail: (error) => {
- if (this.showErrorToast) {
- uni.showToast({
- title: error.errMsg,
- icon: "none"
- })
- }
- console.log(error);
- }
- }
- if (this.itemContentLarge) {
- options.itemList = ['两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船', '水光潋滟晴方好,山色空蒙雨亦奇。 欲把西湖比西子,淡妆浓抹总相宜', '']
- }
- if (this.itemNumLargeSelect) {
- // 大量选项测试,不能超过6个元素 https://uniapp.dcloud.net.cn/api/ui/prompt.html#showactionsheet
- const arr: string[] = []
- for(let i = 0; i < 10; i++){
- arr.push(`两个黄鹂鸣翠柳,一行白鹭上青天 ${i+1}`)
- }
- options.itemList = arr
- }
- if(this.titleColorCustom){
- options.titleColor = '#007AFF'
- }
- if(this.itemColorCustom){
- options.itemColor = '#ff00ff'
- }
- if(this.cancelTextCustom){
- options.cancelText = 'custom cancel'
- }
- if(this.cancelColorCustom){
- options.cancelColor = '#007AFF'
- }
- if(this.backgroundColorCustom){
- options.backgroundColor = '#ccc'
- }
- uni.showActionSheet(options)
- },
- showActionSheetAndShowAgainInCallback(){
- uni.showActionSheet({
- title: '第一个',
- itemList: ['1','2','3'],
- complete(){
- uni.showActionSheet({
- title: '第二个',
- itemList: ['a','b','c'],
- complete: (res) => {
- console.log('showActionSheetAndShowAgainInCallback complete', res)
- }
- })
- }
- })
- },
- // 自动化测试
- getLifeCycleNum(){
- return state.lifeCycleNum
- },
- // 自动化测试
- // #ifdef WEB
- closeWebActionSheet(){
- document.querySelector('.uni-action-sheet_dialog__cell').click()
- },
- // #endif
- // 自动化测试
- hideActionSheet(){
- uni.hideActionSheet()
- }
- }
- }
- </script>
|