1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dotton-finance

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Обновление

Происхождение: вчера появилось обновление от разработчиков — v0.10.101100. В компоненте Picker теперь поддерживаются свойства mode со значениями date и time, а также исправлена ошибка с background-image. Поэтому было решено обновить этот экземпляр.

Цель: реализовать интеграцию компонента выбора даты

Как показано на рисунке:

Эффект

Информация взята из официальной документации: https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html

Шаги

В файле item.wxml добавьте компонент picker:

    <view class="section">
        <picker mode="date" value="{{date}}" start="2015-09-01" end="2017-09-01" bindchange="bindDateChange">
            <view class="section__title">
              Дата: {{date}}
            </view>
        </picker>
    </view>

Как видно на рисунке:

  1. После даты есть пустое пространство, которое должно по умолчанию отображать текущую дату;
  2. При нажатии кнопки подтверждения данные не отображаются в компоненте, необходимо реализовать метод bindDateChange.

Поэтому в файле item.js нужно объявить значение data date, связанное с wxml {{date}}, и инициализировать строковое значение даты в onLoad. Подробное описание см. в комментариях:

//    Получить текущую дату
    var date = new Date();
//    Отформатировать дату как "ГГГГ-мм-дд"
    var dateStr = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
//    Сохранить данные для отображения на странице
    this.setData({
        date: dateStr
    })

После обработки компонент отображает текущую дату:

Рисунок

Далее необходимо исправить логическую ошибку: конец даты picker должен быть не позже текущей даты. Это можно сделать, изменив атрибут end в wxml на «{{date}}»:

<picker mode="date" value="{{date}}" start="{{date}}" end="2017-09-01" bindchange="bindDateChange">

Стоит отметить, что у официального picker всё ещё есть ошибки, он полностью игнорирует значения start и end и позволяет выбрать любую дату. Однако пока это только внутреннее тестирование, поэтому код остаётся таким, какой он есть.

Теперь нужно обработать событие щелчка по компоненту подтверждения даты bindDateChange:

Вернитесь к файлу item.js и объявите метод bindDateChange, добавив следующий код для обновления значения data date:

//  Событие клика по компоненту выбора даты
  bindDateChange: function(e) {
    this.setData({
        date: e.detail.value
    })
  }

Таким образом, компонент выбора даты интегрирован. Осталось сохранить его вместе с предыдущими полями заголовка, типа и суммы в json и сохранить локально с помощью setStorage. Подробности можно найти в статье автора «Разработка приложения для учёта в малых программах WeChat (приложениях)».

Шаги

1. Вход через стороннее приложение WeChat и получение nickname для запроса авторизации на сервере.

Если запрос выполнен успешно, то локально сохраняются uid и accessToken.

Адрес интерфейса: https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html

App({
  onLaunch: function() {
    wx.login({
      success: function(res) {
        if (res.code) {
          // Отправка сетевого запроса
          wx.request({
            url: 'https://test.com/onLogin',
            data: {
              code: res.code
            }
          })
        } else {
          console.log('Ошибка при получении статуса пользователя!' + res.errMsg)
        }
      }
    });
  }
})

Сохраните основную информацию о пользователе локально:

index.js

  onLoad: function(){
        var that = this
        // Вызов метода экземпляра приложения для получения глобальных данных
        app.getUserInfo(function(userInfo){
          // Запрос на вход
            console.log(userInfo.nickName);
            app.httpService(
                    'user/login',
                    {
                        openid: userInfo.nickName
                    }, 
                    function(response){
                        // Успешный обратный вызов
                        console.log(response);
//                      Локальное сохранение uid и accessToken
                        var userinfo = wx.getStorageSync('userinfo') || {};
                        userinfo['uid'] = response.data.uid;
                        userinfo['accessToken'] = response.data.accessToken;
                        console.log(userinfo);
                        wx.setStorageSync('userinfo', userinfo);
                    }
            );
        })
  }

app.js

Определите общую функцию доступа к сети:

  httpService:function(uri, param, cb) {
//    Соответственно пути, параметрам и обратным вызовам
      wx.request({
            url: 'http://financeapi.applinzi.com/index.php/' + uri,
            data: param,
            header: {
                'Content-Type': 'application/json'
            },
            success: function(res) {
                cb(res.data)
            },
            fail: function() {
                console.log('Ошибка интерфейса');
            }
        })  
  },

По умолчанию используется метод get. Если вы установите другой метод, например post, серверная часть не сможет получить значения. Поэтому сервер был изменён для получения значений.

Проверьте, что данные успешно сохранены в Storage:

Рисунок

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Разработка программного обеспечения для ведения бухгалтерии в рамках практического курса по созданию мини-приложений WeChat. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dotton-finance.git
git@api.gitlife.ru:oschina-mirror/dotton-finance.git
oschina-mirror
dotton-finance
dotton-finance
master