diff --git a/app/src/main/java/com/loveerror/bested/button/ActionEvent.kt b/app/src/main/java/com/loveerror/bested/button/ActionEvent.kt index 615e4b4..6262366 100644 --- a/app/src/main/java/com/loveerror/bested/button/ActionEvent.kt +++ b/app/src/main/java/com/loveerror/bested/button/ActionEvent.kt @@ -3,7 +3,7 @@ package com.loveerror.bested.button enum class ActionEvent { START_ACTION("com.loveerror.bested.START_ACTION", "去普通建档"), - FILL_ACTION("com.loveerror.bested.FILL_ACTION", "普通建档填充表单"), + FILL_ACTION("com.loveerror.bested.FILL_ACTION", "普通建档填充表单", menuWithText = listOf("json")), SET_DATA_SOURCE("com.loveerror.bested.SET_DATA_SOURCE", "设置数据源"), HIDE_FLOATING_BUTTON("com.loveerror.bested.HIDE_FLOATING_BUTTON", "隐藏悬浮按钮"), PRINT_CURRENT_PAGE("com.loveerror.bested.PRINT_CURRENT_PAGE", "打印当前界面"), diff --git a/app/src/main/java/com/loveerror/bested/button/DragFloatingButton.kt b/app/src/main/java/com/loveerror/bested/button/DragFloatingButton.kt index 99a1eef..1a88b15 100644 --- a/app/src/main/java/com/loveerror/bested/button/DragFloatingButton.kt +++ b/app/src/main/java/com/loveerror/bested/button/DragFloatingButton.kt @@ -176,13 +176,32 @@ class DragFloatingButton(context: Context) : View(context) { hint = menuWithText tag = menuWithText + // 添加双击全选支持 + var lastClickTime = 0L + val doubleClickThreshold = 300L // 双击时间阈值(毫秒) + + setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_DOWN) { + val currentTime = System.currentTimeMillis() + if (currentTime - lastClickTime < doubleClickThreshold) { + // 双击事件 - 全选文本 + selectAll() + performClick() // 添加这行来满足 lint 要求 + lastClickTime = 0L // 重置时间,避免三击等操作 + } else { + lastClickTime = currentTime + } + } + false // 返回false以允许其他触摸事件继续处理 + } + } linearLayout.addView(editText) editTexts.add(editText) } val dialog = AlertDialog.Builder(context) - .setTitle("请输入公司名称") + .setTitle("请输入:"+actionEvent.menuName) .setView(linearLayout) .setPositiveButton("确定", null) // 先设置为null,稍后手动处理 .setNegativeButton("取消", null) @@ -192,7 +211,7 @@ class DragFloatingButton(context: Context) : View(context) { dialog.setOnShowListener { val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) positiveButton.setOnClickListener { - val textWithTags = mutableListOf() + val textWithTags = arrayListOf() // 遍历editText eeditTexts for (editText in editTexts) { val inputText = editText.text.toString().trim() diff --git a/app/src/main/java/com/loveerror/bested/handler/NormalGroupCreateForm.kt b/app/src/main/java/com/loveerror/bested/handler/NormalGroupCreateForm.kt index 5ba85a4..0bd2845 100644 --- a/app/src/main/java/com/loveerror/bested/handler/NormalGroupCreateForm.kt +++ b/app/src/main/java/com/loveerror/bested/handler/NormalGroupCreateForm.kt @@ -1,8 +1,10 @@ package com.loveerror.bested.handler +import android.content.Intent import android.view.accessibility.AccessibilityNodeInfo import com.loveerror.bested.tool.AccessibilityTool import com.loveerror.bested.tool.AccessibilityTool.Companion.performBottomSheetSelection +import com.loveerror.bested.tool.JsonTool import com.loveerror.bested.tool.NodeToolHint import com.loveerror.bested.tool.NodeToolText import com.loveerror.bested.tool.RootNodeCallback @@ -16,11 +18,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) { var fields = arrayListOf() init { - fields.add(FieldName("集团名称", "请输入集团名称", "集团abc", FieldType.TEXT)) - fields.add(FieldName("证件名称", "证件名称", "jituan", FieldType.TEXT)) - fields.add(FieldName("证件号码", "请输入证件号码", "44010119900101001X", FieldType.TEXT)) - fields.add(FieldName("法人代表", "请输入法人姓名", "张三", FieldType.TEXT)) - fields.add(FieldName("证件地址", "请输入证件地址", "北京市海淀区", FieldType.TEXT)) + fields.add(FieldName("集团名称", "请输入集团名称", "", FieldType.TEXT)) + fields.add(FieldName("证件名称", "证件名称", "", FieldType.TEXT)) + fields.add(FieldName("证件号码", "请输入证件号码", "", FieldType.TEXT)) + fields.add(FieldName("法人代表", "请输入法人姓名", "", FieldType.TEXT)) + fields.add(FieldName("证件地址", "请输入证件地址", "", FieldType.TEXT)) fields.add(FieldName("联系电话", "请输入联系电话", "13266667777", FieldType.TEXT)) fields.add(FieldName("员工数", "请输入人数", "1", FieldType.TEXT)) @@ -28,30 +30,95 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) { fields.add(FieldName("集团状态", "", "潜在集团", FieldType.SELECT)) fields.add(FieldName("证件有效期", "", "2056-11-23", FieldType.TIME)) fields.add(FieldName("集团等级", "", "D", FieldType.TEXT)) - fields.add(FieldName("建筑物名称", "请输入搜索地址", "金牛座", FieldType.SEARCH_SELECT)) + fields.add(FieldName("建筑物名称", "请输入搜索地址", "赛银国际商务", FieldType.SEARCH_SELECT)) fields.add(FieldName("细分客群", "", "其他", FieldType.SELECT)) + fields.add(FieldName("网格名称", "", "余杭未来科技城网格", FieldType.SELECT)) + + } + + // 在 JsonTool.kt 中添加方法 + fun convertFieldNames(originalMap: Map): Map { + val fieldMapping = mapOf( + "企业名称" to "集团名称", +// "企业名称" to "证件名称", + "统一社会信用代码" to "证件号码", + "法定代表人" to "法人代表", + "电话" to "联系电话", + "注册地址" to "证件地址", + "参保人数" to "员工数" + ) + + val convertedMap = mutableMapOf() + originalMap.forEach { (key, value) -> + val mappedKey = fieldMapping[key] ?: key + convertedMap[mappedKey] = value + } + convertedMap["证件名称"]= convertedMap["集团名称"].toString() + // 参保人数值如果为 eg: 8人 ->8 + if (convertedMap["员工数"]?.contains("人") == true) { + convertedMap["员工数"] = convertedMap["员工数"]?.replace("人", "").toString() + } + return convertedMap } /** * 自动填充普通集团建档表单 * @param root AccessibilityNodeInfo根节点 - * @param groupName 集团名称 */ - fun autoFillForm(root: AccessibilityNodeInfo) { + fun autoFillForm(root: AccessibilityNodeInfo, intent: Intent) { - val fieldMap = mapOf( - "集团名称" to "上海靖源科技有限公司", - "证件名称" to "上海靖源科技有限公司", - "证件号码" to "91310120MA7FFHYK15", - "法人代表" to "刘剑", - "证件地址" to "上海市奉贤区海坤路1号1幢", - "联系电话" to "13524811769", -// "证件有效期" to "9999-09-09", - "证件有效期" to "", - "员工数" to "2", - "建筑物名称" to "金牛座", - "细分客群" to "IT服务业" - ) + val json = intent.getStringExtra("json") + println("json: $json") + if(json == null || json.isEmpty()){ + println() + println("未找到json") + return + } + // json to map + + var fieldMap = JsonTool.parseJson(json) + + fieldMap = convertFieldNames(fieldMap) + /** + * { + * "企业名称": "杭州名一口腔门诊部有限公司", + * "统一社会信用代码": "91330108MA27Y6BA0T", + * "法定代表人": "伍聪聪", + * "电话": "15355431707", + * "经营状态": "开业", + * "成立日期": "2016-07-12", + * "行政区划": "浙江省杭州市滨江区", + * "注册资本": "10万(元)", + * "实缴资本": "10万(元)", + * "企业类型": "有限责任公司(自然人投资或控股)", + * "所属行业": "卫生", + * "工商注册号": "330108000291442", + * "组织机构代码": "MA27Y6BA-0", + * "纳税人识别号": "91330108MA27Y6BA0T", + * "纳税人资质": "-", + * "营业期限": "2016-07-12 至 无固定期限", + * "核准日期": "2025-07-15", + * "参保人数": "8人", + * "登记机关": "杭州高新技术产业开发区(滨江)市场监督管理局", + * "曾用名": "-", + * "注册地址": "浙江省杭州市滨江区浦沿街道伟业路483号", + * "经营范围": "许可项目:医疗服务(依法须经批准的项目,经相关部门批准后方可开展经营活动,具体经营项目以审批结果为准)。一般项目:健康咨询服务(不含诊疗服务);企业管理;第二类医疗器械销售;卫生用品和一次性使用医疗用品销售(除依法须经批准的项目外,凭营业执照依法自主开展经营活动)。" + * } + */ + +// val fieldMap = mapOf( +// "集团名称" to "上海靖源科技有限公司", +// "证件名称" to "上海靖源科技有限公司", +// "证件号码" to "91310120MA7FFHYK15", +// "法人代表" to "刘剑", +// "证件地址" to "上海市奉贤区海坤路1号1幢", +// "联系电话" to "13524811769", +//// "证件有效期" to "9999-09-09", +// "证件有效期" to "", +// "员工数" to "2", +// "建筑物名称" to "金牛座", +// "细分客群" to "IT服务业" +// ) // 先展开分类信息区域 // expandClassificationSection(root) @@ -118,11 +185,11 @@ class NormalGroupCreateForm(private val rootNodeCallback: RootNodeCallback) { AccessibilityTool.fillEditText(peopleCountNode, fieldMap["员工数"] ?: "1", "员工数") // fillEditTextByHintText(rootNew,fieldMap["员工数"] ?: "1", "员工数", "请输入人数") - clickToOpenBottomSheetAddress( - root, - "请点击此处打点", - "浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座" - ) +// clickToOpenBottomSheetAddress( +// root, +// "请点击此处打点", +// "浙江省杭州市余杭区高顺路8号五常西溪软件园金牛座A座" +// ) // 示例:点击"集团状态"触发底部选择,选择"在网集团" // fillCompanyNameField(root, groupName) diff --git a/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRM.kt b/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRM.kt index 393b24a..29e1b33 100644 --- a/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRM.kt +++ b/app/src/main/java/com/loveerror/bested/handler/ZJMCCMCRM.kt @@ -34,7 +34,7 @@ class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) { } ActionEvent.FILL_ACTION.event -> { - fillActionAsync() + fillActionAsync(intent) } ActionEvent.PRINT_CURRENT_PAGE.event -> { @@ -105,14 +105,14 @@ class ZjMccmCrm(private val rootNodeCallback: RootNodeCallback) { } } - private fun fillActionAsync() { + private fun fillActionAsync(intent: Intent) { Thread { val root = rootInActiveWindow() if (root == null) { return@Thread } val normalGroupCreateForm = NormalGroupCreateForm(rootNodeCallback) - normalGroupCreateForm.autoFillForm(root) + normalGroupCreateForm.autoFillForm(root, intent) }.start() } diff --git a/app/src/main/java/com/loveerror/bested/tool/JsonTool.kt b/app/src/main/java/com/loveerror/bested/tool/JsonTool.kt new file mode 100644 index 0000000..82abb92 --- /dev/null +++ b/app/src/main/java/com/loveerror/bested/tool/JsonTool.kt @@ -0,0 +1,19 @@ +package com.loveerror.bested.tool + +import org.json.JSONObject + +class JsonTool { + companion object{ + fun parseJson(json: String): Map { + val jsonObject = JSONObject(json) + val jsonMap = mutableMapOf() + val jsonKeys = jsonObject.keys() + while (jsonKeys.hasNext()) { + val key = jsonKeys.next() + val value = jsonObject.get(key).toString() + jsonMap[key] = value + } + return jsonMap + } + } +} \ No newline at end of file