index.vue 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <div class="p-3">
  3. <div class="bg-fff flex1 ov-hd d-flex flex-cln" v-show="showSearch">
  4. <div class="pd3-16-16-0 border-bottom">
  5. <div class="f-s-20 c-333 f-w-7 mb-10">团体标准</div>
  6. <div class="d-flex">
  7. <el-form class="flex1" ref="formRef" :model="queryParams" inline label-width="auto">
  8. <el-form-item label="标准编号:" prop="code">
  9. <el-input v-model="queryParams.code" style="width: 180px;" clearable placeholder="请输入标准编号"></el-input>
  10. </el-form-item>
  11. <!-- 标准名称 -->
  12. <el-form-item label="标准名称:" prop="chTitle">
  13. <el-input v-model="queryParams.chTitle" style="width: 180px;" clearable placeholder="请输入标准名称"></el-input>
  14. </el-form-item>
  15. <!-- 起草牵头单位 -->
  16. <el-form-item label="起草牵头单位:" prop="takeUnit">
  17. <el-input v-model="queryParams.takeUnit" style="width: 180px;" clearable placeholder="请输入起草牵头单位"></el-input>
  18. </el-form-item>
  19. <!-- 是否上架 -->
  20. <el-form-item label="是否上架:" prop="putawayFlag">
  21. <el-select v-model="queryParams.putawayFlag" clearable placeholder="请选择是否上架" style="width: 160px;">
  22. <el-option v-for="item in news_status" :key="item.value" :label="item.label" :value="item.value" />
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item>
  26. <el-button type="primary" @click="handleQuery">查询</el-button>
  27. <el-button @click="resetQuery">重置</el-button>
  28. </el-form-item>
  29. </el-form>
  30. <el-button type="primary" @click="router.push({ path: '/skill/group/post-input', query: { newsType: queryParams.newsType } })">新增团体标准</el-button>
  31. </div>
  32. </div>
  33. <div class="d-flex flex1 ov-hd flex-cln pd-12">
  34. <div class="flex1 ov-hd">
  35. <vxe-table :loading="loading" border :data="dataList" min-height="0" max-height="100%">
  36. <vxe-column title="序号" align="center" type="seq" width="60" />
  37. <vxe-column title="标准编号">
  38. <template #default="{ row }">
  39. <el-tag class="mr-10" v-if="+row?.validStatus" type="primary" effect="dark" round>有效</el-tag>
  40. <el-tag class="mr-10" v-else type="danger" effect="dark" round>无效</el-tag>
  41. {{ row?.code }}
  42. </template>
  43. </vxe-column>
  44. <vxe-column title="标准名称" field="chTitle" :formatter="colNoData"></vxe-column>
  45. <vxe-column title="立项日期" align="center" width="110">
  46. <template #default="{ row }">
  47. {{ parseTime(row?.projectDate, '{y}-{m}-{d}') || '-' }}
  48. </template>
  49. </vxe-column>
  50. <vxe-column title="发布日期" align="center" width="110">
  51. <template #default="{ row }">
  52. {{ parseTime(row?.issueDate, '{y}-{m}-{d}') || '-' }}
  53. </template>
  54. </vxe-column>
  55. <vxe-column title="实施日期" align="center" width="110">
  56. <template #default="{ row }">
  57. {{ parseTime(row?.putDate, '{y}-{m}-{d}') || '-' }}
  58. </template>
  59. </vxe-column>
  60. <vxe-column title="标准类型">
  61. <template #default="{ row }">
  62. {{ selectDictLabel(standard_group_type, row?.type) || '-' }}
  63. </template>
  64. </vxe-column>
  65. <vxe-column title="起草牵头单位" field="takeUnit" :formatter="colNoData"></vxe-column>
  66. <vxe-column title="标准公告" field="newsName" :formatter="colNoData"></vxe-column>
  67. <vxe-column title="标准文本">
  68. <template #default="{ row }">
  69. <div v-if="row?.standardText">
  70. <el-link :href="row?.standardText" type="primary" target="_blank">{{ row?.standardText }}</el-link>
  71. </div>
  72. <div v-else>-</div>
  73. </template>
  74. </vxe-column>
  75. <vxe-column title="上架状态" fixed="right" align="center" width="90" field="putawayFlag">
  76. <template #default="{ row }">
  77. <dict-tag :options="news_status" :value="row.putawayFlag" />
  78. </template>
  79. </vxe-column>
  80. <vxe-column title="操作" width="180" align="center" fixed="right">
  81. <template #default="{ row }">
  82. <el-button type="warning" size="small" @click="row.putawayFlag === '1' ? unpublishPost(row) : publishPost(row)" text>
  83. {{ row.putawayFlag === '1' ? '下架' : '上架' }}
  84. </el-button>
  85. <span></span>
  86. <el-button type="primary" size="small" @click="editPost(row)" text>编辑</el-button>
  87. <!-- 删除 -->
  88. <el-button type="danger" size="small" @click="deletePost(row)" text>删除</el-button>
  89. </template>
  90. </vxe-column>
  91. </vxe-table>
  92. </div>
  93. <pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
  94. </div>
  95. </div>
  96. </div>
  97. </template>
  98. <script setup name="news-list-cum" lang="ts">
  99. import { colNoData } from '@/utils/noData';
  100. import { DateRange } from '@/views/models/index';
  101. import { httpRequests } from '@/utils/httpRequests';
  102. const router = useRouter();
  103. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  104. const { standard_group_type, news_status } = toRefs<any>(proxy?.useDict('standard_group_type', 'news_status'));
  105. const loading = ref(true);
  106. const showSearch = ref(true);
  107. const total = ref(0);
  108. const formRef = ref<ElFormInstance>();
  109. const dataList = ref<any[]>([]);
  110. const initFormData = {};
  111. const data = reactive<any>({
  112. form: { ...initFormData },
  113. queryParams: {
  114. pageNum: 1,
  115. pageSize: 10,
  116. code: ''
  117. },
  118. rules: {}
  119. });
  120. const { queryParams, form } = toRefs(data);
  121. /** 查询会员信息列表 */
  122. const getList = async () => {
  123. loading.value = true;
  124. const res: any = await httpRequests.get('/dgtmedicine/groupStandard/list', queryParams.value);
  125. dataList.value = res.rows;
  126. total.value = res.total;
  127. loading.value = false;
  128. };
  129. const publishPost = async (row: any) => {
  130. const res: any = await httpRequests.get(`/dgtmedicine/groupStandard/changeStatus/${row.id}`);
  131. getList();
  132. proxy.$modal.msgSuccess('操作成功');
  133. };
  134. const unpublishPost = async (row: any) => {
  135. const res: any = await httpRequests.get(`/dgtmedicine/groupStandard/changeStatus/${row.id}`);
  136. getList();
  137. proxy.$modal.msgSuccess('操作成功');
  138. };
  139. const editPost = (row: any) => {
  140. router.push({ path: '/skill/group/post-input', query: { id: row.id } })
  141. };
  142. const deletePost = async (row: any) => {
  143. const res = await proxy.$modal.confirm('是否确认删除该团体标准?')
  144. console.log(res);
  145. if (res == 'confirm') {
  146. await httpRequests.get(`/dgtmedicine/groupStandard/remove/${row.id}`);
  147. proxy.$modal.msgSuccess('删除成功');
  148. getList();
  149. }
  150. };
  151. /** 搜索按钮操作 */
  152. const handleQuery = () => {
  153. queryParams.value.pageNum = 1;
  154. getList();
  155. };
  156. /** 重置按钮操作 */
  157. const resetQuery = () => {
  158. formRef.value?.resetFields();
  159. handleQuery();
  160. };
  161. /** 发布新闻 */
  162. const route = useRoute();
  163. onMounted(() => {
  164. queryParams.value.newsType = route.query?.newsType;
  165. getList();
  166. });
  167. </script>