|
@@ -1,6 +1,8 @@
|
|
|
<!-- 问题反馈 -->
|
|
|
<script>
|
|
|
+import Cookies from "js-cookie";
|
|
|
import useColumns from "./columns";
|
|
|
+import { AddProblem, GetUser } from "@/api/business/as/after-sales";
|
|
|
export default {
|
|
|
name: "Feedback",
|
|
|
components: {
|
|
@@ -9,28 +11,78 @@ export default {
|
|
|
data() {
|
|
|
const { userColumns, problemColumns } = useColumns();
|
|
|
|
|
|
- const problemInfo = this.$init.params([...userColumns, ...problemColumns]);
|
|
|
+ const params = this.$init.params([...userColumns, ...problemColumns]);
|
|
|
+ const rules = this.$init.rules([...userColumns, ...problemColumns]);
|
|
|
return {
|
|
|
params: {
|
|
|
- problemInfo: {
|
|
|
- ...problemInfo,
|
|
|
- projectSource: "测试项目",
|
|
|
- },
|
|
|
- files: [],
|
|
|
+ ...params,
|
|
|
+ userId: null,
|
|
|
+ // projectSource: "测试项目",
|
|
|
},
|
|
|
+ files: [],
|
|
|
userColumns,
|
|
|
size: "mini",
|
|
|
loading: false,
|
|
|
problemColumns,
|
|
|
title: "问题反馈",
|
|
|
+ rules,
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
useBack() {
|
|
|
this.$router.go(-1);
|
|
|
},
|
|
|
+ useSubmit(prop) {
|
|
|
+ this.$refs[prop].validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ try {
|
|
|
+ console.log(this.params, "params");
|
|
|
+ console.log(this.files, "files");
|
|
|
+ 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",
|
|
|
+ });
|
|
|
+ // formData.append("problemInfo", blob);
|
|
|
+ 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 fetchUser() {
|
|
|
+ try {
|
|
|
+ // const { id } = this.$store.state.salesUser;
|
|
|
+ const id = Cookies.get("salesId");
|
|
|
+ let { code, data } = await GetUser({ id });
|
|
|
+ if (code === 200) {
|
|
|
+ this.params = {
|
|
|
+ userId: data.id,
|
|
|
+ projectSource: data.userProject,
|
|
|
+ questioner: data.userName,
|
|
|
+ roomInformation: data.userRoom,
|
|
|
+ questionerWay: data.userPhone,
|
|
|
+ };
|
|
|
+ // this.params.userId = data.id;
|
|
|
+ }
|
|
|
+ } catch (error) {}
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.fetchUser();
|
|
|
},
|
|
|
- created() {},
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -48,24 +100,26 @@ export default {
|
|
|
|
|
|
<div style="width: 100%; padding: 16px">
|
|
|
<el-form
|
|
|
- ref="userInfo"
|
|
|
- :model="params.problemInfo"
|
|
|
+ ref="problemInfo"
|
|
|
+ :model="params"
|
|
|
label-width="auto"
|
|
|
:size="size"
|
|
|
+ :rules="rules"
|
|
|
>
|
|
|
<!-- 基本信息 -->
|
|
|
<el-row>
|
|
|
- <el-form-item label="项目名称">
|
|
|
- <span>{{ params.problemInfo.projectSource }}</span>
|
|
|
- </el-form-item>
|
|
|
+ <!-- <el-form-item label="项目名称">
|
|
|
+ <span>{{ params.projectSource }}</span>
|
|
|
+ </el-form-item> -->
|
|
|
<el-form-item
|
|
|
v-for="({ item, attr }, index) in userColumns"
|
|
|
:label="item.title"
|
|
|
+ :prop="item.key"
|
|
|
>
|
|
|
<component
|
|
|
:is="attr.is"
|
|
|
v-bind="attr"
|
|
|
- v-model="params.problemInfo[item.key]"
|
|
|
+ v-model="params[item.key]"
|
|
|
></component>
|
|
|
</el-form-item>
|
|
|
</el-row>
|
|
@@ -75,22 +129,44 @@ export default {
|
|
|
<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.problemInfo[item.key]"
|
|
|
+ v-model="params[item.key]"
|
|
|
style="width: 100%"
|
|
|
></component>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="问题图片">
|
|
|
- <image-upload v-model="params.files" :size="size"></image-upload>
|
|
|
+ <el-form-item label="问题图片" prop="files">
|
|
|
+ <image-upload v-model="files" :size="size"></image-upload>
|
|
|
</el-form-item>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
|
|
|
- <el-button type="primary" round class="stickyBtn" :size="size"
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ round
|
|
|
+ class="stickyBtn"
|
|
|
+ :size="size"
|
|
|
+ @click="useSubmit('problemInfo')"
|
|
|
>提 交</el-button
|
|
|
>
|
|
|
</div>
|
|
@@ -113,6 +189,7 @@ export default {
|
|
|
padding: 16px;
|
|
|
box-sizing: border-box;
|
|
|
background-color: #fff;
|
|
|
+ border-radius: 4px;
|
|
|
margin-bottom: 12px;
|
|
|
}
|
|
|
.stickyBtn {
|