|
@@ -28,13 +28,18 @@ const route = useRoute();
|
|
const formDom = ref(null);
|
|
const formDom = ref(null);
|
|
const formData = reactive({
|
|
const formData = reactive({
|
|
data: {
|
|
data: {
|
|
- list: [],
|
|
|
|
|
|
+ salesContractDetailsList: [],
|
|
},
|
|
},
|
|
});
|
|
});
|
|
const rules = {
|
|
const rules = {
|
|
- warehouseName: [{ required: true, message: "仓库名称不能为空" }],
|
|
|
|
- productName: [{ required: true, message: "物品名称不能为空" }],
|
|
|
|
- quantity: [{ required: true, message: "入库数量不能为空" }],
|
|
|
|
|
|
+ customerId: [{ required: true, message: "请选择客户名称" }],
|
|
|
|
+ deliveryDate: [{ required: true, message: "请选择交货期限" }],
|
|
|
|
+ payMethod: [{ required: true, message: "请选择付款方式" }],
|
|
|
|
+ freightPayer: [{ required: true, message: "请选择运费支付方" }],
|
|
|
|
+ productId: [{ required: true, message: "请选择产品名称" }],
|
|
|
|
+ isCustomized: [{ required: true, message: "请选择是否定制" }],
|
|
|
|
+ unitPrice: [{ required: true, message: "请输入单价" }],
|
|
|
|
+ quantity: [{ required: true, message: "请输入数量" }],
|
|
};
|
|
};
|
|
const formOption = reactive({
|
|
const formOption = reactive({
|
|
readonly: false, //用于控制整个表单是否只读
|
|
readonly: false, //用于控制整个表单是否只读
|
|
@@ -42,9 +47,10 @@ const formOption = reactive({
|
|
labelAlign: "top",
|
|
labelAlign: "top",
|
|
scroll: true,
|
|
scroll: true,
|
|
labelWidth: "62pk",
|
|
labelWidth: "62pk",
|
|
|
|
+ hiddenSubmitBtn: false,
|
|
btnConfig: {
|
|
btnConfig: {
|
|
isNeed: true,
|
|
isNeed: true,
|
|
- prop: "list",
|
|
|
|
|
|
+ prop: "salesContractDetailsList",
|
|
plain: true,
|
|
plain: true,
|
|
listTitle: "合同明细",
|
|
listTitle: "合同明细",
|
|
listConfig: [
|
|
listConfig: [
|
|
@@ -64,7 +70,7 @@ const formOption = reactive({
|
|
{
|
|
{
|
|
type: "picker",
|
|
type: "picker",
|
|
label: "是否定制",
|
|
label: "是否定制",
|
|
- prop: "productId",
|
|
|
|
|
|
+ prop: "isCustomized",
|
|
itemType: "onePicker",
|
|
itemType: "onePicker",
|
|
showPicker: false,
|
|
showPicker: false,
|
|
readonly: false,
|
|
readonly: false,
|
|
@@ -79,7 +85,7 @@ const formOption = reactive({
|
|
},
|
|
},
|
|
{
|
|
{
|
|
label: "否",
|
|
label: "否",
|
|
- value: "2",
|
|
|
|
|
|
+ value: "0",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
},
|
|
},
|
|
@@ -87,7 +93,7 @@ const formOption = reactive({
|
|
type: "input",
|
|
type: "input",
|
|
itemType: "number",
|
|
itemType: "number",
|
|
label: "单价",
|
|
label: "单价",
|
|
- prop: "quantity",
|
|
|
|
|
|
+ prop: "unitPrice",
|
|
clearable: true,
|
|
clearable: true,
|
|
changeFn: (index, val) => {
|
|
changeFn: (index, val) => {
|
|
changeAmount(index);
|
|
changeAmount(index);
|
|
@@ -97,7 +103,7 @@ const formOption = reactive({
|
|
type: "input",
|
|
type: "input",
|
|
itemType: "number",
|
|
itemType: "number",
|
|
label: "数量",
|
|
label: "数量",
|
|
- prop: "quantity1",
|
|
|
|
|
|
+ prop: "quantity",
|
|
clearable: true,
|
|
clearable: true,
|
|
changeFn: (index, val) => {
|
|
changeFn: (index, val) => {
|
|
changeAmount(index);
|
|
changeAmount(index);
|
|
@@ -107,19 +113,22 @@ const formOption = reactive({
|
|
type: "input",
|
|
type: "input",
|
|
itemType: "number",
|
|
itemType: "number",
|
|
label: "金额小计",
|
|
label: "金额小计",
|
|
- prop: "quantity2",
|
|
|
|
|
|
+ prop: "total",
|
|
placeholder: "根据单价、数量自动计算",
|
|
placeholder: "根据单价、数量自动计算",
|
|
readonly: true,
|
|
readonly: true,
|
|
},
|
|
},
|
|
],
|
|
],
|
|
clickFn: () => {
|
|
clickFn: () => {
|
|
- if (formData.data.list && formData.data.list.length > 0) {
|
|
|
|
- formData.data.list.push({
|
|
|
|
|
|
+ if (
|
|
|
|
+ formData.data.salesContractDetailsList &&
|
|
|
|
+ formData.data.salesContractDetailsList.length > 0
|
|
|
|
+ ) {
|
|
|
|
+ formData.data.salesContractDetailsList.push({
|
|
productId: "",
|
|
productId: "",
|
|
quantity: "",
|
|
quantity: "",
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
- formData.data.list = [
|
|
|
|
|
|
+ formData.data.salesContractDetailsList = [
|
|
{
|
|
{
|
|
productId: "",
|
|
productId: "",
|
|
quantity: "",
|
|
quantity: "",
|
|
@@ -133,7 +142,7 @@ const formConfig = reactive([
|
|
{
|
|
{
|
|
type: "picker",
|
|
type: "picker",
|
|
label: "客户名称",
|
|
label: "客户名称",
|
|
- prop: "warehouseId",
|
|
|
|
|
|
+ prop: "customerId",
|
|
itemType: "onePicker",
|
|
itemType: "onePicker",
|
|
showPicker: false,
|
|
showPicker: false,
|
|
fieldNames: {
|
|
fieldNames: {
|
|
@@ -145,7 +154,7 @@ const formConfig = reactive([
|
|
{
|
|
{
|
|
type: "picker",
|
|
type: "picker",
|
|
label: "交货期限",
|
|
label: "交货期限",
|
|
- prop: "date",
|
|
|
|
|
|
+ prop: "deliveryDate",
|
|
itemType: "datePicker",
|
|
itemType: "datePicker",
|
|
showPicker: false,
|
|
showPicker: false,
|
|
split: "-",
|
|
split: "-",
|
|
@@ -154,7 +163,7 @@ const formConfig = reactive([
|
|
{
|
|
{
|
|
type: "picker",
|
|
type: "picker",
|
|
label: "付款方式",
|
|
label: "付款方式",
|
|
- prop: "warehouseId",
|
|
|
|
|
|
+ prop: "payMethod",
|
|
itemType: "onePicker",
|
|
itemType: "onePicker",
|
|
showPicker: false,
|
|
showPicker: false,
|
|
fieldNames: {
|
|
fieldNames: {
|
|
@@ -165,8 +174,8 @@ const formConfig = reactive([
|
|
},
|
|
},
|
|
{
|
|
{
|
|
type: "picker",
|
|
type: "picker",
|
|
- label: "云费支付方",
|
|
|
|
- prop: "warehouseId",
|
|
|
|
|
|
+ label: "运费支付方",
|
|
|
|
+ prop: "freightPayer",
|
|
itemType: "onePicker",
|
|
itemType: "onePicker",
|
|
showPicker: false,
|
|
showPicker: false,
|
|
fieldNames: {
|
|
fieldNames: {
|
|
@@ -176,11 +185,11 @@ const formConfig = reactive([
|
|
data: [
|
|
data: [
|
|
{
|
|
{
|
|
label: "甲方",
|
|
label: "甲方",
|
|
- value: "1",
|
|
|
|
|
|
+ value: "0",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
label: "乙方",
|
|
label: "乙方",
|
|
- value: "2",
|
|
|
|
|
|
+ value: "1",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
},
|
|
},
|
|
@@ -188,7 +197,7 @@ const formConfig = reactive([
|
|
type: "input",
|
|
type: "input",
|
|
itemType: "textarea",
|
|
itemType: "textarea",
|
|
label: "备注",
|
|
label: "备注",
|
|
- prop: "reamlke",
|
|
|
|
|
|
+ prop: "remark",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
type: "input",
|
|
type: "input",
|
|
@@ -229,41 +238,54 @@ const getDict = () => {
|
|
};
|
|
};
|
|
|
|
|
|
const getDetails = (id) => {
|
|
const getDetails = (id) => {
|
|
- proxy.post("/stockJournal/detail", { id }).then((res) => {
|
|
|
|
|
|
+ proxy.post("/salesContract/detail", { id }).then((res) => {
|
|
formData.data = res.data;
|
|
formData.data = res.data;
|
|
|
|
+ changeAmount();
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
getDict();
|
|
getDict();
|
|
- if (route.query.id) getDetails(route.query.id);
|
|
|
|
|
|
+ if (route.query.id) {
|
|
|
|
+ getDetails(route.query.id);
|
|
|
|
+ formOption.readonly = true; //全部只读
|
|
|
|
+ formOption.hiddenSubmitBtn = true; //隐藏提交按钮
|
|
|
|
+ formOption.btnConfig.isNeed = false;
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
|
|
const onSubmit = () => {
|
|
const onSubmit = () => {
|
|
- if (!formData.data.list.length > 0) return showFailToast("请添加合同明细!");
|
|
|
|
- proxy.post("/stock/add", formData.data).then(
|
|
|
|
- () => {
|
|
|
|
- showSuccessToast("操作成功");
|
|
|
|
- setTimeout(() => {
|
|
|
|
- onClickLeft();
|
|
|
|
- // proxy.$router.push("/main/manualInbound");
|
|
|
|
- }, 500);
|
|
|
|
- },
|
|
|
|
- (err) => {
|
|
|
|
- return showFailToast(err.message);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+ if (formData.data.salesContractDetailsList.length > 0) {
|
|
|
|
+ proxy
|
|
|
|
+ .post("/flowProcess/initiate", {
|
|
|
|
+ flowKey: "jxst_sales_contract_flow",
|
|
|
|
+ data: formData.data,
|
|
|
|
+ })
|
|
|
|
+ .then(
|
|
|
|
+ () => {
|
|
|
|
+ showSuccessToast("操作成功");
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ onClickLeft();
|
|
|
|
+ }, 500);
|
|
|
|
+ },
|
|
|
|
+ (err) => {
|
|
|
|
+ return showFailToast(err.message);
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ } else {
|
|
|
|
+ return showFailToast("请添加合同明细!");
|
|
|
|
+ }
|
|
};
|
|
};
|
|
|
|
|
|
const changeAmount = (index) => {
|
|
const changeAmount = (index) => {
|
|
let total = 0;
|
|
let total = 0;
|
|
- for (let i = 0; i < formData.data.list.length; i++) {
|
|
|
|
- const element = formData.data.list[i];
|
|
|
|
- if (element.quantity && element.quantity1) {
|
|
|
|
- element.quantity2 = parseFloat(
|
|
|
|
- element.quantity * element.quantity1
|
|
|
|
- ).toFixed(2);
|
|
|
|
- total += Number(element.quantity2);
|
|
|
|
|
|
+ for (let i = 0; i < formData.data.salesContractDetailsList.length; i++) {
|
|
|
|
+ const element = formData.data.salesContractDetailsList[i];
|
|
|
|
+ if (element.unitPrice && element.quantity) {
|
|
|
|
+ element.total = parseFloat(element.unitPrice * element.quantity).toFixed(
|
|
|
|
+ 2
|
|
|
|
+ );
|
|
|
|
+ total += Number(element.total);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (total) {
|
|
if (total) {
|