|
@@ -0,0 +1,200 @@
|
|
|
+<script>
|
|
|
+import useColumns from "./columns";
|
|
|
+export default {
|
|
|
+ name: "ASPA-ADD",
|
|
|
+ props: {},
|
|
|
+ components: {
|
|
|
+ ImageUpload: () =>
|
|
|
+ import(
|
|
|
+ "@/views/business/as/after-sales/components/image-upload/index.vue"
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ const { userColumns, problemColumns } = useColumns();
|
|
|
+
|
|
|
+ const params = this.$init.params([...userColumns, ...problemColumns]);
|
|
|
+ const rules = this.$init.rules([...userColumns, ...problemColumns]);
|
|
|
+ return {
|
|
|
+ rules,
|
|
|
+ params,
|
|
|
+ userColumns,
|
|
|
+ problemColumns,
|
|
|
+ size: "mini",
|
|
|
+ loading: false,
|
|
|
+ files: [],
|
|
|
+ isAdd: true,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ title: {
|
|
|
+ get() {
|
|
|
+ let { id } = this.$route.params;
|
|
|
+ if (id) {
|
|
|
+ this.isAdd = false;
|
|
|
+ return "编 辑";
|
|
|
+ }
|
|
|
+ this.isAdd = true;
|
|
|
+ return "新 增";
|
|
|
+ },
|
|
|
+ set() {},
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ useBack() {
|
|
|
+ this.$router.go(-1);
|
|
|
+ },
|
|
|
+ useSubmit(prop) {
|
|
|
+ // this.$refs[prop].validate(async (valid) => {
|
|
|
+ // if (valid) {
|
|
|
+ try {
|
|
|
+ console.log({ params: this.params, files: this.files }, "params");
|
|
|
+ this.loading = true;
|
|
|
+ let formData = new FormData();
|
|
|
+ this.files.forEach((f) => {
|
|
|
+ formData.append("files", f.file);
|
|
|
+ });
|
|
|
+ const blob = new Blob([JSON.stringify(this.params)], {
|
|
|
+ type: "application/json",
|
|
|
+ });
|
|
|
+ // let { code, msg } = await AddProblem(formData, this.params);
|
|
|
+ // if (code === 200) {
|
|
|
+ // this.$toast(msg);
|
|
|
+ // this.useBack();
|
|
|
+ // }
|
|
|
+ } catch (error) {
|
|
|
+ } finally {
|
|
|
+ this.loading = false;
|
|
|
+ }
|
|
|
+ // } else {
|
|
|
+ // console.log("error submit!!");
|
|
|
+ // return false;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ },
|
|
|
+ async fetchItem(id) {
|
|
|
+ try {
|
|
|
+ this.loading = true;
|
|
|
+ // let {code,data} = await
|
|
|
+ } catch (error) {
|
|
|
+ } finally {
|
|
|
+ this.loading = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ let { id } = this.$route.params;
|
|
|
+ if (id) {
|
|
|
+ this.fetchItem(id);
|
|
|
+ }
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="ASPA-ADD" v-loading="loading">
|
|
|
+ <van-sticky style="width: 100%">
|
|
|
+ <van-nav-bar
|
|
|
+ :title="title"
|
|
|
+ left-text="返回"
|
|
|
+ right-text="保存"
|
|
|
+ left-arrow
|
|
|
+ @click-left="useBack"
|
|
|
+ @click-right="useSubmit"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ </van-sticky>
|
|
|
+ <div style="width: 100%; padding: 16px">
|
|
|
+ <el-form
|
|
|
+ ref="problemInfo"
|
|
|
+ :model="params"
|
|
|
+ label-width="auto"
|
|
|
+ :size="size"
|
|
|
+ :rules="rules"
|
|
|
+ >
|
|
|
+ <!-- 基本信息 -->
|
|
|
+ <el-row>
|
|
|
+ <el-form-item
|
|
|
+ v-for="({ item, attr }, index) in userColumns"
|
|
|
+ :label="item.title"
|
|
|
+ :prop="item.key"
|
|
|
+ >
|
|
|
+ <component
|
|
|
+ v-if="attr.is === 'el-select'"
|
|
|
+ :is="attr.is"
|
|
|
+ v-bind="attr"
|
|
|
+ v-model="params[item.key]"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="op in attr.options"
|
|
|
+ :key="op.value"
|
|
|
+ :label="op.label"
|
|
|
+ :value="op.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </component>
|
|
|
+ <component
|
|
|
+ v-else
|
|
|
+ :is="attr.is"
|
|
|
+ v-bind="attr"
|
|
|
+ v-model="params[item.key]"
|
|
|
+ ></component>
|
|
|
+ </el-form-item>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <!-- 问题信息 -->
|
|
|
+ <el-row>
|
|
|
+ <el-form-item
|
|
|
+ v-for="({ item, attr }, index) in problemColumns"
|
|
|
+ :label="item.title"
|
|
|
+ :prop="item.key"
|
|
|
+ >
|
|
|
+ <component
|
|
|
+ v-if="attr.is === 'el-select'"
|
|
|
+ :is="attr.is"
|
|
|
+ v-bind="attr"
|
|
|
+ v-model="params[item.key]"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="op in attr.options"
|
|
|
+ :key="op.value"
|
|
|
+ :label="op.label"
|
|
|
+ :value="op.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </component>
|
|
|
+ <component
|
|
|
+ v-else
|
|
|
+ :is="attr.is"
|
|
|
+ v-bind="attr"
|
|
|
+ v-model="params[item.key]"
|
|
|
+ style="width: 100%"
|
|
|
+ ></component>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="问题图片" prop="files">
|
|
|
+ <image-upload v-model="files" :size="size"></image-upload>
|
|
|
+ </el-form-item> -->
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.ASPA-ADD {
|
|
|
+ width: 100%;
|
|
|
+ height: 100vh;
|
|
|
+ overflow-y: auto;
|
|
|
+ overflow-x: hidden;
|
|
|
+ background-color: #f7f7f7;
|
|
|
+}
|
|
|
+.el-row {
|
|
|
+ width: 100%;
|
|
|
+ padding: 16px 16px 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ margin-bottom: 12px;
|
|
|
+}
|
|
|
+</style>
|