diff --git a/src/components/autocomplete/index.vue b/src/components/autocomplete/index.vue
new file mode 100644
index 0000000..2fa6af3
--- /dev/null
+++ b/src/components/autocomplete/index.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/src/utils/directive.js b/src/utils/directive.js
index f8a45b9..8b12bc1 100644
--- a/src/utils/directive.js
+++ b/src/utils/directive.js
@@ -1,18 +1,28 @@
import Vue from "vue";
+const handle = (e, vNode) => {
+ let val = e.target.value;
+ let qualifiedNum = val
+ .replace(/[^\d.]/g, "")
+ .replace(/^\./g, "")
+ .replace(/\.{2,}/g, ".")
+ .replace(/^0{2,}/g, "0")
+ .replace(".", "$#$")
+ .replace(/\./g, "")
+ .replace("$#$", ".");
+ vNode.componentInstance.$emit("input", qualifiedNum);
+};
+
Vue.directive("checkNum", {
- update(el, binding, vNode) {
- if (el.children.length) {
- let val = el.children[0].value;
- let qualifiedNum = val
- .replace(/[^\d.]/g, "")
- .replace(/^\./g, "")
- .replace(/\.{2,}/g, ".")
- .replace(/^0{2,}/g, "0")
- .replace(".", "$#$")
- .replace(/\./g, "")
- .replace("$#$", ".");
- vNode.componentInstance.$emit("input", qualifiedNum);
+ bind(el, binding, vNode) {
+ if (!el.children.length) {
+ return;
}
+ el.children[0].addEventListener("keyup", (e) => {
+ handle(e, vNode);
+ });
+ },
+ unbind(el) {
+ el.children[0].removeEventListener("keyup");
},
});
diff --git a/src/views/product/components/add.vue b/src/views/product/components/add.vue
index ed382c9..2e08e6f 100644
--- a/src/views/product/components/add.vue
+++ b/src/views/product/components/add.vue
@@ -27,14 +27,16 @@
-
-
-
+
+
+
import serve from "api/product.js";
-import refineryServe from "api/refineryInfo.js";
+import refineryInfoServe from "api/refineryInfo.js";
+
+import autocomplete from "components/autocomplete/index.vue";
export default {
+ components: {
+ autocomplete,
+ },
props: {
controlWindows: Object,
},
data() {
+ let validatorRefineryId = (rule, value, callback) => {
+ if (this.form.refineryId) callback();
+ else callback("请选择炼厂");
+ };
return {
form: {},
refineryList: [],
+ configAutocomplete: {
+ serveTarget: refineryInfoServe.findByEntity,
+ autocomplateKey: "refineryName",
+ valueKey: "refineryName",
+ placeholder: "炼厂名称",
+ querykey: "refineryId",
+ },
productTypeList: [
{
label: "0#柴",
@@ -120,35 +138,32 @@ export default {
{ required: true, message: "请输入产品名称", trigger: "blur" },
],
productType: [
- { required: true, message: "请选择产品类型", trigger: "blur" },
+ { required: true, message: "请选择产品类型", trigger: "change" },
],
refineryId: [
- { required: true, message: "请选择炼厂", trigger: "blur" },
+ { required: true, validator: validatorRefineryId, trigger: "change" },
],
belongLibrary: [
{ required: true, message: "请输入所属炼厂库名", trigger: "blur" },
],
floorPrice: [
- { required: true, message: "请输入所属炼厂库名", trigger: "blur" },
+ { required: true, message: "请输入成本价", trigger: "blur" },
],
salePrice2company: [
- { required: true, message: "请输入所属炼厂库名", trigger: "blur" },
+ { required: true, message: "请输入企业销售价", trigger: "blur" },
],
salePrice2personal: [
- { required: true, message: "请输入所属炼厂库名", trigger: "blur" },
+ { required: true, message: "请输入个人销售价", trigger: "blur" },
],
measurement: [
{ required: true, message: "请输入计量单位", trigger: "blur" },
],
enableMark: [
- { required: true, message: "请选择启用状态", trigger: "blur" },
+ { required: true, message: "请选择启用状态", trigger: "change" },
],
},
};
},
- created() {
- this.findByEntity();
- },
methods: {
openDrawer() {
let { id } = this.controlWindows.addInfo;
@@ -159,6 +174,7 @@ export default {
}
},
submit() {
+ console.log("this.form", this.form);
this.$refs["form"].validate((valid) => {
if (valid) {
this.judgeInterface(this.form).then((res) => {
@@ -176,17 +192,34 @@ export default {
else return serve.save(form);
},
//炼厂list
- findByEntity() {
- refineryServe.findByEntity().then((res) => {
- this.refineryList = res.data;
- });
- },
+ // findByEntity() {
+ // refineryServe.findByEntity().then((res) => {
+ // this.refineryList = res.data;
+ // });
+ // },
+ // 远程搜索
+ // querySearchAsync(queryString, cb) {
+ // if (queryString) {
+ // refineryServe
+ // .findByEntity({ refineryName: queryString })
+ // .then((res) => {
+ // let timeInstance = setTimeout(() => {
+ // clearTimeout(timeInstance);
+ // if (res.data.length) {
+ // cb(res.data);
+ // } else cb([]);
+ // }, 1000 * Math.random());
+ // });
+ // } else cb([]);
+ // },
closeWindow() {
this.$emit("closeWindow");
- this.$refs.form.clearValidate();
this.form = {};
this.controlWindows.addInfo = {};
- this.controlWindows.add = false;
+ this.$nextTick(() => {
+ this.$refs.form.clearValidate();
+ this.controlWindows.add = false;
+ });
},
},
};
@@ -197,7 +230,8 @@ export default {
padding: 20px;
.el-input,
.el-select,
- .el-textarea {
+ .el-textarea,
+ .el-autocomplete {
width: 300px;
}
}
diff --git a/src/views/product/components/adjust.vue b/src/views/product/components/adjust.vue
index 15821e3..125fb9a 100644
--- a/src/views/product/components/adjust.vue
+++ b/src/views/product/components/adjust.vue
@@ -69,8 +69,10 @@ export default {
closeWindow() {
this.form = {};
this.$emit("closeWindow");
- this.$refs.form.clearValidate();
- this.controlWindows.adjust = false;
+ this.$nextTick(() => {
+ this.$refs.form.clearValidate();
+ this.controlWindows.adjust = false;
+ });
},
},
};
diff --git a/src/views/product/components/batch.vue b/src/views/product/components/batch.vue
index 90c11be..39a9104 100644
--- a/src/views/product/components/batch.vue
+++ b/src/views/product/components/batch.vue
@@ -42,7 +42,7 @@ export default {
form: {},
rules: {
enableMark: [
- { required: true, message: "请选择修改状态", trigger: "blur" },
+ { required: true, message: "请选择修改状态", trigger: "change" },
],
},
};
@@ -68,8 +68,10 @@ export default {
this.list = [];
this.form = {};
this.$emit("closeWindow");
- this.$refs.form.clearValidate();
- this.controlWindows.batch = false;
+ this.$nextTick(() => {
+ this.$refs.form.clearValidate();
+ this.controlWindows.batch = false;
+ });
},
},
};
diff --git a/src/views/product/components/create.vue b/src/views/product/components/create.vue
index f7679a2..56e6e9f 100644
--- a/src/views/product/components/create.vue
+++ b/src/views/product/components/create.vue
@@ -25,14 +25,16 @@
> -->
-
-
-
+
+
+
@@ -85,17 +87,33 @@