washInfo.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <script setup lang="ts">
  2. import { ref, onMounted } from "vue"
  3. import Rs from "@/core/services/RequestService"
  4. import { useRouter } from "vue-router"
  5. import configs from "@/core/config/Index"
  6. const router = useRouter()
  7. const ringOptions = {
  8. legend: { top: "center", bottom: "auto", right: "20%", orient: "vertical" },
  9. pieCenter: ["40%", "50%"],
  10. titleText: "",
  11. }
  12. const titles = ref<Array<string>>(["", ""])
  13. const chartDatas = ref<Array<any>>([{}, {}])
  14. function queryChart(_type: number) {
  15. let url = ""
  16. const params = {
  17. org_id: orgId.value,
  18. name: companyName.value,
  19. type: type.value,
  20. catering_scale: cateringScale.value,
  21. catering_style: cateringStyle.value,
  22. }
  23. switch (_type) {
  24. case 0:
  25. url = "sys/purifierCondition/getPie"
  26. break
  27. case 1:
  28. url = "sys/purifierCondition/getStatePie"
  29. break
  30. }
  31. Rs.post(url, { data: params, successAlert: false }).then((res) => {
  32. chartDatas.value[_type] = res.data
  33. titles.value[_type] = res.data.chartData.title
  34. chartDatas.value[_type].chartData.title = ""
  35. })
  36. }
  37. const size = ref<any>("default")
  38. const dySearchSelectStyle = { width: "120px" }
  39. const companyName = ref("")
  40. const orgId = ref<string | null>(null)
  41. const type = ref("")
  42. const cateringScale = ref("")
  43. const cateringStyle = ref("")
  44. const queryParams = ref<any>({})
  45. const cols = ref([
  46. {
  47. name: "序号",
  48. field: configs.TABLE_INDEX_FIELD,
  49. },
  50. {
  51. name: "区域",
  52. field: "org_name",
  53. },
  54. {
  55. name: "商户名称",
  56. field: "name",
  57. },
  58. {
  59. name: "菜系",
  60. field: "catering_style_name",
  61. },
  62. {
  63. name: "规模",
  64. field: "catering_scale_name",
  65. },
  66. {
  67. name: "净化器数量",
  68. field: "purifier_num",
  69. },
  70. {
  71. name: "清洗次数",
  72. field: "clean_num",
  73. },
  74. {
  75. name: "操作",
  76. width: 150,
  77. field: "action",
  78. },
  79. ])
  80. const jump = function (v: any) {
  81. console.log("jump", v)
  82. router.push({
  83. path: "/goLineData/oilFumeConcentration",
  84. query: {
  85. comName: v.company_name,
  86. company_id: v.company_id,
  87. back: 1,
  88. },
  89. })
  90. }
  91. function query() {
  92. const params = {
  93. org_id: orgId.value,
  94. name: companyName.value,
  95. type: type.value,
  96. catering_scale: cateringScale.value,
  97. catering_style: cateringStyle.value,
  98. }
  99. const keys = Object.keys(params)
  100. keys.forEach((key) => {
  101. if (params[key] == "" && key != "clean_flag" && key != "exceed_company_flag") {
  102. delete params[key]
  103. }
  104. })
  105. queryParams.value = params
  106. }
  107. function reset() {
  108. companyName.value = ""
  109. orgId.value = "0"
  110. type.value = ""
  111. cateringScale.value = ""
  112. cateringStyle.value = ""
  113. query()
  114. }
  115. const detail = function (row: any) {
  116. router.push({
  117. path: "/purify/washInfo/details",
  118. query: {
  119. back: 1,
  120. company_id: row.company_id,
  121. },
  122. })
  123. }
  124. function init() {
  125. queryChart(0)
  126. queryChart(1)
  127. }
  128. onMounted(init)
  129. </script>
  130. <template>
  131. <el-row :gutter="0" class="mb-8">
  132. <el-col :span="12">
  133. <div
  134. class="card card-bordered border-primary h-325px"
  135. style="border-top-right-radius: 0; border-bottom-right-radius: 0"
  136. >
  137. <div class="card-header bg-light-primary min-h-50px">
  138. <div class="card-title">
  139. <h3 class="text-primary">{{ titles[0] }}</h3>
  140. </div>
  141. </div>
  142. <div class="card-body p-7 h-100">
  143. <BaseChart :data="chartDatas[0]" type="pie" h="100%" :options="ringOptions"></BaseChart>
  144. </div>
  145. </div>
  146. </el-col>
  147. <el-col :span="12">
  148. <div
  149. class="card card-bordered border-primary h-325px"
  150. style="border-left: 0; border-top-left-radius: 0; border-bottom-left-radius: 0"
  151. >
  152. <div class="card-header bg-light-primary min-h-50px">
  153. <div class="card-title">
  154. <h3 class="text-primary">{{ titles[1] }}</h3>
  155. </div>
  156. </div>
  157. <div class="card-body p-7 h-100">
  158. <BaseChart :data="chartDatas[1]" type="pie" h="100%" :options="ringOptions"></BaseChart>
  159. </div>
  160. </div>
  161. </el-col>
  162. </el-row>
  163. <VbDataTable
  164. ref="table"
  165. :header="cols"
  166. url="sys/purifierCondition/getComCleanInfo"
  167. method="post"
  168. :query-params="queryParams"
  169. :has-checkbox="false"
  170. >
  171. <template v-slot:table-tool>
  172. <el-form class="align-items-center" :inline="true">
  173. <el-form-item class="mb-0 me-5 align-items-center" label="商户名称">
  174. <el-input class="" style="width: 180px" v-model="companyName" placeholder="请输入商户名称" :size="size" />
  175. </el-form-item>
  176. <el-form-item class="mb-0 me-5 align-items-center" label="区域">
  177. <OrgSelectTree v-model:value="orgId" style="width: 180px"></OrgSelectTree>
  178. </el-form-item>
  179. <el-form-item class="mb-0 me-5 align-items-center" label="菜系">
  180. <DySelect
  181. v-model="cateringStyle"
  182. :formatRemoteData="(v:any)=>{return v?.list}"
  183. :url="'sys/dict/getList?code=000010001&key=temp'"
  184. :style="dySearchSelectStyle"
  185. placeholder="请选择菜系"
  186. ></DySelect>
  187. </el-form-item>
  188. <el-form-item class="mb-0 me-5 align-items-center" label="规模">
  189. <DySelect
  190. v-model="cateringScale"
  191. :formatRemoteData="(v:any)=>{return v?.list}"
  192. :url="'sys/dict/getList?code=000090001&key=temp'"
  193. :style="dySearchSelectStyle"
  194. placeholder="请选择规模"
  195. ></DySelect>
  196. </el-form-item>
  197. <el-form-item class="mb-0 me-5 align-items-center" label="类型">
  198. <DySelect
  199. v-model="type"
  200. :formatRemoteData="(v:any)=>{return v?.list}"
  201. :url="'sys/dict/getList?code=000200000&key=temp'"
  202. :style="dySearchSelectStyle"
  203. placeholder="请选择类型"
  204. ></DySelect>
  205. </el-form-item>
  206. <el-form-item class="mb-0 me-0 align-items-center">
  207. <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="query">查询</el-button>
  208. <el-button class="ms-3 mt-0 btn btn-sm btn-light-primary btn-outline" @click="reset">重置</el-button>
  209. </el-form-item>
  210. </el-form>
  211. </template>
  212. <template #name="{ row }">
  213. <span class="text-primary" @click="jump(row)" style="cursor: pointer">{{ row["name"] }}</span>
  214. </template>
  215. <template #action="{ row }">
  216. <span class="table-action" @click="detail(row)">查看详情</span>
  217. </template>
  218. </VbDataTable>
  219. </template>