123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
- var Controller = {
- index: () => {
- const { reactive, onMounted } = Vue
- const index = {
- setup() {
- const state = reactive({
- dispatch_type: 'express',
- data: [],
- })
- function getData() {
- Fast.api.ajax({
- url: 'shopro/dispatch/dispatch',
- type: 'GET',
- data: {
- page: pagination.page,
- list_rows: pagination.list_rows,
- type: state.dispatch_type
- },
- }, function (ret, res) {
- state.data = res.data.data
- pagination.total = res.data.total
- return false
- }, function (ret, res) { })
- }
- const pagination = reactive({
- page: 1,
- list_rows: 10,
- total: 0,
- })
- function onChangeTab() {
- pagination.page = 1
- getData()
- }
- function onAdd() {
- Fast.api.open(`shopro/dispatch/dispatch/add?type=add&dispatch_type=${state.dispatch_type}`, "添加", {
- callback() {
- getData()
- }
- })
- }
- function onEdit(id) {
- Fast.api.open(`shopro/dispatch/dispatch/edit?type=edit&id=${id}&dispatch_type=${state.dispatch_type}`, "编辑", {
- callback() {
- getData()
- }
- })
- }
- function onCopy(id) {
- Fast.api.open(`shopro/dispatch/dispatch/add?type=copy&id=${id}&dispatch_type=${state.dispatch_type}`, "复制", {
- callback() {
- getData()
- }
- })
- }
- function onDelete(id) {
- Fast.api.ajax({
- url: `shopro/dispatch/dispatch/delete/id/${id}?type=${state.dispatch_type}`,
- type: 'DELETE',
- }, function (ret, res) {
- getData()
- }, function (ret, res) { })
- }
- onMounted(() => {
- getData()
- })
- return {
- state,
- getData,
- pagination,
- onChangeTab,
- onAdd,
- onEdit,
- onCopy,
- onDelete
- }
- }
- }
- createApp('index', index);
- },
- add: () => {
- Controller.form();
- },
- edit: () => {
- Controller.form();
- },
- form: () => {
- const { reactive, onMounted, getCurrentInstance } = Vue
- const addEdit = {
- setup() {
- const { proxy } = getCurrentInstance();
- const state = reactive({
- type: new URLSearchParams(location.search).get('type'),
- id: new URLSearchParams(location.search).get('id'),
- dispatch_type: new URLSearchParams(location.search).get('dispatch_type'),
- priceType: 'number',
- })
- const form = reactive({
- model: {
- // dispatch_type: state.dispatch_type,
- name: '',
- type: state.dispatch_type,
- express: [],
- autosend: {
- type: "text",
- content: ""
- }
- },
- rules: {
- name: [{ required: true, message: '请输入模板名称', trigger: 'blur' }],
- express: {
- first_num: [{ required: true, message: '请输入数量', trigger: 'blur' }],
- first_price: [{ required: true, message: '请输入运费', trigger: 'blur' }],
- additional_num: [{ required: true, message: '请输入数量', trigger: 'blur' }],
- additional_price: [{ required: true, message: '请输入续费', trigger: 'blur' }],
- district_text: [{ required: true, message: '请选择可配送区域', trigger: 'blur' }],
- }
- },
- })
- function getDetail() {
- Fast.api.ajax({
- url: `shopro/dispatch/dispatch/detail/id/${state.id}`,
- type: 'GET',
- data: {
- type: state.dispatch_type,
- }
- }, function (ret, res) {
- form.model = res.data;
- if (state.dispatch_type == 'express') {
- state.priceType = form.model.express.length > 0 ? form.model.express[0].type : 'number';
- }
- return false
- }, function (ret, res) { })
- }
- function onAddTemplate() {
- form.model.express.push({
- type: state.priceType,
- first_num: 0,
- first_price: 0,
- additional_num: 0,
- additional_price: 0,
- province_ids: '',
- city_ids: '',
- district_ids: '',
- });
- }
- function onDeleteTemplate(index) {
- form.model.express.splice(index, 1);
- }
- function onSelectArea(index) {
- let selected = {
- province: form.model.express[index].province_ids,
- city: form.model.express[index].city_ids,
- district: form.model.express[index].district_ids,
- }
- Fast.api.open(`shopro/data/area/select?selected=${encodeURI(JSON.stringify(selected))}`, "选择地区", {
- callback(data) {
- let text = [];
- for (var key in data) {
- let ids = [];
- for (var id in data[key]) {
- ids.push(id);
- text.push(data[key][id]);
- }
- form.model.express[index][key + '_ids'] = ids.join(',');
- }
- form.model.express[index].district_text = text.join(',');
- }
- })
- }
- function onChangeAutosendType(type) {
- form.model.autosend.content = type == 'text' ? '' : []
- }
- function onAddContent() {
- console.log(123, form.model.autosend.content)
- if(!form.model.autosend.content){
- form.model.autosend.content=[]
- }
- form.model.autosend.content.push({
- title: '',
- content: '',
- });
- }
- function onDeleteContent(index) {
- form.model.autosend.content.splice(index, 1);
- }
- function onConfirm() {
- proxy.$refs['formRef'].validate((valid) => {
- if (valid) {
- let submitForm = JSON.parse(JSON.stringify(form.model));
- if (state.dispatch_type == 'express') {
- submitForm.express.forEach((item) => {
- item.type = state.priceType;
- });
- if (state.type == 'copy') {
- delete submitForm.id;
- submitForm.express.forEach((item) => {
- delete item.id;
- });
- }
- }else if(state.dispatch_type == 'autosend'){
- if (state.type == 'copy') {
- delete submitForm.id;
- }
- }
- Fast.api.ajax({
- url: state.type == 'add' || state.type == 'copy' ? 'shopro/dispatch/dispatch/add' : `shopro/dispatch/dispatch/edit/id/${state.id}`,
- type: 'POST',
- data: submitForm,
- }, function (ret, res) {
- Fast.api.close()
- }, function (ret, res) { })
- }
- });
- }
- onMounted(() => {
- (state.type == 'edit' || state.type == 'copy') && getDetail()
- })
- return {
- state,
- form,
- onAddTemplate,
- onDeleteTemplate,
- onSelectArea,
- onChangeAutosendType,
- onAddContent,
- onDeleteContent,
- onConfirm
- }
- }
- }
- createApp('addEdit', addEdit);
- }
- };
- return Controller;
- });
|