|
|
@@ -0,0 +1,302 @@
|
|
|
+<template>
|
|
|
+ <div class="pblm-detail-wrapper">
|
|
|
+ <van-form @submit="onSubmit">
|
|
|
+ <div class="pblm-detail-label">
|
|
|
+ <span>基本信息</span>
|
|
|
+ <!-- <van-button size="mini" type="primary" @click="showTacObjPblmstbPopup()">选择违规事项</van-button> -->
|
|
|
+ </div>
|
|
|
+ <van-cell-group inset>
|
|
|
+ <van-field v-model="tacObjPblmstb.nm" placeholder="请输入对象名称" label="对象名称" />
|
|
|
+ <van-field
|
|
|
+ v-model="tacObjPblmstb.inspPblmsName"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ label="问题类别"
|
|
|
+ placeholder="选择对象"
|
|
|
+ @click="showPicker = true"
|
|
|
+ />
|
|
|
+ <van-popup v-model:show="showPicker" destroy-on-close round position="bottom">
|
|
|
+ <van-picker
|
|
|
+ :columns="columns"
|
|
|
+ @change="changeC1"
|
|
|
+ @cancel="showPicker = false"
|
|
|
+ @confirm="onConfirm"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ <van-field
|
|
|
+ v-model="tacObjPblmstb.checkPoint"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ label="问题项目"
|
|
|
+ placeholder="选择对象"
|
|
|
+ @click="showPicker1 = true"
|
|
|
+ />
|
|
|
+ <van-popup v-model:show="showPicker1" destroy-on-close round position="bottom">
|
|
|
+ <van-picker
|
|
|
+ :columns="columns1"
|
|
|
+ @change="changeC2"
|
|
|
+ @cancel="showPicker1 = false"
|
|
|
+ @confirm="onConfirm1"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ <van-field
|
|
|
+ v-model="tacObjPblmstb.pblmDesc"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ label="问题描述"
|
|
|
+ placeholder="选择对象"
|
|
|
+ @click="showPicker2 = true"
|
|
|
+ />
|
|
|
+ <van-popup v-model:show="showPicker2" destroy-on-close round position="bottom">
|
|
|
+ <van-picker
|
|
|
+ :columns="columns2"
|
|
|
+ @cancel="showPicker2 = false"
|
|
|
+ @confirm="onConfirm2"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ <van-field v-model="tacObjPblmstb.inspPblmOrgName" placeholder="请输入对象名称" label="问题责任单位" />
|
|
|
+ <van-field v-model="tacObjPblmstb.inspPblmDesc" placeholder="请输入对象名称" label="详细描述" rows="1" type="textarea"/>
|
|
|
+ <van-field
|
|
|
+ v-model="tacObjPblmstb.ifCasePblm"
|
|
|
+ is-link
|
|
|
+ readonly
|
|
|
+ label="是否典型问题"
|
|
|
+ placeholder=""
|
|
|
+ @click="showPicker3 = true"
|
|
|
+ />
|
|
|
+ <van-popup v-model:show="showPicker3" destroy-on-close round position="bottom">
|
|
|
+ <van-picker
|
|
|
+ :columns="columns3"
|
|
|
+ :model-value="pickerValue3"
|
|
|
+ @cancel="showPicker3 = false"
|
|
|
+ @confirm="onConfirm3"
|
|
|
+ />
|
|
|
+ </van-popup>
|
|
|
+ <van-field v-model="tacObjPblmstb.score" readonly label="扣分值" />
|
|
|
+ <van-field v-model="tacObjPblmstb.persName" readonly label="上报人" />
|
|
|
+ <van-field v-model="tacObjPblmstb.collTime" readonly label="上报时间" />
|
|
|
+ </van-cell-group>
|
|
|
+ <div style="margin: 16px;">
|
|
|
+ <van-button @click="save" block native-type="submit" round type="primary">
|
|
|
+ 提交
|
|
|
+ </van-button>
|
|
|
+ </div>
|
|
|
+ </van-form>
|
|
|
+
|
|
|
+ <van-popup v-model:show="tacObjPblmstbShow" :style="{ width: '80%', height: '100%' }" position="left">
|
|
|
+ <tacObjPblmstbList :listType="pblm.listType" style="z-index:3000;"
|
|
|
+ @change="changeTacObjPblmstb"></tacObjPblmstbList>
|
|
|
+ </van-popup>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script setup>
|
|
|
+import { showSuccessToast } from 'vant';
|
|
|
+import {computed, onMounted, ref, watch} from "vue";
|
|
|
+import {useRoute} from "vue-router";
|
|
|
+import tacObjPblmstbList from './TacObjPblmstbList.vue';
|
|
|
+import {getTacQuestionById} from "@/api/inspect";
|
|
|
+import {addTacQuestion, getIllegalActById, getTacUnitList} from "@/api/questions";
|
|
|
+import {useUserStore} from "@/stores/user";
|
|
|
+import request from "@/utils/request";
|
|
|
+const route = useRoute();
|
|
|
+const userStore = useUserStore();
|
|
|
+const listType = ref(route.query.inspectType || '1');
|
|
|
+const pblm = ref({});
|
|
|
+const tacObjPblmstb = ref({
|
|
|
+});
|
|
|
+const columns = ref([]);
|
|
|
+const columns1 = ref([]);
|
|
|
+const columns2 = ref([]);
|
|
|
+const columns3 = ref([
|
|
|
+ { text: '是', value: '1' },
|
|
|
+ { text: '否', value: '0' }
|
|
|
+]);
|
|
|
+const showPicker = ref(false);
|
|
|
+const showPicker1 = ref(false);
|
|
|
+const showPicker2 = ref(false);
|
|
|
+const showPicker3 = ref(false);
|
|
|
+const pickerValue3 = ref([])
|
|
|
+const pickerValue = ref([])
|
|
|
+const pickerValue1 = ref([])
|
|
|
+const pickerValue2 = ref([])
|
|
|
+const router = useRoute();
|
|
|
+const parSectino = ref([]);
|
|
|
+const subjectList = ref([]);
|
|
|
+const tacObjPblmstbShow = ref(false);
|
|
|
+function onConfirm3(selectedValues, selectedOptions) {
|
|
|
+ tacObjPblmstb.value.ifCasePblm = selectedValues.selectedOptions[0].text
|
|
|
+ showPicker3.value = false;
|
|
|
+}
|
|
|
+function onConfirm(selectedValues, selectedOptions) {
|
|
|
+ tacObjPblmstb.value.inspPblmsName = selectedValues.selectedOptions[0].text
|
|
|
+ showPicker.value = false;
|
|
|
+}
|
|
|
+function onConfirm1(selectedValues, selectedOptions) {
|
|
|
+ tacObjPblmstb.value.checkPoint = selectedValues.selectedOptions[0].text
|
|
|
+ showPicker1.value = false;
|
|
|
+}
|
|
|
+function onConfirm2(selectedValues, selectedOptions) {
|
|
|
+ tacObjPblmstb.value.pblmDesc = selectedValues.selectedOptions[0].text
|
|
|
+ showPicker2.value = false;
|
|
|
+}
|
|
|
+function changeC1(selectedValues, selectedOptions) {
|
|
|
+ columns1.value = []
|
|
|
+ columns2.value = []
|
|
|
+ parSectino.value.forEach(item => {
|
|
|
+ if(item.inspPblmsName === selectedValues.selectedValues[0]){
|
|
|
+ var par = {
|
|
|
+ text: item.checkPoint,
|
|
|
+ value: item.checkPoint
|
|
|
+ }
|
|
|
+ columns1.value.push(par);
|
|
|
+ }
|
|
|
+ columns1.value = [...new Set(columns1.value.map(item => JSON.stringify(item)))].map(str => JSON.parse(str))
|
|
|
+ })
|
|
|
+}
|
|
|
+function changeC2(selectedValues, selectedOptions) {
|
|
|
+ columns2.value = []
|
|
|
+ parSectino.value.forEach(item => {
|
|
|
+ if(item.checkPoint === selectedValues.selectedValues[0]){
|
|
|
+ var par = {
|
|
|
+ text: item.pblmDesc,
|
|
|
+ value: item.pblmDesc
|
|
|
+ }
|
|
|
+ columns2.value.push(par);
|
|
|
+ }
|
|
|
+ columns2.value = [...new Set(columns2.value.map(item => JSON.stringify(item)))].map(str => JSON.parse(str))
|
|
|
+ })
|
|
|
+ console.log(columns1.value)
|
|
|
+}
|
|
|
+function formatTime(timestamp) {
|
|
|
+ const date = new Date(timestamp);
|
|
|
+ const year = date.getFullYear();
|
|
|
+ const month = ('0' + (date.getMonth() + 1)).slice(-2);
|
|
|
+ const day = ('0' + date.getDate()).slice(-2);
|
|
|
+ const hours = ('0' + date.getHours()).slice(-2);
|
|
|
+ const minutes = ('0' + date.getMinutes()).slice(-2);
|
|
|
+ const seconds = ('0' + date.getSeconds()).slice(-2);
|
|
|
+
|
|
|
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
|
+}
|
|
|
+async function getSelection(){
|
|
|
+ await request.get(`/dc/insp/pblms/listByObjId/${pblm.value.objId}`).then(res=>{
|
|
|
+ parSectino.value = res.data
|
|
|
+ const uniqueInspPblmsName = [...new Set(res.data.map(item => item.inspPblmsName))];
|
|
|
+ const uniquePblmDesc = [...new Set(res.data.map(item => item.pblmDesc))];
|
|
|
+ const uniqueCheckPoint = [...new Set(res.data.map(item => item.checkPoint))];
|
|
|
+ // columns1.value = uniqueCheckPoint.map(item => ({ text: item, value: item }));
|
|
|
+ // columns2.value = uniquePblmDesc.map(item => ({ text: item, value: item }));
|
|
|
+ columns.value = uniqueInspPblmsName.map(item => ({ text: item, value: item }));
|
|
|
+ })
|
|
|
+}
|
|
|
+const parData = ref({});
|
|
|
+function getDe(){
|
|
|
+ request.get(`/dc/insp/pblm/${pblm.value.pblmId}`).then(res=>{
|
|
|
+ if(res.success){
|
|
|
+ parData.value = res.data
|
|
|
+ tacObjPblmstb.value = res.data;
|
|
|
+ tacObjPblmstb.value.ifCasePblm = tacObjPblmstb.value.ifCasePblm === '1' ? '是' : '否';
|
|
|
+ tacObjPblmstb.value.collTime = formatTime(tacObjPblmstb.value.collTime);
|
|
|
+ columns1.value = []
|
|
|
+ columns2.value = []
|
|
|
+ parSectino.value.forEach(item => {
|
|
|
+ if(item.inspPblmsName === tacObjPblmstb.value.inspPblmsName){
|
|
|
+ console.log(item);
|
|
|
+ var par = {
|
|
|
+ text: item.checkPoint,
|
|
|
+ value: item.checkPoint
|
|
|
+ }
|
|
|
+ columns1.value.push(par);
|
|
|
+ }
|
|
|
+ columns1.value = [...new Set(columns1.value.map(item => JSON.stringify(item)))].map(str => JSON.parse(str))
|
|
|
+ })
|
|
|
+ parSectino.value.forEach(item => {
|
|
|
+ if(item.checkPoint === tacObjPblmstb.value.checkPoint){
|
|
|
+ console.log(item);
|
|
|
+ var par = {
|
|
|
+ text: item.pblmDesc,
|
|
|
+ value: item.pblmDesc
|
|
|
+ }
|
|
|
+ columns2.value.push(par);
|
|
|
+ }
|
|
|
+ columns2.value = [...new Set(columns2.value.map(item => JSON.stringify(item)))].map(str => JSON.parse(str))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+async function save(){
|
|
|
+ console.log(tacObjPblmstb.value);
|
|
|
+ tacObjPblmstb.value.ifCasePblm = tacObjPblmstb.value.ifCasePblm === '是' ? '1' : '0';
|
|
|
+ // tacObjPblmstb.value.collTime = parData.value.collTime;
|
|
|
+ delete tacObjPblmstb.value.inspPblmCode;
|
|
|
+ delete tacObjPblmstb.value.pblmsTypeId;
|
|
|
+ delete tacObjPblmstb.value.collTime;
|
|
|
+ await request.post('/dc/insp/pblm/update', tacObjPblmstb.value).then((res) => {
|
|
|
+ if (res.success) {
|
|
|
+ showSuccessToast('保存成功!');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ getDe();
|
|
|
+}
|
|
|
+watch(() => tacObjPblmstb.value.inspPblmsName, (newVal, oldVal) => {
|
|
|
+ if (newVal !== oldVal) {
|
|
|
+ columns1.value = []
|
|
|
+ columns2.value = []
|
|
|
+ parSectino.value.forEach(item => {
|
|
|
+ if(item.inspPblmsName === newVal){
|
|
|
+ var par = {
|
|
|
+ text: item.checkPoint,
|
|
|
+ value: item.checkPoint
|
|
|
+ }
|
|
|
+ columns1.value.push(par);
|
|
|
+ }
|
|
|
+ columns1.value = [...new Set(columns1.value.map(item => JSON.stringify(item)))].map(str => JSON.parse(str))
|
|
|
+ })
|
|
|
+ }
|
|
|
+});
|
|
|
+watch(() => tacObjPblmstb.value.checkPoint, (newVal, oldVal) => {
|
|
|
+ if (newVal !== oldVal) {
|
|
|
+ columns2.value = []
|
|
|
+ parSectino.value.forEach(item => {
|
|
|
+ if(item.checkPoint === newVal){
|
|
|
+ var par = {
|
|
|
+ text: item.pblmDesc,
|
|
|
+ value: item.pblmDesc
|
|
|
+ }
|
|
|
+ columns2.value.push(par);
|
|
|
+ }
|
|
|
+ columns2.value = [...new Set(columns2.value.map(item => JSON.stringify(item)))].map(str => JSON.parse(str))
|
|
|
+ })
|
|
|
+ }
|
|
|
+});
|
|
|
+onMounted(() => {
|
|
|
+ var par = JSON.parse(router.query.object);
|
|
|
+ pblm.value.objId = par.objId
|
|
|
+ pblm.value.pblmId = par.pblmId;
|
|
|
+ getSelection().then(() => {
|
|
|
+ getDe();
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.pblm-detail-wrapper {
|
|
|
+ height: 100%;
|
|
|
+ padding: 10px 0;
|
|
|
+ overflow: auto;
|
|
|
+
|
|
|
+ .pblm-detail-label {
|
|
|
+ padding: 10px 16px;
|
|
|
+ color: #606266;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+.van-cell-group--inset {
|
|
|
+ margin: 0 10px;
|
|
|
+}
|
|
|
+</style>
|