123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'moment'], function ($, undefined, Backend, Table, Form, Moment) {
- var Controller = {
- add: () => {
- Controller.form();
- },
- edit: () => {
- Controller.form();
- },
- form: () => {
- const { reactive, onMounted } = Vue
- const addEdit = {
- setup() {
- const state = reactive({
- type: new URLSearchParams(location.search).get('type'),
- id: new URLSearchParams(location.search).get('id'),
- title: new URLSearchParams(location.search).get('title'),
- })
- const form = reactive({
- model: {
- type: 0,
- name: '',
- price_type: 1,
- third_party_appid: '',
- price: '',
- price2: '',
- cover_img_url: '',
- },
- rules: {
- name: [{ validator: checkTitle, trigger: 'change' }],
- cover_img_url: [{ required: true, message: '请选择商品封面', trigger: 'change' }],
- },
- });
- const goods = reactive({
- id: '', // 商品id
- image: '', // 商品图片
- title: '', // 商品名称
- });
- function checkTitle(rule, value, callback) {
- if (!value) {
- return callback(new Error('请输入商品名称'));
- }
- const length =
- value.match(/[^ -~]/g) == null ? value.length : value.length + value.match(/[^ -~]/g).length;
- if (length < 6 || length > 28) {
- callback(new Error('直播标题必须为3-14个字(一个字等于两个英文字符或特殊字符)'));
- } else {
- callback();
- }
- }
- //选择商品
- function selectGoods() {
- let id = '';
- Fast.api.open(`shopro/goods/goods/select`, "选择商品", {
- callback(data) {
- console.log(data, 'data');
- goods.image = data.image;
- goods.title = data.title;
- goods.id = data.id;
- form.model.cover_img_url = data.image;
- form.model.name = data.title;
- form.model.url = 'pages/goods/index?id=' + goods.id;
- if (data.price.length === 2) {
- form.model.price_type = 2;
- form.model.price = data.price[0];
- form.model.price2 = data.price[1];
- } else {
- if (Number(data.original_price)) {
- form.model.price_type = 3;
- form.model.price = data.original_price;
- form.model.price2 = data.price[0];
- } else {
- form.model.price_type = 1;
- form.model.price = data.price[0];
- }
- }
- form.model.goods_id = data.id;
- }
- })
- }
- // 获取商品信息
- function getGoodsList(id) {
- Fast.api.ajax({
- url: `shopro/goods/goods/select`,
- type: 'GET',
- data: {
- type: 'select',
- search: JSON.stringify({ id }),
- },
- }, function (ret, res) {
- goods.image = res.data[0].image;
- goods.title = res.data[0].title;
- return false
- }, function (ret, res) { })
- }
- //获取详情
- function getDetail() {
- Fast.api.ajax({
- url: `shopro/app/mplive/goods/detail/id/${state.id}`,
- type: 'GET',
- }, function (ret, res) {
- form.model = res.data;
- getGoodsList(form.model.goods_id);
- return false
- }, function (ret, res) { })
- }
- function onConfirm() {
- Fast.api.ajax({
- url: state.type == 'add' ? 'shopro/app/mplive/goods/add' : `shopro/app/mplive/goods/edit/id/${state.id}`,
- type: 'POST',
- data: form.model,
- }, function (ret, res) {
- Fast.api.close()
- }, function (ret, res) { })
- }
- onMounted(() => {
- state.type == 'edit' && getDetail()
- })
- return {
- state,
- goods,
- form,
- onConfirm,
- getDetail,
- checkTitle,
- selectGoods,
- getGoodsList
- }
- }
- }
- createApp('addEdit', addEdit);
- },
- };
- return Controller;
- });
|