index.vue 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <script setup>
  2. import {
  3. ref
  4. } from 'vue'
  5. import {
  6. onLoad
  7. } from "@dcloudio/uni-app"
  8. import {
  9. timeFormat
  10. } from "@/utils/timeFormatter.js"
  11. import {
  12. getJSDDlist,
  13. getHYFLlist,
  14. } from "@/api/work/projectInfo.js";
  15. import {
  16. getXMXZlist,
  17. } from "@/api/home.js"
  18. function backToBefore() {
  19. uni.navigateBack({})
  20. };
  21. let params = ref({
  22. beginDateStart: null,
  23. beginDateEnd: null,
  24. status: null,
  25. problemContent: null,
  26. subName: null,
  27. subjectId: null,
  28. indusKind: null,
  29. })
  30. // ====================================选择开始时间
  31. let beginDateStart = ref(null)
  32. let beginTimeShow = ref(false)
  33. function showBeginTimeChoose() {
  34. beginTimeShow.value = true
  35. }
  36. function beginTimeClose(e) {
  37. if (e) {
  38. let time = timeFormat(e.value)
  39. params.value.beginDateStart = time
  40. }
  41. beginTimeShow.value = false
  42. }
  43. // ====================================选择结束时间
  44. let beginDateEnd = ref(null)
  45. let endTimeShow = ref(false)
  46. function showEndTimeChoose() {
  47. endTimeShow.value = true
  48. }
  49. function endTimeClose(e) {
  50. if (e) {
  51. let time = timeFormat(e.value);
  52. params.value.beginDateEnd = time;
  53. }
  54. endTimeShow.value = false
  55. }
  56. // ============================================建设地点
  57. let jsddFull = [];
  58. let jsddColumns = ref([]);
  59. const getJSDD = function() {
  60. getJSDDlist().then(res => {
  61. jsddFull = res.data.list;
  62. jsddFull.push({
  63. key: null,
  64. value: "所有地区"
  65. });
  66. jsddColumns.value = [res.data.list.map(item => item.value)];
  67. jsddColumns.value[0].unshift("所有地区");
  68. })
  69. };
  70. let jsddShow = ref(false);
  71. const jsddShowChoose = function() {
  72. jsddShow.value = true;
  73. }
  74. const jsddClose = function(e) {
  75. if (e) params.value.subjectId = e.value[0];
  76. jsddShow.value = false;
  77. }
  78. // ====================================选择行业分类
  79. let hyflFull = [];
  80. let hyflColumns = ref([]);
  81. const getHYFL = function() {
  82. getHYFLlist().then(res => {
  83. hyflFull = res.data.list;
  84. hyflFull.push({
  85. key: null,
  86. value: "所有分类"
  87. });
  88. hyflColumns.value = [res.data.list.map(item => item.value)];
  89. hyflColumns.value[0].unshift("所有分类");
  90. })
  91. };
  92. let hyflShow = ref(false);
  93. const hyflShowChoose = () => {
  94. hyflShow.value = true;
  95. }
  96. const hyflClose = e => {
  97. if (e) params.value.indusKind = e.value[0];
  98. hyflShow.value = false;
  99. }
  100. // =====================================选择性质
  101. let xmxzShow = ref(false);
  102. let xmxzColumns = ref([]);
  103. const showXmxzChoose = () => {
  104. xmxzShow.value = true;
  105. }
  106. const xmxzClose = e => {
  107. if (e) params.value.propKind = e.value[0];
  108. xmxzShow.value = false;
  109. }
  110. let xmxzFull = [];
  111. const getXMXZ = () => {
  112. getXMXZlist().then(res => {
  113. xmxzFull = res.data.list;
  114. xmxzFull.unshift({
  115. key: null,
  116. value: "所有性质"
  117. });
  118. xmxzColumns.value = [res.data.list.map(item => item.value)];
  119. })
  120. };
  121. // ====================================选择状态
  122. let statusList = ref([
  123. ["所有", "处理中", "已关闭"]
  124. ])
  125. let statusShow = ref(false)
  126. function showStatusChoose() {
  127. statusShow.value = true
  128. }
  129. function statusClose(e) {
  130. if (e) params.value.status = e.value[0];
  131. statusShow.value = false;
  132. }
  133. function confirmParams() {
  134. let statusObj = {
  135. "所有": "",
  136. "处理中": "0",
  137. "已关闭": "1",
  138. };
  139. let paramsData = {
  140. "beginDateStart": params.value.beginDateStart,
  141. "beginDateEnd": params.value.beginDateEnd,
  142. "status": statusObj[params.value.status],
  143. "problemContent": params.value.problemContent,
  144. "subName": params.value.subName,
  145. "subjectId": jsddFull.find(item => item.value === params.value.subjectId)?.key,
  146. "indusKind": hyflFull.find(item => item.value === params.value.indusKind)?.key,
  147. "propKind": xmxzFull.find(item => item.value === params.value.propKind)?.key,
  148. };
  149. uni.$emit('questionTraceSearch', paramsData);
  150. uni.navigateBack({});
  151. }
  152. onLoad(() => {
  153. // // 结束时间
  154. let now = new Date()
  155. let nowFormat = timeFormat(now)
  156. beginDateEnd.value = nowFormat
  157. params.value.beginDateEnd = nowFormat
  158. // 开始时间
  159. let start = now - 1000 * 60 * 60 * 24 * 30
  160. let startFormat = timeFormat(start)
  161. beginDateStart.value = startFormat
  162. params.value.beginDateStart = startFormat
  163. getJSDD(); //获取建设地点
  164. getHYFL(); //获取行业分类
  165. getXMXZ(); // 项目性质列表
  166. })
  167. </script>
  168. <template>
  169. <view class="container">
  170. <page-title>查询</page-title>
  171. <view class="cards-list">
  172. <view class="card only-card">
  173. <!-- 计划开始日期 -->
  174. <view class="card-item first-card-item" @click="showBeginTimeChoose()">
  175. <view class="card-item-name">要求解决开始日期</view>
  176. <view class="card-item-description">
  177. <view>{{params.beginDateStart ?? "请选择开始时间"}}</view>
  178. <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
  179. </view>
  180. </view>
  181. <!-- 计划结束日期 -->
  182. <view class="card-item" @click="showEndTimeChoose()">
  183. <view class="card-item-name">要求解决结束日期</view>
  184. <view class="card-item-description">
  185. <view>{{params.beginDateEnd??"请选择结束时间"}}</view>
  186. <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
  187. </view>
  188. </view>
  189. <!-- 建设地点 -->
  190. <view class="card-item" @click="jsddShowChoose()">
  191. <view class="card-item-name">建设地点</view>
  192. <view class="card-item-description">
  193. <view v-if="params.subjectId">{{params.subjectId}}</view>
  194. <view v-else class="remind-text">请选择地点</view>
  195. <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
  196. </view>
  197. </view>
  198. <!-- 行业分类 -->
  199. <view class="card-item" @click="hyflShowChoose()">
  200. <view class="card-item-name">行业分类</view>
  201. <view class="card-item-description">
  202. <view v-if="params.indusKind">{{params.indusKind}}</view>
  203. <view v-else class="remind-text">请选择分类</view>
  204. <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
  205. </view>
  206. </view>
  207. <!-- 项目性质 -->
  208. <view class="card-item" @click="showXmxzChoose()">
  209. <view class="card-item-name">项目性质</view>
  210. <view class="card-item-description">
  211. <view v-if="params.propKind">{{params.propKind}}</view>
  212. <view v-else class="remind-text">请选择性质</view>
  213. <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
  214. </view>
  215. </view>
  216. <!-- 项目名称 -->
  217. <view class="card-item">
  218. <view class="card-item-name">项目名称</view>
  219. <input v-model="params.subName" class="card-item-input" placeholder="请填写项目名称"
  220. placeholder-style="color: #D8D8D8" maxlength="20" />
  221. </view>
  222. <!-- 问题描述 -->
  223. <view class="card-item">
  224. <view class="card-item-name">问题描述</view>
  225. <input v-model="params.problemContent" class="card-item-input" placeholder="请填写问题描述"
  226. placeholder-style="color: #D8D8D8" maxlength="20" />
  227. </view>
  228. <!-- 问题状态 -->
  229. <view class="card-item" @click="showStatusChoose()">
  230. <view class="card-item-name">问题状态</view>
  231. <view class="card-item-description">
  232. <view v-if="params.status">{{params.status}}</view>
  233. <view v-else class="remind-text">请选择状态</view>
  234. <u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
  235. </view>
  236. </view>
  237. </view>
  238. <view class="confirm-btn" @click="confirmParams()">确定</view>
  239. </view>
  240. <!-- 开始时间 -->
  241. <u-datetime-picker :show="beginTimeShow" @confirm="beginTimeClose" @cancel="beginTimeClose" @close="beginTimeClose"
  242. v-model="beginDateStart" mode="date" closeOnClickOverlay></u-datetime-picker>
  243. <!-- 结束时间 -->
  244. <u-datetime-picker :show="endTimeShow" @confirm="endTimeClose" @cancel="endTimeClose" @close="endTimeClose"
  245. v-model="beginDateEnd" mode="date" closeOnClickOverlay></u-datetime-picker>
  246. <!-- 状态 -->
  247. <u-picker :show="statusShow" :columns="statusList" @confirm="statusClose" @cancel="statusClose" @close="statusClose"
  248. closeOnClickOverlay></u-picker>
  249. <!-- 建设地点 -->
  250. <u-picker :show="jsddShow" :columns="jsddColumns" @confirm="jsddClose" @cancel="jsddClose" @close="jsddClose"
  251. closeOnClickOverlay></u-picker>
  252. <!-- 行业分类 -->
  253. <u-picker :show="hyflShow" :columns="hyflColumns" @confirm="hyflClose" @cancel="hyflClose" @close="hyflClose"
  254. closeOnClickOverlay></u-picker>
  255. <!-- 项目性质 -->
  256. <u-picker :show="xmxzShow" :columns="xmxzColumns" @confirm="xmxzClose" @cancel="xmxzClose" @close="xmxzClose"
  257. closeOnClickOverlay></u-picker>
  258. </view>
  259. </template>
  260. <style lang="scss" scoped>
  261. </style>