|
@@ -50,7 +50,7 @@
|
|
|
<img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
|
|
|
查询</el-button
|
|
|
>
|
|
|
- <el-button type="primary" @click="addOrEditHandle(null, true)">
|
|
|
+ <el-button type="primary" @click="addOrEditHandle()">
|
|
|
<img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
|
|
|
新增</el-button
|
|
|
>
|
|
@@ -153,15 +153,30 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
|
|
|
- <el-table-column label="操作" width="126" fixed="right">
|
|
|
+ <el-table-column label="操作" width="120" fixed="right">
|
|
|
<template #default="scope">
|
|
|
- <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 style="display: flex">
|
|
|
+ <div
|
|
|
+ class="operateBtn"
|
|
|
+ style="margin-right: 8px"
|
|
|
+ @click="addOrEditHandle(scope.row)"
|
|
|
+ >
|
|
|
+ <span>编辑</span>
|
|
|
</div>
|
|
|
+ <dialog-confirm
|
|
|
+ title="删除将无法恢复该条数据,确认删除吗?"
|
|
|
+ confirmButtonText="确定"
|
|
|
+ cancelButtonText="取消"
|
|
|
+ @confirm="deleteHandle(scope.row)"
|
|
|
+ placement="top-end"
|
|
|
+ width="360"
|
|
|
+ >
|
|
|
+ <template #reference>
|
|
|
+ <div class="operateBtn">
|
|
|
+ <span>删除</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </dialog-confirm>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -184,7 +199,7 @@
|
|
|
<div class="cover-header">
|
|
|
<h2>{{ dialogTitle }}</h2>
|
|
|
</div>
|
|
|
- <div :class="{ 'cover-content': true, 'form-disabled-style': !isEditor }">
|
|
|
+ <div class="cover-content">
|
|
|
<el-form
|
|
|
ref="ruleFormRef"
|
|
|
:rules="rules"
|
|
@@ -194,25 +209,9 @@
|
|
|
class="demo-ruleForm"
|
|
|
status-icon
|
|
|
>
|
|
|
- <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-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="ssbk">
|
|
@@ -220,7 +219,6 @@
|
|
|
v-model="formData.ssbk"
|
|
|
placeholder="请选择所属板块"
|
|
|
clearable
|
|
|
- :disabled="!isEditor"
|
|
|
style="width: 100%"
|
|
|
>
|
|
|
<el-option
|
|
@@ -236,7 +234,6 @@
|
|
|
<el-form-item label="所属部门" prop="xmbmId">
|
|
|
<DeptTree
|
|
|
v-model="formData.xmbmId"
|
|
|
- :disabled="!isEditor"
|
|
|
@node-click="(item) => treeNodeClick(item, 'xmbm')"
|
|
|
placeholder="请选择部门"
|
|
|
/>
|
|
@@ -248,7 +245,6 @@
|
|
|
<el-form-item label="跟踪人员" prop="gzryId">
|
|
|
<UserOrgTree
|
|
|
v-model="formData.gzryId"
|
|
|
- :disabled="!isEditor"
|
|
|
placeholder="请选择跟踪人员"
|
|
|
@node-click="(item) => treeNodeClick(item, 'gzry')"
|
|
|
/>
|
|
@@ -258,7 +254,6 @@
|
|
|
<el-form-item label="区域总监" prop="qyzjId">
|
|
|
<UserOrgTree
|
|
|
v-model="formData.qyzjId"
|
|
|
- :disabled="!isEditor"
|
|
|
placeholder="请选择区域总监"
|
|
|
@node-click="(item) => treeNodeClick(item, 'qyzj')"
|
|
|
/>
|
|
@@ -272,7 +267,6 @@
|
|
|
: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%"
|
|
@@ -281,19 +275,19 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="甲方科室" prop="jfks">
|
|
|
- <el-input v-model="formData.jfks" :disabled="!isEditor" />
|
|
|
+ <el-input v-model="formData.jfks" />
|
|
|
</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" :disabled="!isEditor" />
|
|
|
+ <el-input v-model="formData.jfdjr" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="是否进场" prop="sfjc">
|
|
|
- <el-select v-model="formData.sfjc" :disabled="!isEditor" style="width: 100%">
|
|
|
+ <el-select v-model="formData.sfjc" style="width: 100%">
|
|
|
<el-option label="是" :value="0" />
|
|
|
<el-option label="否" :value="1" />
|
|
|
</el-select>
|
|
@@ -303,35 +297,34 @@
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="预估金额(元)" prop="ygje">
|
|
|
- <el-input v-model="formData.ygje" :disabled="!isEditor" />
|
|
|
+ <el-input v-model="formData.ygje" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="中标金额(元)" prop="zbje">
|
|
|
- <el-input v-model="formData.zbje" :disabled="!isEditor" />
|
|
|
+ <el-input v-model="formData.zbje" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="谁可见" prop="visibleUserIds">
|
|
|
- <UserOrgTree
|
|
|
- v-model="visibleUserIds"
|
|
|
- :disabled="!isEditor"
|
|
|
- :multiple="true"
|
|
|
- placeholder="请选择跟谁可见"
|
|
|
- @change="visibleUserChange"
|
|
|
+ <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="editUserIds">
|
|
|
+ <el-form-item label="谁可见" prop="visibleUserIds">
|
|
|
<UserOrgTree
|
|
|
- v-model="editUserIds"
|
|
|
- :disabled="!isEditor"
|
|
|
+ v-model="visibleUserIds"
|
|
|
:multiple="true"
|
|
|
- placeholder="请选择跟谁可编辑"
|
|
|
- @change="editUserChange"
|
|
|
+ placeholder="请选择跟谁可见"
|
|
|
+ @change="visibleUserChange"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -339,12 +332,7 @@
|
|
|
<el-row :gutter="100">
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="状态" prop="zt">
|
|
|
- <el-select
|
|
|
- v-model="formData.zt"
|
|
|
- :disabled="!isEditor"
|
|
|
- placeholder="请选择状态"
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
+ <el-select v-model="formData.zt" placeholder="请选择状态" style="width: 100%">
|
|
|
<el-option
|
|
|
v-for="(item, index) in getDictOptions(DICT_TYPE.TRACKING_PROJECT_STATE)"
|
|
|
:key="index"
|
|
@@ -356,20 +344,18 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="年份" prop="year">
|
|
|
- <el-input v-model="formData.year" :disabled="!isEditor" placeholder="请输入年份" />
|
|
|
+ <el-input v-model="formData.year" placeholder="请输入年份" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-form-item label="备注" prop="desc">
|
|
|
- <el-input v-model="formData.bz" :disabled="!isEditor" rows="5" type="textarea" />
|
|
|
+ <el-input v-model="formData.bz" rows="5" type="textarea" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<div class="cover-footer">
|
|
|
<el-button @click="dialogVisible = false">关闭</el-button>
|
|
|
- <el-button v-if="isEditor" type="primary" @click="saveProjectTracking(ruleFormRef)">
|
|
|
- 保存
|
|
|
- </el-button>
|
|
|
+ <el-button type="primary" @click="saveProjectTracking(ruleFormRef)"> 保存 </el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -399,7 +385,6 @@ 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()
|
|
@@ -452,6 +437,13 @@ 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()
|
|
|
|
|
|
/**
|
|
@@ -475,26 +467,29 @@ queryProjectTrackingSummary()
|
|
|
/**
|
|
|
* 项目跟踪:新增、编辑
|
|
|
*/
|
|
|
-const isEditor = ref<boolean>(false)
|
|
|
const dialogTitle = ref<string>('项目跟踪填报')
|
|
|
const dialogVisible = ref<boolean>(false)
|
|
|
-const addOrEditHandle = (row: IFormType, isBool: boolean) => {
|
|
|
+const addOrEditHandle = (row?: IFormType) => {
|
|
|
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') {
|
|
@@ -506,9 +501,6 @@ 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' }],
|
|
@@ -535,17 +527,6 @@ 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) {
|
|
@@ -557,19 +538,6 @@ 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'],
|