123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- <template>
- <div v-if="!excelViewStatus">
- <el-table :data="tableData" class="tableView">
- <el-table-column fixed prop="formName" label="表格名称" align="center" />
- <el-table-column prop="formType" label="表格类型" align="center">
- <template #default="scope">
- {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
- </template>
- </el-table-column>
- <el-table-column prop="writeData" align="center" label="是否已填报">
- <template #default="scope">
- <span
- :class="{
- 'red-text': scope.row.writeData === '',
- 'green-text': scope.row.writeData !== '',
- }"
- >
- {{ scope.row.writeData === "" ? "否" : "是" }}
- </span>
- </template>
- </el-table-column>
- <el-table-column label="操作" fixed="right" width="200">
- <template #default="scope">
- <el-button
- link
- v-if="scope.row.writeData !== ''"
- class="btnText"
- type="primary"
- @click="handleLook(scope.row)"
- >
- 查看
- </el-button>
- <el-button
- link
- class="btnText"
- type="primary"
- @click="handleEdit(scope.row)"
- >
- 编辑
- </el-button>
- <el-popconfirm
- v-if="scope.row.writeData !== ''"
- :visible="scope.row.dialogVisible"
- title="您确认重置吗?(重置此操作不可逆)"
- width="200"
- @cancel="scope.row.dialogVisible = false"
- @confirm="reset(scope.row)"
- >
- <el-button> 取消 </el-button>
- <el-button type="primary"> 确认 </el-button>
- <template #reference>
- <el-button
- link
- class="btnText"
- type="primary"
- @click="scope.row.dialogVisible = true"
- >重置</el-button
- >
- </template>
- </el-popconfirm>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="excelView" v-else>
- <div class="view">
- <ExcelView
- v-model:data="excelData"
- :option="excelOptions"
- ref="excelViewRef"
- />
- </div>
- <div class="opeara">
- <div>
- <el-button
- v-if="excelOptions.edit"
- type="primary"
- class="btn"
- @click="submitData"
- >提交</el-button
- >
- <el-button class="btn" @click="resetData">{{
- excelOptions.edit ? "取消" : "返回"
- }}</el-button>
- </div>
- </div>
- </div>
- </template>
- <script setup>
- defineOptions({
- name: "Excel",
- });
- import { getExcelData, setExcelData } from "@/api/prosteps/excel";
- import { useProcessStore } from "@/store";
- import { useDictionaryStore } from "@/store";
- const dictS = useDictionaryStore();
- const store = useProcessStore();
- const tableData = ref([]);
- const dataList = async () => {
- const { data } = await getExcelData(store.scanInfo.id);
- tableData.value = data;
- };
- const useExcelHook = () => {
- const excelViewStatus = ref(false);
- const excelData = ref(null);
- const excelViewRef = ref(null);
- const excelSelectRow = ref(null);
- const excelOptions = ref({
- opreaState: true,
- in: true,
- out: true,
- print: true,
- edit: true,
- inName: "",
- });
- const resetData = () => {
- if (excelViewRef.value) {
- excelViewRef.value.saveCellData();
- excelViewRef.value.reset();
- }
- excelViewStatus.value = false;
- excelData.value = null;
- excelSelectRow.value = null;
- excelOptions.value = {
- opreaState: true,
- in: true,
- out: true,
- print: true,
- edit: true,
- inName: "",
- };
- };
- const reset = async (row) => {
- excelData.value = "";
- const { data, code } = await setExcelData({
- excelData: excelData.value,
- formName: row.formName,
- formType: row.formType,
- processId: store.scanInfo.id,
- });
- if (code == "200") {
- ElMessage.success("操作成功!");
- row.dialogVisible = false;
- resetData();
- dataList();
- }
- };
- const handleEdit = (row) => {
- excelSelectRow.value = row;
- if (row.writeData == "") {
- excelData.value = JSON.parse(row.excelData);
- } else {
- excelData.value = JSON.parse(row.writeData);
- }
- excelOptions.value.inName = row.formName;
- excelViewStatus.value = true;
- };
- const handleLook = (row) => {
- excelOptions.value.edit = false;
- excelData.value = JSON.parse(row.writeData);
- excelOptions.value.inName = row.formName;
- excelViewStatus.value = true;
- };
- const submitData = async () => {
- excelData.value = excelViewRef.value.getData();
- const { data, code } = await setExcelData({
- excelData: excelData.value,
- excelFormId: excelSelectRow.value.excelFormId,
- formName: excelSelectRow.value.formName,
- formType: excelSelectRow.value.formType,
- processId: store.scanInfo.id,
- });
- if (code == "200") {
- ElMessage.success("操作成功!");
- resetData();
- dataList();
- }
- };
- return {
- excelViewStatus,
- excelOptions,
- excelData,
- excelViewRef,
- resetData,
- handleEdit,
- submitData,
- handleLook,
- reset,
- };
- };
- const {
- excelViewStatus,
- excelOptions,
- excelData,
- excelViewRef,
- resetData,
- handleEdit,
- submitData,
- handleLook,
- reset,
- } = useExcelHook();
- onMounted(() => {
- dataList();
- });
- </script>
- <style lang="scss" scoped>
- .btnText {
- font-size: $f20;
- color: black;
- }
- .excelView {
- width: 100%;
- height: calc(100vh - 260px);
- padding: 20px;
- display: flex;
- background-color: white;
- border-radius: 16px;
- .view {
- position: relative;
- flex: 1;
- height: calc(100vh - 300px);
- }
- .opeara {
- width: 200px;
- height: 100%;
- padding: 10px;
- display: flex;
- align-items: center;
- }
- }
- .tableView {
- width: 100%;
- height: calc(100vh - 260px);
- padding: 20px 0px;
- border-radius: 16px;
- }
- .btn {
- width: 180px;
- border-radius: 16px;
- height: 40px;
- font-size: 16px;
- margin: 10px 0;
- }
- .red-text {
- color: red;
- }
- .green-text {
- color: green;
- }
- </style>
|