|
@@ -208,6 +208,14 @@
|
|
|
>
|
|
>
|
|
|
计划
|
|
计划
|
|
|
</el-button>
|
|
</el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="Number(scope.row.deptId) === REPORT_DEPT_ID"
|
|
|
|
|
+ link
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="openGenerateReportDialog(scope.row)"
|
|
|
|
|
+ >
|
|
|
|
|
+ 生成日报
|
|
|
|
|
+ </el-button>
|
|
|
<el-button
|
|
<el-button
|
|
|
link
|
|
link
|
|
|
type="primary"
|
|
type="primary"
|
|
@@ -312,6 +320,36 @@
|
|
|
</span>
|
|
</span>
|
|
|
</template>
|
|
</template>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 生成日报 Dialog -->
|
|
|
|
|
+ <el-dialog v-model="generateReportDialogVisible" title="生成日报" width="420px">
|
|
|
|
|
+ <el-form size="default" label-width="80px">
|
|
|
|
|
+ <el-form-item label="日报日期" required>
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="reportDate"
|
|
|
|
|
+ type="date"
|
|
|
|
|
+ placeholder="请选择日期"
|
|
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
|
|
+ format="YYYY-MM-DD"
|
|
|
|
|
+ class="w-full!"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <span class="dialog-footer">
|
|
|
|
|
+ <el-button size="default" @click="generateReportDialogVisible = false">取消</el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ size="default"
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="submitGenerateReport"
|
|
|
|
|
+ :loading="generateReportLoading"
|
|
|
|
|
+ >
|
|
|
|
|
+ 确定
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
@@ -366,6 +404,7 @@ const exportLoading = ref(false) // 导出的加载中
|
|
|
const { push } = useRouter() // 路由跳转
|
|
const { push } = useRouter() // 路由跳转
|
|
|
|
|
|
|
|
const COMPLETED_STATUS = 'wg'
|
|
const COMPLETED_STATUS = 'wg'
|
|
|
|
|
+const REPORT_DEPT_ID = 163
|
|
|
|
|
|
|
|
// 表格引用
|
|
// 表格引用
|
|
|
const tableRef = ref()
|
|
const tableRef = ref()
|
|
@@ -385,7 +424,7 @@ const columnWidths = ref({
|
|
|
technique: '100px',
|
|
technique: '100px',
|
|
|
workloadDesign: '100px',
|
|
workloadDesign: '100px',
|
|
|
createTime: '150px',
|
|
createTime: '150px',
|
|
|
- operation: '200px'
|
|
|
|
|
|
|
+ operation: '260px'
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
// 计算文本宽度
|
|
// 计算文本宽度
|
|
@@ -418,6 +457,12 @@ const companyDeptList = ref<any[]>([]) // 在公司级部门列表
|
|
|
const wellTypeDictOptions = ref<any[]>([]) // 井型字典选项
|
|
const wellTypeDictOptions = ref<any[]>([]) // 井型字典选项
|
|
|
const technologyDictOptions = ref<any[]>([]) // 施工工艺字典选项
|
|
const technologyDictOptions = ref<any[]>([]) // 施工工艺字典选项
|
|
|
|
|
|
|
|
|
|
+// 生成日报相关状态
|
|
|
|
|
+const generateReportDialogVisible = ref(false)
|
|
|
|
|
+const generateReportLoading = ref(false)
|
|
|
|
|
+const generateReportRow = ref<IotProjectTaskVO | null>(null)
|
|
|
|
|
+const reportDate = ref('')
|
|
|
|
|
+
|
|
|
/** 获取井型字典数据 */
|
|
/** 获取井型字典数据 */
|
|
|
const getWellTypeDictOptions = async () => {
|
|
const getWellTypeDictOptions = async () => {
|
|
|
try {
|
|
try {
|
|
@@ -571,6 +616,40 @@ const savePlan = async () => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/** 打开生成日报对话框 */
|
|
|
|
|
+const openGenerateReportDialog = (row: IotProjectTaskVO) => {
|
|
|
|
|
+ generateReportRow.value = row
|
|
|
|
|
+ reportDate.value = ''
|
|
|
|
|
+ generateReportDialogVisible.value = true
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 生成日报 */
|
|
|
|
|
+const submitGenerateReport = async () => {
|
|
|
|
|
+ if (!generateReportRow.value?.id) {
|
|
|
|
|
+ message.error('未找到任务信息')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!reportDate.value) {
|
|
|
|
|
+ message.error('请选择日报日期')
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ generateReportLoading.value = true
|
|
|
|
|
+ await IotProjectTaskApi.generateReport({
|
|
|
|
|
+ id: generateReportRow.value.id,
|
|
|
|
|
+ reportDate: dayjs(reportDate.value).valueOf()
|
|
|
|
|
+ })
|
|
|
|
|
+ message.success('生成日报成功')
|
|
|
|
|
+ generateReportDialogVisible.value = false
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ message.error('生成日报失败')
|
|
|
|
|
+ console.error('生成日报失败:', error)
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ generateReportLoading.value = false
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
/** 查询列表 */
|
|
/** 查询列表 */
|
|
|
const getList = async () => {
|
|
const getList = async () => {
|
|
|
loading.value = true
|
|
loading.value = true
|
|
@@ -663,8 +742,8 @@ const calculateColumnWidths = () => {
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// 操作列固定宽度
|
|
// 操作列固定宽度
|
|
|
- minWidths.operation = 200
|
|
|
|
|
- totalMinWidth += 200
|
|
|
|
|
|
|
+ minWidths.operation = 260
|
|
|
|
|
+ totalMinWidth += 260
|
|
|
|
|
|
|
|
// 2. 计算可伸缩列最终宽度
|
|
// 2. 计算可伸缩列最终宽度
|
|
|
const newWidths: Record<string, string> = {}
|
|
const newWidths: Record<string, string> = {}
|