|
@@ -50,7 +50,7 @@
|
|
|
<img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
|
|
|
查询</el-button
|
|
|
>
|
|
|
- <el-button type="primary" @click="addOrEditHandle()">
|
|
|
+ <el-button type="primary" @click="addOrEditHandle(null, true)">
|
|
|
<img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
|
|
|
新增</el-button
|
|
|
>
|
|
@@ -153,30 +153,15 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column label="操作" width="120" fixed="right">
|
|
|
+ <el-table-column label="操作" width="126" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <div style="display: flex">
|
|
|
- <div
|
|
|
- class="operateBtn"
|
|
|
- style="margin-right: 8px"
|
|
|
- @click="addOrEditHandle(scope.row)"
|
|
|
- >
|
|
|
- <span>编辑</span>
|
|
|
+ <div style="display: flex; padding: 0px 10px; justify-content: space-between">
|
|
|
+ <div style="margin-right: 8px" @click="addOrEditHandle(scope.row, false)">
|
|
|
+ <span style="color: #2e77e6">查看</span>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.row.isEditor === 1" @click="addOrEditHandle(scope.row, true)">
|
|
|
+ <span style="color: #2e77e6">编辑</span>
|
|
|
</div>
|
|
|
- <dialog-confirm
|
|
|
- title="确认删除该吗?"
|
|
|
- confirmButtonText="确定"
|
|
|
- cancelButtonText="取消"
|
|
|
- @confirm="deleteHandle(scope.row)"
|
|
|
- placement="top-end"
|
|
|
- width="280"
|
|
|
- >
|
|
|
- <template #reference>
|
|
|
- <div class="operateBtn">
|
|
|
- <span>删除</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </dialog-confirm>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -199,7 +184,7 @@
|
|
|
<div class="cover-header">
|
|
|
<h2>{{ dialogTitle }}</h2>
|
|
|
</div>
|
|
|
- <div class="cover-content">
|
|
|
+ <div :class="{ 'cover-content': true, 'form-disabled-style': !isEditor }">
|
|
|
<el-form
|
|
|
ref="ruleFormRef"
|
|
|
:rules="rules"
|
|
@@ -209,9 +194,25 @@
|
|
|
class="demo-ruleForm"
|
|
|
status-icon
|
|
|
>
|
|
|
- <el-form-item label="项目名称" prop="xmmc">
|
|
|
- <el-input v-model="formData.xmmc" />
|
|
|
- </el-form-item>
|
|
|
+ <el-row :gutter="100">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="项目名称" prop="xmmc">
|
|
|
+ <el-input v-model="formData.xmmc" :disabled="!isEditor" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="行政区" prop="xzqdm">
|
|
|
+ <DistrictTree
|
|
|
+ class="form-item-disable-style"
|
|
|
+ placeholder="请选择行政区"
|
|
|
+ :disabled="!isEditor"
|
|
|
+ v-model="formData.xzqdm"
|
|
|
+ @node-click="(item, labels) => treeNodeClick(labels, 'xzqmc')"
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="所属板块" prop="ssbk">
|
|
@@ -219,6 +220,7 @@
|
|
|
v-model="formData.ssbk"
|
|
|
placeholder="请选择所属板块"
|
|
|
clearable
|
|
|
+ :disabled="!isEditor"
|
|
|
style="width: 100%"
|
|
|
>
|
|
|
<el-option
|
|
@@ -234,6 +236,7 @@
|
|
|
<el-form-item label="所属部门" prop="xmbmId">
|
|
|
<DeptTree
|
|
|
v-model="formData.xmbmId"
|
|
|
+ :disabled="!isEditor"
|
|
|
@node-click="(item) => treeNodeClick(item, 'xmbm')"
|
|
|
placeholder="请选择部门"
|
|
|
/>
|
|
@@ -245,6 +248,7 @@
|
|
|
<el-form-item label="跟踪人员" prop="gzryId">
|
|
|
<UserOrgTree
|
|
|
v-model="formData.gzryId"
|
|
|
+ :disabled="!isEditor"
|
|
|
placeholder="请选择跟踪人员"
|
|
|
@node-click="(item) => treeNodeClick(item, 'gzry')"
|
|
|
/>
|
|
@@ -254,6 +258,7 @@
|
|
|
<el-form-item label="区域总监" prop="qyzjId">
|
|
|
<UserOrgTree
|
|
|
v-model="formData.qyzjId"
|
|
|
+ :disabled="!isEditor"
|
|
|
placeholder="请选择区域总监"
|
|
|
@node-click="(item) => treeNodeClick(item, 'qyzj')"
|
|
|
/>
|
|
@@ -267,6 +272,7 @@
|
|
|
:data="contractTree"
|
|
|
:props="{ label: 'name', value: 'id' }"
|
|
|
v-model="formData.jfId"
|
|
|
+ :disabled="!isEditor"
|
|
|
:filter-method="filterNodeMethod"
|
|
|
@node-click="(item) => treeNodeClick(item, 'jf')"
|
|
|
style="width: 100%"
|
|
@@ -275,19 +281,19 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="甲方科室" prop="jfks">
|
|
|
- <el-input v-model="formData.jfks" />
|
|
|
+ <el-input v-model="formData.jfks" :disabled="!isEditor" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="甲方对接人" prop="jfdjr">
|
|
|
- <el-input v-model="formData.jfdjr" />
|
|
|
+ <el-input v-model="formData.jfdjr" :disabled="!isEditor" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="是否进场" prop="sfjc">
|
|
|
- <el-select v-model="formData.sfjc" style="width: 100%">
|
|
|
+ <el-select v-model="formData.sfjc" :disabled="!isEditor" style="width: 100%">
|
|
|
<el-option label="是" :value="0" />
|
|
|
<el-option label="否" :value="1" />
|
|
|
</el-select>
|
|
@@ -297,42 +303,48 @@
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="预估金额(元)" prop="ygje">
|
|
|
- <el-input v-model="formData.ygje" />
|
|
|
+ <el-input v-model="formData.ygje" :disabled="!isEditor" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="中标金额(元)" prop="zbje">
|
|
|
- <el-input v-model="formData.zbje" />
|
|
|
+ <el-input v-model="formData.zbje" :disabled="!isEditor" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="100">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="行政区" prop="xzqdm">
|
|
|
- <DistrictTree
|
|
|
- class="form-item-disable-style"
|
|
|
- placeholder="请选择行政区"
|
|
|
- v-model="formData.xzqdm"
|
|
|
- @node-click="(item, labels) => treeNodeClick(labels, 'xzqmc')"
|
|
|
- style="width: 100%"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="谁可见" prop="visibleUserIds">
|
|
|
<UserOrgTree
|
|
|
v-model="visibleUserIds"
|
|
|
+ :disabled="!isEditor"
|
|
|
:multiple="true"
|
|
|
placeholder="请选择跟谁可见"
|
|
|
@change="visibleUserChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="谁可编辑" prop="editUserIds">
|
|
|
+ <UserOrgTree
|
|
|
+ v-model="editUserIds"
|
|
|
+ :disabled="!isEditor"
|
|
|
+ :multiple="true"
|
|
|
+ placeholder="请选择跟谁可编辑"
|
|
|
+ @change="editUserChange"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="状态" prop="zt">
|
|
|
- <el-select v-model="formData.zt" placeholder="请选择状态" style="width: 100%">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.zt"
|
|
|
+ :disabled="!isEditor"
|
|
|
+ placeholder="请选择状态"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
<el-option
|
|
|
v-for="(item, index) in getDictOptions(DICT_TYPE.TRACKING_PROJECT_STATE)"
|
|
|
:key="index"
|
|
@@ -344,18 +356,20 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="年份" prop="year">
|
|
|
- <el-input v-model="formData.year" placeholder="请输入年份" />
|
|
|
+ <el-input v-model="formData.year" :disabled="!isEditor" placeholder="请输入年份" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="备注" prop="desc">
|
|
|
- <el-input v-model="formData.bz" rows="5" type="textarea" />
|
|
|
+ <el-input v-model="formData.bz" :disabled="!isEditor" rows="5" type="textarea" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div class="cover-footer">
|
|
|
<el-button @click="dialogVisible = false">关闭</el-button>
|
|
|
- <el-button type="primary" @click="saveProjectTracking(ruleFormRef)"> 保存 </el-button>
|
|
|
+ <el-button v-if="isEditor" type="primary" @click="saveProjectTracking(ruleFormRef)">
|
|
|
+ 保存
|
|
|
+ </el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -385,6 +399,7 @@ const { data: contractTree } = useQuery(['contractTree'], async () => await quer
|
|
|
})
|
|
|
|
|
|
const visibleUserIds = ref<string[]>([])
|
|
|
+const editUserIds = ref<string[]>([])
|
|
|
const tableRef: any = ref(null)
|
|
|
const tableHeight: any = ref(0)
|
|
|
const { queryParams, formData, initFormData } = useMixins()
|
|
@@ -437,13 +452,6 @@ const queryProjectTrackByDetail = async (id: string): Promise<void> => {
|
|
|
}
|
|
|
return await request.get({ url: urlApi, params: sendData }, '/business')
|
|
|
}
|
|
|
-const removeProjectTrackByDetail = async (id: string): Promise<void> => {
|
|
|
- const urlApi = `/projectTracking/delete`
|
|
|
- const sendData = {
|
|
|
- id
|
|
|
- }
|
|
|
- return await request.get({ url: urlApi, params: sendData }, '/business')
|
|
|
-}
|
|
|
queryProjectTrackByPage()
|
|
|
|
|
|
/**
|
|
@@ -467,29 +475,26 @@ queryProjectTrackingSummary()
|
|
|
/**
|
|
|
* 项目跟踪:新增、编辑
|
|
|
*/
|
|
|
+const isEditor = ref<boolean>(false)
|
|
|
const dialogTitle = ref<string>('项目跟踪填报')
|
|
|
const dialogVisible = ref<boolean>(false)
|
|
|
-const addOrEditHandle = (row?: IFormType) => {
|
|
|
+const addOrEditHandle = (row: IFormType, isBool: boolean) => {
|
|
|
dialogVisible.value = true
|
|
|
+ isEditor.value = isBool
|
|
|
if (!row) {
|
|
|
dialogTitle.value = '项目跟踪填报'
|
|
|
initFormData()
|
|
|
visibleUserIds.value = []
|
|
|
+ editUserIds.value = []
|
|
|
} else {
|
|
|
dialogTitle.value = '项目跟踪编辑'
|
|
|
queryProjectTrackByDetail(row['id']).then((result) => {
|
|
|
initFormData(result as any)
|
|
|
visibleUserIds.value = result['visibleUserIds'].split(',')
|
|
|
+ editUserIds.value = result['editUserIds'].split(',')
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
-const deleteHandle = (row) => {
|
|
|
- removeProjectTrackByDetail(row['id']).then((result: any) => {
|
|
|
- if (result) {
|
|
|
- searchHandle()
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
const treeNodeClick = (item, type: string) => {
|
|
|
if (!item) return
|
|
|
if (type === 'xzqmc') {
|
|
@@ -501,6 +506,9 @@ const treeNodeClick = (item, type: string) => {
|
|
|
const visibleUserChange = (item) => {
|
|
|
formData.value['visibleUserIds'] = item.join(',')
|
|
|
}
|
|
|
+const editUserChange = (item) => {
|
|
|
+ formData.value['editUserIds'] = item.join(',')
|
|
|
+}
|
|
|
const rules = reactive<FormRules<IFormType>>({
|
|
|
xmmc: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
|
|
|
ssbk: [{ required: true, message: '所属板块不能为空', trigger: 'change' }],
|
|
@@ -527,6 +535,17 @@ const saveProjectTracking = async (formEl: FormInstance | undefined): Promise<vo
|
|
|
const sendData = {
|
|
|
...formData.value
|
|
|
}
|
|
|
+ let msg = ''
|
|
|
+ if (formData.value.ygje <= 1000) {
|
|
|
+ msg = '预估金额单位是元,请再确认输入金额是否正确!'
|
|
|
+ } else if (formData.value.zbje <= 1000) {
|
|
|
+ msg = '中标金额单位是元,请再确认输入金额是否正确!'
|
|
|
+ }
|
|
|
+ if (msg) {
|
|
|
+ if ((await MessageAlertSync(msg, '提示')) === 'cancel') {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
// sendData['visibleUserIds'] = visibleUserIds.value.join(',')
|
|
|
const result = await request.post({ url: urlApi, data: sendData }, '/business')
|
|
|
if (result) {
|
|
@@ -538,6 +557,19 @@ const saveProjectTracking = async (formEl: FormInstance | undefined): Promise<vo
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
+const MessageAlertSync = (msg: string, title: string) => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ ElMessageBox.alert(msg, title, {
|
|
|
+ showCancelButton: true,
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ confirmButtonText: '确认',
|
|
|
+ callback: (action) => {
|
|
|
+ console.log(action)
|
|
|
+ resolve(action)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
const switchChange = (item) => {
|
|
|
updateStatus({
|
|
|
id: item['id'],
|