From 207c564c2b8d46fd86160c4f6583c2fc9d4a4e5c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 21 四月 2026 10:44:45 +0800
Subject: [PATCH] 湟水峡app 1.协同审批功能删减
---
src/pages/cooperativeOffice/collaborativeApproval/detail.vue | 214 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 171 insertions(+), 43 deletions(-)
diff --git a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
index 04a4c18..c4cce2c 100644
--- a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
+++ b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
@@ -14,22 +14,29 @@
disabled
placeholder="鑷姩缂栧彿" />
</u-form-item>
+ <!-- 瀹℃壒鏍囬锛堜粎褰� approveType 涓� 9 鎴� 10 鏃舵樉绀猴級 -->
+ <u-form-item v-if="approveType === 9 || approveType === 10"
+ prop="approveTitle"
+ label="瀹℃壒鏍囬"
+ required>
+ <u-input v-model="form.approveTitle"
+ placeholder="璇疯緭鍏ュ鎵规爣棰�"
+ clearable />
+ </u-form-item>
<u-form-item prop="approveReason"
- :label="approveType === 5 ? '閲囪喘浜嬬敱' : '鐢宠浜嬬敱'"
+ :label="getApproveReasonLabel()"
required>
<u-input v-model="form.approveReason"
type="textarea"
rows="2"
auto-height
maxlength="200"
- :placeholder="approveType === 5 ? '璇疯緭鍏ラ噰璐簨鐢�' : '璇疯緭鍏ョ敵璇蜂簨鐢�'"
+ :placeholder="getApproveReasonPlaceholder()"
show-word-limit />
</u-form-item>
<u-form-item prop="approveDeptName"
label="鐢宠閮ㄩ棬"
required>
- <!-- <u-input v-model="form.approveDeptName"
- placeholder="璇烽�夋嫨鐢宠閮ㄩ棬" /> -->
<u-input v-model="form.approveDeptName"
readonly
placeholder="璇烽�夋嫨鐢宠閮ㄩ棬"
@@ -103,6 +110,19 @@
type="number"
placeholder="璇疯緭鍏ユ姤閿�閲戦"
clearable />
+ </u-form-item>
+ <!-- 闄勪欢涓婁紶 -->
+ <u-form-item label="闄勪欢鏉愭枡">
+ <view class="file-upload-area">
+ <view v-for="(file, index) in fileList" :key="file.id || index" class="file-item">
+ <text class="file-name">{{ file.name || file.fileName }}</text>
+ <text class="file-delete" @click="removeFile(index)">脳</text>
+ </view>
+ <view class="upload-btn" @click="chooseFile" v-if="operationType !== 'view'">
+ <up-icon name="plus" size="20" color="#006cfb"></up-icon>
+ <text class="upload-text">涓婁紶闄勪欢</text>
+ </view>
+ </view>
</u-form-item>
</u-form>
<!-- 閫夋嫨鍣ㄥ脊绐� -->
@@ -227,6 +247,7 @@
approveUserName: "",
approveDeptName: "",
approveDeptId: "",
+ approveTitle: "", // 瀹℃壒鏍囬锛堣嚜鐢卞崗鍚屽鎵逛娇鐢級
approveReason: "",
checkResult: "",
tempFileIds: [],
@@ -239,8 +260,9 @@
rules: {
approveTime: [{ required: false, message: "璇疯緭鍏�", trigger: "change" }],
approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
- approveDeptId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ approveDeptId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
approveReason: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ approveTitle: [{ required: true, message: "璇疯緭鍏ュ鎵规爣棰�", trigger: "blur" }],
checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
startDate: [
{ required: false, message: "璇烽�夋嫨寮�濮嬫椂闂�", trigger: "change" },
@@ -271,6 +293,32 @@
const userStore = useUserStore();
const approveType = ref(0);
+ // 鑾峰彇瀹℃壒浜嬬敱鏍囩
+ const getApproveReasonLabel = () => {
+ const type = Number(approveType.value);
+ if (type === 5) {
+ return '閲囪喘璁″垝璇存槑';
+ } else if (type === 9) {
+ return '閿�鍞悎鍚屽彿';
+ } else if (type === 10) {
+ return '瀹℃壒浜嬬敱';
+ }
+ return '瀹℃壒浜嬬敱';
+ };
+
+ // 鑾峰彇瀹℃壒浜嬬敱鍗犱綅绗�
+ const getApproveReasonPlaceholder = () => {
+ const type = Number(approveType.value);
+ if (type === 5) {
+ return '璇疯緭鍏ラ噰璐鍒掕鏄�';
+ } else if (type === 9) {
+ return '璇疯緭鍏ラ攢鍞悎鍚屽彿';
+ } else if (type === 10) {
+ return '璇疯緭鍏ュ鎵逛簨鐢�';
+ }
+ return '璇疯緭鍏ョ敵璇蜂簨鐢�';
+ };
+
const getProductOptions = () => {
getDept().then(res => {
productOptions.value = res.data.map(item => ({
@@ -281,6 +329,76 @@
};
const fileList = ref([]);
let nextApproverId = 2;
+
+ // 澶勭悊閮ㄩ棬閫夋嫨鍙樺寲
+ const handleDeptChange = (deptIds) => {
+ if (deptIds && deptIds.length > 0) {
+ const selectedNames = productOptions.value
+ .filter(dept => deptIds.includes(dept.value))
+ .map(dept => dept.name);
+ form.value.approveDeptName = selectedNames.join(',');
+ } else {
+ form.value.approveDeptName = '';
+ }
+ };
+
+ // 閫夋嫨瀹℃壒浜�
+ const addApprover = (stepIndex) => {
+ uni.setStorageSync("stepIndex", stepIndex);
+ uni.navigateTo({
+ url: "/pages/cooperativeOffice/collaborativeApproval/contactSelect",
+ });
+ };
+
+ // 娣诲姞瀹℃壒鑺傜偣
+ const addApprovalStep = () => {
+ approverNodes.value.push({ id: nextApproverId++, userId: null, nickName: null });
+ };
+
+ // 绉婚櫎瀹℃壒浜�
+ const removeApprover = (stepIndex) => {
+ approverNodes.value[stepIndex].userId = null;
+ approverNodes.value[stepIndex].nickName = null;
+ };
+
+ // 绉婚櫎瀹℃壒鑺傜偣
+ const removeApprovalStep = (stepIndex) => {
+ if (approverNodes.value.length > 1) {
+ approverNodes.value.splice(stepIndex, 1);
+ } else {
+ showToast("鑷冲皯闇�瑕佷竴涓鎵规楠�");
+ }
+ };
+
+ // 澶勭悊鑱旂郴浜洪�夋嫨缁撴灉
+ const handleSelectContact = (data) => {
+ const { stepIndex, contact } = data;
+ approverNodes.value[stepIndex].userId = contact.userId;
+ approverNodes.value[stepIndex].nickName = contact.nickName;
+ };
+
+ // 閫夋嫨鏂囦欢涓婁紶
+ const chooseFile = () => {
+ uni.chooseMessageFile({
+ count: 10,
+ success: (res) => {
+ const tempFilePaths = res.tempFiles;
+ // 杩欓噷鍙互娣诲姞涓婁紶閫昏緫
+ tempFilePaths.forEach(file => {
+ fileList.value.push({
+ name: file.name,
+ path: file.path,
+ size: file.size,
+ });
+ });
+ }
+ });
+ };
+
+ // 绉婚櫎鏂囦欢
+ const removeFile = (index) => {
+ fileList.value.splice(index, 1);
+ };
const getCurrentinfo = () => {
userStore.getInfo().then(res => {
form.value.approveDeptId = res.user.tenantId;
@@ -461,44 +579,6 @@
});
};
- // 澶勭悊鑱旂郴浜洪�夋嫨缁撴灉
- const handleSelectContact = data => {
- const { stepIndex, contact } = data;
- // 灏嗛�変腑鐨勮仈绯讳汉璁剧疆涓哄搴斿鎵规楠ょ殑瀹℃壒浜�
- approverNodes.value[stepIndex].userId = contact.userId;
- approverNodes.value[stepIndex].nickName = contact.nickName;
- };
-
- const addApprover = stepIndex => {
- // 璺宠浆鍒拌仈绯讳汉閫夋嫨椤甸潰
- uni.setStorageSync("stepIndex", stepIndex);
- uni.navigateTo({
- url: "/pages/cooperativeOffice/collaborativeApproval/contactSelect",
- });
- };
-
- const addApprovalStep = () => {
- // 娣诲姞鏂扮殑瀹℃壒姝ラ
- approverNodes.value.push({ userId: null, nickName: null });
- };
-
- const removeApprover = stepIndex => {
- // 绉婚櫎瀹℃壒浜�
- approverNodes.value[stepIndex].userId = null;
- approverNodes.value[stepIndex].nickName = null;
- };
-
- const removeApprovalStep = stepIndex => {
- // 纭繚鑷冲皯淇濈暀涓�涓鎵规楠�
- if (approverNodes.value.length > 1) {
- approverNodes.value.splice(stepIndex, 1);
- } else {
- uni.showToast({
- title: "鑷冲皯闇�瑕佷竴涓鎵规楠�",
- icon: "none",
- });
- }
- };
// 鏄剧ず鏃ユ湡閫夋嫨鍣�
const showDatePicker = () => {
showDate.value = true;
@@ -926,4 +1006,52 @@
color: #3b82f6;
font-size: 14px;
}
+
+ // 鏂囦欢涓婁紶鍖哄煙鏍峰紡
+ .file-upload-area {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ }
+
+ .file-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ background: #f8f9fa;
+ padding: 10px 12px;
+ border-radius: 8px;
+ }
+
+ .file-name {
+ font-size: 14px;
+ color: #333;
+ flex: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ .file-delete {
+ font-size: 18px;
+ color: #ff4d4f;
+ margin-left: 8px;
+ padding: 0 4px;
+ }
+
+ .upload-btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ border: 2px dashed #d9d9d9;
+ border-radius: 8px;
+ padding: 16px;
+ background: #fafafa;
+ }
+
+ .upload-text {
+ font-size: 14px;
+ color: #666;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.3