index.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <template>
  2. <div class="parameter pagePadding">
  3. <div
  4. v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
  5. >
  6. <el-table
  7. :data="tableData"
  8. stripe
  9. v-loading="loading"
  10. border
  11. :size="size"
  12. style="width: 100%"
  13. >
  14. <el-table-column
  15. prop="field_name"
  16. label="参数名称"
  17. show-overflow-tooltip
  18. align="center"
  19. ></el-table-column>
  20. <el-table-column
  21. v-if="powers.some((item) => item == '008')"
  22. label="字段值"
  23. show-overflow-tooltip
  24. align="center"
  25. >
  26. <template slot-scope="scope">
  27. <el-input v-model="scope.row.values" placeholder="请输入">
  28. </el-input>
  29. </template>
  30. </el-table-column>
  31. <el-table-column
  32. v-else
  33. prop="values"
  34. label="字段值"
  35. show-overflow-tooltip
  36. align="center"
  37. ></el-table-column>
  38. <el-table-column
  39. v-if="powers.some((item) => item == '008')"
  40. prop="expiretime"
  41. label="生效时间"
  42. show-overflow-tooltip
  43. align="center"
  44. >
  45. <template slot-scope="scope">
  46. <el-date-picker
  47. v-model="scope.row.expiretime"
  48. style="width: 100%"
  49. :picker-options="pickerOptions"
  50. type="datetime"
  51. placeholder="选择日期时间"
  52. default-time="00:00:00"
  53. />
  54. </template>
  55. </el-table-column>
  56. <el-table-column
  57. v-else
  58. prop="expiretime"
  59. label="生效时间"
  60. show-overflow-tooltip
  61. align="center"
  62. ></el-table-column>
  63. <!-- <el-table-column label="状态" show-overflow-tooltip align="center">
  64. <template slot-scope="scope">
  65. <el-tag
  66. v-if="scope.row.status === '1'"
  67. type="success"
  68. :class="{ 'hover-tag': powers.some((item) => item == '004') }"
  69. :size="tablebtnSize"
  70. @click="
  71. statusConfirm(
  72. scope.row.id,
  73. scope.row.status,
  74. powers.some((item) => item == '004')
  75. )
  76. "
  77. >
  78. <i
  79. class="el-icon-thumb"
  80. v-if="powers.some((item) => item == '004')"
  81. style="margin-right: 1px"
  82. ></i>
  83. 启用</el-tag
  84. >
  85. <el-tag
  86. v-else
  87. :class="{ 'hover-tag': powers.some((item) => item == '004') }"
  88. :size="tablebtnSize"
  89. type="warning"
  90. @click="
  91. statusConfirm(
  92. scope.row.id,
  93. scope.row.status,
  94. powers.some((item) => item == '004')
  95. )
  96. "
  97. >
  98. <i
  99. class="el-icon-thumb"
  100. v-if="powers.some((item) => item == '004')"
  101. style="margin-right: 1px"
  102. ></i>
  103. 禁用</el-tag
  104. >
  105. </template>
  106. </el-table-column> -->
  107. <el-table-column fixed="right" label="操作" align="center">
  108. <template slot-scope="scope">
  109. <el-link
  110. v-if="powers.some((item) => item == '008')"
  111. type="primary"
  112. style="margin: 0 4px"
  113. :underline="false"
  114. :size="tablebtnSize"
  115. @click="onSubmit(scope.row)"
  116. >
  117. 提交
  118. </el-link>
  119. <!-- <el-link
  120. v-if="powers.some((item) => item == '007')"
  121. type="primary"
  122. style="margin: 0 4px"
  123. :underline="false"
  124. :size="tablebtnSize"
  125. @click="openModal(scope.row.id)"
  126. >
  127. 详情
  128. </el-link> -->
  129. </template>
  130. </el-table-column>
  131. </el-table>
  132. <add-edit
  133. :showModel="showModel"
  134. :id="modelId"
  135. @cancel="showModel = false"
  136. />
  137. </div>
  138. <div v-else>
  139. <no-auth></no-auth>
  140. </div>
  141. </div>
  142. </template>
  143. <script>
  144. import asyncRequest from "@/apis/service/system/parameter";
  145. import { parseTime } from "@/utils";
  146. import addEdit from "./addEdit";
  147. import resToken from "@/mixins/resToken";
  148. export default {
  149. name: "Parameter",
  150. components: {
  151. addEdit,
  152. },
  153. mixins: [resToken],
  154. computed: {
  155. powers() {
  156. let tran =
  157. this.$store.getters.btnList.find(
  158. (item) => item.menu_route == "parameter"
  159. ) || {};
  160. if (tran && tran.action && tran.action.length > 0) {
  161. return tran.action;
  162. } else {
  163. return [];
  164. }
  165. },
  166. },
  167. data() {
  168. return {
  169. pickerOptions: {
  170. // disabledDate是一个函数,参数是当前选中的日期值,这个函数需要返回一个Boolean值,
  171. disabledDate(time) {
  172. let date = new Date().valueOf();
  173. const one = 1000 * 60 * 60 * 24;
  174. date = parseInt(date / one) * one;
  175. return time.getTime() <= date;
  176. },
  177. },
  178. showModel: false,
  179. loading: false,
  180. modelId: 0,
  181. tableData: [],
  182. };
  183. },
  184. mounted() {
  185. this.getInfor();
  186. },
  187. methods: {
  188. async onSubmit(row) {
  189. if (!this.loading) {
  190. this.loading = true;
  191. const obj = {
  192. fields_name: row.field_name,
  193. value: row.values,
  194. expiretime: row.expiretime,
  195. fields: row.fields,
  196. };
  197. obj.expiretime = parseTime(new Date(obj.expiretime).valueOf());
  198. const res = await asyncRequest.update(obj);
  199. if (res && res.code === 0) {
  200. this.$notify.success({
  201. title: res.message,
  202. message: "",
  203. });
  204. await this.getInfor();
  205. } else if (res && res.code >= 100 && res.code <= 104) {
  206. await this.logout();
  207. } else {
  208. this.$message.warning(res.message);
  209. }
  210. this.loading = false;
  211. }
  212. },
  213. async getInfor() {
  214. this.loading = true;
  215. const res = await asyncRequest.list({});
  216. if (res && res.code === 0 && res.data) {
  217. this.tableData = res.data;
  218. } else if (res && res.code >= 100 && res.code <= 104) {
  219. await this.logout();
  220. } else {
  221. this.tableData = [];
  222. }
  223. this.loading = false;
  224. },
  225. openModal(id) {
  226. this.showModel = true;
  227. this.modelId = id;
  228. },
  229. },
  230. };
  231. </script>
  232. <style lang="scss" scoped>
  233. .parameter {
  234. background: rgba(242, 242, 242, 1);
  235. min-height: 100%;
  236. width: 100%;
  237. height: 100%;
  238. // background-color: $bg;
  239. overflow: hidden;
  240. // position: absolute;
  241. z-index: 2;
  242. background: #fff;
  243. .change {
  244. .title {
  245. border-width: 0px;
  246. width: 100%;
  247. height: 100px;
  248. // display: flex;
  249. font-weight: 400;
  250. font-style: normal;
  251. font-size: 22px;
  252. text-align: left;
  253. padding: 0;
  254. padding: 60px 0 0 100px;
  255. width: 100%;
  256. box-sizing: border-box;
  257. }
  258. }
  259. }
  260. </style>