FaceSearchDialog.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. <template>
  2. <el-dialog
  3. title="查询人脸图片数据"
  4. :visible.sync="visible"
  5. :before-close="handleClose"
  6. custom-class="custom-dialog"
  7. >
  8. <el-form
  9. :model="form"
  10. :rules="rules"
  11. ref="searchForm"
  12. label-width="180px"
  13. class="user-form"
  14. >
  15. <!-- 查询控制 -->
  16. <el-divider></el-divider>
  17. <el-row :gutter="20">
  18. <el-col :span="12">
  19. <el-form-item label="查询结果在结果列表中的起始位置">
  20. <el-input-number v-model="form.searchResultPosition" :min="0" />
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="12">
  24. <el-form-item label="本次查询(每页显示)最大记录数">
  25. <el-input-number v-model="form.maxResults" :min="1" :max="1000" />
  26. </el-form-item>
  27. </el-col>
  28. </el-row>
  29. <el-divider></el-divider>
  30. <el-row :gutter="20">
  31. <el-col :span="12">
  32. <el-form-item label="人脸比对库唯一标示ID">
  33. <el-input v-model="form.FDID" />
  34. </el-form-item>
  35. </el-col>
  36. </el-row>
  37. <el-row :gutter="20">
  38. <el-col :span="12">
  39. <el-form-item label="人脸库人员出生开始时间">
  40. <el-input v-model="form.startTime" />
  41. </el-form-item>
  42. </el-col>
  43. <el-col :span="12">
  44. <el-form-item label="人脸库人员出生结束时间">
  45. <el-input v-model="form.endTime" />
  46. </el-form-item>
  47. </el-col>
  48. </el-row>
  49. <el-row :gutter="20">
  50. <el-col :span="12">
  51. <el-form-item label="性别">
  52. <el-select v-model="form.sex" placeholder="请选择">
  53. <el-option label="男" value="male" />
  54. <el-option label="女" value="female" />
  55. </el-select>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="12">
  59. <el-form-item label="出生日期">
  60. <el-date-picker
  61. v-model="form.bornTime"
  62. type="date"
  63. placeholder="选择日期"
  64. value-format="yyyy-MM-dd"
  65. />
  66. </el-form-item>
  67. </el-col>
  68. </el-row>
  69. <el-row :gutter="20">
  70. <el-col :span="12">
  71. <el-form-item label="省份代码">
  72. <el-input v-model="form.province" />
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="12">
  76. <el-form-item label="城市代码">
  77. <el-input v-model="form.city" />
  78. </el-form-item>
  79. </el-col>
  80. </el-row>
  81. <el-row :gutter="20">
  82. <el-col :span="12">
  83. <el-form-item label="证件类型">
  84. <el-input v-model="form.certificateType" />
  85. </el-form-item>
  86. </el-col>
  87. <el-col :span="12">
  88. <el-form-item label="证件号">
  89. <el-input v-model="form.certificateNumber" />
  90. </el-form-item>
  91. </el-col>
  92. </el-row>
  93. <el-row :gutter="20">
  94. <el-col :span="12">
  95. <el-form-item label="电话号码">
  96. <el-input v-model="form.phoneNumber" />
  97. </el-form-item>
  98. </el-col>
  99. </el-row>
  100. <el-divider></el-divider>
  101. <el-row :gutter="20">
  102. <el-col :span="12">
  103. <el-form-item label="建模状态 (旧)">
  104. <el-select v-model="form.modelStatus" placeholder="请选择">
  105. <el-option label="未建模" value="0" />
  106. <el-option label="建模中" value="1" />
  107. <el-option label="已建模" value="2" />
  108. </el-select>
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="12">
  112. <el-form-item label="建模状态 (新)">
  113. <el-input v-model="form.modelingStatus" placeholder="如: modeling/finished" />
  114. </el-form-item>
  115. </el-col>
  116. </el-row>
  117. <el-divider></el-divider>
  118. <el-row :gutter="20">
  119. <el-col :span="12">
  120. <el-form-item label="人脸模式 (FaceModeList)">
  121. <el-input v-model="form.FaceModeList" placeholder="模式数据" />
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="12">
  125. <el-form-item label="相似度 (similarity)">
  126. <el-input-number v-model="form.similarity" :min="0" :max="100" />
  127. </el-form-item>
  128. </el-col>
  129. </el-row>
  130. <el-row :gutter="20">
  131. <el-col :span="12">
  132. <el-form-item label="最小评分 (faceScore)">
  133. <el-input-number v-model="form.faceScore" :min="0" :max="100" />
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="12">
  137. <el-form-item label="最大评分 (faceScoreMax)">
  138. <el-input-number v-model="form.faceScoreMax" :min="0" :max="100" />
  139. </el-form-item>
  140. </el-col>
  141. </el-row>
  142. <el-divider></el-divider>
  143. <el-row :gutter="20">
  144. <el-col :span="12">
  145. <el-form-item label="排序字段 (sortord)">
  146. <el-select v-model="form.sortord" placeholder="请选择排序字段">
  147. <el-option label="importTime" value="importTime" />
  148. <el-option label="similarity" value="similarity" />
  149. <el-option label="faceScore" value="faceScore" />
  150. </el-select>
  151. </el-form-item>
  152. </el-col>
  153. <el-col :span="12">
  154. <el-form-item label="排序方式 (order)">
  155. <el-select v-model="form.order">
  156. <el-option label="升序" value="ascend" />
  157. <el-option label="降序" value="descend" />
  158. </el-select>
  159. </el-form-item>
  160. </el-col>
  161. </el-row>
  162. <el-divider></el-divider>
  163. <el-row :gutter="20">
  164. <el-col :span="12">
  165. <el-form-item label="出现时间范围">
  166. <el-date-picker
  167. v-model="form.appearTimeRange"
  168. type="datetimerange"
  169. start-placeholder="开始时间"
  170. end-placeholder="结束时间"
  171. value-format="yyyy-MM-dd HH:mm:ss"
  172. />
  173. </el-form-item>
  174. </el-col>
  175. <el-col :span="12">
  176. <el-form-item label="入库时间范围">
  177. <el-date-picker
  178. v-model="form.importTimeRange"
  179. type="datetimerange"
  180. start-placeholder="开始时间"
  181. end-placeholder="结束时间"
  182. value-format="yyyy-MM-dd HH:mm:ss"
  183. />
  184. </el-form-item>
  185. </el-col>
  186. </el-row>
  187. <el-divider></el-divider>
  188. <el-row :gutter="20">
  189. <el-col :span="8">
  190. <el-form-item label="频次是否返回">
  191. <el-switch v-model="form.OccurrencesInfo.enabled" active-text="是" inactive-text="否" />
  192. </el-form-item>
  193. </el-col>
  194. <el-col :span="8">
  195. <el-form-item label="出现频次 (occurrences)">
  196. <el-input-number v-model="form.OccurrencesInfo.occurrences" :min="0" />
  197. </el-form-item>
  198. </el-col>
  199. <el-col :span="8">
  200. <el-form-item label="频次搜索类型 (occurrencesSearchType)">
  201. <el-select v-model="form.OccurrencesInfo.occurrencesSearchType" placeholder="选择类型">
  202. <el-option label="大于" value="greater" />
  203. <el-option label="小于" value="less" />
  204. <el-option label="等于" value="equal" />
  205. </el-select>
  206. </el-form-item>
  207. </el-col>
  208. </el-row>
  209. </el-form>
  210. <!-- 底部操作 -->
  211. <div slot="footer" class="dialog-footer">
  212. <el-button @click="handleClose">取 消</el-button>
  213. <el-button type="primary" @click="submitForm">查 询</el-button>
  214. </div>
  215. </el-dialog>
  216. </template>
  217. <script>
  218. export default {
  219. name: "FaceSearchDialog",
  220. props: {
  221. visible: Boolean
  222. },
  223. data() {
  224. return {
  225. form: {
  226. searchID: "",
  227. searchResultPosition: 0,
  228. maxResults: 100,
  229. name: "",
  230. sex: "",
  231. bornTime: "",
  232. province: "",
  233. city: "",
  234. certificateType: "",
  235. certificateNumber: "",
  236. phoneNumber: "",
  237. modelStatus: "",
  238. modelingStatus: "",
  239. FaceModeList: "",
  240. similarity: 0,
  241. faceScore: 0,
  242. faceScoreMax: 100,
  243. sortord: "importTime",
  244. order: "descend",
  245. appearTimeRange: [],
  246. importTimeRange: [],
  247. enabled: false,
  248. occurrences: 0,
  249. occurrencesSearchType: ""
  250. }
  251. };
  252. },
  253. methods: {
  254. handleClose() {
  255. this.$emit("search:visible", false);
  256. },
  257. submitForm() {
  258. const payload = {
  259. searchID: Date.now().toString(), // 搜索记录唯一标识
  260. searchResultPosition: this.form.searchResultPosition,
  261. maxResults: this.form.maxResults,
  262. FDID: this.form.FDID,
  263. condition: {
  264. name: this.form.name,
  265. sex: this.form.sex,
  266. bornTime: this.form.bornTime,
  267. province: this.form.province,
  268. city: this.form.city,
  269. certificateType: this.form.certificateType,
  270. certificateNumber: this.form.certificateNumber,
  271. phoneNumber: this.form.phoneNumber,
  272. modelStatus: this.form.modelStatus,
  273. modelingStatus: this.form.modelingStatus,
  274. FaceModeList: this.form.FaceModeList,
  275. similarity: this.form.similarity,
  276. faceScore: this.form.faceScore,
  277. faceScoreMax: this.form.faceScoreMax,
  278. sortord: this.form.sortord,
  279. order: this.form.order,
  280. appearTimeRange: this.form.appearTimeRange,
  281. importTimeRange: this.form.importTimeRange,
  282. enabled: this.form.enabled,
  283. occurrences: this.form.occurrences,
  284. occurrencesSearchType: this.form.occurrencesSearchType
  285. }
  286. };
  287. console.log("📡 查询请求体:", JSON.stringify(payload, null, 2));
  288. }
  289. }
  290. };
  291. </script>
  292. <style>
  293. .custom-dialog {
  294. background-color: #003c68;
  295. width: 1200px !important;
  296. }
  297. /* 设置对话框标题颜色为白色 */
  298. .custom-dialog .el-dialog__title {
  299. color: white !important;
  300. }
  301. .user-form .el-form-item .el-input,
  302. .user-form .el-form-item .el-input-number,
  303. .user-form .el-form-item .el-select,
  304. .user-form .el-form-item .el-date-picker {
  305. width: 250px; /* 统一右侧控件宽度 */
  306. }
  307. </style>