|
@@ -13,17 +13,17 @@
|
|
|
style="max-width: 600px"
|
|
|
>
|
|
|
<el-form-item label="顾客名称" prop="customer">
|
|
|
- <el-input v-model="saleForm.customer" />
|
|
|
+ <el-input v-model="saleForm.customer"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="详细地址" prop="address">
|
|
|
- <el-input v-model="saleForm.address" />
|
|
|
+ <el-input v-model="saleForm.address"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="联系人" prop="contacts">
|
|
|
- <el-input v-model="saleForm.contacts" />
|
|
|
+ <el-input v-model="saleForm.contacts"/>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="联系电话" prop="phoneNo">
|
|
|
- <el-input v-model="saleForm.phoneNo" />
|
|
|
+ <el-input v-model="saleForm.phoneNo"/>
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="阶段" prop="stage">
|
|
|
<el-input v-model="saleForm.stage" />
|
|
@@ -35,6 +35,7 @@
|
|
|
placeholder="请选择检验批号"
|
|
|
style="width: 100%"
|
|
|
@change="orderSelect"
|
|
|
+ filterable
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in orders"
|
|
@@ -44,6 +45,23 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="产品型号">
|
|
|
+ <el-select
|
|
|
+ v-model="selectMaterialModel"
|
|
|
+ value-key="materialModel"
|
|
|
+ placeholder="请选择产品型号"
|
|
|
+ style="width: 100%"
|
|
|
+ @change="modelSelect"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in selectdMaterialModel"
|
|
|
+ :key="item.materialModel"
|
|
|
+ :label="item.materialModel"
|
|
|
+ :value="item"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
<!-- <el-form-item label="检验批号">
|
|
|
<div>{{ selectedOrder.workOrderCode }}</div>
|
|
@@ -52,12 +70,19 @@
|
|
|
<el-form-item label="产品编号" prop="seqs">
|
|
|
<el-select
|
|
|
v-model="saleForm.seqs"
|
|
|
+ @change="handleSelectAll"
|
|
|
value-key="orderCode"
|
|
|
placeholder="请选择流转卡号"
|
|
|
style="width: 100%"
|
|
|
filterable
|
|
|
multiple
|
|
|
>
|
|
|
+ <!-- 全选选项 -->
|
|
|
+ <el-option
|
|
|
+ label="全选"
|
|
|
+ :value="allSelectValue"
|
|
|
+ />
|
|
|
+
|
|
|
<el-option
|
|
|
v-for="item in seqList"
|
|
|
:key="item.label"
|
|
@@ -66,7 +91,7 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="产品分类" prop="seqs">
|
|
|
+ <el-form-item label="产品分类" prop="type">
|
|
|
<el-select
|
|
|
v-model="saleForm.type"
|
|
|
value-key="value"
|
|
@@ -91,7 +116,7 @@
|
|
|
style="max-width: 600px"
|
|
|
>
|
|
|
<el-form-item label="顾客投诉或建议" prop="content">
|
|
|
- <el-input v-model="remark1.content" type="textarea" />
|
|
|
+ <el-input v-model="remark1.content" type="textarea"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="填表人" prop="user">
|
|
|
<!-- <el-select
|
|
@@ -150,9 +175,12 @@ import {
|
|
|
getCheckList,
|
|
|
getOrderList,
|
|
|
getUserList,
|
|
|
+ getMaterialList,
|
|
|
+ getSeqNoList,
|
|
|
} from "@/api/sales/index";
|
|
|
-import { getUserTree } from "@/api/user/index";
|
|
|
-import { useDictionaryStore } from "@/store";
|
|
|
+import {getUserTree} from "@/api/user/index";
|
|
|
+import {useDictionaryStore} from "@/store";
|
|
|
+
|
|
|
const drawerVisible = ref(false);
|
|
|
const disabledDate = (time) => {
|
|
|
//选择今天以及今天之后的日期
|
|
@@ -160,7 +188,7 @@ const disabledDate = (time) => {
|
|
|
//选择今天以及今天之前的日期
|
|
|
return time.getTime() > Date.now() - 8.64e7; //如果没有后面的-8.64e7就是不可以选择今天的
|
|
|
};
|
|
|
-const { dicts } = useDictionaryStore();
|
|
|
+const {dicts} = useDictionaryStore();
|
|
|
const baseInfoRef = ref(null);
|
|
|
const saleForm = reactive({
|
|
|
customer: "",
|
|
@@ -182,32 +210,33 @@ const remark1 = reactive({
|
|
|
|
|
|
const rules = {
|
|
|
customer: [
|
|
|
- { required: true, message: "请输入顾客名称", trigger: "blur" },
|
|
|
- { min: 2, max: 50, message: "长度在 2 到 50 个字符", trigger: "blur" },
|
|
|
+ {required: true, message: "请输入顾客名称", trigger: "blur"},
|
|
|
+ {min: 2, max: 50, message: "长度在 2 到 50 个字符", trigger: "blur"},
|
|
|
],
|
|
|
address: [
|
|
|
- { required: true, message: "请输入详细地址", trigger: "blur" },
|
|
|
- { min: 2, max: 200, message: "长度在 2 到 200 个字符", trigger: "blur" },
|
|
|
+ {required: true, message: "请输入详细地址", trigger: "blur"},
|
|
|
+ {min: 2, max: 200, message: "长度在 2 到 200 个字符", trigger: "blur"},
|
|
|
],
|
|
|
contacts: [
|
|
|
- { required: true, message: "请输入联系人", trigger: "blur" },
|
|
|
- { min: 2, max: 20, message: "长度在 2 到 20 个字符", trigger: "blur" },
|
|
|
+ {required: true, message: "请输入联系人", trigger: "blur"},
|
|
|
+ {min: 2, max: 20, message: "长度在 2 到 20 个字符", trigger: "blur"},
|
|
|
],
|
|
|
phoneNo: [
|
|
|
- { required: true, message: "请输入联系电话", trigger: "blur" },
|
|
|
- { min: 11, max: 11, message: "请输入正确的手机号", trigger: "blur" },
|
|
|
+ {required: true, message: "请输入联系电话", trigger: "blur"},
|
|
|
+ {min: 11, max: 11, message: "请输入正确的手机号", trigger: "blur"},
|
|
|
],
|
|
|
- seqs: [{ required: true, message: "请选择订单信息", trigger: "change" }],
|
|
|
+ seqs: [{required: true, message: "请选择产品分类", trigger: "change"}],
|
|
|
+ materialModel: [{required: true, message: "请选择产品型号", trigger: "change"}],
|
|
|
};
|
|
|
const rules1 = {
|
|
|
content: [
|
|
|
- { required: true, message: "请输入顾客投诉或建议", trigger: "blur" },
|
|
|
- { min: 2, max: 200, message: "长度在 2 到 200 个字符", trigger: "blur" },
|
|
|
+ {required: true, message: "请输入顾客投诉或建议", trigger: "blur"},
|
|
|
+ {min: 2, max: 200, message: "长度在 2 到 200 个字符", trigger: "blur"},
|
|
|
],
|
|
|
user: [
|
|
|
- { required: true, message: "请输入姓名", trigger: "blur" },
|
|
|
+ {required: true, message: "请输入姓名", trigger: "blur"},
|
|
|
],
|
|
|
- time: [{ required: true, message: "请选择日期", trigger: "change" }],
|
|
|
+ time: [{required: true, message: "请选择日期", trigger: "change"}],
|
|
|
nextRemarkUser: [
|
|
|
{required: true, message: "请选择处理人", trigger: "blur"},
|
|
|
],
|
|
@@ -217,7 +246,31 @@ const rules1 = {
|
|
|
const orders = ref([]);
|
|
|
const typeList = dicts.sales_info_type;
|
|
|
const selectedCheckCode = ref({});
|
|
|
+const selectdMaterialModel = ref({});
|
|
|
+const selectMaterialModel = ref("");
|
|
|
const selectCheckCode = ref("");
|
|
|
+const allSelectValue = ref("ALL_SELECT_MAGIC_VALUE"); // 全选的特殊值
|
|
|
+const handleSelectAll = (selectedValues) => {
|
|
|
+ const allLabels = seqList.value.map(item => item.label);
|
|
|
+ const allSelected = allLabels.length > 0 &&
|
|
|
+ allLabels.every(label => selectedValues.includes(label));
|
|
|
+
|
|
|
+ // 如果点击了"全选"选项
|
|
|
+ if (selectedValues.includes(allSelectValue.value)) {
|
|
|
+ saleForm.seqs = allSelected ? [] : [...allLabels];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果手动选择了所有选项(不通过全选按钮)
|
|
|
+ if (selectedValues.length === allLabels.length && allLabels.length > 0) {
|
|
|
+ // 保持纯净值,不添加全选标识
|
|
|
+ saleForm.seqs = [...allLabels];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 其他情况直接使用选择的值
|
|
|
+ saleForm.seqs = selectedValues;
|
|
|
+}
|
|
|
const getOrders = async () => {
|
|
|
const res = await getCheckList({});
|
|
|
orders.value = res.data;
|
|
@@ -228,11 +281,28 @@ const getOrders = async () => {
|
|
|
};
|
|
|
const orderSelect = (value) => {
|
|
|
selectedCheckCode.value = value;
|
|
|
- seqList.value = selectedCheckCode.value.seqs.map((item, index) => ({
|
|
|
- value: item,
|
|
|
- label: item,
|
|
|
- }));
|
|
|
+ console.log(value, "ppp")
|
|
|
+
|
|
|
saleForm.seqs = [];
|
|
|
+ getMaterialList(value.checkCode, "").then((res) => {
|
|
|
+ console.log(res);
|
|
|
+ selectdMaterialModel.value = res.data;
|
|
|
+ });
|
|
|
+ console.log(selectdMaterialModel, "lizil")
|
|
|
+};
|
|
|
+const modelSelect = (value) => {
|
|
|
+ console.log(value, "6666")
|
|
|
+ saleForm.materialModel = value.materialModel;
|
|
|
+ getSeqNoList(value.checkCode, value.materialModel, "").then((res) => {
|
|
|
+ console.log(res);
|
|
|
+ seqList.value = res.data.seqs.map((item, index) => ({
|
|
|
+ value: item,
|
|
|
+ label: item,
|
|
|
+ }));
|
|
|
+ console.log(seqList, "woani")
|
|
|
+ });
|
|
|
+
|
|
|
+ // console.log(selectdMaterialModel,"lizil")
|
|
|
};
|
|
|
|
|
|
const seqList = ref([]);
|
|
@@ -259,7 +329,7 @@ const showDrawer = () => {
|
|
|
drawerVisible.value = true;
|
|
|
};
|
|
|
|
|
|
-defineExpose({ showDrawer });
|
|
|
+defineExpose({showDrawer});
|
|
|
|
|
|
const cancelClick = () => {
|
|
|
drawerVisible.value = false;
|