From c9ed3d1958a2489460592b3b17e386d9d515d7ea Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 12 六月 2026 18:07:01 +0800
Subject: [PATCH] 君歌 1.工序修改 2.销售报价重构
---
src/views/productionManagement/productionProcess/index.vue | 147 ++++++++++++++++++++++++++++++++----------------
1 files changed, 98 insertions(+), 49 deletions(-)
diff --git a/src/views/productionManagement/productionProcess/index.vue b/src/views/productionManagement/productionProcess/index.vue
index ee49657..56f4381 100644
--- a/src/views/productionManagement/productionProcess/index.vue
+++ b/src/views/productionManagement/productionProcess/index.vue
@@ -57,14 +57,8 @@
:type="process.isProduction ? 'warning' : 'info'">
{{ process.isProduction ? '鐢熶骇' : '涓嶇敓浜�' }}
</el-tag>
- <el-tag v-if="process.type !== null && process.type !== undefined"
- size="small"
- :type="process.type == 1 ? 'primary' : 'success'"
- style="margin-left: 8px">
- {{ process.type == 0 ? '璁℃椂' : '璁′欢' }}
- </el-tag>
</div>
- <span class="param-count">宸ヨ祫瀹氶: 楼{{ process.salaryQuota || 0 }}</span>
+ <span class="param-count">璁″垝宸ユ椂: {{ process.salaryQuota || 0 }}灏忔椂</span>
</div>
</div>
</div>
@@ -101,28 +95,68 @@
</div>
</div>
<!-- 宸ュ簭鏂板/缂栬緫瀵硅瘽妗� -->
- <el-dialog v-model="processDialogVisible"
- :title="isProcessEdit ? '缂栬緫宸ュ簭' : '鏂板宸ュ簭'"
- width="500px">
+ <FormDialog v-model="processDialogVisible"
+ :title="isProcessEdit ? '缂栬緫閮ㄤ欢' : '鏂板閮ㄤ欢'"
+ width="600"
+ @confirm="handleProcessSubmit"
+ @cancel="processDialogVisible = false">
<el-form :model="processForm"
:rules="processRules"
ref="processFormRef"
- label-width="100px">
- <el-form-item label="宸ュ簭缂栫爜"
- prop="no">
- <el-input v-model="processForm.no"
- placeholder="璇疯緭鍏ュ伐搴忕紪鐮�" />
- </el-form-item>
- <el-form-item label="宸ュ簭鍚嶇О"
+ label-width="120px">
+ <el-form-item label="閮ㄤ欢鍚嶇О"
prop="name">
<el-input v-model="processForm.name"
- placeholder="璇疯緭鍏ュ伐搴忓悕绉�" />
+ placeholder="璇疯緭鍏ラ儴浠跺悕绉�" />
</el-form-item>
- <el-form-item label="宸ヨ祫瀹氶"
+ <el-form-item label="閮ㄤ欢缂栧彿"
+ prop="no">
+ <el-input v-model="processForm.no"
+ placeholder="璇疯緭鍏ラ儴浠剁紪鍙�" />
+ </el-form-item>
+ <el-form-item label="閮ㄤ欢绫诲瀷"
+ prop="processType">
+ <el-select v-model="processForm.processType"
+ placeholder="璇烽�夋嫨閮ㄤ欢绫诲瀷"
+ style="width: 100%">
+ <el-option v-for="item in processTypeOptions"
+ :key="item"
+ :label="item"
+ :value="item" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璁″垝宸ユ椂(灏忔椂)"
prop="salaryQuota">
<el-input v-model="processForm.salaryQuota"
type="number"
- :step="0.001" />
+ :step="0.5"
+ placeholder="璇疯緭鍏ヨ鍒掑伐鏃�" />
+ </el-form-item>
+ <el-form-item label="璁″垝浜哄憳"
+ prop="planPerson">
+ <el-select v-model="processForm.planPerson"
+ placeholder="璇烽�夋嫨璁″垝浜哄憳"
+ clearable
+ filterable
+ style="width: 100%">
+ <el-option v-for="item in employeeOptions"
+ :key="item.id"
+ :label="item.staffName"
+ :value="item.id" />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="璁″垝鎵ц浜哄憳"
+ prop="executor">
+ <el-select v-model="processForm.executor"
+ placeholder="璇烽�夋嫨璁″垝鎵ц浜哄憳"
+ clearable
+ filterable
+ style="width: 100%">
+ <el-option v-for="item in employeeOptions"
+ :key="item.id"
+ :label="item.staffName"
+ :value="item.id" />
+ </el-select>
</el-form-item>
<el-form-item label="鏄惁璐ㄦ"
prop="isQuality">
@@ -131,13 +165,6 @@
<el-form-item label="鏄惁鐢熶骇"
prop="isProduction">
<el-switch v-model="processForm.isProduction" />
- </el-form-item>
- <el-form-item label="璁¤垂绫诲瀷"
- prop="type">
- <el-radio-group v-model="processForm.type">
- <el-radio :label="0">璁℃椂</el-radio>
- <el-radio :label="1">璁′欢</el-radio>
- </el-radio-group>
</el-form-item>
<el-form-item label="鍏宠仈璁惧"
prop="deviceLedgerId">
@@ -160,18 +187,11 @@
placeholder="璇疯緭鍏ュ伐搴忔弿杩�" />
</el-form-item>
</el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button type="primary"
- @click="handleProcessSubmit">纭畾</el-button>
- <el-button @click="processDialogVisible = false">鍙栨秷</el-button>
- </span>
- </template>
- </el-dialog>
+ </FormDialog>
<!-- 閫夋嫨鍙傛暟瀵硅瘽妗� -->
- <el-dialog v-model="paramDialogVisible"
- title="閫夋嫨鍙傛暟"
- width="1000px">
+ <FormDialog v-model="paramDialogVisible"
+ title="閫夋嫨鍙傛暟"
+ width="1000px">
<div class="param-select-container">
<!-- 宸︿晶鍙傛暟鍒楄〃 -->
<div class="param-list-area">
@@ -259,7 +279,7 @@
<el-button @click="paramDialogVisible = false">鍙栨秷</el-button>
</span>
</template>
- </el-dialog>
+ </FormDialog>
<!-- 缂栬緫鍙傛暟瀵硅瘽妗� -->
<el-dialog v-model="editParamDialogVisible"
title="缂栬緫鍙傛暟"
@@ -308,6 +328,18 @@
} from "@/api/productionManagement/productionProcess.js";
import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
import { getBaseParamList } from "@/api/basicData/parameterMaintenance.js";
+ import { staffOnJobListPage } from "@/api/personnelManagement/staffOnJob.js";
+ import FormDialog from "@/components/Dialog/FormDialog.vue";
+
+ // 閮ㄤ欢绫诲瀷涓嬫媺閫夐」锛堝啓姝伙級
+ const processTypeOptions = [
+ "鏈哄姞宸�",
+ "鍒澘鍐疯姱鍒朵綔",
+ "绠¤矾缁勫",
+ "缃愪綋杩炴帴鍙婅皟璇�",
+ "娴嬭瘯鎵撳帇",
+ "鍏朵粬",
+ ];
// 宸ュ簭鍒楄〃鏁版嵁
const processValueList = ref([]);
@@ -333,6 +365,9 @@
// 鏁版嵁瀛楀吀
const dictTypes = ref([]);
+ // 鍛樺伐鍒楄〃锛堣鍒掍汉鍛樸�佽鍒掓墽琛屼汉鍛樹笅鎷夌敤锛�
+ const employeeOptions = ref([]);
+
// 宸ュ簭瀵硅瘽妗�
const processDialogVisible = ref(false);
const isProcessEdit = ref(false);
@@ -346,19 +381,19 @@
isProduction: false,
remark: "",
deviceLedgerId: null,
- type: 0,
+ processType: "",
+ planPerson: null,
+ executor: null,
});
const processRules = {
- no: [{ required: true, message: "璇疯緭鍏ュ伐搴忕紪鐮�", trigger: "blur" }],
- name: [{ required: true, message: "璇疯緭鍏ュ伐搴忓悕绉�", trigger: "blur" }],
+ no: [{ required: true, message: "璇疯緭鍏ラ儴浠剁紪鐮�", trigger: "blur" }],
+ name: [{ required: true, message: "璇疯緭鍏ラ儴浠跺悕绉�", trigger: "blur" }],
salaryQuota: [
{
required: false,
- message: "璇疯緭鍏ュ伐璧勫畾棰�",
- trigger: "blur",
validator: (rule, value, callback) => {
- if (isNaN(value) || value < 0) {
- callback(new Error("宸ヨ祫瀹氶蹇呴』鏄潪璐熸暟瀛�"));
+ if (value !== null && value !== undefined && value !== "" && (isNaN(value) || Number(value) < 0)) {
+ callback(new Error("璁″垝宸ユ椂蹇呴』鏄潪璐熸暟瀛�"));
} else {
callback();
}
@@ -368,7 +403,7 @@
deviceLedgerId: [
{ required: false, message: "璇烽�夋嫨璁惧", trigger: "change" },
],
- type: [{ required: false, message: "璇烽�夋嫨璁¤垂绫诲瀷", trigger: "change" }],
+ processType: [{ required: true, message: "璇烽�夋嫨閮ㄤ欢绫诲瀷", trigger: "change" }],
};
// 鍙傛暟瀵硅瘽妗�
@@ -557,7 +592,9 @@
processForm.isProduction = false;
processForm.remark = "";
processForm.deviceLedgerId = null;
- processForm.type = 0;
+ processForm.processType = "";
+ processForm.planPerson = null;
+ processForm.executor = null;
processDialogVisible.value = true;
};
@@ -574,7 +611,9 @@
const deviceId = Number(process.deviceLedgerId);
const hasDevice = deviceOptions.value.some(item => item.id === deviceId);
processForm.deviceLedgerId = deviceId && hasDevice ? deviceId : null;
- processForm.type = process.type;
+ processForm.processType = process.processType || "";
+ processForm.planPerson = process.planPerson || null;
+ processForm.executor = process.executor || null;
processDialogVisible.value = true;
};
@@ -791,10 +830,20 @@
});
};
+ const loadEmployees = async () => {
+ try {
+ const res = await staffOnJobListPage({ current: -1, size: -1, staffState: 1 });
+ employeeOptions.value = res.data?.records || [];
+ } catch (error) {
+ console.error("鍔犺浇鍛樺伐鍒楄〃澶辫触", error);
+ }
+ };
+
onMounted(() => {
loadDeviceName();
getProcessList();
getDictTypes();
+ loadEmployees();
});
</script>
--
Gitblit v1.9.3