123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585 |
- <template>
- <el-form
- ref="ruleForm"
- :loading="loading"
- :model="ruleForm"
- status-icon
- :rules="rulesThis"
- label-width="100px"
- style="width: 100%"
- class="demo-ruleForm"
- >
- <el-row>
- <el-row>
- <el-col :span="12">
- <el-form-item label="异常数量" prop="anomalous_numbers">
- <el-input
- :disabled="id !== 'add'"
- v-model="ruleForm.anomalous_numbers"
- placeholder="请输入异常数量"
- ></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="异常原因" prop="anomalous_reason">
- <el-select
- style="width: 100%"
- :disabled="id !== 'add'"
- v-model="ruleForm.anomalous_reason"
- placeholder="请选择异常原因"
- >
- <el-option
- v-for="item in reason_options"
- :key="item.id"
- :label="item.result"
- :value="item.result_code"
- :disabled="item.status == 0"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="期望意愿" prop="expect_wish">
- <el-select
- style="width: 100%"
- :disabled="id !== 'add'"
- v-model="ruleForm.expect_wish"
- placeholder="请选择期望意愿"
- >
- <el-option
- v-for="item in expect_options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="异常备注" prop="anomalous_remark">
- <el-input
- type="textarea"
- placeholder="请输入异常原因备注"
- v-model="ruleForm.anomalous_remark"
- :disabled="id !== 'add'"
- maxlength="250"
- show-word-limit
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-col :span="24">
- <el-form-item label="异常图片" prop="anomalous_images">
- <div class="el-form-item-error-img">
- <ul>
- <li
- class="images_li"
- :style="getMargin_li()"
- v-for="(item, index) in ruleForm.anomalous_images"
- :key="item"
- >
- <img :src="item" alt="" style="width: 254px; height: 164px" />
- <i
- class="el-icon-close"
- v-if="
- id === 'add' "
- @click="imgClose(index)"
- ></i>
- </li>
- </ul>
- <div
- class="btnupload"
- :style="getMargin()"
- v-if="ruleForm.anomalous_images.length < 5 && id === 'add'"
- style="position: relative"
- @click="open"
- >
- <i class="el-icon-plus avatar-uploader-icon"></i>
- <file-upload
- class="Upload"
- :accept="'.jpg,.png,.bmp,.jpeg'"
- :multiple="true"
- :uploadcondition="beforeAvatarUpload"
- @UploadErrorEvent="UploadErrorEvent"
- @UploadSuccessEvent="UploadSuccessEvent"
- />
- </div>
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="24" style="text-align: right">
- <el-button type="primary" @click="submitForm" v-if="id === 'add'"
- >保 存</el-button
- >
- </el-col>
- </el-row>
- </el-form>
- </template>
- <script>
- import { isnumber } from "@/utils/validate.js";
- import asyncRequest from "@/apis/service/sellOut/sellAfterApply";
- import resToken from "@/mixins/resToken";
- export default {
- name: "handover",
- props: ["id", "sitem", "showModelThis", "newTime"],
- mixins: [resToken],
- data() {
- const validatenumbers = (rule, value, callback) => {
- if (value === "") {
- callback(new Error("异常数量不能为空!"));
- } else {
- if (!isnumber(value)) {
- callback(new Error("异常数量必须为数字"));
- } else {
- callback();
- }
- }
- };
- return {
- isShow: true,
- loading: false,
- disabled: true,
- status: "", //存储详情接口返的状态
- showModelThis: this.showModel,
- resign_name: "", //离职人
- hand_name: "", //交接人
- ruleForm: {
- order_type: "1", //售后类型 1销售2咨询,
- outCode: "", //
- stock_out_numbers: "", //出库单编号
- anomalous_numbers: "", //异常数量
- anomalous_reason: "", //异常原因
- expect_wish: "", //期望意愿
- anomalous_images: [],
- anomalous_remark: "", //异常备注
- },
- rulesThis: this.rules,
- // 验证规则
- rules: {
- anomalous_numbers: [
- {
- required: true,
- trigger: "blur",
- validator: validatenumbers,
- },
- ],
- anomalous_reason: [
- {
- required: true,
- message: "请选择异常原因",
- trigger: "change",
- },
- ],
- expect_wish: [
- {
- required: true,
- message: "请选择期望意愿",
- trigger: "change",
- },
- ],
- anomalous_images: [
- {
- type: "array",
- required: true,
- message: "异常图片不能为空!",
- trigger: "change",
- },
- ],
- anomalous_remark: [
- {
- required: true,
- message: "请输入异常原因备注",
- trigger: "blur",
- },
- ],
- },
- reason_options: [],
- reason_value: "", //异常原因
- expect_options: [
- {
- value: "1",
- label: "退货",
- },
- {
- value: "2",
- label: "换货",
- },
- {
- value: "3",
- label: "接受差异改变售价",
- },
- ],
- expect_value: "", //期望意愿
- code: "",
- };
- },
- computed: {
- powers() {
- let tran =
- this.$store.getters.btnList.find(
- (item) => item.menu_route == "zxAfterSaleDetail"
- ) || {};
- if (tran && tran.action && tran.action.length > 0) {
- return tran.action;
- } else {
- return [];
- }
- },
- },
- mounted() {
- this.getReason(); //获取异常原因
- this.initForm();
- },
- watch: {
- id: function (val) {
- if (val) {
- this.initForm();
- }
- },
- newTime: function (val) {
- if (val) {
- this.initForm();
- }
- },
- },
- methods: {
- // 关闭弹窗,直接隐藏表单
- // async closeAddEdit() {
- // this.$emit("closeModel", false); //抛出一个事件,关闭弹窗
- //
- // },
- closeAdd() {
- this.showModelThis = false;
- },
- async initForm() {
- this.loading = true;
- this.status = "";
- this.rulesThis = this.rules;
- this.disabled = false;
- await this.resetForm();
- this.loading = false;
- },
- async initData() {
- console.log(this.sitem);
- if (this.sitem) {
- let { returnCode } = this.sitem;
- let model = {
- returnCode,
- };
- const res = await asyncRequest.detail(model);
- if (res && res.code === 0 && res.data) {
- let { error_num, error_img, error_remark, except_code, error_code } =
- res.data;
- console.log(res.data);
- this.ruleForm = {
- stock_out_numbers: "", //出库单编号
- anomalous_numbers: error_num, //异常数量
- anomalous_reason: error_code, //异常原因
- expect_wish: except_code, //期望意愿
- anomalous_images: [error_img],
- anomalous_remark: error_remark, //异常备注
- };
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- }
- },
- async resetForm() {
- this.resign_name = "";
- this.hand_name = "";
- this.status = "";
- // 重置
- await this.$nextTick(() => {
- if (this.$refs.ruleForm) {
- this.$refs.ruleForm.resetFields();
- this.$refs.ruleForm.clearValidate();
- let {
- outCode,
- error_num,
- error_img,
- error_remark,
- except_code,
- error_code,
- } = this.sitem;
- this.code = outCode;
- this.ruleForm = {
- stock_out_numbers: "", //出库单编号
- anomalous_numbers: error_num, //异常数量
- anomalous_reason: error_code, //异常原因
- expect_wish: except_code, //期望意愿
- anomalous_images: [error_img],
- anomalous_remark: error_remark, //异常备注
- };
- // }
- }
- });
- },
- async submitForm() {
- await this.$refs.ruleForm.validate(async (valid) => {
- if (valid) {
- const { anomalous_numbers } = this.ruleForm;
- if (this.sitem.send_num < anomalous_numbers) {
- this.$message.warning("异常数量不能大于发货数量");
- return false;
- }
- let model = JSON.parse(JSON.stringify(this.ruleForm));
- // console.log("调接口");
- let _model = {
- order_type: "1",
- outCode: model.outCode,
- errorCode: model.anomalous_reason, //异常原因
- num: model.anomalous_numbers,
- remark: model.anomalous_remark,
- except_code: model.expect_wish,
- img: model.anomalous_images.toString(),
- };
- console.log(_model);
- const res = await asyncRequest.add(_model);
- if (res && res.code === 0) {
- const title = this.id === "add" ? "添加成功!" : "修改成功!";
- this.$notify.success({
- title,
- message: "",
- });
- this.$emit("refresh", false);
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- } else {
- console.log("error submit!!");
- return false;
- }
- });
- },
- async statusConfirm(status, message) {
- await this.$confirm(`确定要${message}?`, {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- })
- .then(async () => {
- if (status === "-1") {
- await this.deleteById(message);
- } else {
- await this.setStatus(status, message);
- }
- })
- .catch(() => {
- console.log("取消");
- });
- },
- async deleteById(message) {
- const res = await asyncRequest.delete({ id: this.id });
- if (res && res.code === 0) {
- this.$notify.success({
- title: message + "成功!",
- message: "",
- });
- this.routeGoto("handover", {});
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- },
- async setStatus(status, message) {
- let model = {
- id: this.id,
- remark: "",
- status: status,
- };
- const res = await asyncRequest.status(model);
- this.loading = false;
- if (res && res.code === 0) {
- this.$notify.success({
- title: message + "成功!",
- message: "",
- });
- this.initForm();
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- },
- open() {
- this.show = true;
- },
- // 获取异常原因
- async getReason() {
- let model = {
- type: "2",
- page: 1,
- size: 100,
- };
- const res = await asyncRequest.reasonList(model);
- this.loading = false;
- if (res && res.code === 0) {
- this.reason_options = res.data.list;
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- },
- // 异常原因
- handleAnomalousReason(e) {
- console.log(e);
- if (e) {
- this.ruleForm.anomalous_reason = e;
- } else {
- this.ruleForm.anomalous_reason = "";
- }
- this.$refs.ruleForm.validateField("company_img");
- },
- //图片上传失败
- UploadErrorEvent() {
- this.$message.error("图片上传失败!");
- this.$refs.ruleForm.validateField("anomalous_images");
- },
- //图片上传成功
- UploadSuccessEvent(data) {
- if (data && data.url && data.url !== "break") {
- const { url } = data.url;
- this.ruleForm.anomalous_images.push(url);
- this.$message.success("图片上传成功!");
- this.$refs.ruleForm.validateField("anomalous_images");
- }
- },
- //判断图片规格
- beforeAvatarUpload(file) {
- let isJPG = false,
- isLt2M = false;
- if (file) {
- if (
- file.type === "image/jpg" ||
- file.type === "image/png" ||
- file.type === "image/bmp" ||
- file.type === "image/jpeg"
- ) {
- isJPG = true;
- }
- isLt2M = file.size / 1024 / 1024 < 1;
- if (!isJPG) {
- this.$message.error("图片格式不正确!");
- }
- if (!isLt2M) {
- this.$message.error("图片大小不能超过 1MB!");
- }
- }
- return isJPG && isLt2M;
- },
- imgClose(index) {
- this.ruleForm.anomalous_images.splice(index, 1);
- this.$refs.ruleForm.validateField("anomalous_images");
- },
- getMargin() {
- if (this.ruleForm.anomalous_images.length == 0) {
- return "margin:0;";
- } else if (this.ruleForm.anomalous_images.length < 3) {
- return "margin:0px 0 0 10px";
- } else {
- return "margin:10px 0 0 10px";
- }
- },
- getMargin_li() {
- if (this.ruleForm.anomalous_images.length <= 3) {
- return "margin:0 0 0 10px";
- } else {
- return "margin:10px 0 0 10px";
- }
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .el-form-item-error-img {
- width: 100%;
- ul {
- width: 100%;
- li {
- float: left;
- border: 1px solid rgb(220, 223, 230);
- // border-left: 0;
- box-sizing: border-box;
- width: 254px;
- height: 164px;
- line-height: 164px;
- position: relative;
- img {
- display: inline-block;
- width: 100%;
- height: 100%;
- }
- .el-icon-close {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 2;
- width: 25px;
- height: 25px;
- text-align: center;
- line-height: 25px;
- font-size: 19px;
- &:hover {
- color: #63cbe7;
- }
- }
- }
- }
- }
- .images_li {
- // width: 254px;
- // height: 164px;
- float: left;
- }
- .btnupload {
- float: left;
- border: 1px solid rgb(220, 223, 230);
- // border-left: 0;
- box-sizing: border-box;
- width: 254px;
- height: 164px;
- line-height: 164px;
- text-align: center;
- }
- .Upload {
- width: 254px;
- height: 164px;
- line-height: 164px;
- text-align: center;
- position: absolute;
- line-height: 0px;
- top: 0;
- left: 0;
- z-index: 2;
- line-height: 164px;
- }
- .avatar-uploader-icon {
- font-size: 33px;
- color: #8c939d;
- width: 50px;
- height: 50px;
- line-height: 50px;
- text-align: center;
- }
- </style>
|